.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
C# compiler VB.NET 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:
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:
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