Daniel Liebhart, Guido Schmutz, Marcel Lattmann, Markus Heinisch, Michael Könings, Mischa Kölliker, Perry Pakull, Peter Welkenbach Architecture Blueprints Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET ADF, Forms und SOA 2., aktualisierte und erweiterte Auflage HANSER
V Inhalt Vorwort zur zweiten Auflage Vorwort der ersten Auflage Die Autoren XI XIII XV 1 Grundlegende Architekturkonzepte 1 1.1 Enterprise Application Architecture Patterns 1 1.2 Application und Domain Layer 2 1.2.1 Transaction Script 3 1.2.2 Domain Model 4 1.2.3 Table Module 6 1.2.4 Service Layer 9 1.3 Persistence Layer 14 1.3.1 Foreign Key Mapping 14 1.3.2 Association Table Mapping 15 1.3.3 Single Table Inheritance 16 1.3.4 Class Table Inheritance 17 1.3.5 Concrete Table Inheritance 18 1.3.6 Lazy Load 19 1.3.7 Query Object 20 1.3.8 Optimistic Offline Lock 20 1.3.9 Pessimistic Offline Lock 21 1.4 Presentation Layer 22 1.4.1 Forms und Controls 22 1.4.2 Model View Controller (MVC) 24 1.4.3 Model View Presenter (MVP) 26 1.4.4 Presentation Model (auch Application Model) 27 1.4.5 Page Controller 29 1.4.6 Front Controller 30 1.5 Domain Driven Design 30 1.5.1 Isoliere die Domäne 32 1.5.2 Beschreibe das Modell durch Software 34
1.5.3 Organisation der Business-Logik 45 1.6 Zusammenfassung 47 1.6.1 Transaction Script 47 1.6.2 Domain Model 48 1.6.3 Table Module 49 1.6.4 Wann welches Pattern wählen? 50 1.6.5 Fazit 52 2 Spring Framework Architecture Blueprint 53 2.1 Einleitung : 54 2.1.1 Lightweight-Container 54 2.1.2 Die Geschichte von Spring 55 2.1.3 Was ist Spring? 55 2.1.4 Injecting Dependencies 56 2.1.5 Architekturvorteile mit Spring 56 2.1.6 Ziele des Spring Frameworks 57 2.2 Architektur 58 2.2.1 Die Bestandteile von Spring 59 2.2.2 Der Spring Container und Dependency Injection 60 2.2.3 Arbeiten mit dem ApplicationContext 61 2.3 Building Blocks 62 2.3.1 Integration Layer 62 2.3.2 Domain Layer als Transaction Script/Table Module 64 2.3.3 Domain Layer als Rieh Domain Model 67 2.3.4 Application Layer 70 2.3.5 Presentation Layer - Web 79 2.3.6 Presentation Layer- Rieh Client 91 2.3.7 DTO (Data Transfer Objects) 97 2.3.8 Enterprise Application Security 99 2.3.9 Konfiguration 101 2.4 Spring und das Enterprise Middletier 102 2.4.1 Was ist Mule? 103 2.4.2 Mule-Architektur 105 2.4.3 Mule Building Blocks 106 2.4.4 Mule und Spring 121 2.5 Quality 122 2.5.1 Java Coding Standards 123 2.5.2 Code Review 124 2.5.3 Standard für Projekt: Verzeichnislayout 124 2.6 Deployment 124 2.6.1 Nur ein Web Container 124 2.6.2 Präsentation auf separatem Server 125 2.6.3 Full-blown" Application Server 126 2.6.4 Rieh Client 126 2.7 Other Issues - Werkzeuge 127 2.7.1 Eclipse 128
2.7.2 Ant 128 2.7.3 Maven 128 2.8 Zusammenfassung 133 3 Microsoft.NET Architecture Blueprint 137 3.1 Einleitung 138 3.1.1 Service-Orientierung 138 3.1.2 Den Lifecycle im Blick 139 3.1.3 Projektunterstützung 140 3.1.4 Anwendungsgebiete 140 3.1.5 Zukunft eingebaut 141 3.2 Integrations-Szenarien 141 3.3 Überblick Architektur 143 3.3.1 Überblick 143 3.3.2 Vergleich mit der Microsoft Application Architecture 144 3.3.3 Domain Driven-Ansatz vs. Table Module 145 3.3.4 Occasionally Connected Smart Clients 148 3.3.5 Abbildung der logischen Layer auf physische Tiers 149 3.4 Building Blocks 150 3.4.1 Layer 150 3.4.2 Ul Presentation Layer 151 3.4.3 Ul Layer 151 3.4.4 Ul Process Layer 156 3.4.5 Service Layer 157 3.4.6 Domain Layer 158 3.4.7 Data Access Layer 163 3.4.8 Querschnittsfunktionen 165 3.4.9 Verteilung mit Windows Communication Foundation 167 3.4.10 Data Access Frameworks 170 3.5 Quality 174 3.5.1 UnitTesting 174 3.5.2 Visual Studio 2005 Team System 176 3.6 Other Issues 1 77 3.6.1 Express your Intent 177 3.6.2 Vereinfachung durch Abstraktion 178 3.6.3 Guided Automation, DSL und Software Factories 180 3.6.4 User Experience 182 3.6.5 Microsoft Patterns & Practices 183 3.7 Deployment 187 3.7.1 Deployment-Methoden 187 3.7.2 Deployment-Architekturen 191 3.8 Zusammenfassung 191 3.8.1 Einsatz von.net 3.0, Frameworks und Generatoren 192 3.8.2 Unterstützung für den gesamten Lifecycle 193
4 Oracle ADF Architecture Blueprint 195 4.1 Einleitung 196 4.1.1 Freedom of Choice 196 4.1.2 JDeveloper Integration 197 4.1.3 Historie 197 4.1.4 Einsatzbereich ADF 198 4.2 Architektur 199 4.2.1 ADF Model 200 4.2.2 Business Service mit ADF Business Components 203 4.2.3 Klassifizierung der Architektur 205 4.3 Building Blocks 208 4.3.1 ADF Business Components 209 4.3.2 Active Data Model 227 4.3.3 Web Service-Unterstützung 228 4.4 Quality 231 4.4.1 Testing mit JUnit 231 4.4.2 Logging 231 4.4.3 Oracle Business Component Browser 232 4.4.4 Debugging 233 4.5 Other Issues 233 4.5.1 ApplicationModule Pooling und Session State 233 4.5.2 ADF Pooling 235 4.5.3 Oracle JHeadstart 236 4.6 Deployment 239 4.6.1 Batch Mode vs. Immediate Mode 240 4.6.2 Deployment für Entwicklungszwecke 241 4.6.3 Deployment für Produktion 241 4.7 Zusammenfassung 242 5 Oracle Forms 245 5.1 Einleitung 245 5.1.1 Oracle Forms Developer 246 5.1.2 Oracle Application Server Forms Services 247 5.1.3 Einsatzbereiche Oracle Forms 247 5.1.4 Zukunft von Oracle Forms 247 5.2 Architektur 249 5.2.1 Technische Architektur Forms-Applikationen 249 5.2.2 Forms Services in Action 250 5.2.3 Logische Architektur 252 5.2.4 Konzepte und Einsatz der Layer 253 5.2.5 Das Forms-Konzept 255 5.3 Building Blocks 260 5.3.1 Client Tier 260 5.3.2 Presentation 263 5.3.3 Business Logic 264 5.3.4 Integration 265
5.3.5 Resource Tier 266 5.4 Qualitätssicherung 267 5.4.1 Testsysteme 267 5.4.2 Testtechniken 268 5.4.3 Fehleranalyse 268 5.4.4 Versionskontrolle 268 5.5 Deployment 269 5.5.1 Grundmodell 269 5.5.2 Normales Deployment 269 5.5.3 Konfigurationsdateien 270 5.5.4 Sizing 271 5.6 Migration 276 5.6.1 Migrationsvorgehen 276 5.7 Best Practices 278 5.7.1 Standards 278 5.7.2 Entwicklungsumgebung aufbauen 280 5.7.3 Oracle Application Server-Umgebung aufbauen 280 5.7.4 Deployment Icons 281 5.7.5 Generieren von Modulen auf dem Application Server 282 5.8 Zusammenfassung 283 6 Service Oriented Architecture Blueprint 289 6.1 Einleitung 290 6.2 Grundlegende Konzepte 292 6.2.1 Web Services 292 6.2.2 Grundlegende Standards SOAP, WSDL und UDDI 295 6.2.3 Business Process Execution Language (BPEL) 299 6.3 Architektur 305 6.3.1 Der SOA Blueprint 306 6.3.2 Eigenschaften des SOA Blueprints 308 6.3.3 Dienste statt Applikationen 309 6.3.4 Der Service als Grundbaustein 310 6.3.5 Dienste = Technik und Organisation 311 6.3.6 SOA Skaleneffekte auf Organisationsebene 312 6.3.7 Beispiel: Supply Chain über Firmengrenzen hinweg 315 6.3.8 Agile Unternehmen 316 6.4 Building Blocks 317 6.4.1 Presentation 319 6.4.2 Orchestration 319 6.4.3 Services 320 6.4.4 Integration Architecture 322 6.4.5 Legacy-Systeme als Web Services 323 6.4.6 Composite Applications 324 6.5 Quality 326 6.5.1 Reverse Engineering von Legacy-Systemen für SOA 326 6.5.2 Business Process Management und SOA 332
Inhalt 6.6 Deployment 337 6.6.1 Top-down-Strategie 337 6.6.2 Schrittweise Einführung 338 6.7 Zusammenfassung 339 6.7.1 Die Bestandteile des SOA Blueprints 341 6.7.2 Presentation 341 6.7.3 Orchestration 341 6.7.4 Services 342 6.7.5 Integration Architecture 342 6.7.6 Wiederverwendung bestehender Systeme 342 6.7.7 Business Process Management mit SOA 343 6.7.8 Die Einführung von SOA 343 Literatur 345 Register 351