May 26, 2004

SOA Blueprints: Best practices for service-oriented architectures

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:

  • Synchronicity- Invoking services in two modes: synchronously or asynchronously.
  • Component Services- A simple atomic action on a simple entity that does not depend on
    another service to function.
  • Composite (Business) Services - A composite service, also called business service, is also atomic in nature, but orchestrates the invocation of component services into a business level process. A composite service is stateless (unlike the workflow service), does not manage a long lived transaction (again, unlike workflow services), and may be invoked synchronously or asynchronously.
  • Conversational (Workflow) Services - A conversational service (also called workflow service) typically has state attached to it and looks like a classical finite state machine. BPEL4WS type Web service composition would be an example of a compositional web service.
  • Data Services - A data service provides a mechanism for querying a datasource or multiple datasources
    through a message based request response mechanism.
  • Publish-Subscribe Services - Publish-subscribe services are ones in which interested parties (called subscribers) may request notification of certain events.
  • Service Brokers - An intermediary service that manages the invocation of a set of registered services based on a set of rules.
  • Exception Handling and Compensating Services - A compensating service (also called compensating transaction) is a mechanism for undoing some actions that were already completed that are now inconsistent because the service failed.
  • Interception and Extensibility - Interception is a mechanism for inserting additional functionality into a system without modifying or affecting existing components.
  • Interoperability - This means that the invocation mechanism, message format, data format and security
    requirements of a service can be interacted with successfully by any SOA implementation.
  • Service Security - Set of techniques for ensuring protection of confidential resources. This includes wire level security (HTTP authentication, HTTPS) as well as message layer security (XML Signature, XML Encryption).

Personally, I'm not sure why Interoperability and Service Security are listed as patterns. Anyways, the Blueprints specifications also list common Anti-Patterns:

  • Overly granular business services
  • Remote access to local services
  • Overuse of XML
  • Use of loosely coupled services where tight coupling is required

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

Posted by vivek at 10:32 PM | Comments (0) | TrackBack

May 16, 2004

IBM's Pattern website

IBM has a e-business Patterns website that really good. It classifies it's patterns as

  • Business patterns
  • Integration patterns
  • Composite patterns
  • Custom designs
  • Application patterns
  • Runtime patterns

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.

Posted by vivek at 11:57 PM | Comments (0) | TrackBack

Microsoft's Patterns and Practices

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.

Posted by vivek at 11:04 PM | Comments (0) | TrackBack

A great website for Enterprise Java Patterns

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.

Posted by vivek at 10:46 PM | Comments (0) | TrackBack

Web service patterns

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:

  • Adapter
  • Facade
  • Proxy

Posted by vivek at 10:24 PM | Comments (0) | TrackBack