net overview objectives
play

.NET Overview Objectives Introduce .NET overview languages - PDF document

.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


  1. .NET Overview

  2. Objectives • Introduce .NET – overview – languages – libraries – development and execution model • Examine simple C# program 2

  3. .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

  4. 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

  5. Software development • .NET software development and execution has many actors – languages – libraries – compilers – intermediate language – execution engine 5

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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. 17 CLR automatically invoked when .NET application executed C:\> MyApp hello Execution command execute •

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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