Introduction to .NET

    Lorenzo Dematté
       @ldematte
What is .NET?


Not different from asking: what is Java?
.NET, XP, 2000… oh my!
A Framework
 Execution environment (CLR)
 Support libraries (BCL)
 Languages (C#, VB, F#)
.NET is also


A platform, an “ecosystem”
  Both MS and others
  Tools (VS), libraries, open source projects (Nunit,
  EF)
And also, for some parts, a specification
/standard
  CLI, C#
.NET Framework

  C#              C++/CLI         VB.NET     F#

           PLINQ            TPL

  EF       LINQ

  ADO.NET                   WPF        WCF        WF

  BCL                                                  VS


  CLR (Jitter, VM, Loader, GC, Debugging…)

       Host: OS, Hardware, Exe (SQL, IIS)
History

1.0, 1.1
  Winforms, C# 1, ASP.NET, ADO.NET
2.0
  Generics, C# 2 (latest CLR)
3.0 – “WinFX”
  WPF, WCF, WF
3.5
  LINQ, C# 3 (lambda, extension methods)
4.0
  ParallelFX, C# 4 (dynamic)
4.5
  Metro, C# 5 (async)
.NET Framework (history)




         PLINQ          TPL            F#


   EF   LINQ
   ADO.NE
   T        WPF          WCF      WF
                                       C++/CLI
   BCL
                                       VB.NET
   CLR (Jitter, VM, Loader, GC,
   Debugging…)                         C#
Core concepts


Managed
 Garbage collection
 Introspection (self-description)
 Virtual machine
JIT
 Verification and optimization
Components
Assembly
 Bytecode + Metadata
Where?


Windows
Linux, MacOSX
 Mono, MonoMAC
Embedded
 Windows CE, Windows Phone
Micro
 Netduino
Outside MS: Languages
Outside MS: Libraries
From source to execution:
languages

Compilation
  csc /out:test.exe test.cs
  mcs test.cs --out:test2.exe
Execution
  .test.exe
  mono test.exe
Multiple languages
  csc /t:library /out:testLib.dll testLib.cs
  fsc test.fs /r:testLibrary.dll
From source to execution


Assembly:
  MSIL + Metadata
Load assembly
  Plus dependencies
  “Fusion”
JIT
From source to execution
                               Assembly (dll)
  F# source
                               MSIL
                               Assembly
                               (exe)
  C# source
                               MSIL



              Main Func
                                        ASM Main
              Greet Func

              GreetAll Func
   CLR (Jitter, VM, Loader, GC, Debugging…)
An example: Hello World

Introduction to .NET

  • 1.
    Introduction to .NET Lorenzo Dematté @ldematte
  • 2.
    What is .NET? Notdifferent from asking: what is Java? .NET, XP, 2000… oh my! A Framework Execution environment (CLR) Support libraries (BCL) Languages (C#, VB, F#)
  • 3.
    .NET is also Aplatform, an “ecosystem” Both MS and others Tools (VS), libraries, open source projects (Nunit, EF) And also, for some parts, a specification /standard CLI, C#
  • 4.
    .NET Framework C# C++/CLI VB.NET F# PLINQ TPL EF LINQ ADO.NET WPF WCF WF BCL VS CLR (Jitter, VM, Loader, GC, Debugging…) Host: OS, Hardware, Exe (SQL, IIS)
  • 5.
    History 1.0, 1.1 Winforms, C# 1, ASP.NET, ADO.NET 2.0 Generics, C# 2 (latest CLR) 3.0 – “WinFX” WPF, WCF, WF 3.5 LINQ, C# 3 (lambda, extension methods) 4.0 ParallelFX, C# 4 (dynamic) 4.5 Metro, C# 5 (async)
  • 6.
    .NET Framework (history) PLINQ TPL F# EF LINQ ADO.NE T WPF WCF WF C++/CLI BCL VB.NET CLR (Jitter, VM, Loader, GC, Debugging…) C#
  • 8.
    Core concepts Managed Garbagecollection Introspection (self-description) Virtual machine JIT Verification and optimization Components Assembly Bytecode + Metadata
  • 9.
    Where? Windows Linux, MacOSX Mono,MonoMAC Embedded Windows CE, Windows Phone Micro Netduino
  • 10.
  • 11.
  • 12.
    From source toexecution: languages Compilation csc /out:test.exe test.cs mcs test.cs --out:test2.exe Execution .test.exe mono test.exe Multiple languages csc /t:library /out:testLib.dll testLib.cs fsc test.fs /r:testLibrary.dll
  • 13.
    From source toexecution Assembly: MSIL + Metadata Load assembly Plus dependencies “Fusion” JIT
  • 14.
    From source toexecution Assembly (dll) F# source MSIL Assembly (exe) C# source MSIL Main Func ASM Main Greet Func GreetAll Func CLR (Jitter, VM, Loader, GC, Debugging…)
  • 15.