150 likes | 321 Views
Common Language Runtime. Seminar Softwareentwicklung Wintersemester 2003. Gertraud Orthofer e-mail: g.orthofer@gmx.at. Common Language Runtime. Laufzeitumgebung CIL-Code und Metadaten Hauptbereiche Common Type System (CTS) Common Language Specification (CLS)
E N D
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer e-mail: g.orthofer@gmx.at
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
Vorteile von CLR • Typsicherheit • Sicherheit • verschiedene Sprachen • Performanz • Deployment (DLL-hell) • Metadata (self-describing Code) • Garbage Collection Seminar Softwareentwicklung
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
Werttypen - Referenztypen Seminar Softwareentwicklung
Übersicht der Typen Boxing Werttypen Referenztypen Unboxing Vordefinierte Typen Vordefinierte Typen Pointers Klassen BenutzerdefinierteTypen Schnittstellentyp Arrays Delegates Seminar Softwareentwicklung
Benutzerdefinierte Werttypen (1/2) • Struktur .class (auto|sequential) sealed Person extends System.ValueType{ .field string name .field int32 age } • Vereinigung .class explicitsealed IntFloat extends System.ValueType{ .field [0] float32 f .field [0] int32 i } Seminar Softwareentwicklung
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) } 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 instancevirtual void goo() {…} .method instance void hoo() {…} } • Methodenaufrufe • Call void Bar:: foo() oder call instance void Bar:: (goo() | hoo()) • Callvirt instance void Bar:: (goo() | hoo()) 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
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
weitere CLR-Regeln • Namen • Member Access • Type visibility • Member accessibility • Security constraints • Type Members • Properties • Events Seminar Softwareentwicklung
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
Execution Engine Laden einer PE-Datei JIT-Compiler Verifikation der CIL AppDomain Laden eines Assemblies Übersetzung in Maschinencode Sicherheitsmanager Rechtsvergabe Managed Native Code Image Klassenlader Codemanager Laden eines Moduls Ausführung des Programms Laden eines Typs Seminar Softwareentwicklung