Architecture Blueprints Daniel Liebhart, Peter Welkenbach, Perry Pakull, Mischa Kölliker, Michael Könings, Markus Heinisch, Guido Schmutz Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET, ADF, Forms und SOA ISBN 3-446-40952-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40952-1 sowie im Buchhandel
Inhalt Die Autoren... 13 1 Grundlegende Architekturkonzepte... 15 1.1 Enterprise Application Architecture Patterns... 15 1.1.1 Domain Logic Patterns... 16 1.1.2 Data Source Architectural Patterns... 21 1.1.3 Object-Relational Behavioral Patterns... 24 1.1.4 Object-Relational Structural Patterns... 27 1.1.5 Object-Relational Metadata Mapping Patterns... 32 1.1.6 Presentation Patterns... 33 1.1.7 Distribution Patterns... 41 1.1.8 Offline Concurrency Patterns... 44 1.1.9 Base Patterns... 46 1.2 Domain Driven Design... 49 1.2.1 Ziel: Isoliere die Domäne... 51 1.2.2 Ziel: Beschreibe das Modell durch Software... 53 1.2.3 Organisation der Business-Logik... 64 1.3 Zusammenfassung... 67 1.3.1 Transaction Script... 67 1.3.2 Domain Model... 68 1.3.3 Table Module... 69 1.3.4 Wann welches Pattern wählen?... 70 1.3.5 Fazit... 71 2 Spring Framework Architecture Blueprint... 73 2.1 Einleitung... 73 2.1.1 Leightweight-Container... 74 2.1.2 Die Geschichte von Spring... 75 2.1.3 Was ist Spring?... 75 2.1.4 Injecting Dependencies... 75 2.1.5 Architekturvorteile mit Spring... 76 2.1.6 Ziele des Spring Frameworks... 77 2.2 Architektur... 77 2.2.1 Spring Bestandteile... 80 2.2.2 Der Spring Container und Dependency Injection... 80 2.2.3 Arbeiten mit dem ApplicationContext... 81 2.3 Building Blocks... 82
8 Inhalt 2.3.1 Integration Layer... 82 2.3.2 Domain Layer als Transaction Script/Table Module... 84 2.3.3 Domain Layer als Rich Domain Model... 88 2.3.4 Application Layer... 91 2.3.5 Presentation -Layer - Web... 100 2.3.6 Presentation Layer - Rich Client... 114 2.3.7 DTO (Data Transfer Objects)... 120 2.3.8 Enterprise Application Security... 122 2.3.9 Konfiguration... 124 2.4 Quality... 125 2.4.1 Java Coding Standards... 125 2.4.2 Code Review... 126 2.4.3 Standard für Projekt Verzeichnislayout... 126 2.5 Deployment... 126 2.5.1 Nur Web Container... 127 2.5.2 Präsentation auf separatem Server... 127 2.5.3 Full-blown Application Server... 128 2.5.4 Rich Client... 129 2.6 Other Issues Werkzeuge... 130 2.6.1 Eclipse... 130 2.6.2 Ant... 130 2.6.3 Maven... 131 2.7 Zusammenfassung... 135 3 Microsoft.NET Architecture Blueprint... 139 3.1 Einleitung... 139 3.1.1 Anwendungsgebiete... 140 3.2 Architektur... 141 3.2.1 Übersicht... 141 3.2.2 Microsoft Application Architecture... 143 3.2.3 Kommunikation zwischen den Layern... 144 3.2.4 Disconnected Clients... 146 3.2.5 Abbildung der logischen Layer auf physische Tiers... 147 3.2.6 Architektur für große Systeme... 148 3.3 Building Blocks... 150 3.3.1 Client Domain Layer... 150 3.3.2 Presentation Layer... 152 3.3.3 Data Binding... 152 3.3.4 Process Layer... 153 3.3.5 Service Layer... 155 3.3.6 Domain Layer... 157
Inhalt 9 3.3.7 Business Rule Layer... 159 3.3.8 Data Access Layer... 161 3.4 Quality... 162 3.4.1 Unit Testing... 162 3.4.2 Team System... 164 3.4.3 Übersicht: Eingesetzte Patterns und Design-Prinzipien... 165 3.5 Other Issues Frameworks... 166 3.5.1 Microsoft Application Building Blocks und GUI Controls... 166 3.5.2 NHibernate... 167 3.5.3 ibatis... 167 3.5.4 LastComponent... 167 3.5.5 CodeSmith... 168 3.5.6 TMDA... 169 3.6 Deployment... 171 3.6.1 Deployment-Methoden... 171 3.6.2 Deployment-Architekturen... 175 3.7 Zusammenfassung... 175 4 Oracle ADF Architecture Blueprint... 179 4.1 Einleitung... 179 4.1.1 Freedom of Choice... 180 4.1.2 JDeveloper Integration... 181 4.1.3 Historie... 181 4.1.4 Einsatzbereich ADF... 182 4.2 Architektur... 183 4.2.1 ADF Model... 184 4.2.2 Business Service mit ADF Business Components... 187 4.2.3 Klassifizierung der Architektur... 189 4.2.4 Active Data Model... 191 4.3 Building Blocks... 192 4.3.1 ADF Business Components... 193 4.4 Quality... 210 4.4.1 Logging... 210 4.4.2 Oracle Business Component Browser... 210 4.4.3 Testing mit JUnit... 211 4.4.4 Debugging... 212 4.5 Other Issues... 212 4.5.1 ApplicationModule Pooling und Session State... 212 4.5.2 ADF Pooling... 214 4.6 Deployment... 215 4.6.1 Batch Mode vs. Immediate Mode... 216
10 Inhalt 4.6.2 Deployment für Entwicklungszwecke... 216 4.6.3 Deployment für Produktion... 216 4.7 Zusammenfassung... 217 5 Oracle Forms Architecture Blueprint... 221 5.1 Einleitung... 221 5.1.1 Oracle Software-Entwicklung... 222 5.1.2 Oracle Forms Developer... 222 5.1.3 Oracle Application Server Forms Services... 223 5.1.4 Einsatzbereiche Oracle Forms... 223 5.1.5 Zukunft von Oracle Forms... 224 5.2 Architektur... 225 5.2.1 Technische Architektur Forms-Applikationen... 225 5.2.2 Logische Architektur... 227 5.2.3 Konzepte und Einsatz der Layer... 228 5.3 Building Blocks... 229 5.3.1 Client Tier... 229 5.3.2 Presentation... 232 5.3.3 Business Logic... 238 5.3.4 Integration... 239 5.3.5 Resource Tier... 241 5.4 Quality... 241 5.4.1 Testsysteme... 241 5.4.2 Testtechniken... 242 5.4.3 Fehleranalyse... 242 5.4.4 Versionskontrolle... 242 5.5 Deployment... 243 5.5.1 Grundmodell... 243 5.5.2 Normales Deployment... 243 5.5.3 Konfigurationsdateien... 244 5.5.4 Sizing... 245 5.6 Migrationen... 249 5.6.1 Migrationsvorgehen... 250 5.7 Best Practices... 251 5.7.1 Standards... 251 5.7.2 Development-Umgebung aufbauen... 253 5.7.3 Oracle Application Server-Umgebung aufbauen... 254 5.7.4 Deployment Icons... 255 5.7.5 Generieren von Modulen auf dem Application Server... 255 5.8 Zusammenfassung... 256
Inhalt 11 5.8.1 Positionierung... 256 5.8.2 Einsatzbereiche... 257 5.8.3 Architektur... 257 5.8.4 Migration... 259 6 Service Oriented Architecture Blueprint... 261 6.1 Einleitung... 261 6.2 Grundlegende Konzepte... 263 6.2.1 Web Services... 263 6.2.2 Grundlegende Standards SOAP, WSDL und UDDI... 265 6.2.3 Business Process Execution Language (BPEL)... 270 6.3 Architektur... 276 6.3.1 Der SOA Blueprint... 276 6.3.2 Dienste statt Applikationen... 277 6.3.3 Der Service als Grundbaustein... 278 6.3.4 Dienste = Technik und Organisation... 279 6.3.5 SOA Skaleneffekte auf Organisationsebene... 280 6.3.6 Beispiel: Supply Chain über Firmengrenzen hinweg... 283 6.3.7 Agile Unternehmen... 284 6.4 Building Blocks... 285 6.4.1 Presentation Layer... 286 6.4.2 Orchestration Layer... 286 6.4.3 Integration Architecture... 287 6.4.4 Business-Logik Web Services Technische Umsetzung... 287 6.4.5 Legacy-Systeme als Web Services... 288 6.4.6 Composite Applications... 289 6.5 Quality... 291 6.5.1 Reverse Engineering von Legacy-Systemen für SOA... 291 6.5.2 Service Repository... 297 6.6 Deployment... 301 6.6.1 Top-Down-Strategie... 301 6.6.2 Schrittweise Einführung... 302 6.7 Zusammenfassung... 303 6.7.1 Presentation Layer... 304 6.7.2 Orchestration Layer... 304 6.7.3 Integration Architecture... 305 6.7.4 Wiederverwendung bestehender Systeme... 305 6.7.5 SOA Einführung... 306 Literaturverzeichnis... 307 Index... 311