Microsoft.NET Framework & Component Object Model ein Vortrag von Florian Steuber
Übersicht I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 2
Was ist das.net Framework? Plattform zur Entwicklung und Ausführung von Anwendungsprogrammen Für Windows, Windows Phone... Löst frühere Softwarekonzepte wie COM ab Besteht aus Einer (virtuellen) Laufzeitumgebung (CLR) Einer Klassenbibliothek (BCL) Verschiedenen Diensten und Schnittstellen 3
Anwendungsbereiche 4
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 5
Common Language Runtime (CLR) Laufzeitumgebung für alle.net Anwendungen Führt wichtige Funktionen aus, wie Ausnahmebehandlung Ressourcenverwaltung Just in Time Kompilierung Speicherverwaltung Garbage Collection Code Access Security 6
Das.NET Execution Model 7
8
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 9
Sprachunabhängigkeit, CTS und CLS CTS: Common Type System Definiert, wie die Typen in der Laufzeitumgebung deklariert, benutzt und verwaltet werden Dient der Typ- und Codeüberprüfung Jede.NET Sprache stellt ihre eigenen Schlüsselwöter, die dann in CTS-Typen gemappt werden 10
Sprachunabhängigkeit, CTS und CLS 11
Sprachunabhängigkeit, CTS und CLS CLS: Common Language Specification Einigung zwischen Designern von Programmiersprachen und Programmbibliotheken Teilmenge der CTS Spezifiziert Eigenschaften, die.net Anwendungen erfüllen müssen, um ohne Einschränkungen mit Objekten anderer Programmiersprachen interagieren zu können 12
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 13
Base Class Library (BCL) Auch Framework Class Library (FCL) Bibliothek aus getestetem und wiederverwendbarem Code Hierarchisch aufgeteilt in Namespaces Gliedern Klassen in Blöcke mit ähnlicher Funktionalität Importierbar mit dem include-konstrukt 14
15
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 16
Assemblies Logische Codeeinheit, ausgeführt von der CLR Übersetzte Programmklassen (wie JAR in Java) Enthält Informationen zur Ausführung Wird bei Kompilierung des Quelltextes in Form von.dll oder.exe Dateien gebildet Sichtbarkeit: Private: Teil einer einzigen Anwendung Public/Shared: viele Anwendungen, Global Assembly Cache 17
Aufbau einer Assembly 18
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 19
.NET Versionen 20
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 21
Was ist COM? Ansatz für obj.orientierte Softwarekomponenten Vorgänger des.net Frameworks 1993: Object Linking and Embedding DCOM, COM+ Keine Programmiersprache (!) Standard für die Interoperabilität von COM- Objekten Organisation von COM-Objekten im Speicher 22
Motivation Interaktion verschiedener binärer Komponenten Update einer Komponente soll kein Update aller anderen Systemkomponenten erfordern Realisierung der Kommunikation von Komponenten verschiedener Sprachen? 23
Grundlagen Binärer Standard für Funktionen Funktionen werden in Interfaces gegliedert Einzigartige Identifikation von Objekten Komponenten sind instanziierte Klassen auf COM-Servern Klassen werden auch Coclasses genannt Coclasses werden in Class Factory erstellt COM-Library zum Finden und Starten von Komponenten 24
Global Unique Identifiers (GUIDs) 128 bit Integer Identifizieren jede COM Komponente und jedes Interface Auch universally unique identifier (UUID) 25
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 26
Binärer Standard COM definiert Standard, um Funktionen in virtuellen Tabellen unterzubringen Diese müssen durch Zeiger aufgerufen werden Jede Programmiersprache auf dem gleichen binäreren Standard kann Funktionen aufrufen 27
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 28
Interfaces Jede Komponente muss IUnknown unterstützen Anwendungen kommunizieren durch Aufruf einer Funktion im entsprechenden Interface Aufruf erfolgt mit Hilfe eines Zeigers Kann nicht instanziiert werden 29
Beispiel Interface 30
Das Interface IUnknown Alle Interfaces sind von IUnknown abgeleitet Kontrolliert Lebensspanne einer Komponente Referenzen auf andere Interfaces Drei Methoden: AddRef(): andere Komponente benutzt Interface Release(): Interface wird nicht mehr benötigt QueryInterface(): zum Erhalten einer Referenz auf ein anderes Interface und Meldung, ob das angeforderte Interface unterstützt wird 31
Beispiel für QueryInterface() 32
Versionierung Motivation: Update von Software, um... Mehr Funktionalität zu implementieren Bestehende Funktionalität zu verbessern Updaten von Komponenten Implementiert durch Interfaces und IUnknown:QueryInterface Mehr Funktionalität: Einbinden eines Interfaces Updates: ohne Veränderung von Methoden, Parametern und Rückgabewerten 33
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 34
Clients und Server Client: nutzt COM-Komponente eines Servers Server: implementiert eine COM-Komponente 3 Arten von Servern: In-Process: schnell, großer Speicherverbrauch Local Server: langsam wg. Remote Procedure Call Remote Server: sehr langsam 35
I..NET Framework 1. Was ist das.net Framework? 2. Das.NET Execution Model 3. Sprachunabhängigkeit, CTS und CLS 4. Base Class Library 5. Assemblies 6..NET Versionen II. Component Object Model 1. Was ist COM? 2. Binärer Standard 3. Interfaces 4. Clients und Server 5. Apartments 36
Apartments Realisiert Threading Sowohl COM-Komponenten als auch jedem Thread wird ein Apartment zugeordnet Stimmen Apartmentanforderungen überein, wird das Objekt diesem Apartment zugeordnet 3 Arten: Single-Threaded-Apartment (STA) Multi-Threaded-Apartment (MTA) Neutral-Threaded-Apartment (NTA) 37
38 Quellen.NET Framework Microsoft.NET Eine Einführung (David S. Platt) ISBN 3860636901 http://msdn.microsoft.com/ Component Object Model http://www.microsoft.com/com/default.mspx http://www.cs.umd.edu/~pugh/com/ Insbesondere sind die auf den Folien gezeigten Grafiken und Codebespiele von diesen Quellen entnommen und stammen nicht von mir.