NET Overview Objectives
Total Page:16
File Type:pdf, Size:1020Kb
.NET Overview Objectives • Introduce .NET –overview – languages –libraries – development and execution model • Examine simple C# program 2 .NET Overview • .NET is a sweeping marketing term for a family of products – development tools and languages –platform – application management servers – value-added services development platform servers services Languages Common Language Runtime SQL Server My Services Compilers Framework Libraries BizTalk Alerts Visual Studio .NET SharePoint Passport ... ... 3 Evolution of the platform • .NET is the next evolutionary step for the Microsoft platform – new languages largely replace classic C++ and Visual Basic – new runtime model reduces need for COM style integration – XML web services used in place of DCOM – Windows Forms replace MFC – ASP.NET improves on ASP –etc. 4 Software development • .NET software development and execution has many actors – languages –libraries – compilers – intermediate language – execution engine 5 Languages • Many .NET programming languages available –C# –VB.NET – C++ –etc. • Language choice typically based on many factors – programmer background – problem domain – language features – corporate mandate 6 Language power • All languages can access .NET infrastructure class Hello { static void Main() { C# System.Console.WriteLine("hello"); } } Class Goodbye Shared Sub Main() VB.NET System.Console.WriteLine("goodbye") End Sub End Class 7 Language interoperability • All .NET languages can interoperate class Hello { static void Main() C# calling { System.Console.WriteLine(Greeting.Message()); VB.NET } } Class Greeting Shared Function Message() As String Return "hello" End Function End Class 8 Language variability • Not all .NET languages have exactly the same capabilities – differ in small but important ways C# class Hello { static void Main() { signed integer int i; unsigned integer uint u; } } VB.NET Class Greeting Shared Sub Main() signed integer only Dim i as Integer End Sub End Class 9 Common Language Specification • Common Language Specification (CLS) defines type subset – required to be supported by all .NET languages – limiting code to CLS maximizes language interoperability – code limited to CLS called CLS compliant public class Calculator not CLS compliant { to use uint in public public uint Add(uint a, uint b) interface of public class { return a + b; } } 10 Library • Extensive set of standard libraries available – for wide range of application types – called .NET Framework class library .NET Framework class library Input/Output Collections Networking Reflection Web development Debugging XML processing Threading Windows Forms GUI Database access 11 Compilation • Compilers produce Intermediate Language (IL) – IL is not executable – similar to assembly language – processor independent C# code VB.NET code <other> code C# compiler VB.NET compiler <other> compiler IL IL IL 12 IL • C# compiler translates C# source code into IL C# source Calc c = new Calc(); int sum = c.Add(2, 4); C# compiler IL .locals init ([0] class Calc c, [1] int32 sum) newobj instance void Calc::.ctor() stloc.0 // c = ptr to new object ldloc.0 ldc.i4.2 // pass second arg ldc.i4.4 // pass first arg callvirt instance int32 Calc::Add(int32,int32) stloc.1 // sum = retval 13 Execution engine • Common Language Runtime (CLR) is the execution engine – loads IL – compiles IL – executes resulting machine code CLR Runtime IL machine code Execute compiler 14 JIT runtime compile • IL is compiled into machine code at runtime by the CLR – compiles methods as needed – called just in time (JIT) compile • JIT compilation model: – first time method is called the IL is compiled and optimized – compiled machine code is cached in transient memory – cached copy used for subsequent calls Cache machine code for F() IL code F() JIT runtime Execute G() compiler H() 15 NGEN install time compile • Can compile IL into machine code when app installed – use native image generator ngen.exe – can speed startup time since code pre-compiled – but cannot do as many optimizations – original IL must still be available for type information CLR native IL ngen machine code image Execute cache 16 Execution command • CLR automatically invoked when .NET application executed execute C:\> MyApp hello 17 Required CLR • CLR and .NET Framework required to run .NET app – will be incorporated into Windows and service packs – developers install as part of .NET Framework SDK – users can run dotnetredist.exe 18 C# program • C# program basics – source file has .cs extension – namespace used to group related types – class defines new type – Main is application entry point – WriteLine writes output – { and } delimit code block MyApp.cs namespace MyNamespace { class MyApp { static void Main() { System.Console.WriteLine("hello"); } } } 19 Building console executable • Can use C# compiler to build console executable –use /t[arget]:exe –use /out:<name> to specify output file name • Default values can simplify use – default target type is console executable – default name adds .exe to base name of file containing Main explicit C:\> csc /target:exe /out:MyApp.exe MyApp.cs options implicit C:\> csc MyApp.cs options 20 Building Windows executable • Can use C# compiler to build windows executable –use /t[arget]:winexe build Windows C:\> csc /target:winexe MyWinApp.cs application 21 Building library • Can use C# compiler to build library –use /t[arget]:library • Controlling output file name: – can use /out:<name> to specify output file name – default: adds .dll to base name of first input file create C:\> csc /target:library /out:MyLib.dll MyLib.cs library 22 Summary • .NET requires multiple steps to develop and run software – code in one of the many .NET languages – compile into IL – install the CLR – execute • CLR JIT compiles IL at runtime – always executes compiled code – never interpreted • Can target CLS compliance – to maximize language interoperability 23.