Inhaltsverzeichnis | 6 |
Vorwort | 12 |
Teil I Einführung | 14 |
Kapitel 1 Motivation und Überblick | 16 |
Kapitel 2 Softwarearchitekturen | 20 |
2.1 Der Begriff ”Softwarearchitektur“ | 20 |
2.2 Leitgedanken zur Strukturierung von Software | 21 |
2.3 Kriterien für gute Softwarearchitekturen | 22 |
2.4 Die Dimensionen verteilter Systeme | 24 |
2.4.1 Verteilung und Kommunikation | 25 |
2.4.2 Nebenläufigkeit | 26 |
2.4.3 Persistenz | 27 |
2.5 Existierende Softwarearchitekturen für verteilte Systeme | 28 |
Teil II Architekturen für verteilte Systeme | 32 |
Kapitel 3 Client-Server-Architekturen | 34 |
3.1 Architekturkonzept | 34 |
3.1.1 Einführung | 34 |
3.1.2 Eigenschaften des Client-Server-Modells | 35 |
3.2 Realisierungsplattformen | 38 |
3.2.1 WWW-Clients und -Server | 38 |
3.2.2 Sockets | 40 |
3.2.3 RPC am Beispiel Java Remote Method Invocation | 41 |
3.2.4 Client und Datenbank-Server | 43 |
3.3 Code-Beispiele | 45 |
3.3.1 Sockets | 45 |
3.3.2 RPC mit Java RMI | 48 |
3.3.3 DB-Client und DB-Server | 50 |
Kapitel 4 3- und N-Tier-Architekturen | 54 |
4.1 Architekturkonzepte | 55 |
4.1.1 Dreischichtige Architekturen | 55 |
4.1.2 Mehrschichtige Architekturen | 59 |
4.2 Realisierungsplattformen | 62 |
4.2.1 Klassische Web 1.0-Anwendungsarchitekturen | 62 |
4.2.2 Verteilte Objekte am Beispiel CORBA | 64 |
4.2.3 JEE | 68 |
4.2.4 .NET | 76 |
4.3 Code-Beispiele | 85 |
4.3.1 Klassische Web 1.0-Anwendungsarchitekturen | 85 |
4.3.2 Verteilte Objekte am Beispiel CORBA: Code | 88 |
4.3.3 JEE | 91 |
4.3.4 .NET | 96 |
Kapitel 5 SOA | 102 |
5.1 Architekturkonzept | 102 |
5.1.1 Motivation | 102 |
5.1.2 Struktur von SOAs | 103 |
5.2 Web Services | 105 |
5.2.1 Motivation, Historie und Standardisierung | 105 |
5.2.2 SOAP | 107 |
5.2.3 WSDL | 111 |
5.2.4 UDDI | 113 |
5.2.5 WS-BPEL | 113 |
5.2.6 WS-I | 115 |
5.2.7 WS-* | 115 |
5.2.8 Fragestellungen in der Praxis | 116 |
5.2.9 Bewertung der Web Service Standards | 117 |
5.3 Realisierungsplattformen | 118 |
5.3.1 .NET | 118 |
5.3.2 Apache Axis | 120 |
5.3.3 Open Enterprise Service Bus | 123 |
5.3.4 Oracle WS-BPEL Engine | 125 |
5.4 Code-Beispiele | 126 |
5.4.1 Java / Axis | 126 |
5.4.2 .NET | 128 |
5.4.3 WS-BPEL | 129 |
Kapitel 6 Event-Driven Architecture (EDA) | 132 |
6.1 Architekturkonzept | 133 |
6.1.1 Ereignis-orientierte Softwarearchitektur | 134 |
6.1.2 Complex Event Processing | 137 |
6.1.3 EDA-Referenzarchitektur | 146 |
6.1.4 Vorgehen bei der Entwicklung von EDA-Anwendungen | 147 |
6.1.5 Aktueller Entwicklungsstand | 148 |
6.2 Realisierungsplattformen | 149 |
6.3 Code-Beispiele | 150 |
Kapitel 7 Peer-to-Peer | 154 |
7.1 Architekturkonzept | 155 |
7.1.1 Was ist P2P? | 155 |
7.1.2 Zentrale Architektur – Napster | 158 |
7.1.3 Verteilte Architektur – Gnutella | 159 |
7.1.4 Distributed Hash Tables | 162 |
7.1.5 Chord | 164 |
7.1.6 Split-Stream-Protokolle | 166 |
7.1.7 Bedeutung und Einordnung von P2P-Netzen | 168 |
7.2 Realisierungsplattformen | 168 |
7.2.1 JXTA | 169 |
7.2.2 Peer-to-Peer-Netze in der Praxis | 171 |
Kapitel 8 Grid-Architekturen | 174 |
8.1 Architekturkonzept | 175 |
8.1.1 Allgemeines | 176 |
8.1.2 Arten von Grids | 178 |
8.1.3 OGSA | 179 |
8.1.4 Weiterführende Literatur | 180 |
8.2 Realisierungsplattformen | 181 |
8.2.1 Konzeptionelle Realisierungen der OGSA | 182 |
8.2.2 Unabhängige Implementierungen | 187 |
8.2.3 Herstellerspezifische Implementierungen | 190 |
8.3 Code-Beispiele | 192 |
8.3.1 Globus Toolkit GT4 | 192 |
8.3.2 Amazon | 193 |
Kapitel 9 Web 2.0 und Web-orientierte Architekturen | 198 |
9.1 Architekturkonzept | 200 |
9.1.1 Keep it Simple! | 200 |
9.1.2 Hochskalierbare Systeme mit REST | 201 |
9.1.3 AJAX: Neue Wege im Design von Web-basierten Benutzerschnittstellen | 202 |
9.1.4 JSON als leichtgewichtiger Ersatz für XML | 208 |
9.1.5 Event-basierte Programmierung mit Feeds | 209 |
9.1.6 Mashups: Daten- und Applikationsintegration im Browser | 211 |
9.1.7 Architektonische Probleme bei Mashups und AJAX | 212 |
9.2 Realisierungplattformen | 215 |
9.2.1 AJAX-Werkzeuge | 215 |
9.2.2 UI Libs | 216 |
9.2.3 Mashup IDEs | 217 |
9.2.4 Alternative Clients | 217 |
9.3 Code-Beispiele | 219 |
9.3.1 REST Client in Java | 219 |
9.3.2 JavaScript Mashup | 221 |
Teil III Auswahl einer konkreten Architektur | 224 |
Kapitel 10 Vergleichskriterien zur Architekturwahl | 226 |
10.1 Anforderungen aus dem Softwarelebenszyklus | 227 |
10.1.1 Analyse und Design | 228 |
10.1.2 Entwicklung und Test | 229 |
10.1.3 Betrieb | 230 |
10.1.4 Management und Umfeld | 231 |
10.1.5 Analyse der Architekturen | 232 |
10.2 Anforderungen der Anwendungen | 247 |
10.2.1 Grad an Interaktivität | 248 |
10.2.2 Zahl der Teilnehmer | 248 |
10.2.3 Ressourcenbedarf | 249 |
10.2.4 Dynamik | 249 |
10.2.5 Robustheitsanforderungen | 249 |
10.2.6 Anwendungsgebiet | 250 |
10.3 Zusammenfassung der Architekturbewertung | 250 |
Kapitel 11 Verteilte Anwendungen: Fallbeispiele aus der Praxis | 252 |
11.1 Fallbeispiele ”Klassische Web-Anwendungsarchitekturen und Verteilte Objekte“ | 252 |
11.1.1 Klassische Web 1.0-Anwendungsarchitekturen | 252 |
11.1.2 3-Tier Web- und verteilte Objekte-Anwendung mit CORBA: ”UIS-Föderationsarchitektur“ | 253 |
11.2 Fallbeispiele ”N-tier-Architekturen“ | 254 |
11.2.1 .NET: ”3-Schicht-Anwendung vita.NET“ | 255 |
11.2.2 Java EE/J2EE: ”Standard-Web-Anwendungen PetStore und Duke’s Bank“ | 258 |
11.3 Fallbeispiele ”SOA“ | 260 |
11.3.1 SOA und Web Services: ”Amazon.com“ | 261 |
11.3.2 SOA und ESB: ”Einführung in einem mittelständischen Versicherungsunternehmen“ | 261 |
11.3.3 SOA, CORBA und J2EE: ”Erfahrungen bei der Migration eines IMS-basierenden Kernbankenverfahrens in eine Service-orientierte Architektur“ | 265 |
11.4 Fallbeispiele ”Peer-to-Peer“ | 270 |
11.5 Fallbeispiele ”Grid“ | 270 |
11.5.1 Huge Scale Grid: ”Worldwide LHC Computing Grid (WLCG)“ | 270 |
11.5.2 Kleine Grids: ”ViSoGrid“ | 272 |
11.6 Fallbeispiel Web 2.0: ”Flickr“ | 274 |
Teil IV Ausblick und Zusammenfassung | 276 |
Kapitel 12 Künftige Entwicklungen | 278 |
12.1 Software as a Service | 278 |
12.2 Virtualisierung | 279 |
12.3 Appliances | 281 |
12.4 Cloud Computing | 283 |
12.5 Semantic Web | 284 |
12.6 Ubiquitous Computing | 286 |
12.7 Ultra-Large-Scale Systems | 287 |
Kapitel 13 Zusammenfassung | 290 |
Literaturverzeichnis | 292 |
Stichwortverzeichnis | 300 |