<<

.NET Overview Objectives

• Introduce .NET –overview – languages –libraries – development and model • Examine simple # 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 SQL Server My Services Framework Libraries BizTalk Alerts Visual Studio .NET SharePoint Passport ......

3 Evolution of the platform

• .NET is the next evolutionary step for the platform – new languages largely replace classic C++ and – new runtime model reduces need for COM style integration – XML web services used in place of DCOM – replace MFC – ASP.NET improves on ASP –etc.

4 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

• Extensive set of available – for wide range of application types – called .NET

.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 – similar to language – processor independent

C# code VB.NET code code

C# VB.NET compiler compiler

IL IL IL

12 IL

• C# compiler translates C# 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

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 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 has .cs extension – namespace used to group related types – class defines new type – Main is application – 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: 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: 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