CLR Common Languate Runtime

Download Report

Transcript CLR Common Languate Runtime

Gertraud Orthofer e-mail: [email protected]

Common Language Runtime

Seminar Softwareentwicklung Wintersemester 2003

Seminar Softwareentwicklung

2

Common Language Runtime

 Laufzeitumgebung  CIL-Code und Metadaten  Hauptbereiche  Common Type System (CTS)  Common Language Specification (CLS)  Virtual Execution System (VES)  Metadata System Seminar Softwareentwicklung

3

Vorteile von CLR

 Typsicherheit  Sicherheit  verschiedene Sprachen  Performanz  Deployment (DLL-hell)  Metadata (self-describing Code)  Garbage Collection Seminar Softwareentwicklung

4

Common Type System

     Gemeinsames Typsystem für alle Sprachen legt Regeln fest:   wie Typen definiert werden wie sie sich verhalten alle Typen erben von System.Object

Typen bestehen aus   Menge von Werten darauf definierten Operationen zwei grundlegende Typen  Werttypen  Referenztypen Seminar Softwareentwicklung

5

Werttypen - Referenztypen

Speicherort Initialisierung Garbage Collection Objektvergleich Vererbung Basisklasse Werttypen

Stack 0 nein Inhalt nein System.Value

Referenztypen

Location: Stack Inhalt: Heap null ja Referenz ja System.Object

Seminar Softwareentwicklung

6

Übersicht der Typen

Werttypen Boxing Unboxing Referenztypen Vordefinierte Typen Vordefinierte Typen Pointers Benutzerdefinierte Typen Klassen Schnittstellentyp Arrays Delegates Seminar Softwareentwicklung

7

Benutzerdefinierte Werttypen (1/2)

 Struktur .class (

auto|sequential

)

sealed System.ValueType

{ .field string name .field int32 age } Person extends  Vereinigung .class

explicit sealed System.ValueType

{ .field [0] float32 f .field [0] int32 i IntFloat extends } Seminar Softwareentwicklung

8

Benutzerdefinierte Werttypen (2/2)

 Enumeration  Basisklasse System.Enum

 Namen/Wert Paare werden unter bestimmten Namen gruppiert .class sealed Color extends System.Enum{ .field static literal valuetype Color red = int32 (0x00000000) .field static literal valuetype Color green = int32 (0x00000001) .field static literal valuetype Color blue = int32 (0x00000002) }

9

Seminar Softwareentwicklung

Benutzerdefinierbare Referenztypen (1/2)

 Klassen   Speicherplatzreservierung und Initialisierung in einer Anweisung abgeleitet von System.Object

 Keine Mehrfachvererbung erlaubt  Methoden .class Bar extends System.Object { .method

static

void foo() {…} .method

instance virtual

.method

instance

void goo() {…} void hoo() {…} }  Methodenaufrufe  Call void Bar:: foo() oder call instance void Bar:: (goo() | hoo())  Callvirt instance void Bar:: (goo() | hoo())

10

Seminar Softwareentwicklung

Benutzerdefinierbare Referenztypen (2/2)

  Interfaces   müssen abstract sein, keine Instanzen können davon erzeugt werden  mehrfache Schnittstellenvererbung erlaubt .class interface abstract ILockable { .method

public abstract

instance virtual void Lock() {} } Arrays   Daten vom Array müssen alle den gleichen Typ enthalten Zugriff auf die Daten über den Index  Arten (newarr, newobj) Seminar Softwareentwicklung

11

Common Language Specification

    legt Mindestanforderungen an jede Programmiersprache fest Regelwerk CLS-Regel 1:  CLS-Regeln betreffen lediglich die Teile eines Typs, die außerhalb des definierenden Assemblys zur Verfügung stehen.

[assembly: CLSCompliant(true)] Seminar Softwareentwicklung

12

weitere CLR-Regeln

 Namen  Member Access  Type visibility  Member accessibility  Security constraints  Type Members  Properties  Events Seminar Softwareentwicklung

13

Virtual Execution System

   Starten einer .exe Datei  CLR starten Windows Loader lädt Datei   MSCorEE.dll laden _CorExeMain starten  CLR initialisieren CLR beginnt zu arbeiten Seminar Softwareentwicklung

14

Laden einer PE-Datei Execution Engine JIT-Compiler Verifikation der CIL AppDomain Laden eines Assemblies Übersetzung in Maschinencode Sicherheitsmanager Rechtsvergabe Managed Native Code Image Klassenlader Laden eines Moduls Laden eines Typs Codemanager Ausführung des Programms Seminar Softwareentwicklung

15