Patterns for Application Architecture and Integration

Summary

Patterns describe proven solutions to common problems when designing applications. Using patterns promotes a common vocabulary in project teams when discussing solution alternatives, unifies system architectures and helps understanding complex architectures. Patterns save time and money and minimize project risks by using proven practices for predictable results.

Good Architectures cannot be simply derived from requirements be generated by formally applying rules and methods. Application design is a very personalized and highly iterative process in which the designer uses his understanding of the requirements and a mixture of knowledge and experience to generate an initial solution. This first solution can then be balanced against functional and non-functional requirements and a development team can challenge and refine it.

Patterns foster the development process by sharing the knowledge of experienced architects. Good Solutions strike a balance between the size of the problem they solve an the effort to implement them. The “golden hammer” anti-pattern “for a small boy with a new hammer in his hand the whole world looks like a nail” must be avoided.

Detailed Syllabus

The course focuses on high-level architectural patterns, the basic GoF patterns like factory will only be touched.

Basics

·        Pattern Basics

·        Quality Requirements Drive Design!

 

Layers and Component Types

·        Client Layer

·        Presentation Layer

o       User Interface Components

o       User Interface Process Components

o       Calling Services

·        Business Layer

o       Service Interfaces

o       Business Workflows

o       Business Components and Entities

o       Data Access Components

o       Service Gateways

·        Integration Layer

o       Data Sources

o       Used Services

·        Non-layered Approaches

o       Floating Business Logic

o       Software Cells

 

Critical Design Aspects

·        Concurrency

·        Session State

·        Asynchronous Communications

 

Architecture Patterns

·        Organizing Business Logic

o       Transaction Script

o       Domain Model

o       Table Module

·        Object/Relational Mapping

·        Distribution Patterns

o       Distribution consideration

o       Instance-Based vs. Service-based

o       Local Copy vs. Reference

o       Data Transfer Patterns

o       Coarse-Grained Interfaces

o       Instance-Based Collaboration

o       Service-Based Collaboration

·        Deployment Patterns

·        Organizing Presentation Logic

·        Performance and Reliability Patterns

o       Network Load-Balancing

o       Component Load-Balancing

o       Failover Clustering

o       Fail-Fast Technique

 

Integration Patterns

·        Sample Integration Scenario (long)

·        File Transfer

·        Shared Database

·        Remote Procedure Invocation

·        Messaging

 

Technology specifics

·        SOA and Web Services

·        Patterns with Java und J2EE

·        J2EE/.NET Coexistence

Prerequisites

Solid understanding of software development and some (bad) experience with distributed applications.

Resources

·        Design Patterns Explained, A. Shalloway
Good basic introduction to OO and patterns.

·        Patterns of Enterprise Application Architecture, M. Fowler.
A good basis.

·        Enterprise Integration Patterns, J. Croupi.
About the beauty of messages.

·        Bitter EJB, B. Tate, Manning.
Insightful, positive discussion of EJB (anti-)patterns.

·        Enterprise Solution Patterns Using Microsoft .NET,  Microsoft.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/ImpServiceInterfaceInNETwASP.asp  

·        Integration Patterns, Microsoft.
http://msdn.microsoft.com/architecture/patterns/default.aspx?pull=/library/en-us/dnpag/html/intpatt.asp