NET Framework by liaoqinmei


									.NET Framework
   .NET Framework
     Problem    background
     Solution
     Common     Language Runtime (CLR)
   MS Intermediate Language
     MSIL Structure
     MSIL and Java bytecode

   Introduction to C# language
     C# Structure
     C# Features
Problems Background
   Good code is hard to write
   All system features in any language
   COM problems
   Platform Interoperability
   Automatic memory management
   Object-Oriented features in and between all PLs
   Safety & Security
   Better Access to OS functions
   Interoperate with COM (both as client & server)
Solution (Common Language Runtime)
Managed Code in Common Language Runtime

   Managed Code

                   Common Language Runtime

    Requests for existing feature   New CLR-Only Feature

   Win 32 OS
Solution (Microsoft Intermediate Language)
Different Languages are Compiled into MSIL

                 Development                     Just-In-Time
                    tools                         compiler
 Source code :                 MS Intermediate                  Platform specific
 Any languages                   Language                             code
.Net platform features
 Automatic memory management
 Explicit Versioning
 OO features in any languages
 Accessing system functionality throw a
  hierarchical namespace
 Code security
 Interoperability with COM
 OS got harder to write
 More memory and CPU time
CLR structure
Compare with traditional ways
                 C#   VB   C++      J-script   other


    C++               Intermediate Language

  Compiler      JIT        econoJIT            PreJIT

 Executable                Executables

  Existing OS              .NET CLR

                 Machine hardware
A simple example

Imports Microsoft.VisualBasic

' Declare the namespace that clients will use to access
' the classes in this component

Namespace TimeComponentNS

 Public Class TimeComponent

    Public Function GetTime(ByVal ShowSeconds As Boolean) As String
         If (ShowSeconds = True) Then
                  Return Now.ToLongTimeString
                  Return Now.ToShortTimeString
         End If

   End Function
 End Class
End Namespace
using System ;
using TimeComponentNS ;

class MainApp
         public static void Main()

              // Declare and create a new component of the class
              // provided by the VB server we wrote

              TimeComponent tc = new TimeComponent ( ) ;

              // Call the server's GetTime method. Write its
              // resulting string to a console window.

              Console.Write (tc.GetTime (true)) ;

A logical collection of one or more exe and dll file
    containing an application’s code and resources
It contains
1-Codes in MSIL
        A metadata description of the code and resources

   What classes and method it contains
   What external objects it requires
   What version of code it represents
Manifest example (TimeComponent.dll)
.assembly extern mscorlib
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )    // .z\V.4..
  .ver 1:0:2411:0
.assembly extern Microsoft.VisualBasic
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )    // .?_....:
  .ver 7:0:0:0
.assembly TimeComponent
  .hash algorithm 0x00008004
  .ver 0:0:0:0
.module TimeComponent.dll
// MVID: {144ACC38-E825-45C4-83A6-C2A9E5A901DD}
.imagebase 0x00400000
.subsystem 0x00000002
.file alignment 512
.corflags 0x00000001
// Image base: 0x032a0000
Private or Public

 Private
 In client directory
 Public (shared)
  In Global Assembly Cache (GAC)
 A logical division within which a name
  need to be unique
 The best way to handle a large list of
  system objects and functions
 System namespace (implemented in
  several separated DLLs
 We can import a namespace
 Your code can have its own namespace
DLL Hell
 Replacing a DLL used by an existing client, with
 a newer version (or vice versa)
 .NET  provides a standard way to specify
 Each client assembly uses its own
  specified versions of related assemblies
Object oriented programming

 Whether to smarten up non-object
  oriented languages or dump down OO
 .NET provides all languages with
  inheritance and constructors features
 Virtual Object Model
   All .NET classes inherit from the base
    class System.Object
     Equals
     GetHashCode
     GetType
     ToString
Cross-language inheritance
Because of the standardized IL architecture
you can inherit form a class in another
For example:
.NET memory management

 .NET CLR provides all languages with
  automatic memory management.
 Garbage collector automatically removes
  unreferenced objects
 You can force a garbage collection
Interoperability with COM objects

.NET Supports interoperation with COM object
  as client or server via a runtime callable
  wrapper or a COM Callable Wrapper
Using COM objects from .NET objects
Using .NET objects from COM objects
Transaction in .NET

 Transaction ensure the integrity of
  databases during complex operations
 Native .NET objects can also participate in
  transactions with a simple attribute
Structured exception handling

 .NET provides structured exception
  handling as a fundamental feature
  available in and between all languages
 The exception handler can tell exactly
  where the exception originated by using a
  stack trace
Code access security
   Most software comes from web
   A user doesn’t know whether a Web code is safe
    or not
   .NET allows an administrator to specify
    privileges that each managed code has.
   You can specify these privileges in three level
    by modifying XML-based files
      Enterprise
      Machine
      User

To top