The Middleware Company, in conjunction with other companies like BEA, recently published an example architecture utilizing SOA best practices. This architecture is available at the SOA blueprints website (registration required). The architecture demonstrates how an example HR system/Employee portal and Product services system can be designed using SOA. It also describes (briefly) the provisioning of an enterprise wide security service to provide authentication, authorization and auditing capabilities for all enterprise applications.
The SOA Blueprints specifications identify the following to be common SOA patterns:
Personally, I'm not sure why Interoperability and Service Security are listed as patterns. Anyways, the Blueprints specifications also list common Anti-Patterns:
This, I totally agree with. These anti-patterns would have a performance impact on your services. Other things to look at that relate to performance are listed in my weblog post from two weeks ago
IBM has a e-business Patterns website that really good. It classifies it's patterns as
Though these patterns are for Web applications, some of the runtime patterns I've looked at (and used), such as the High Availability Pattern and the High Performance Pattern are clearly applicable for Web services too.
Microsoft has 'patterns & practices' websites that have catalogs of patterns. Some of them are Microsoft-centric, but many have applicability to any enterprise scenario. The websites are :
There is also a useful document on Enterprise Solution Patterns Using Microsoft .NET in the MSDN library.
I'm sure every Enterprise Java developer/architect knows of this resource, but I'm listing it here nonetheless: the patterns webpage at TheServerSide.
You should subscribe to their RSS feed, if you haven't already done so. The website also has a free book and source code download for the EJB Design Patterns book that covers many of the patterns discussed there.
I've started a new weblog for exploring design patterns and their applicability to Web services. I'm armed with three good books for my journey- the classic Design Patterns book by the gang-of-four (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides), Core J2EE Patterns: Best Practices and Design Strategies, Second Edition by Deepak Alur, Dan Malks and John Crupi and Patterns of Enterprise Application Architecture by Martin Fowler. Hopefully these Web service patterns should translate into the .NET world too.
My intention is to see which of these pattens are applicable to Web services (and how) and also to explore new patterns of usage.
At first glance, there are three patterns that may apply (below), and I'll be exploring these in the months to come: