In October of 2006, Microsoft introduced something we called "ESB Guidance" at the Microsoft SOA & BPM Conference, held annually in Redmond.  (This year's event is October 29-November 2).  The Guidance, as I'll call it, is a package of stuff designed to help Microsoft partners and customers to build large and small-scale ESB solutions.

What's an ESB? you ask...

The term 'Enterprise Service Bus' commonly refers to a set of advanced messaging capabilities, including message transfer or routing, message mediation including transform and filtering, and complex message patterns including publish/subscribe. All this is typically combined with other Quality-of-service capabilities, like message monitoring, auditing and logging, and metering.

ESB technology helps businesses manage the interconnections between systems that are required for composite applications. ESBs address the maintenance issues associated with point-to-point integration approaches - connecting app A to app B, then connecting app B to app C, and so on.  For any system with N subsystems, a point-to-point integration approach requires N^2 connections.  This is just too hard.  ESBs solve that by providing an intermediary or broker to interconnect disparate systems.  Acting as an intermediary, ESBs help resolve the mismatches on things like naming, identity, message formats, and messaging technologies, to make it possible to meaningfully interconnect the services within composite appliciations. The name Enterprise Service Bus reflects the historical focus of ESBs within the enterprise.

Some vendors have taken the idea of brokering connections and produced an ESB product around it.  At Microsoft, we're not so sure that a special, nichey, high-priced product is required. We think ESB is more an architectural pattern that customers can use to address their issues, and this pattern can be implemented with various technologies.  The ESB Guidance addresses that. 

The Microsoft ESB Guidance includes:

  • Sample code built on BizTalk Server 2006 and WCF
  • Architectural guidance, patterns and practices useful in ESB
  • Reusable BizTalk Server ESB and .NET components:
    • Dynamic Transformation Service
    • Dynamic End Point/Configuration Service
    • Itinerary based Routing & Service Invocation
    • an ESB Portal, on which you can view the status of various performance and behavior indicators
    • An Exception Management framework
    • Namespace Resolution Service
    • JMS (Java Message Service) pipeline component (IBM JMS over WMQ) 

Learn more about the ESB Guidance on the project's home page.  There is a partner-specific page too, offering information to MS partners who apply this guidance within projects.

The code portion of the guidance is available on CodePlex. It is currently at "CTP3" level, which means it ain't done yet. The ESB Guidance team expects to release a final version, in which the sample components are stable and well-tested, in October 2007.

Future features that we'll be adding:
  • UDDI publishing and richer resolution options
  • WS-MetadataExchange
  • Enhanced ESB Portal and Exception Mediation
  • Request-Response support for on and off ramps
  • WCF Adapter integration
  • New Samples and Guidance
  • Third party SOA Management and Governance integration (Amberpoint and SOA Software)

Check it out.