Rights Contact Login For More Details
- Wiley
More About This Title Enterprise Software Architecture and Design: Entities, Services, and Resources
- English
English
- English
English
- English
English
Acknowledgements xxiii
1. Introduction 1
References / 6
2. Middleware 7
2.1 Enterprise Information Systems / 7
2.2 Communication / 12
2.3 System and Failure Models / 21
2.4 Remote Procedure Call / 34
2.5 Message-Oriented Middleware / 42
2.6 Web Services and Service-Oriented Architecture (SOA) / 46
2.7 Cloud Computing / 52
2.8 Naming and Discovery / 55
2.9 Further Reading / 56
References / 57
3. Data Modeling 59
3.1 Entities and Relationships / 60
3.1.1 Concepts and Entities / 60
3.1.2 Attributes and Relationships / 61
3.1.3 Properties of Relationship Types / 65
3.1.4 Special Relationship Types / 69
3.2 XML Schemas / 74
3.3 Defining New Types / 79
3.3.1 Defining Simple Types / 79
3.3.2 Defining Complex Types / 82
3.4 Derived Types / 85
3.4.1 Derived Simple Types / 86
3.4.2 Derived Complex Types / 87
3.5 Document Hierarchies / 94
3.6 Relationship Types in XML Schemas / 98
3.7 Metaschemas and Metamodels / 100
3.8 Further Reading / 102
References / 102
4. Data Processing 104
4.1 Processing XML Data / 104
4.1.1 Tree Processing / 105
4.1.2 Schema Binding / 109
4.1.3 Stream Processing / 114
4.1.4 External Processing / 119
4.2 Query Languages and XQuery / 122
4.3 XML Databases / 134
4.3.1 Storage as Relational Tables / 135
4.3.2 Storage as Large Strings / 137
4.3.3 Native XML Storage / 137
4.4 Web Services / 138
4.4.1 SOAP: (not so) Simple Object Access Protocol / 139
4.4.2 WSDL: Web Services Description Language / 145
4.4.3 Web Service Policy / 155
4.5 Presentation Layer: JSON and JQUERY / 159
References / 166
5. Domain-Driven Architecture 167
5.1 Software Architecture / 167
5.2 Domain-Driven Design / 168
5.3 Application Frameworks / 175
5.4 Domain-Specific Languages (DSLs) / 180
5.5 An Example API for Persistent Domain Objects / 188
5.6 Domain-Driven Architecture / 197
5.7 Further Reading / 205
References / 205
6. Service-Oriented Architecture 207
6.1 Services and Procedures / 207
6.2 Service-Oriented Architecture (SOA) / 211
6.3 Service Design Principles / 216
6.4 Service-Oriented Architecture (SOA) Governance / 218
6.5 Standardized Service Contract / 221
6.5.1 Operations Contract / 222
6.5.2 Data Contract / 223
6.5.3 Policy Contract / 224
6.5.4 Binding Contract / 226
6.5.5 Contract Versioning / 231
6.6 Service Loose Coupling / 237
6.6.1 Motivation for Loose Coupling / 237
6.6.2 Contract Development / 239
6.6.3 Loose Coupling Patterns / 242
6.6.4 Cost of Loose Coupling / 246
6.7 Service Abstraction / 248
6.7.1 Platform Abstraction / 248
6.7.2 Protocol Abstraction / 249
6.7.3 Procedural Abstraction / 261
6.7.4 State Abstraction / 264
6.7.5 Data Abstraction / 269
6.7.6 Endpoint Abstraction / 278
6.8 Service Reusability / 278
6.8.1 Parameterization and Bounded Polymorphism / 279
6.8.2 Subtyping, Inheritance, and Contracts / 284
6.8.3 Does Service-Oriented Architecture Require Subtyping? / 289
6.8.4 Patterns for Service Reusability / 292
6.9 Service Autonomy / 299
6.9.1 Replicating Computation / 300
6.9.2 Replicating State / 303
6.9.3 Sources of Errors and Rejuvenation / 308
6.9.4 Caching / 313
6.10 Service Statelessness / 323
6.10.1 Contexts and Dependency Injection / 331
6.11 Service Discoverability / 336
6.11.1 Global Discovery / 336
6.11.2 Local Discovery / 337
6.11.3 Layered Naming / 347
6.12 Further Patterns / 351
6.13 Further Reading / 352
References / 352
7. Resource-Oriented Architecture 359
7.1 Representational State Transfer / 359
7.2 RESTful Web Services / 369
7.3 Resource-Oriented Architecture (ROA) / 379
7.4 Interface Description Languages / 387
7.4.1 Web Services Description Language (WSDL) / 387
7.4.2 Web Application Description Language (WADL) / 390
7.5 An Example Application Program Interface (API) for Resource-Oriented Web Services / 396
7.6 Hypermedia Control and Contract Conformance / 406
7.7 Concluding Remarks / 412
7.8 Further Reading / 414
References / 414
Appendix A: Introduction to Haskell 416
A.1 Types and Functions / 416
A.2 Type Classes and Functors / 425
A.3 Monads / 431
A.4 Further Reading / 436
References / 436
Appendix B: Time in Distributed Systems 437
B.1 What Time Is It? / 437
B.2 Time and Causality / 443
B.3 Applications of Logical and Vector Time / 450
B.3.1 Mutual Exclusion / 450
B.3.2 Quorum Consensus / 451
B.3.3 Distributed Logging / 456
B.3.4 Causal Message Delivery / 458
B.3.5 Distributed Snapshots / 463
B.4 Virtual Time / 468
B.5 Further Reading / 470
References / 470
Index 473