Implementing SOA Design Patterns in WCF
I'll be giving this presentation at VS Live! San Francisco on March 27, 2007
Patterns for Flexible WCF Services
While SOA promotes loose coupling at the transport layer and also facilitates platform independence between consumers and the services they interact with, we are still coupled to the interface as defined by the service’s contract. We’ve learned a lot about how to create loosely coupled systems over the last few decades, but how can we apply those lessons to services? This article expands upon Martin Fowler’s Service Layer Pattern. It presents patterns that allow you to define descriptive, maintainable, yet extensible contracts specifically with Microsoft’s WCF technology.
Thanks to Marc Hadley for Help on Service Design Patterns Book
I’d like to thank Dr. Marc Hadley of Oracle (formerly of Sun Microsystems) for taking time out of his busy day to meet with me in support of my work on the Service Design Patterns book. Marc is a Java and Web Services Architect , the specification lead for JSR 311 (i.e. a Java API for RESTful Web Services), and is the author of the Web Application Description Language (WADL). Marc has represented Sun in the W3C XML Protocol and W3C Web Services Addressing working groups where he was co-editor of the SOAP 1.2 and WS-Addressing specifications. Marc also served as the technical lead for Sun’s participation at the Web Services Interoperability Organization (WS-I) and was co-spec lead for JSR 224 (JAX-WS). Thanks so much Marc for your input, and I look forward to more stimulating conversations!!!!
Using Generics to Enable the Data Director Pattern
Context:
- You decide to use the Data Mapper pattern because you’d like to decouple the data model from the domain model (i.e. business objects).
- You decide not to use code generation for Object-Relational Mapping because you want more flexibility in the ways you work with domain objects. For example, you might want to flexibly build object hierarchies, or you might want to merge or split business object fields and and database columns. You might also use continuous integration techniques to build or check the validity of your calls to stored procedures.
- You decide not to use the reflective approach for Object-Relational Mapping because you want a higher degree of run-time performance.
- You decide you’d rather not use a vendor product so that you may avoid vendor lock-in.
- You want to minimize the amount of code required to map data from business objects to stored procedures and vice versa.
- You want to achieve a highly structured and consistent way to organize the mapping logic for all database CRUD operations for individual business objects or for lists of the same.
This article will discuss a simple pattern that leverages the power of Generics to achieve these ends.
AntiPatterns, The Top 10 List
Design Patterns are in vogue these days, but unfortunately Anti-Patterns seem to prevail. Here's a light-hearted and satirical look at the common ways architects and developers shoot themselves in the foot.
Resources Updated
I've updated the Resources Links page, adding more screenshots too.








