.NET Framework & C#

28
.NET Framework & C#

description

.NET Framework & C#. .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 - PowerPoint PPT Presentation

Transcript of .NET Framework & C#

Page 1: .NET Framework & C#

.NET Framework&C#

Page 2: .NET Framework & C#

.NET FrameworkProblem backgroundSolutionCommon Language Runtime (CLR)

MS Intermediate LanguageMSIL StructureMSIL and Java bytecode

Introduction to C# languageC# StructureC# Features

Page 3: .NET Framework & C#

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)

Page 4: .NET Framework & C#

Solution (Common Language Runtime) Managed Code in Common Language Runtime

Requests for existing feature New CLR-Only Feature

Common Language Runtime

Managed Code

Win 32 OS

Page 5: .NET Framework & C#

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

Source code :Any languages

MS IntermediateLanguage

Platform specificcode

Development tools

Just-In-Time

compiler

Page 6: .NET Framework & C#

.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

Page 7: .NET Framework & C#

Costs:

OS got harder to write More memory and CPU time

Page 8: .NET Framework & C#

CLR structure

Page 9: .NET Framework & C#

Compare with traditional waysC# VB C++ J-script other

Compiler

Intermediate Language

JIT econoJIT PreJIT

Executables

.NET CLR

Compiler

C++

Executable

Existing OS

Machine hardware

Page 10: .NET Framework & C#

A simple example

Page 11: .NET Framework & C#

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 StringIf (ShowSeconds = True) Then

Return Now.ToLongTimeString Else Return Now.ToShortTimeString End If End Function End ClassEnd Namespace

TimeComponent.vb

Page 12: .NET Framework & C#

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)) ; }}

Timeclient.cs

Page 13: .NET Framework & C#

Assembly

A logical collection of one or more exe and dll file containing an application’s code and resources

It contains

1-Codes in MSIL

2-Manifest

A metadata description of the code and resources

Page 14: .NET Framework & C#

Metadata

What classes and method it contains What external objects it requires What version of code it represents

Page 15: .NET Framework & C#

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

Page 16: .NET Framework & C#

Private or Public

Private

In client directory Public (shared)

In Global Assembly Cache (GAC)

\\winnt\assembly

Page 17: .NET Framework & C#

Namespaces

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

Page 18: .NET Framework & C#

Versioning

DLL Hell

Replacing a DLL used by an existing client, with a newer version (or vice versa)

.NET provides a standard way to specify

version Each client assembly uses its own

specified versions of related assemblies

Page 19: .NET Framework & C#

Object oriented programming

Whether to smarten up non-object oriented languages or dump down OO languages

.NET provides all languages with inheritance and constructors features

Virtual Object Model

Page 20: .NET Framework & C#

All .NET classes inherit from the base class System.Object Equals GetHashCode GetType ToString

Page 21: .NET Framework & C#

Cross-language inheritance

Because of the standardized IL architecture

you can inherit form a class in another

language

For example:

System.Object

Page 22: .NET Framework & C#

.NET memory management

.NET CLR provides all languages with automatic memory management.

Garbage collector automatically removesunreferenced objects

You can force a garbage collection manually

Page 23: .NET Framework & C#

Interoperability with COM objects

.NET Supports interoperation with COM object as client or server via a runtime callable wrapper or a COM Callable Wrapper

Page 24: .NET Framework & C#

Using COM objects from .NET objects

Page 25: .NET Framework & C#

Using .NET objects from COM objects

Page 26: .NET Framework & C#

Transaction in .NET

Transaction ensure the integrity of databases during complex operations

Native .NET objects can also participate in transactions with a simple attribute

Page 27: .NET Framework & C#

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

Page 28: .NET Framework & C#

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

\\winnt\microsoft.net\framework\[c.v.]\config\