DCOM und .NETDCOM und .NET
B. Sc. Tobias Buchloh
Seminar Software-EntwurfFachgebiet Software Engineering, Institut für Angewandte Informatik
Universität Hannover
2004-12-21
2Tobias Buchloh: DCOM und .NET
GliederungGliederung
• Motivation
• Einordnung
• (D)COM
• .NET
• COM+
• Vergleich
• Fazit
3Tobias Buchloh: DCOM und .NET
MotivationMotivation
Presentation
Business Logic
Data
4Tobias Buchloh: DCOM und .NET
KomponentenKomponenten
komponenteschnittstelle
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
Eine Komponente ist das, was man einzeln kaufen kannum daraus ein System zu bauen.
Unbekannter Verfasser
5Tobias Buchloh: DCOM und .NET
Komponenten-basierte EntwicklungKomponenten-basierte Entwicklung
• Komponentenmodelle:– Client:
• 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
komponenteschnittstelle
6Tobias Buchloh: DCOM und .NET
EinordnungEinordnung
OOAD
Design Patterns
Metriken
UML
OOP
Architektur
n-Schichten
Software-EntwurfHilfsmittel
beurteilen
lösen Design-Problemewichtiger Bestandteil
SonderfallClient/Server
entsteht
Programmiertechnik
Teil
J2EE DCOM.NET
implementieren
7Tobias Buchloh: DCOM und .NET
(D)COM(D)COM
• (Distributed) Component Object Model
• Software-Architektur für verteilte Komponenten
• Binärstandard
• Löst die Probleme– Interoperabilität– Sprachunabhängigkeit– Verteilbarkeit– (Versionierbarkeit)– (Plattformunabhängigkeit)
C++
Visual Basic
Java
8Tobias Buchloh: DCOM und .NET
(D)COM Einsatz (und Buzzwords)(D)COM Einsatz (und Buzzwords)
• Integraler Bestandteil von Windows
• Komponenten beliebiger Größe– einzelne Widgets– Office-Anwendungen– Datenbanken
• Einsatz in– ActiveX– OLE Automation– DDE
9Tobias Buchloh: DCOM und .NET
(D)COM Interfaces(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
10Tobias Buchloh: DCOM und .NET
Interface Definition Language (IDL)Interface Definition Language (IDL)
• sprachenunabhängige Beschreibung– Schnittstellen– Type Libraries
• MIDL-Compiler
11Tobias Buchloh: DCOM und .NET
Rechner 1 oder Prozess 1 Rechner 2 oder Prozess 2
client tuxITux
OrtstransparenzOrtstransparenz
tuxITux
client
Interceptor
ITux ITuxproxy stub
12Tobias Buchloh: DCOM und .NET
proxy
ObjekterzeugungObjekterzeugung
• Component Object Library ist Teil des Betriebssystems
• Statische Factory-Methode findet Komponenten, erzeugt Instanzen und sorgt für Interaktion
• Komponenten „leben“ in einem Server– .DLL– .EXE– entfernter Rechner
{FFE43-...-AABE}ITux
{BA0023-...-4DBE}
clientITux
{BA0023-...-4DBE}
13Tobias Buchloh: DCOM und .NET
Beispiel (Client)Beispiel (Client)
14Tobias Buchloh: DCOM und .NET
Beispiel (Server)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
15Tobias Buchloh: DCOM und .NET
Nachteile von (D)COMNachteile 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
16Tobias Buchloh: DCOM und .NET
.NET.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
17Tobias Buchloh: DCOM und .NET
.NET Framework.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
18Tobias Buchloh: DCOM und .NET
ProgrammiersprachenProgrammiersprachen
• 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 programmierengegen Interfaces
19Tobias Buchloh: DCOM und .NET
Verteilte Komponenten in .NETVerteilte 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
XML
XML
Binär
Binär
Presentation
Business Logic
Data
20Tobias Buchloh: DCOM und .NET
AssembliesAssemblies
• 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
21Tobias Buchloh: DCOM und .NET
Beispiel (einfacher Web-Service)Beispiel (einfacher Web-Service)
Benötigt Internet-Information-Server (IIS) und Visual Studio .NET
Aufruf über SOAP-Nachrichtan den Web-Server
Umwandlung in SOAP-Datentypenübernimmt IDE
22Tobias Buchloh: DCOM und .NET
Alternative ImplementierungenAlternative 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!
23Tobias Buchloh: DCOM und .NET
COM+ (Services)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– Component Load Balancing
Presentation
Business Logic
Data
24Tobias Buchloh: DCOM und .NET
Beispiel TransaktionenBeispiel Transaktionen
25Tobias Buchloh: DCOM und .NET
Showdown der TechnologienShowdown der Technologien
Eigenschaft J2EE DCOM .NETSprachenunabhängigkeit - + +Plattformunabhängigkeit + - -Interoperabilität + + +Verteilbarkeit + + +Versionierbarkeit O O +Einfachheit O - +
26Tobias Buchloh: DCOM und .NET
FazitFazit
• 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)