9.5 Microsoft.NET http://www.microsoft.com/net http://msdn.microsoft.com/netframework Architektur: objektorientiert/fernaufrufe (8.1.6 ) IDL: (unsichtbare Metadaten, vom Übersetzer erzeugt) Dienste: (ü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/ vs9.5 1
.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. vs9.5 2
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 (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 ) vs9.5 3
Quellcode C# C++ Visual Basic Eiffel Cobol Übersetzer..... 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... vs9.5 4
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 vs9.5 5
ECMA-Standards: (335) CLI Common Language Infrastructure umfasst CLR und Standardbibliotheken (334) C# http://www.ecma-international.org/memento/tc39.htm vs9.5 6
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 vs9.5 7
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! vs9.5 8
9.5.3 C# Cis ( C sharp ) entstammt wie Java der Sprachfamilie C/C++, ist Verbesserung gegenüber Java allerdings noch komplexer, 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 -..... vs9.5 9
9.5.4.NET und COM Aufruf.NET COM verwendet eine Hülle (wrapper), die dem Aufrufer ein.net-objekt präsentiert: Klient RCW.NET-Objekt 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) vs9.5 10
Aufruf COM.NET setzt voraus, dass die Klasse argumentlosen Konstruktor hat, wird vermittelt über einen COM-callable wrapper - CCW CCW COM-Objekt 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! vs9.5 11
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. vs9.5 12