Universal Component Trading Dynamisch erweiterbares Trading mit heterogenen Softwarekomponenten Dissertation zur Erlangung des akademischen Grades eines Doktors der Wirtschaftswissenschaften (Dr. rer. pol.) durch den Fachbereich Wirtschaftswissenschaften der Universität Duisburg-Essen, Standort Essen vorgelegt von Dipl.-Wirt.Inform. Holger Schwichtenberg geboren in Essen Holger@Schwichtenberg.de Tag der mündlichen Prüfung: 15.9.2003 1. Gutachter: Prof. Dr. S. Eicker 2. Gutachter: Prof. Dr. P. Chamoni
Einleitung I I. Inhaltsverzeichnis 1 Einleitung...1 1.1 Problembereich...1 1.2 Zielsetzung...2 1.3 Gang der Arbeit...3 2 Bestehende Trading-Ansätze...5 2.1 Grundbegriffe...5 2.2 Trading-Dienst versus Namensdienst...7 2.3 Zusammenarbeit von Tradern... 10 2.4 ODP-Trading... 11 2.4.1 Basisfunktionen... 12 2.4.2 Interworking beim ODP-Trading... 15 2.4.3 Schnittstellen... 15 2.4.4 Implementierungen... 17 2.4.4.1 Go-Between... 18 2.4.4.2 DRYAD... 18 2.4.4.3 TRADE-Projekt... 19 2.4.4.4 MELODY... 20 2.4.4.5 Objektorientierter Trader von Bearman, Duddy, Raymond und Vogel 21 2.4.4.6 ODP-Trading auf Basis von X.500-Verzeichnisdiensten... 22 2.4.5 Kritik am ODP-Trading... 25 2.5 ANSAWare-Trading... 27 2.6 COS-Trading... 28 2.6.1 Vergleich von ODP-Trading und COS-Trading... 29 2.6.2 Implementierungen... 30 2.6.2.1 DSTC Trading Object Service... 30 2.6.2.2 Orbix 2000-Trader... 31 2.6.2.3 ORBacus Trader... 31 2.6.2.4 Trader Oriented Request Broker Architecture (TORBA)... 32 2.6.2.5 TOI-Trader... 32 2.6.2.6 CORBazar... 32 2.6.2.7 JTrader und JacORB... 33 2.6.2.8 Trader nach Senivongse und Nanekrangsan... 33 2.7 Zusammenfassung der Hauptansätze... 33 2.8 Ergänzende und alternative Ansätze... 34 2.8.1 Explorative Trading Service (ETS)... 34 2.8.2 RHODOS-Trader... 34 2.8.3 Trader nach Jacob und Mudge... 35 2.8.4 Distributed Trader nach Richman und Hoang... 36 2.8.5 Interworking Trader nach Richman und Hoang... 38 2.8.6 Webtrader... 38 2.8.7 AI-based Trading... 41 2.8.8 Semantically Enhanced Component Trading... 42 2.8.9 Universal Description, Discovery and Integration (UDDI)... 45 3 Softwarekomponentenmodelle...47 3.1 Definitionen... 47 3.2 Component Object Model (COM)... 49
II Einleitung 3.2.1 Plattformen und Implementierungen... 50 3.2.2 Aufbau von Komponenten... 51 3.2.3 Zusammenarbeit von Komponenten... 52 3.2.4 Namensgebung... 53 3.2.5 Komponentenbeschreibung... 54 3.2.6 Installation von Komponenten... 54 3.2.7 Dienste... 56 3.2.8 Trading-Unterstützung... 57 3.3 Java-Komponenten... 57 3.3.1 Plattformen und Implementierungen... 58 3.3.2 Aufbau von Komponenten... 59 3.3.3 Zusammenarbeit von Komponenten... 62 3.3.4 Namensgebung... 62 3.3.5 Komponentenbeschreibung... 63 3.3.6 Installation von Komponenten... 63 3.3.7 Dienste... 64 3.3.8 Trading-Unterstützung... 65 3.4 CORBA Component Model (CCM)... 65 3.4.1 Plattformen und Implementierungen... 65 3.4.2 Aufbau von Komponenten... 66 3.4.3 Zusammenarbeit von Komponenten... 69 3.4.4 Namensgebung... 71 3.4.5 Komponentenbeschreibung... 71 3.4.6 Installation von Komponenten... 71 3.4.7 Dienste... 72 3.4.8 Trading-Unterstützung... 72 3.5 Common Language Infrastructure (CLI)... 72 3.5.1 Plattformen und Implementierungen... 72 3.5.2 Aufbau von Komponenten... 74 3.5.3 Zusammenarbeit von Komponenten... 76 3.5.4 Namensgebung... 78 3.5.5 Komponentenbeschreibung... 78 3.5.6 Installation von Komponenten... 78 3.5.7 Dienste... 79 3.5.8 Trading-Unterstützung... 79 3.6 Verbreitung der Komponentenmodelle... 80 3.7 Zusammenfassung... 82 4 Anforderungen an das Component Trading...85 4.1 Trading heterogener Softwarekomponenten... 85 4.1.1 Baupläne... 86 4.1.2 Diensterbringer... 87 4.1.3 Komponentenbeschreibung... 87 4.1.4 Zugriffsprotokolle... 88 4.1.5 Aktivierung... 90 4.2 Trading-Umgebungen... 91 4.3 Komponentenbeschreibung... 92 4.3.1 Beschreibungssprachen für das Component Trading... 92 4.3.2 Dynamische Erweiterbarkeit für Beschreibungssprachen... 94 4.3.3 Mehrfach-Sichtweisen... 95 4.3.4 Umfang der Beschreibung... 96 4.4 Komponentenregistrierung... 97
Einleitung III 4.4.1 Registrierungsvorgang... 97 4.4.2 Qualitätssicherung... 98 4.4.3 Aufhebung einer Registrierung... 98 4.4.4 Änderung einer Registrierung... 99 4.5 Trading-Zeitpunkte... 99 4.5.1 Design-Time-Trading... 99 4.5.2 Runtime-Trading... 103 4.6 Suchanfragen... 104 4.6.1 Alternative Suchsprachen... 104 4.6.2 Steuerinformationen für Suchanfragen... 105 4.6.3 Verfügbarkeitsprüfung... 106 4.6.4 Daueraufträge... 107 4.6.5 Iteration in Suchanfragen... 108 4.7 Unterstützung dynamischer Elemente... 109 4.8 Kategorisierung... 110 4.9 Komponentenauswahl (Matching)... 111 4.9.1 Grobauswahl der relevanten Komponenten... 111 4.9.2 Priorisierung der relevanten Komponenten... 112 4.9.3 Feinauswahl einzelner Komponenten... 112 4.10 Dienstaufruf... 113 4.10.1 Szenario 1: Direkter Dienstaufruf... 114 4.10.2 Szenario 2: Trader als Proxy... 115 4.10.3 Szenario 3: Trader als Adapter... 116 4.10.4 Szenario 4: Ausführung der Komponente im Kontext des Clients... 117 4.10.5 Zugriffsprotokolle... 118 4.11 Zugangsbeschränkungen... 118 4.11.1 Zugangsbeschränkungen zum Trader... 118 4.11.2 Zugangsbeschränkungen zu den Handelseinheiten... 119 4.12 Abrechnung der Dienstleistungen... 120 4.13 Protokollierung... 120 4.14 Lernfähigkeit... 121 4.15 Trader-Interworking... 122 4.16 Erweiterbarkeit des Traders... 123 4.17 Benutzerschnittstellen... 123 4.18 Administration des Traders... 124 4.19 Zusammenfassung... 124 5 Architekturmodell für das Universal Component Trading...126 5.1 Client-Server-Architektur... 126 5.2 Datenaustauschformat... 127 5.2.1 Auswahl des Datenaustauschformats... 128 5.2.2 Trader-Dokumente... 128 5.2.3 Validierung der Trader-Dokumente... 130 5.3 Metamodell für Softwarekomponenten... 130 5.3.1 Ansatz von Gruhn und Thiel... 131 5.3.2 Verbesserung des Modells von Gruhn und Thiel... 131 5.3.3 Abbildung des Metamodells einer XML-Sprache... 134 5.4 Komponentendienstbeschreibungen... 136 5.4.1 Integration von Dienstbeschreibungen in SXCDL... 136 5.4.2 Unterstützung für dynamische Elemente... 139 5.4.3 Dienst- und Datentypen... 142 5.4.4 Beschreibungen durch Attribut-Wert-Paare... 144
IV Einleitung 5.4.4.1 Diensteigenschaften... 145 5.4.4.2 Erweiterbarkeit... 146 5.4.4.3 Anweisungen an den Trader... 147 5.4.5 Dienstbeschreibung in natürlicher Sprache... 149 5.4.6 Dienstbeschreibungen durch Kategorisierung... 149 5.4.7 Interface Definition Language (IDL)... 150 5.4.8 Web Service Description Language (WSDL)... 151 5.4.9 Ontologien... 153 5.4.10 Weitere Beschreibungssprachen... 156 5.5 Suchanfragen... 157 5.5.1 Integration von Suchanfragen in ImportDocuments... 158 5.5.2 Suche über Diensttypen... 160 5.5.3 Standard Constraint Language (SCL)... 161 5.5.4 XML Query (XQuery)... 161 5.5.5 Service Request Description Language (SRDL)... 162 5.5.6 Suche über IDL-Beschreibungen... 163 5.5.7 Suche über natürlichsprachliche Texte... 164 5.5.8 Suche über Komponentenkategorien... 165 5.5.9 Suche über Ontologien... 165 5.5.10 Suche über Angebotsnummern... 166 5.5.11 Suche über frühere Suchergebnisse... 166 6 Architektur des UComT-Servers...169 6.1 Trader-Kern... 169 6.2 Erweiterungsmodule... 172 6.2.1 Abstrakte Basistypen... 172 6.2.2 Konkrete Modultypen... 175 6.2.3 Implementierung der Module... 176 6.2.4 Durch Clients initiierte Erweiterungen... 177 6.2.5 Fehlersituationen... 177 6.2.6 Sicherheitsmaßnahmen... 178 6.3 Datenspeicher des Trader-Servers... 179 6.4 Detailbeschreibung des Trader-Servers... 180 6.4.1 Datenspeicher... 180 6.4.1.1 Offer-Store... 180 6.4.1.2 Component-Store... 180 6.4.1.3 Search-Store... 181 6.4.1.4 Configuration-Store... 181 6.4.1.5 Client-Store... 181 6.4.1.6 Protocol-Store... 181 6.4.1.7 Module-Repository... 181 6.4.1.8 Schema-Store... 182 6.4.1.9 Custom-Store... 182 6.4.2 Modul-Verwaltung... 182 6.4.2.1 Initialisierung von Modulen beim Start des Traders... 183 6.4.2.2 Ermittlung geeigneter Module... 183 6.4.2.3 Trader-Direktiven für Module... 183 6.4.2.4 Herunterladen von Modulen von Netzwerkadressen... 184 6.4.2.5 Installation und Deinstallation von Modulen... 184 6.4.3 Export... 184 6.4.3.1 Exporter-Manager... 185 6.4.3.2 Description-Module... 190
Einleitung V 6.4.3.3 Element-Module... 192 6.4.3.4 Dynamic-Element-Manager... 194 6.4.4 Import... 195 6.4.4.1 Importer-Manager... 195 6.4.4.2 Search-Module... 198 6.4.5 Matching... 198 6.4.5.1 Matching-Module... 198 6.4.5.2 Vorüberlegungen zum Matching-Vorgang... 200 6.4.5.3 Matching-Phasen... 201 6.4.5.4 Implementierung... 206 6.4.5.5 Optimierung für Ad-hoc-Elemente... 206 6.4.5.6 Converter-Manager und Converter-Module... 208 6.4.6 Steueranweisungen an den Trader... 209 6.4.7 Dienstaufruf... 210 6.4.7.1 Access-Manager, Access-Module, Installation-Module... 211 6.4.7.2 Realisierung der Aufruf-Szenarien... 211 6.4.7.3 Vermittlung von Bridges... 220 6.4.7.4 Implementierungsaspekte zum Access-Manager... 221 6.4.7.5 Implementierungsaspekte zu den Access-Modulen... 222 6.4.7.6 Beispiele für Access- und Installation-Module... 223 6.4.8 Interworking... 229 6.4.8.1 Vorüberlegungen... 229 6.4.8.2 Linking-Module... 232 6.4.8.3 Link-Manager... 232 6.4.8.4 Interworking am Beispiel von UDDI... 233 6.4.9 Administration... 236 6.4.9.1 Administration-Manager... 236 6.4.9.2 Administration-Module... 237 6.4.10 Weitere Funktionen des Trader-Servers... 238 6.4.10.1 Locator-Manager... 239 6.4.10.2 Validation-Manager... 239 6.4.10.3 Standing-Order-Manager... 240 6.4.10.4 Security-Manager... 240 6.4.10.5 Billing-Manager... 241 6.4.10.6 Evaluation-Manager... 241 6.4.10.7 System-Management-Manager... 242 6.4.10.8 Protocol-Manager... 242 7 Architektur des UComT-Clients...245 7.1 Grundstruktur... 245 7.2 Funktionen des Trader-Client-Dienstes... 246 7.3 Funktionen der Trader-Client-Bibliothek... 246 7.3.1 Exporter... 247 7.3.2 Design-Time-Importer... 247 7.3.3 Runtime-Importer... 248 7.3.4 Administration-Client... 248 7.3.5 Access-Client... 248 7.3.6 Module-Manager... 249 7.3.7 Dynamic-Element-Client... 250 7.3.8 Locator-Client... 251 7.3.9 Evaluation-Client... 251 7.4 Funktionen der Benutzerschnittstelle... 251
VI Einleitung 8 Prototypische Implementierung...253 8.1 UCom-Trader-Server... 254 8.1.1 Plattformauswahl... 254 8.1.2 Softwarekomponenten... 255 8.1.3 Datenspeicher... 256 8.1.4 Webservices... 256 8.1.5 Geschäftslogik... 257 8.1.5.1 Identifizierung der Schnittstellen des Trader-Kerns... 258 8.1.5.2 Schnittstellen für die Erweiterungsmodule... 259 8.1.5.3 Fehlerbehandlung... 260 8.1.5.4 Sicherheitsmaßnahmen... 261 8.1.6 Implementierte Module... 261 8.1.7 Ausgewählte Implementierungsdetails... 264 8.1.7.1 Wurzelklasse "Trader"... 264 8.1.7.2 Implementierung des Module-Managers... 265 8.1.7.3 Implementierung des Matching-Managers... 268 8.1.7.4 Implementierung des Access-Managers... 269 8.1.7.5 Modul "Element.NumberOfImports"... 270 8.1.7.6 Modul "Linking.UDDI"... 272 8.1.7.7 Modul "Matching.DAMLOIL_DAMLOIL"... 273 8.1.7.8 Modul "Installation.COM"... 275 8.2 C#-Client für COM- und.net-komponenten... 275 8.2.1 Softwarekomponenten... 275 8.2.2 Benutzerschnittstellen... 277 8.2.2.1 Benutzeroberfläche für den Export... 277 8.2.2.2 Benutzeroberfläche für den Import... 278 8.3 Java-Client für Java- und CORBA-Komponenten... 280 8.3.1 Softwarekomponenten... 280 8.3.2 Benutzerschnittstellen und Kernbausteine... 281 8.3.3 Installation- und Access-Module... 281 8.4 UComT-Administration-Client... 283 8.5 Validierende Beispiele... 283 9 Schußbetrachtung...285 Literaturverzeichnis...291 Anhang A: Beispieldokumente...A-1 A.1 Beispiel für ein ExportDocument...A-1 A.2 Beispiel für ein ImportDocument...A-5 A.3 Beispiel für ein DAML+OIL-Vokabular...A-5 Anhang B: Schnittstellenreferenz...B-1 B.1 Datenspeicher... B-1 B.1.1 Schnittstelle "IDataStore"... B-1 B.1.2 Schnittstelle "IOfferStore"... B-1 B.1.3 Schnittstelle "IComponentStore"... B-2 B.1.4 Schnittstelle "ISearchStore"... B-2 B.1.5 Schnittstelle "IModuleRepository"... B-3 B.1.6 Schnittstelle "IProtocolStore"... B-3 B.1.7 Schnittstelle "IConfigurationStore"... B-4 B.1.8 Schnittstelle "IClientStore"... B-4
Einleitung VII B.1.9 Schnittstelle "ISchemaStore"... B-5 B.1.10 Schnittstelle "ICustomStore"... B-5 B.2 Kernbausteine... B-5 B.2.1 Schnittstelle "ITraderCore"... B-5 B.2.2 Schnittstelle "IExporterManager"... B-7 B.2.3 Schnittstelle "IImporterManager"... B-8 B.2.4 Schnittstelle "IMatchingManager"... B-8 B.2.5 Schnittstelle "IModuleManager"... B-9 B.2.6 Schnittstelle "IConverterManager"... B-10 B.2.7 Schnittstelle "ISchemaManager"... B-10 B.2.8 Schnittstelle "IDynamicElementManager"... B-11 B.2.9 Schnittstelle "IAccessManager"... B-11 B.2.10 Schnittstelle "IAdministrationManager"... B-12 B.3 Trader-Prozesse... B-12 B.3.1 Schnittstelle "ITraderProcess"... B-12 B.3.2 Schnittstelle "IExport"... B-13 B.3.3 Schnittstelle "IImport"... B-13 B.3.4 Schnittstelle "IExecution"... B-13 B.3.5 Schnittstelle "IAdminCall"... B-14 B.4 Trader-Clients... B-14 B.5 Trader-Dokumente... B-15 B.6 Interne Datenstrukturen... B-16 B.6.1 Schnittstelle "IInternalDataStructure"... B-17 B.6.2 Schnittstelle "IOffer"... B-17 B.6.3 Schnittstelle "IRelevantOffer"... B-17 B.6.4 Schnittstelle "IDescElement"... B-18 B.6.5 Schnittstelle "ISearchElement"... B-18 B.6.6 Schnittstelle "IMatchCall"... B-19 B.7 Schnittstelle "ITrader"... B-19 B.8 Erweiterungsmodule... B-20 B.8.1 Schnittstelle "IModule"... B-21 B.8.2 Schnittstelle "IElementBoundModule"... B-22 B.8.3 Schnittstelle "IEventBoundModule"... B-23 B.8.4 Schnittstelle "IDescriptionModule"... B-23 B.8.5 Schnittstelle "ISearchModule"... B-24 B.8.6 Schnittstelle "IMatchingModule"... B-24 B.8.7 Schnittstelle "IConverterModule"... B-25 B.8.8 Schnittstelle "ILinkingModule"... B-25 B.8.9 Schnittstelle "IAccessModule"... B-26 B.8.10 Schnittstelle "IInstallationModule"... B-26 B.8.11 Weitere Schnittstellen... B-27 Anhang C: Inhalt der CD-ROM...C-1
VIII Einleitung II. Abbildungsverzeichnis Abbildung 1.1: Aufbau der Arbeit... 4 Abbildung 2.1: Grundmodell des Trading... 7 Abbildung 2.2: Verhältnis von Tradinggemeinschaft, Tradingsyndikat und Tradingföderation (nach [SPM94, S. 24])... 10 Abbildung 2.3: Erzeugung von ServiceOffer-Objekten im objektorientierten Trader [BDRV97, S. 17]... 21 Abbildung 2.4: Struktur des X.500-basierten Traders [PoMe93, S. 3]... 23 Abbildung 2.5: Screenshot der Benutzerschnittstelle des Orbix 2000-Traders... 31 Abbildung 2.6: Modell des Traders nach Jacob und Mudge... 36 Abbildung 2.7: Modell des Distributed Traders [RiHo95b, S. 3]... 37 Abbildung 2.8: Trade Shipping versus Advertisement Shipping [VaBa99b, S. 5]... 40 Abbildung 2.9: Architektur des Component Traders [TeNi99a, S. 191]... 43 Abbildung 2.10: Architektur des erweiterten Component Traders [TeNi00, S. 10]... 44 Abbildung 2.11: Screenshot der WWW-Oberfläche der IBM UDDI Business Registry... 46 Abbildung 3.1: Komponententypen in Java mit Untertypen... 58 Abbildung 3.2: Aufbau einer segmentierten CORBA-Komponente... 68 Abbildung 3.3: Verbreitung der verschiedenen Komponentenmodelle gemäß [Har00]... 80 Abbildung 3.4: Geschätzte Marktanteile bei neuen komponentenbasierten Softwareentwicklungsprojekten [Eis03, S. 16]... 81 Abbildung 4.1: Alternative Dienstbeschreibungen können Schnittmengen bilden... 95 Abbildung 4.2: Anzeige einer Klasse im "Object Browser" von Microsoft Visual Studio.NET Version 7.1... 100 Abbildung 4.3: OLE/COM Object Viewer... 101 Abbildung 4.4: IDL-Anzeige einer COM-Klasse im OLE/COM Object Viewer... 101 Abbildung 4.5: Java-Klassenbrowser in Borland JBuilder Version 8.0... 102 Abbildung 4.6: Darstellung einer aus verschiedenen Einzelanfragen bestehenden Gesamt - Suchanfrage... 105 Abbildung 4.7: Abgrenzung von statischen und dynamischen Eigenschaften [PoMe95, S. 3]... 109 Abbildung 4.8: Komponentennutzung ohne Beteiligung des Traders... 115 Abbildung 4.9: Komponentennutzung mit dem Trader als Proxy... 116 Abbildung 4.10: Nutzung der Komponente auf dem Trader... 117 Abbildung 4.11: Mobile Komponenten... 118 Abbildung 5.1: UComT-Grundarchitektur (UML-Implementierungsdiagramm)... 127 Abbildung 5.2: Trader-Dokument (Beispiel)... 130 Abbildung 5.3: Metamodell einer Komponente [GrTh00, S. xiii]... 131 Abbildung 5.4: Verbessertes Metamodell einer Softwarekomponente... 132 Abbildung 5.5: Weiter verbessertes Metamodell einer Softwarekomponente... 133 Abbildung 5.6: Schematischer Aufbau eines ExportDocument... 137 Abbildung 5.7: Untertypen dynamischer Elemente im UCom-Trader... 140 Abbildung 5.8: Grafische Darstellung eines DAML+OIL-Vokabulars... 154 Abbildung 5.9: Schematischer Aufbau eines ImportDocument am Beispiel von vier Suchelementen (s 1..4 ) in zwei verschiedenen Suchsprachen ssp 1 und ssp 2... 158 Abbildung 6.1: Grobarchitektur des Trader-Servers (UML-Implementierungsdiagramm)... 170 Abbildung 6.2: Ereignismodell für Module... 174 Abbildung 6.3: Detaillierte Architektur des UCom-Trader-Servers... 180 Abbildung 6.4: Aufbau eines Komponentenangebots... 186 Abbildung 6.5: Ablauf eines Exports (UML-Aktivitätsdiagramm)... 187 Abbildung 6.6: Grundsätzlicher Aufbau eines ExportDocument... 191 Abbildung 6.7: Schematischer Aufbau eines ImportAnswerDocument... 196 Abbildung 6.8: Ablauf des Imports (UML-Aktivitätsdiagramm)... 197 Abbildung 6.9: Beispiel für den frühesten Abbruch der Prüfung im Fall von drei Dienstbeschreibungen und drei Suchanfragen, davon eine Mandatory... 201 Abbildung 6.10: Grafische Darstellung der dreizehn Schritte in Matching-Phase 4... 205 Abbildung 6.11: UML-Aktivitätsdiagramm für den Matching-Manager... 206 Abbildung 6.12: Einsatz von Converter-Modulen... 208 Abbildung 6.13: Direkte Komponentennutzung ohne Beteiligung des Trader-Client (Szenario 1a)... 212 Abbildung 6.14: Direkte Komponentennutzung mit Beteiligung eines Trader-Client (Szenario 1b)... 212
Einleitung IX Abbildung 6.15: Direkte Komponentennutzung mit Beteiligung von zwei Trader-Clients (Szenario 1c).. 213 Abbildung 6.16: Der Trader-Server leitet einen Aufruf direkt an den Exporter weiter. (Szenario 2a)... 214 Abbildung 6.17: Aufruf-Weiterleitung über den Trader-Client an den Exporter. (Szenario 2b)... 214 Abbildung 6.18: Ausführung der Komponente auf dem Trader-System ohne Hilfe des Traders beim Aufruf (Szenario 3a)... 215 Abbildung 6.19: Ausführung der Komponente auf dem Trader-System mit Hilfe des Traders beim Aufruf (Szenario 3b)... 216 Abbildung 6.20: Ausführung einer Komponente im Kontext des Importers ohne Hilfe des UComT- Clients beim Aufruf (Szenario 4a)... 218 Abbildung 6.21: Ausführung einer Komponente im Kontext des Importers mit Hilfe des UComT- Clients beim Aufruf (Szenario 4b)... 218 Abbildung 6.22: Entscheidungsbaum für den serverseitigen Access-Manager... 221 Abbildung 6.23: Service Access-Protokolle in verschiedenen Komponenten-Aktivierungsformen... 223 Abbildung 6.24: Grafische Darstellung der Wirkung von LinkDepth... 231 Abbildung 6.25: Abbildung eines UComT-OfferDocument auf UDDI-Einträge... 235 Abbildung 7.1: Grobarchitektur des Trader-Clients (UML-Implementierungsdiagramm)... 245 Abbildung 7.2: Detaillierte Architektur des UCom-Trader-Clients (UML- Implementierungsdiagramm)... 247 Abbildung 7.3: Entscheidungsbaum für den Access-Client... 249 Abbildung 8.1: Plattformen für die Prototypimplementierung... 253 Abbildung 8.2: Komponenten-Nutzungsbeziehungen in der Prototypimplementierung des Servers (UML-Implementierungsdiagramm)... 255 Abbildung 8.3: Inhalt eines UDDI-Servers nach der Weiterleitung mehrerer Registrierungen von einem UComT-Server... 273 Abbildung 8.4: Komponenten-Nutzungsbeziehungen der Prototypimplementierung des Clients (UML-Implementierungsdiagramm)... 276 Abbildung 8.5: Architektur des in C# geschriebenen UComT-Clients (UML- Implementierungsdiagramm)... 277 Abbildung 8.6: Benutzerschnittstelle für den Export... 278 Abbildung 8.7: Benutzerschnittstelle für den Import... 279 Abbildung 8.8: Generische Oberfläche für den Aufruf einer Operation in einer importierten Komponente... 279 Abbildung 8.9: Architektur des in Java geschriebenen UComT-Clients... 280 Abbildung B.1: UML-Diagramm der Kern-Schnittstellen (Ausschnitt)... B-7 Abbildung B.2: UML-Diagramm der Schnittstellen für die internen Datenstrukturen (Ausschnitt)... B-16 Abbildung B.3: UML-Diagramm der Erweiterungsmodul-Schnittstellen... B-21 Abbildung C.1: Startseite der Begleit-CD-ROM... C-1 Abbildung C.2: Screenshot einer Hilfedatei zur Klasse "ExporterManager"... C-3
X Einleitung III. Tabellenverzeichnis Tabelle 2.1: Vergleich von Name-Server und Trader [Kel93, S. 123]... 9 Tabelle 2.2: Analogien für Namensdienst und Trading-Dienst... 9 Tabelle 2.3: Unterstützung der Trading-Schnittstellen in den verschiedenen Trader-Klassen... 17 Tabelle 2.4: Vergleich von ANSAWare-Trader, ODP-Trader und COS-Trader... 33 Tabelle 2.5: Vergleich von Webtrader und ODP-/COS-Trader [VaBa99b, S. 6]... 41 Tabelle 3.1: Vergleich der verschiedenen EJB-Typen... 61 Tabelle 3.2: Vergleich der Begriffe im CLI-Standard mit den Begriffen im Microsoft.NET Framework... 74 Tabelle 3.3: Statistik des Produktkatalogs auf www.componentsource.com... 81 Tabelle 3.4: Zusammenfassender Vergleich der Komponentenmodelle... 83 Tabelle 4.1: Standardisierte Interoperabilitätsmöglichkeiten zwischen Komponenten aus Tabelle 4.2: verschiedenen Komponentenmodellen... 89 Interoperabilität der Komponentenmodelle abseits von SOAP-Webservices (nach [EKT02, S. 83f.])... 89 Tabelle 4.3: Komponententypen... 90 Tabelle 4.4: Varianten der Komponentenaktivierung... 91 Tabelle 4.5: Trading-Formen... 103 Tabelle 4.6: Klassifizierung der Dienstbeschreibungen in einer Suchanfrage... 105 Tabelle 4.7: Vor- und Nachteile von Daueraufträgen... 108 Tabelle 4.8: Tabelle 5.1: Alternativen für den Dienstaufruf im Anschluss an eine Suchanfrage im UCom-Trader... 114 Übersicht über XML-Dokumente für den Datenaustausch zwischen Client und Server... 129 Tabelle 5.2: SXCDL-Elemente... 135 Tabelle 5.3: Hauptelemente eines WSDL-Dokuments... 152 Tabelle 6.1: Überblick über die UCom-Trader-Module... 172 Tabelle 6.2: Zuordnung der Modultypen zu den Basistypen... 176 Tabelle 6.3: Matrix der Kombinationen von Suchsprachen und Beschreibungssprachen (Beispiel)... 199 Tabelle 6.4: Beispiel-Berechnungen zur Wahl der Suchstrategie... 201 Tabelle 6.5: Match-Call-Tabelle... 209 Tabelle 6.6: Überblick über die verschiedenen Szenarien des Dienstaufrufs... 220 Tabelle 6.7: Zusammenfassung der Registrierungstypen für.net-komponenten... 225 Tabelle 8.1: Namensräume in der UComT-Implementierung... 255 Tabelle 8.2: Schnittstellentypen und Namensräume für verschiedene Modultypen... 260 Tabelle 8.3: Implementierte Module... 262 Tabelle 8.4: Implementierte Kombinationen von Suchsprachen und Beschreibungssprachen... 263 Tabelle 8.5: Zusammenfassung der Registrierungstypen für COM-Komponenten... 275 Tabelle 8.6: Kern-Komponenten und Namensräume des C#-Client... 276 Tabelle 8.7: Liste der zur Validierung verwendeten Softwarekomponenten... 283
Einleitung XI IV. Verzeichnis der Listings Listing 5.1: SXCDL-Dokument (Beispiel)... 135 Listing 5.2: Deklaration eines Ad-hoc-Elements (Beispiel)... 141 Listing 5.3: Deklaration eines periodischen Elements (Beispiel)... 141 Listing 5.4: Deklaration eines Exporter-aktualisierten Elements (Beispiel)... 141 Listing 5.5: Deklaration eines fremdaktualisierten Elements (Beispiel)... 142 Listing 5.6: Deklaration eines periodisch beobachteten Elements (Beispiel)... 142 Listing 5.7: Deklaration eines ereignisbasierten beobachteten Elements (Beispiel)... 142 Listing 5.8: Verwendung von Dienstbeschreibungen durch hierarchische ServiceTypes (Beispiel)... 144 Listing 5.9: Dienstbeschreibungen durch Attribut-Wert-Paare (Beispiel)... 145 Listing 5.10: Trader-Direktiven in einem ImportDocument (Beispiel)... 148 Listing 5.11: Dienstbeschreibungen in natürlicher Sprache (Beispiel)... 149 Listing 5.12: Dienstbeschreibung zur Einordnung in den Komponentenkatalog (Beispiel)... 150 Listing 5.13: Dienstbeschreibungen in IDL (Beispiel)... 151 Listing 5.14: WSDL-Beschreibung (Beispiel)... 153 Listing 5.15: Beschreibung einer DAML+OIL-Instanz (Beispiel)... 155 Listing 5.16: Grundstruktur eines ImportDocument... 159 Listing 5.17: Suche nach Diensttypen (Beispiel)... 160 Listing 5.18: SCL-Beispiel für die Suche über eine NVP-Dienstbeschreibung... 161 Listing 5.19: XQuery-Beispiel für die Suche über eine NVP-Dienstbeschreibung... 162 Listing 5.20: SRDL-Beispiel... 162 Listing 5.21: IDL-Suche (Beispiel)... 164 Listing 5.22: Schlüsselwortsuche (Beispiel)... 164 Listing 5.23: Suche mit regulären Ausdrücken (Beispiel)... 164 Listing 5.24: Suchanweisung über den Trader-Katalog (Beispiel)... 165 Listing 5.25: Suche durch Beschreibung einer DAML+OIL-Instanz... 166 Listing 5.26: Suche über die Angebotsnummern (Beispiel)... 166 Listing 5.27: Suche über die Suchnummern (Beispiel)... 167 Listing 6.1: CatalogueDocument (Beispiel)... 182 Listing 6.2: Trader-Direktiven für die Übermittlung von Modulen... 184 Listing 6.3: Ein durch den Exporter hinzugefügtes Beschreibungselement <OfferID> (Beispiel)... 186 Listing 6.4: ExportAnswerDocument (Beispiel)... 187 Listing 6.5: Übermittlung von Komponentendateien im Rahmen eines ExportDocument (Beispiel)... 188 Listing 6.6: WithdrawDocument (Beispiel)... 188 Listing 6.7: WithdrawAnswerDocument (Beispiel)... 188 Listing 6.8: ExportModificationDocument (Beispiel)... 190 Listing 6.9: <TimeRestriction>-Element (Beispiel)... 194 Listing 6.10: DynamicElementPullDocument (Beispiel)... 195 Listing 6.11: DynamicElementPullAnswerDocument (Beispiel)... 195 Listing 6.12: ImportAnswerDocument (Beispiel)... 197 Listing 6.13: Vom Importer-Manager im OfferDocument gespeicherte ImportIDs (Beispiel)... 198 Listing 6.14: Festlegung der Kosten im Rahmen des Exports (Beis piel)... 210 Listing 6.15: Ein Importer erhält eine IOR auf ein CORBA-Objekt (Beispiel)... 212 Listing 6.16: Übermittlung der Daten für eine mobile Komponente in einem ExportDocument (Beispiel)... 217 Listing 6.17: Beschreibung einer mobilen COM-Komponente (Beispiel)... 224 Listing 6.18: Beschreibung einer mobilen.net-komponente (Beispiel)... 225 Listing 6.19: Eingabedaten für das Access-Modul "COM" (Beispiel)... 225 Listing 6.20: Eingabedaten für das Access-Modul "DCOM" (Beispiel)... 226 Listing 6.21: Eingabedaten für das Access-Modul "CLI" (Beispiel)... 226 Listing 6.22: Eingabedaten für das Access-Modul "CLIRemoting" (Beispiel)... 227 Listing 6.23: Eingabedaten für das Access-Modul "RMI" (Beispiel)... 227 Listing 6.24: Eingabedaten für das Installation-Modul "EJB" (Beispiel)... 228 Listing 6.25: Eingabedaten für das Access-Modul "IIOP" (Beispiel)... 229 Listing 6.26: Eingabedaten für das Installation-Modul "CORBA" (Beispiel)... 229
XII Einleitung Listing 6.27: Hinzufügen eines statischen Trader-Links (Beispiel)... 230 Listing 6.28: Interworking-Direktiven für ein ExportDocument (Beispiel)... 230 Listing 6.29: Entfernen eines statischen Trader-Links (Beispiel)... 231 Listing 6.30: Interworking-Ablaufverfolgung (Beispiel)... 232 Listing 6.31: Angebot eines UDDI-Servers... 234 Listing 6.32: Speicherung des UDDI-UUID im OfferDocument... 236 Listing 6.33: Auszug aus dem ConfigurationDocument des Traders... 237 Listing 6.34: CatalogueDocument (Beispiel)... 238 Listing 6.35: Administrationselement zur Übermittlung des Trader-Katalogs an den Client... 238 Listing 6.36: Festlegung des Vokabulars (Beispiel)... 238 Listing 6.37: Administrationselement zur Übermittlung des Vokabulars an den Client... 238 Listing 6.38: Konfigurationselement für den Validation-Manager (Beispiel)... 240 Listing 6.39: Trader-Direktive des Importers zum Aufruf des Validators (Beispiel)... 240 Listing 6.40: ACLs in einem OfferDocument (Beispiel)... 241 Listing 6.41: ACLs in einem ConfigurationDocument (Beispiel)... 241 Listing 6.42: Trader-Direktive zur Berücksichtigung der Bewertungen (Beispiel)... 242 Listing 6.43: Protokoll-Konfiguration (Beispiel)... 243 Listing 8.1: Definition von Exceptions... 261 Listing 8.2: Implementierung der Klasse "Trader" (Ausschnitt)... 264 Listing 8.3: InstalledModules Ausschnitt aus der Implementierung des Module-Managers... 266 Listing 8.4: GetAllModules() Ausschnitt aus der Implementierung des Module-Managers... 267 Listing 8.5: GetModulesOfType() Ausschnitt aus der Implementierung des Module- Managers... 267 Listing 8.6: InitAllModules() Ausschnitt aus der Implementierung des Module-Managers... 268 Listing 8.7: Execute() Ausschnitt aus der Implementierung des Access-Managers... 269 Listing 8.8: ExecuteLocal() Ausschnitt aus der Implementierung des Access-Managers... 270 Listing 8.9: Implementierung des Moduls "Element.NumberOfImports"... 271 Listing 8.10: Equals() Ausschnitt aus der Implementierung des Moduls "Matching.DAMLOIL_DAMLOIL"... 274 Listing 8.11: Aussschnitt aus der Implementierung des Access-Moduls "IIOP"... 281 Listing 8.12: Ausschnitt aus der Implementierung des Access-Moduls "EJB"... 282 Listing A.1: ExportDocument für eine Komponente, die Bankleitzahlen ermittelt und prüft (Ausschnitt)...A-5 Listing A.2: ImportDocument suche nach eine Komponente, die Bankleitzahlen prüft...a-5 Listing A.3: Ein Vokabular in DAML+OIL (Beispiel)...A-9 Listing B.1: Schnittstelle "IDataStore"... B-1 Listing B.2: Schnittstelle "IOfferStore"... B-2 Listing B.3: Schnittstelle "IComponentStore"... B-2 Listing B.4: Schnittstelle "ISearchStore"... B-3 Listing B.5: Schnittstelle "IModuleRepository"... B-3 Listing B.6: Schnittstelle "IProtocolStore"... B-4 Listing B.7: Schnittstelle "IConfigurationStore"... B-4 Listing B.8: Schnittstelle "IClientStore"... B-4 Listing B.9: Schnittstelle "ISchemaStore"... B-5 Listing B.10: Schnittstelle "ICustomStore"... B-5 Listing B.11: Schnittstelle "ITraderCore"... B-6 Listing B.12: Schnittstelle "IFacade"... B-6 Listing B.13: Schnittstelle "IActiveServiceBlock"... B-6 Listing B.14: Schnittstelle "IPassiveBlock"... B-6 Listing B.15: Schnittstelle "IExporterManager"... B-8 Listing B.16: Schnittstelle "IImporterManager"... B-8 Listing B.17: Schnittstelle "IMatchingManager"... B-9 Listing B.18: Schnittstelle "IModuleManager"... B-10 Listing B.19: Schnittstelle "IConverterManager"... B-10 Listing B.20: Schnittstelle "ISchemaManager"... B-11 Listing B.21: Schnittstelle "IDynamicElementManager"... B-11 Listing B.22: Schnittstelle "IAccessManager"... B-12 Listing B.23: Schnittstelle "IAdministrationManager"... B-12
Einleitung XIII Listing B.24: Schnittstelle "ITraderProcess"... B-13 Listing B.25: Schnittstelle "IExport"... B-13 Listing B.26: Schnittstelle "IImport"... B-13 Listing B.27: Schnittstelle "IExecution"... B-14 Listing B.28: Schnittstelle "IAdminCall"... B-14 Listing B.29: Schnittstelle "ITraderClient"... B-15 Listing B.30: Schnittstelle "ITraderDoc"... B-15 Listing B.31: Schnittstellendefinitionen für Trader-Dokumente (Ausschnitt)... B-16 Listing B.32: Schnittstelle "IInternalDataStructure"... B-17 Listing B.33: Schnittstelle "IOffer"... B-17 Listing B.34: Schnittstelle "IOffer"... B-18 Listing B.35: Schnittstelle "IDescElement"... B-18 Listing B.36: Schnittstelle "ISearchElement"... B-19 Listing B.37: Schnittstelle "IMatchCall"... B-19 Listing B.38: Schnittstelle "ITrader"... B-20 Listing B.39: Schnittstelle "IModule"... B-22 Listing B.40: Schnittstelle "IElementBoundModule"... B-23 Listing B.41: Schnittstelle "IEventBoundModule"... B-23 Listing B.42: Schnittstelle "IDescriptionModule"... B-24 Listing B.43: Schnittstelle "ISearchModule"... B-24 Listing B.44: Schnittstelle "IMatchingModule"... B-24 Listing B.45: Schnittstelle "IConverterModule"... B-25 Listing B.46: Schnittstelle "ILinkingModule"... B-25 Listing B.47: Schnittstelle "IAccessModule"... B-26 Listing B.48: Schnittstelle "IInstallationModule"... B-26 Listing B.49: Weitere Schnittstellendefinitionen für Erweiterungsmodule... B-27
XIV Einleitung V. Abkürzungsverzeichnis.cab...Cabinet-Datei.class...Java-Class-Datei.dll...Dynamic Link Library.exe...Executable.jar...Java-Archive-Datei.mf...Manifest-Datei.msi...Microsoft Installationsdatei.sct...Scriptlet.tlb...Type Library.wsc...Windows Script Component ACE...Access Control Entry ACL...Access Control List ANSA...Advanced Network System Architecture API...Application Programming Interface APM...Projects Management Limited ATL...Active Template Library CAGR...Compound Annual Growth Rate CAS...Code Access Security CBD...Component Based Development CCD...CORBA Component Descriptor CCM...CORBA Component Model CCW...COM Callable Wrapper CDL...Component Description Language CDS...Cell Directory Service CGI...Common Gateway Interface CIAO...Component-Integrated Adaptive Communication Environment ORB CIDL...Comp onent Implementation Description Language CIL...Common Intermediation Language CLI...Common Language Infrastructure CLR...Common Language Runtime CLS...Common Language Specification COFF...Common Object File Format COM...Component Object Model COP...Component Oriented Programming CORBA...Common Object Request Broker Architecture COS...CORBA Object Services COSM...Common Open Service Market
Einleitung XV COT...Component Oriented Trading CPN...Coloured Petri Nets CSD...Software Package Descriptor CT...Component Trader CTS...Component Trader Subtree CXT...CORBA/XML-Transformer DA...Database Agent DAML...DARPA Agent Markup Language DARPA...Defense Advanced Research Projects Agency DCE...Distributed Computing Environment DCOM...Distributed Component Object Model DFS...Distributed File Service DIB...Directory Information Base DII...Dynamic Invocation Interface DIT...Directory Information Tree DMTF...Dis tributed Management Task Force DNS...Domain Name Server DocID...Document Identifier DQL...DAML Query Language DRYAD....Directory Adventure DSA...Directory System Agents DSTC...Distributed Systems Technology Centre DTD...Document Type Definition DTS...Distributed Time Service DUA...Directory User Agent E2A...End 2 Anywhere EJB...Enterprise Java Beans EJCCM...Enterprise Java CORBA Component Model ETS...Explorative Trading Service FDT...Formal Description Technique GAC...Global Assembly Cache GDS...Global Directory Service GMD...Gesellschaft für Mathematische Datenverarbeitung GUID...Global Unique Identifier HTTP...Hypertext Transfer Protocol i.d.r...in der Regel IDL...Interface Definition Language IEC...International Electrotechnical Commission IETF...Internet Engineering Task Force
XVI Einleitung IID...Interface Identifier IIOP...Inter-ORB Protocol IIS...Internet Information Services IOR...Interoperable Object Reference ISO...International Standardisation Organisation ITU...International Telecommunication Union J2EE...Java 2 Enterprise Edition JAAS...Authentication and Autorisation Services JAR...Java Archiv-Dateien JAXP...API for XML Processing JCA...J2EE Connector Architecture JCP...Java Community Process JDBC...Java Database Connectivity Jini...Java Intelligent Network Interface JMS...Java Message Service JMX...Java Management Extensions JNDI...Java Naming and Directory Interface JRMP...Java Remote Method Protocol JSP...Java Server Pages JTA...Java Transaction API JVM...Java Virtual Machine KDL...Kind Description Language KIF...Knowledge Interchange Format KQML...Knowledge Query Manipulation Language LAN...Local Area Network LDAP...Lightweight Directory Access Protocol LPC...Local Procedure Calls MDB...Typs Message Driven Bean MELODY...Management Environment for Large Open Distributed systems MIDL...Microsoft Interface Definition Language MOF...Managed Object Format NAICS...North American Industry Classification System o.g...oben genannt OASIS...Organization for the Advancement of Structured Information Standards OCL...Object Constraint Language ODP...Open Distributed Processing OIL...Ontology Interchange Language OLE...Linking and Embedding OMG...Management Group