Vorworte | 7 |
Zur ersten Auflage | 7 |
Zielsetzung | 7 |
Für wen ist dieses Buch? | 8 |
Zur zweiten Auflage | 9 |
Zur dritten Auflage | 9 |
Zur vierten Auflage | 9 |
Danksagungen | 11 |
Für die erste Ausgabe | 11 |
Für die zweite Ausgabe | 13 |
Für die dritte Ausgabe | 13 |
Für die vierte Ausgabe | 14 |
Mario | 15 |
Geleitwort zur ersten Auflage | 16 |
Geleitwort zur zweiten Auflage | 17 |
Geleitwort zur vierten Auflage | 19 |
Inhaltsverzeichnis | 20 |
Abbildungsverzeichnis | 24 |
Listings | 27 |
1 | Einleitung | 30 |
Übersicht | 30 |
1.1 Historie von Web Services und SOA | 31 |
1.2 Intention | 31 |
1.3 Aufbau des Buches | 32 |
1.3.1 Architektur | 33 |
1.3.2 Web-Services-Grundlagen | 33 |
1.3.3 Weiterführende Web-Services-Themen | 34 |
1.3.4 Ausblick auf zukünftige Themen | 35 |
2 | Service-orientierte Architektur | 37 |
Übersicht | 37 |
2.1 Einleitung | 38 |
2.2 Merkmale einer SOA | 38 |
2.2.1 Grundlegende Merkmale | 39 |
2.2.2 Komplexe Aspekte | 40 |
2.3 Definition einer SOA | 41 |
2.4 Rollen und Aktionen in einer SOA | 42 |
2.5 Dienste | 42 |
2.5.1 Dienstbeschreibung (Service Description) | 43 |
2.5.2 Dienstanbieter | 44 |
2.5.3 Dienstverzeichnis | 44 |
2.5.4 Dienstnutzer | 45 |
2.5.5 Aktionen | 46 |
2.6 Ein neues Programmierkonzept | 47 |
2.6.1 Das große und das kleine Bild | 48 |
2.6.2 Das Ende der Applikationen? | 49 |
2.7 Enterprise Service Bus | 50 |
2.7.1 Grundlegende Eigenschaften | 50 |
2.7.2 Nachrichtenorientierte Middleware | 52 |
2.7.3 Integration basierend auf Standards | 52 |
2.7.4 Die Entwicklung von ESB in den letzten Jahren | 53 |
2.8 Einführung einer SOA | 54 |
2.8.1 Vorgehensweise | 55 |
2.8.2 Häufige Fehler bei Implementierung und Betrieb | 56 |
2.9 Ausblick | 58 |
2.10 Zusammenfassung | 59 |
3 | Service-orientierte Organisation | 60 |
Übersicht | 60 |
3.1 Einleitung | 61 |
3.2 IT-Organisation: Von Säulen zu Balken | 61 |
3.2.1 Säulen oder vertikal aufgestellte IT | 61 |
3.2.2 Balken oder horizontal aufgestellte IT | 63 |
3.3 Das nächste Komponentenmodell | 64 |
3.4 Flexibilität vs. Standardisierung | 65 |
3.4.1 Wiederverwendung und Granularität | 66 |
3.4.2 Streben nach globalem Optimum | 66 |
3.5 Der SOA-Lebenszyklus | 67 |
3.5.1 Abgerechnet wird zum Schluss | 68 |
3.5.2 Aller Anfang ist schwer | 68 |
3.6 Organisationsstrukturen | 69 |
3.6.1 Zuerst der Prozess | 69 |
3.6.2 Prozessund Architekturgremien | 70 |
3.6.3 Conways Gesetz | 71 |
3.7 Herausforderungen an die Organisation | 72 |
3.7.1 Von der Notwendigkeit expliziter Strukturen | 72 |
3.7.2 SOA-Governance | 72 |
3.7.2.1 Begriffsdefinition | 73 |
3.7.2.2 Abgrenzung von SOA-Governance | 73 |
3.7.3 Konsequenzen für Umsetzung | 74 |
3.7.3.1 Bestandteile und Aufgaben von SOA-Gover-nance | 75 |
3.7.3.2 IT-Governance-Organisation | 76 |
3.7.3.3 Aspekte der SOA-Governance | 77 |
3.7.4 Prozesse | 78 |
3.7.4.1 Anforderungsmanagement | 78 |
3.7.4.2 Service Level Management | 79 |
3.7.4.3 Entwicklung und Freigabe | 79 |
3.7.4.4 GUI | 80 |
3.7.5 Kontrollen | 80 |
3.8 Thesen | 82 |
SOA und Säulen vertragen sich nicht | 82 |
Dezentrale Struktur erzwingt zentralen Architekten | 82 |
SOA kann man nicht kaufen | 83 |
SOA macht die IT nicht billiger | 83 |
Der letzte erfolgreiche Big-Bang war vor 13,7 Milliar-den Jahren | 84 |
SOA wird nicht technisch scheitern | 84 |
Alles Meins oder die Psychologie von SOA | 85 |
SOA führt nicht zu Performanceverlust | 86 |
3.9 Zusammenfassung | 86 |
4 | Web-Services-Architektur | 87 |
Übersicht | 87 |
4.1 Einleitung | 88 |
4.2 Das grundlegende Konzept | 89 |
4.2.1 Basiskomponenten | 89 |
4.2.2 Rollen und Aktionen | 90 |
4.2.3 Web Services Stack | 91 |
4.3 Architektur | 93 |
4.3.1 Nachrichten-Modell | 94 |
4.3.2 Service-Modell | 95 |
4.3.3 Ressourcen-Modell | 95 |
4.3.4 Richtlinien-Modell | 96 |
4.4 Standardisierungsgremien | 96 |
4.4.1 W3C – World Wide Web Consortium | 97 |
4.4.2 OASIS | 98 |
4.4.3 IETF | 98 |
4.4.4 UN/CEFACT | 99 |
4.4.5 WS-I | 99 |
4.5 CORBA | 100 |
4.6 Mythen und Legenden | 101 |
Web Services sind einfach! | 101 |
Web Services benötigen keine Programmierung! | 101 |
Web Services sind nicht sicher! | 102 |
Web Services sind per definitionem interoperabel! | 102 |
Web Services sind an HTTP gebunden! | 103 |
Web Services sind synchrone RPC-Aufrufe! | 104 |
Web Services sind Punkt-zu-Punkt-Verbindungen! | 104 |
Web Services sind langsam! | 104 |
Web Services sind für das Web! | 105 |
4.7 Zusammenfassung | 105 |
5 | SOAP | 108 |
Übersicht | 108 |
5.1 Einleitung | 109 |
5.2 Die SOAP-Spezifikationen | 109 |
5.3 Ein klein wenig Kommunikationstheorie | 110 |
5.4 Aufbau einer SOAP-Nachricht | 112 |
5.4.1 SOAP Header | 113 |
5.4.2 Der SOAP Body | 114 |
5.4.3 SOAP-Fehler | 116 |
5.5 Remote Procedure Call mit SOAP | 118 |
5.6 Codierung und Datentypen | 122 |
5.7 Transportprotokolle | 124 |
5.8 Service-Endpunkte | 127 |
5.9 Nachrichten synchron und asynchron übermitteln | 127 |
5.10 WS-Addressing | 128 |
5.11 SOAP-Verwandte | 133 |
5.11.1 XML-RPC | 133 |
5.11.2 REST | 136 |
5.12 Zusammenfassung | 139 |
6 | Web Services Description Language | 140 |
Übersicht | 140 |
6.1 Einleitung | 141 |
6.2 Abstrakte Beschreibung der Dienstfunktionen | 143 |
6.3 Konkrete Beschreibung des Endpunktes | 146 |
6.4 Austauschmuster für Nachrichten | 148 |
6.5 Modularisierung von WSDL-Beschreibungen | 149 |
6.5.1 Include | 150 |
6.5.2 Import | 150 |
6.6 Erweiterungsmechanismus | 151 |
6.7 Das WSDL-Komponentenmodell | 152 |
6.7.1 Symbolbereiche und Namensauflösung | 154 |
6.7.2 Interface | 154 |
6.7.2.1 Interface Operation | 155 |
6.7.2.2 Interface Fault | 157 |
6.7.3 Message Reference | 157 |
6.7.4 Fault Reference | 158 |
6.7.5 Binding | 160 |
6.7.5.1 Binding Operation | 160 |
6.7.6 Service | 162 |
6.7.6.1 Endpoint | 163 |
6.8 Zusammenfassung | 163 |
7 | Verzeichnisdienste für Web Services | 165 |
Übersicht | 165 |
7.1 Einleitung | 166 |
7.2 Web Services Inspection Language | 166 |
7.2.1 Das WS-Inspection-Datenmodell | 167 |
7.2.2 Die Veröffentlichung von WS-Inspection-Doku-menten | 168 |
7.3 UDDI | 169 |
7.3.1 Das UDDI-Prinzip | 169 |
7.3.2 Technischer Überblick über UDDI | 171 |
7.3.3 UDDI-XML-Schema | 172 |
7.3.3.1 Die businessEntity-Datenstruktur | 173 |
7.3.3.2 Die businessService-Datenstruktur | 175 |
7.3.3.3 Die bindingTemplate-Datenstruktur | 177 |
7.3.3.4 Die tModel-Datenstruktur | 178 |
7.3.3.5 Weitere Datenstrukturen | 181 |
7.3.4 UDDI-API | 181 |
7.3.4.1 Die UDDI Inquiry API | 182 |
7.3.4.2 Die UDDI Publication API | 184 |
7.4 Nutzungsszenarien für UDDI | 185 |
7.4.1 Die UDDI Business Registry (UBR) | 186 |
7.4.2 UDDI als branchenspezifischer Marktplatz | 187 |
7.4.3 UDDI im Intranet | 188 |
7.4.4 UDDI in B2Bund EAI-Szenarien | 189 |
7.5 Erfolg von Verzeichnisdiensten | 190 |
7.5.1 Verzeichnisdienste in Firmen | 190 |
7.5.2 Öffentliche Verzeichnisdienste | 191 |
7.5.3 WS-Discovery | 192 |
7.6 Zusammenfassung | 192 |
8 | Leistungsaspekte von Web Services | 194 |
Übersicht | 194 |
8.1 Vorbemerkung | 195 |
8.2 Einleitung | 195 |
8.3 Grundlagen | 196 |
8.3.1 Skalierbarkeit | 196 |
8.3.2 Performance | 198 |
8.3.3 Einflussfaktoren auf die Leistungsfähigkeit | 199 |
8.4 Quantitative Anforderungen | 202 |
8.4.1 Kenngrößen zur Zeit | 203 |
8.4.2 Kenngrößen zum Durchsatz | 203 |
8.4.3 Kenngrößen zur Auslastung | 204 |
8.5 Architektur des Prototyps | 204 |
8.6 Messungen | 207 |
8.6.1 SPEC | 208 |
8.6.2 Ping-Messungen | 208 |
8.6.3 Transportprotokolle und Overhead | 210 |
8.6.4 Baum-Messungen | 217 |
8.7 Analyse der Messungen | 219 |
8.7.1 Ping-Messungen | 220 |
8.7.2 Baum-Messungen | 221 |
8.8 Skalierbarkeit | 222 |
8.9 Zusammenfassung | 225 |
9 | Web Services und Sicherheit | 227 |
Übersicht | 227 |
9.1 Einleitung | 228 |
9.2 Sicherheitsaspekte | 228 |
9.3 Eigenschaften kryptographischer Verfahren | 230 |
Asymmetrische Verfahren zur Verschlüsselung | 230 |
Asymmetrische Verfahren zur digitalen Signatur | 231 |
9.4 Nachrichtensicherheit | 233 |
9.4.1 Transportsicherheit | 233 |
9.4.2 TLS und der Sicherheitskontext | 234 |
9.4.3 Transportsicherheit, SSL und Web Services | 235 |
9.4.3.1 Asynchroner Aufruf von Diensten | 237 |
9.4.3.2 Zusammenfassung TLS/SSL | 238 |
9.4.4 Web-Services-spezifische Besonderheiten | 239 |
9.5 XML Digital Signatures | 240 |
9.6 XML Encryption | 244 |
9.7 WS-Security | 248 |
9.8 WS-Security-Erweiterungen | 249 |
9.8.1 WS-Policy | 249 |
9.8.2 WS-Trust | 250 |
9.8.3 WS-SecureConversation | 251 |
9.8.4 Weitere Sicherheitsspezifikationen | 252 |
9.8.4.1 WS-Privacy | 252 |
9.8.4.2 WS-Federation | 252 |
9.8.4.3 WS-Authorization | 253 |
9.9 Security Assertion Markup Language | 253 |
9.10 Ein Proxy für Web-Services-Sicherheit | 254 |
Abfangen von gesendeten-SOAP-Nachrichten | 255 |
Verarbeitung der eingehenden SOAP-Nachricht | 256 |
Integration in eine bestehende Infrastruktur | 257 |
9.11 Zusammenfassung | 258 |
10 | Geschäftsprozess-Modellierung und -Management | 260 |
Übersicht | 260 |
10.1 Geschäftsprozess-Modellierung | 261 |
10.1.1 Grundlagen | 261 |
10.1.2 Web Services in Geschäftsprozessen | 264 |
10.1.3 Orchestrierung versus Choreographie | 265 |
10.1.3.1 Orchestrierung | 265 |
10.1.3.2 Choreographie | 266 |
10.1.4 Historie | 267 |
10.1.5 BPML und BPEL4WS | 268 |
10.2 BPEL4WS als Programmiersprache | 269 |
10.2.1 Basisstruktur und Programmiermodell | 270 |
10.2.2 Gültigkeitsbereich | 271 |
10.2.3 Data Handling | 272 |
10.2.3.1 Ausdrücke | 272 |
10.2.3.2 Variablen | 272 |
10.2.3.3 Wertzuweisungen | 273 |
10.2.3.4 Funktionen | 274 |
10.2.4 Aktivitäten | 274 |
10.2.4.1 Basisaktivitäten | 275 |
10.2.4.2 Strukturierte Aktivitäten | 278 |
invoke | 275 |
receive und reply | 276 |
throw | 277 |
terminate | 277 |
wait | 277 |
empty | 278 |
scope und compensate | 278 |
sequence | 279 |
while | 279 |
switch | 279 |
flow | 279 |
10.2.4.3 Linksemantik | 280 |
10.2.5 Kommunikation | 282 |
10.2.5.1 Partnerbeziehungen | 282 |
10.2.5.2 Bündelung von Partnerdefinitionen | 284 |
10.2.5.3 Deklarieren von Partnerbeziehungen | 284 |
10.2.5.4 Aufruf eines Web Service | 285 |
10.2.5.5 Aufruf eines Geschäftsprozesses | 286 |
10.2.5.6 Datenaustausch über Eigenschaften | 287 |
10.2.6 Ereignisbehandlung | 288 |
10.2.6.1 Ereignisse | 288 |
10.2.6.2 Alarm | 289 |
10.2.6.3 Nichtdeterministische Verzweigung | 289 |
10.2.7 Korrelationsmengen | 290 |
10.2.8 Ausnahmebehandlung | 291 |
10.2.8.1 Fehlerbehandlung | 291 |
10.2.8.2 Kompensieren von Aktivitäten | 292 |
10.2.8.3 Auslösen der Kompensation | 292 |
10.3 WS-BPEL 2.0 | 293 |
10.3.1 Einleitung | 293 |
10.3.2 Vergleich mit WS-BPEL | 293 |
10.3.2.1 Aktivitäten | 293 |
10.3.2.2 Data Handling | 294 |
10.3.2.3 Ereignisbehandlung | 294 |
10.3.3 Bedeutung von WS-BPEL 2.0 | 295 |
10.4 Zusammenfassung | 295 |
11 | Web Services und Transaktionen | 296 |
Übersicht | 296 |
11.1 Motivation | 297 |
11.2 Existierende Konzepte | 299 |
11.2.1 ACID | 299 |
11.2.2 Verteilte Transaktionen und Zwei-Phasen-Com-mit | 300 |
11.2.3 Lang laufende Transaktionen | 304 |
11.3 Existierende Spezifikationen | 305 |
11.4 Web Services Transaction Framework | 307 |
11.4.1 WS-Coordination | 307 |
11.4.1.1 Activation Service | 309 |
11.4.1.2 Registration Service | 309 |
11.4.1.3 Protocol Services | 309 |
11.4.2 WS-AtomicTransaction | 310 |
11.4.3 WS-BusinessActivity | 313 |
11.4.4 WS-TX – Zusammenfassung | 315 |
11.5 Folgerungen und Ausblick | 316 |
12 | Nichttechnische Anforderungen | 318 |
Übersicht | 318 |
12.1 Rechtliche Rahmenbedingungen für SOA | 319 |
12.1.1 Anforderungen an das Management | 320 |
12.1.2 Rechnungslegungsorientierte Anforderungen | 320 |
12.1.2.1 Belegfunktion | 322 |
12.1.2.2 Journalund Kontenfunktion | 322 |
12.1.2.3 Dokumentation | 323 |
12.1.2.4 Aufbewahrungspflichten | 323 |
12.1.3 Sicherheit | 324 |
12.1.4 Internes Kontrollsystem | 325 |
12.1.5 Outsourcing | 326 |
12.1.6 Anforderungen für die Unternehmensprüfung | 326 |
12.1.7 Anforderungen an den Datenschutz | 328 |
12.1.8 Fazit | 329 |
12.2 Sicherstellung der Dienstequalität | 330 |
12.2.1 Grundlagen von Service Level Agreements | 331 |
12.2.2 Anforderungen an Service Level Agreements | 332 |
12.2.2.1 Anforderungen an den Inhalt | 333 |
12.2.2.2 Anforderungen an die Datenrepräsentation | 336 |
12.2.3 Existierende SLA-Sprachen | 337 |
12.2.4 Service Level Management in UDDI | 338 |
12.2.4.1 Erweiterung der UDDI-Datenstrukuren | 339 |
12.2.4.2 Verweis durch keyedReference | 339 |
12.2.5 Fazit | 340 |
12.3 Bezahlmodelle | 340 |
12.4 Zusammenfassung | 342 |
13 | Web Services – nicht nur für Programmierer | 343 |
Übersicht | 343 |
13.1 Einleitung | 344 |
13.2 Erfahrene Anwender | 344 |
13.3 Anwendungsfälle | 344 |
13.4 Vom Parsen von Webseiten zu standardisierten Web Services | 345 |
13.5 Anforderungen an nicht-dienstspezifische Appli-kationen | 345 |
13.6 Umsetzungsformen | 346 |
13.6.1 Unterstützung komplexer Anfragen | 347 |
13.6.1.1 Anwendungen für komplexe Anfragen | 349 |
13.6.2 Unterstützung von Automatisierung | 350 |
13.7 Semantik | 351 |
13.7.1 Ausblick | 351 |
13.8 Mashups | 352 |
13.9 Populäre Beispiele | 352 |
13.10 Das Beispiel WIDE | 353 |
13.11 Zusammenfassung | 354 |
14 | Anwendungen des Service-Konzepts – Semantik und Wolken | 355 |
Übersicht | 355 |
14.1 Das „Semantic Web“ | 356 |
14.1.1 Kommunikation | 356 |
14.1.2 Transport von Bedeutung | 357 |
14.1.3 Uniform Resource Identifier | 358 |
14.1.4 Konzepte des Semantic Web | 359 |
14.1.5 Das Resource Description Framework | 360 |
14.1.6 RDF-Schema | 363 |
14.1.7 Web Ontology Language | 365 |
14.1.8 Semantic Web Services | 368 |
14.2 Grid Computing | 369 |
14.2.1 Einleitung | 369 |
14.2.2 SOA imGrid – Die Open Grid Services Architec-ture | 370 |
14.2.3 WSRF – Das Web Services Resource Framework | 371 |
14.2.4 Zusammenfassung | 374 |
14.3 Cloud Computing | 375 |
14.3.1 Definition | 375 |
14.3.2 Arten von Clouds | 376 |
14.4 Zusammenfassung | 378 |
15 | Ausblick | 379 |
Literaturverzeichnis | 381 |
Abkürzungen | 391 |
Index | 395 |