Infosys Microsoft Alliance and Solutions blog

« Asynchronous Programming Model in .NET Framework 2.0 - Part III,,, | Main | Custom Control's Default Property Value »

BizTalk as an ESB

Mohan commented on my earlier blog and asked my views on BizTalk as an Enterprise Service Bus (ESB). My take is that if we look at the functionality that ESBs are meant to provide, BizTalk does fit in pretty well, however if we look at some of the deployment considerations (like feature specific deployment), then BizTalk doesn't fit in, since we have to install the entire package. We can however, selectively enable certain funtionality by appropriate configuration.

Considering the better processing power we can get these days, I would tend to put more weightage to the features than deployment aspects. The deployment requirements might result in higher costs, but then there could be various other factors forcing organizations to anyway go in for high end servers.

Getting back to feature set, there are a few definitions of ESB out there. At a high level ESB fits in the middleware category and is primarily about intergration applications using standards based bus (messaging engine). Below, I will try and list the key features that we expect from an ESB and then see where BizTalk fits into it. This list is from wikipedia.

  • It is not an implementation of Service Oriented Architecture --> This is more of concept behind ESB and hence we need not map BizTalk to this.
  • It is usually operating system and programming language agnostic; it should enable interoperability between Java and .Net applications, for example --> BizTalk isn't OS or programming language agnostic by itself, but can help interoperate/integrate Java and .net applications via say the SOAP adapter.
  • It uses XML (eXtensible Markup Language) as the standard communication language --> Though BizTalk can work with any document type, most of features are best used when working with XML. In fact, a common myth is that it is necessary to convert all input documents to XML before sending them for processing within BizTalk.
  • It supports Web services standards --> BizTalk has SOAP adapter that helps you work with web services. It also has adapter for working with Web Services Enhancements (WSE) 2.0.
  • It supports messaging (synchronous, asynchronous, point-to-point, publish-subscribe) --> BizTalk inherantly works on pub-sub model. Messages are published into the BizTalk Message box database and orchestrations and send ports subscribe to them. BizTalk also support message routing, message translation, short and long running transactions and various other message delivery related features. Via use of specific adapters like MSMQ, asynchronous message delivery can be easily achieved.
  • It includes standards-based adapters (such as J2C/JCA) for supporting integration with legacy systems --> BizTalk has a plethora of out-of-box and third party adapters that can be used to integrate with various legacy and LOB systems. A list of such adapters is available here. BizTalk also can work closely with Host Integration Server to connect to mainframes.
  • It includes support for service orchestration & choreography --> Orchestration is one of the key features of BizTalk. BizTalk conforms to Business Process Execution Language (BPEL) standards. Not only does BizTalk provides orchestration execution features, it also has a rich designer support well integrated with Visual Studio 2005. Additionally, it has Orchesration Designer for Business Analysts (ODBA) that integrates with Visio and business users can use it to designing orchestrations.
  • It includes intelligent, content-based routing services (itinerary routing) --> BizTalk supports content based routing via promoted properties concept.
  • It includes a standardized security model to authorize, authenticate, and audit use of the ESB --> BizTalk has mechanisms in place to provide security. It can even work with Certificates and supports ability to resolve incoming requests via these certificates.
  • It includes transformation services (often via XSLT) between the format of the sending application and the receiving application, to facilitate the transformation of data formats and values --> BizTalk has extensive support for data transformation via the Mapper functionality. It provides host of funtoids out-of-box to manage the transformations and also includes ability to custom script additionaly functionality that isn't available via the functoids. For this transformation and schema creation itself, BizTalk again has great tool that integrates with VS. We don't have to worry about writing XSLT manually.
  • It includes validation against schemas for sending and receiving messages --> The pipelines in BizTalk provide mechanisms to validate messages based on published schemas.
  • It can uniformly apply business rules, enrichment of the message from other sources, splitting and combining of multiple messages, and the handling of exceptions --> BizTalk supports interchange handling (splitting messages) and also allows aggregation of messages. Via pipelines and mappers we can work with the messages and modify them. There is good business rules engine (BRE) support via which we can define rules and policies and use them in orchestrations. The policies are managed external to the orchestration and hence can be changed at any time without having to touch the orchestartions. Since BizTalk supports long running transactions, it also has mechanisms for compensating transactions.
  • It can conditionally route or transform messages based on a non-centralized policy - meaning that no central rules engine needs to be present --> Already discussed this above in terms of content based routing and mapping functionality.
  • It is monitored for various SLA (Service-Level Agreement) thresholds message latency and other characteristics described in a Service Level Agreement --> BizTalk has Business Activity Monitoring (BAM) features that provide a portal based approach to track the messages and orchestration progress. Additionally, extensive performance monitor counters are available that can be used to get additional information about message processing speeds etc.
  • It (often) facilitates "service classes," responding appropriately to higher and lower priority users --> This is managed more by appropriate deployment and configuring specific features on specific servers. 
  • It supports queuing, holding messages if applications are temporarily unavailable --> BizTalk can work with adapters like MSMQ that provide such features. It also has capabilities of setting retry count and retry intervals.
  • It is comprised of selectively deployed application adapters in a (geographically) distributed environment --> BizTalk has to be deployed in full, thought post that selective features can be enabled on the machines.

So in a nutshell, as stated earlier, from feature standpoint BTS does offers features that make it a worthy ESB.


Great analysis a way one could say “if it looks like a duck, quacks like a duck …it must be a duck!” right? ;-)

There again, the – shall go unnamed – Architect Evangalist with MicrosoftI talked with said that there is a huge internal debate in the company to call the quacking duck a duck..

But he was kind of philosophical when he said "What's in a name? That which we call a rose By any other word would smell as sweet."

Bottomline: One could definitely leverage BTS to provide ESB functionality ..especially the features you summarize.

Thanks Mohan. I guess if you need a quacking duck and you got something that quacks similar, by all means, go ahead and use it instead :-)

The question remains then whether or not it makes sense to deploy a full-fledged ESB, as in a couple of years the ESB functions will be either provided through the OS, or through intelligent hardware. As a matter of fact, in RESTfull architectures one does not even need a full-fledged ESB, as Apache (maybe even IIS) will do as an intermediary

Check out Microsoft ESB Toolkit. This was presented in a recent Microsoft SoA & BPM conference. This is much better ESB story from Microsoft

Good Analysis but is there any support for Complex event processing in Biztalk.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Please key in the two words you see in the box to validate your identity as an authentic user and reduce spam.

Subscribe to this blog's feed

Follow us on

Blogger Profiles

Infosys on Twitter