.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 Common Language Runtime Languages SQL Server My Services Framework Libraries Compilers 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() System.Console.WriteLine("goodbye") VB.NET 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; uint u; unsigned integer } } 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 Execute IL machine code 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 JIT runtime F() 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 ngen image Execute IL machine code cache 16
17 CLR automatically invoked when .NET application executed C:\> MyApp hello Execution command execute •
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
Recommend
More recommend