DCOM und .NET B. Sc. Tobias Buchloh Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Informatik Universität Hannover 2004-12-21 Gliederung • • • • • • • Motivation Einordnung (D)COM .NET COM+ Vergleich Fazit Tobias Buchloh: DCOM und .NET 2 Motivation Presentation Business Logic Data Tobias Buchloh: DCOM und .NET 3 Komponenten Eine Komponente ist das, was man einzeln kaufen kann um daraus ein System zu bauen. Unbekannter Verfasser Eine Komponente ist ein abgeschlossener, binärer Software-Baustein, der eine anwendungsorientierte, semantisch zusammengehörende Funktionalität besitzt, die nach Außen über Schnittstellen zur Verfügung gestellt wird. Lehrbuch der Software-Technik I, Balzert komponente schnittstelle Tobias Buchloh: DCOM und .NET 4 Komponenten-basierte Entwicklung • Komponentenmodelle: komponente – Client: schnittstelle • JavaBeans von SUN • COM/ActiveX und .NET von Microsoft – Server: • COM+ von Microsoft • Enterprise JavaBeans von SUN • CORBA von OMG • Eigenschaften: – Sprachunabhängigkeit – Interoperabilität – Plattformunabhängigkeit – Verteilbarkeit – Versionierbarkeit • Erst wenig Unterstützung durch Sprachkonstrukte Tobias Buchloh: DCOM und .NET 5 Einordnung Design Patterns lös en OOP De s ign -P rob UML lem Programmiertechnik e Hilfsmittel OOAD wichtiger Bestandteil Software-Entwurf entsteht Metriken be n ile e t ur Architektur Teil Sonderfall Client/Server n-Schichten implementieren J2EE .NET Tobias Buchloh: DCOM und .NET DCOM 6 (D)COM • • • • (Distributed) Component Object Model Software-Architektur für verteilte Komponenten Binärstandard Löst die Probleme C++ – Interoperabilität – Sprachunabhängigkeit – Verteilbarkeit – (Versionierbarkeit) – (Plattformunabhängigkeit) Visual Basic Java Tobias Buchloh: DCOM und .NET 7 (D)COM Einsatz (und Buzzwords) • • Integraler Bestandteil von Windows Komponenten beliebiger Größe – einzelne Widgets – Office-Anwendungen – Datenbanken • Einsatz in – ActiveX – OLE Automation – DDE Tobias Buchloh: DCOM und .NET 8 (D)COM Interfaces • • • • • Typisierung und Zugriff über Interfaces Gemeinsames Basisinterface IUnknown Identifizierung von Objekten und Interfaces über GUID Interfaces ändern sich „nie“ Sprachenunabhängige Beschreibung über IDL Tobias Buchloh: DCOM und .NET 9 Interface Definition Language (IDL) • sprachenunabhängige Beschreibung – Schnittstellen – Type Libraries • MIDL-Compiler Tobias Buchloh: DCOM und .NET 10 Ortstransparenz client tux ITux Rechner 1 oder Prozess 1 Rechner 2 oder Prozess 2 client tux ITux Interceptor proxy ITux stub ITux Tobias Buchloh: DCOM und .NET 11 Objekterzeugung • • • Component Object Library ist Teil des Betriebssystems Statische Factory-Methode findet Komponenten, erzeugt Instanzen und sorgt für Interaktion {FFE43-...-AABE} Komponenten „leben“ in einem Server ITux {BA0023-...-4DBE} – .DLL – .EXE – entfernter Rechner proxy client ITux {BA0023-...-4DBE} Tobias Buchloh: DCOM und .NET 12 Beispiel (Client) Tobias Buchloh: DCOM und .NET 13 Beispiel (Server) • • Microsoft Visual Studio ATL COM AppWizard kümmert sich um: – Applikationsgerüst – IDL – DLL – Registrierung der COM Komponenten – Registrierung der DLL mit RegSrv32 Tobias Buchloh: DCOM und .NET 14 Nachteile von (D)COM • • • • Keine direkten Sprachkonstrukte Keine einheitliche Fehlerbehandlung Keine „Garbage Collection“ (IUnknown) Verteilt Quellcode auf viele Dateien – IDL – Header – Implementierung – Type Libraries • • • Benötigt System-Registry RPC-Schnittstelle hatte massive Sicherheitsprobleme DLL Hell Tobias Buchloh: DCOM und .NET 15 .NET • • (Marketing-)Strategie von Microsoft Software verbindet – Informationen – Menschen – Maschinen • Beinhaltet – .NET Framework – IDE's (Visual Studio .NET 2003) – Server (Windows Server, BizTalk, SQL Server) – Client Software (Windows XP, CE) – Authentisierungsdienste (Passport) • Ziel: schnelle Entwicklung von vernetzten Anwendungen Tobias Buchloh: DCOM und .NET 16 .NET Framework • • • Version 1.1 Seit Januar 2002 Besteht aus: – Common Language Specification (CLS), Visual Basic, C++, Smalltalk, Java, Scheme, ... – Common Type System (CTS) – Common Intermediate Language (CIL) – Laufzeit-Umgebung (CLR) – Klassenbibliothek (FCL) • • Vereinfacht Entwicklung, Kommunikation und Verteilung von Komponenten-basierten Anwendungen Standardisiert durch die ECMA Tobias Buchloh: DCOM und .NET 17 Programmiersprachen • • • CTS ermöglicht Programmiersprachen-unabhängige Vererbung / Verwendung Alle .NET Programmiersprachen werden ge-„managed“ Direkte Sprachunterstützung für Komponenten in C# durch explizite: – Properties – Events – Metadaten • • Integrierte Hilfe und Dokumentation Kein striktes programmieren gegen Interfaces Tobias Buchloh: DCOM und .NET 18 Verteilte Komponenten in .NET • Benutzt Internet-Standards zur Kommunikation (RPC) – HTTP – XML – SOAP • • • Interaktion über verschiedene Plattformen Einfaches passieren von Firewalls Implementiert durch: – Web Services – .NET-Remoting Presentation XML Binär Business Logic XML Binär Data Tobias Buchloh: DCOM und .NET 19 Assemblies • • • • • • • Programme bzw. Komponenten werden in Assemblies ausgeliefert .dll oder .exe-Datei enthält Typ-Informationen und Metadaten Versionierung durch „Strong-Names“ Gemeinsam genutzte Komponenten im GAC des Systems Mehrere Versionen einer Assembly können im selben Adressraum koexistieren Keine Registrierung nötig! => Keine DLL Hell Tobias Buchloh: DCOM und .NET 20 Beispiel (einfacher Web-Service) Umwandlung in SOAP-Datentypen übernimmt IDE Aufruf über SOAP-Nachricht an den Web-Server Benötigt Internet-Information-Server (IIS) und Visual Studio .NET Tobias Buchloh: DCOM und .NET 21 Alternative Implementierungen • Zwei freie Open-Source Projekte: – Mono, http://www.go-mono.com • • • • Implementierung für Unix Unterstützt von Novell CLI, CLR, CTS sind schon brauchbar Ziel ist die komplette Implementierung der FCL (inkl. System.Windows.Form) – dotGnu, http://dotgnu.org • Implementierung für Handhelds • • Keins hat den vollen Funktionsumfang Patentrechtliche Probleme! Tobias Buchloh: DCOM und .NET 22 COM+ (Services) • • • • Kann von .NET und COM-Komponenten genutzt werden .NET Enterprise Services Nachfolger von Microsoft Transaction Server (MTS) Bietet verschiedene Lösungen für wiederkehrende Probleme – Transaktionen – Object Pooling – Just-In-Time Object Activation – Security – Event Support – Component Message Queueing Presentation – Component Load Balancing Business Logic Data Tobias Buchloh: DCOM und .NET 23 Beispiel Transaktionen Tobias Buchloh: DCOM und .NET 24 Showdown der Technologien Eigenschaft Sprachenunabhängigkeit Plattformunabhängigkeit Interoperabilität Verteilbarkeit Versionierbarkeit Einfachheit J2EE + + + O O DCOM + + + O - Tobias Buchloh: DCOM und .NET .NET + + + + + 25 Fazit • • COM und .NET erlauben Komponenten-basierte Programmierung (D)COM – Komponenten-„Aufsatz“ für Programmiersprachen – Komplizierte und fehleranfällige Programmierung • .NET – Gesamtkonzept für Komponenten-basierte Anwendungen – Vereinfacht die Entwicklung und Verteilung – Basiert auf Internet-Standards – Aber (noch) keine Plattformunabhängigkeit – Abhängigkeit von einem Anbieter • COM+ – Bietet fertige Lösungen für wiederkehrende Probleme – Sehr gute Werkzeug-Unterstützung (VS .NET) Tobias Buchloh: DCOM und .NET 26