9.5 Microsoft .NET Architektur: objektorientiert/Fernaufrufe (8.1.6 ) http://www.microsoft.com/net http://msdn.microsoft.com/netframework Architektur: objektorientiert/Fernaufrufe (8.1.6 ) IDL: (unsichtbare Metadaten, vom Übersetzer erzeugt) Dienste: (Systemdienste über Bibliotheken) Anwendungen: universell Implementierung nicht nur auf Windows: Mono (Open Source, Linux, Novell/Ximian) http://www.mono-project.com/Main_Page „Rotor“ (Shared Source, FreeBSD, Microsoft) http://research.microsoft.com/Collaboration/University/Europe/RFP/Rotor/
.NET Framework = CLR – Common Language Runtime ist objektorientierte virtuelle Maschine (analog zur JVM) als einheitliche Ausführungsumgebung für verschiedene Sprachen Reichhaltige Klassenbibliotheken für die CLR C# als „typische“ Sprache für die CLR Neugestaltete Unterstützung für Datenbankanschluss: ADO.NET dynamische Webseiten: ASP.NET Web-Dienste u.a.
9.5.1 Sprachunabhängiges Laufzeitsystem: CLR CLR = Common Language Runtime = virtuelle Maschine für die Ausführung von objektorientiertem Zwischencode in CIL - Common Intermediate Language (ältere Bezeichnung: MSIL – Microsoft Intermediate Language) Microsoft‘s Antwort auf JVM mit Java Bytecode Zwischencode zwischen verschiedenartigen Systemen übertragbar und überall ausführbar, wo CLR implementiert ist dynamisches Laden/Übersetzen/Binden von CIL-Klassen, sobald erstmals benötigt Zwischencode wird vor der Ausführung immer in Binärcode für die lokale Zielplattform übersetzt (just-in-time compilation) (auch vorbereitend explizit mittels Befehl ngen )
Binärcode Binärcode Binärcode für Intel ... für IBM ... für ........ Quellcode Übersetzer . . . . . C# C++ Visual Basic Eiffel Cobol besorgen Vorübersetzung Zwischencode CIL (Idee aus den 60er Jahren: UNCOL) CIL-Übersetzer . . . . . besorgen Nachübersetzung Binärcode Binärcode Binärcode für Intel ... für IBM ... für ........
Weitere Charakteristika der CLR: CLS – Common Language Specification – der CIL umfasst CTS – Common Type System –, das zwischen den Typsystemen aller Sprachen vermittelt, einschließlich Vererbung einheitliche - Namensraumverwaltung, - Ausnahmebehandlung, - Speicherbereinigung Versionsverwaltung Sicherheit: Code-Überwachung und -Signierung für verschiedenartige Programmiersprachen Interoperabilität im gleichen Adressraum, mit gemeinsam genutzten Bibliotheken
ECMA-Standards: (335) CLI – Common Language Infrastructure umfasst CLR und Standardbibliotheken (334) C# http://www.ecma-international.org/memento/TC39.htm
9.5.2 Programmverwaltung Programmentwicklung mit .NET SDK (Befehlszeilen) oder Visual Studio .NET Übersetzung produziert .dll- oder .exe-Dateien mit verwaltetem Code (managed code): - spezieller CLR Header - CIL-Code - Schnittstellenbeschreibungen (= „unsichtbare IDL“) - weitere Metadaten
Zusammengehörige Code-Dateien (evtl. zuzüglich weiterer Hilfsdateien) werden zusammengefasst in einer Baugruppe (assembly, .dll oder .exe), der neben dem Code eine Beschreibung (manifest) mit weiteren Metadaten beigegeben ist. Die Baugruppe ist die Einheit von - Versionierung, - Vertrieb, - Installation. Merke: jede Baugruppe enthält ihre Schnittstellenbeschreibung!
9.5.3 C# „C sharp“, „Cis“ entstammt wie Java der Sprachfamilie C/C++, ähnlich wie Java, allerdings komplexer durch zusätzliche Features erlaubt umfassende Ausnutzung der CLR-Funktionalität : - Objekteigenschaft aller Daten ( 4711.ToString() ! ) - Verweise auf objektbezogene Operationen (delegates) und Mengen von solchen - darauf basierend Ereignisse (events) und Beobachter-Muster, - Annotationen (attributes) für Klassen, Operationen, . . . . . , werden in die Metadaten übernommen und sind über Reflexion abfragbar - . . . . .
Aufruf .NET COM verwendet eine Hülle (wrapper), 9.5.4 .NET und COM Aufruf .NET COM verwendet eine Hülle (wrapper), die dem Aufrufer ein .NET-Objekt präsentiert: .NET-Objekt RCW Klient COM-Objekt RCW = runtime-callable wrapper new impliziert CoCreateInstance RCW-Code generierbar aus der MIDL-Beschreibung: IDL-Text Typbibliothek example.tlb Namensraum exampleLib mktyplib tlbimp (COM tool) (in .NET SDK)
setzt voraus, dass die Klasse argumentlosen Konstruktor hat, Aufruf COM .NET setzt voraus, dass die Klasse argumentlosen Konstruktor hat, wird vermittelt über einen COM-callable wrapper - CCW COM-Objekt CCW Klient .NET-Objekt CoCreateInstance impliziert new mit argumentlosem Konstruktor CCW-Code aus Metadaten generieren und registrieren mit regasm ! RCW und CCW vermitteln zwischen ComException und HRESULT !
9.5.5 Fernaufrufe (8.1.6 ) werden von CLR + Bibliotheken unterstützt, ähnlich zu Java, aber interoperabel ohne explizite IDL, Metadaten ersetzen IDL, automatische Vertretererzeugung bei Bedarf, Transport über TCP oder HTTP ( SOAP). Keine Unterstützung für Migration oder Replikation.