Is BizTalk an ESB?

本秂侑毒 提交于 2019-11-30 01:46:21

BizTalk is punted by Microsoft as having ESB capabilities - see the BTS ESB toolkit

However, the term 'ESB' covers a very broad field, and there is a lot of subjectivity about an exact definition of an ESB. IMHO there are weak points in BizTalk's claim to be comprehensive as an ESB (in a > 2010 definition of the term).

  • BTS originated in the Hub-and-Spoke EAI era, before ESB became widespread.
  • BTS is more suited toward asynchronous processes than synchronous processes - latencies will vary depending on load on the system, throttling state, etc.
  • BTS is cumbersome when it comes to ease of versioning of services and schemas (new deployment is needed)
  • BTS is cumbersome when it comes to management of MANY services (e.g. Using BizTalk as a facade for all 5000 of your corporate SOA / Web Services will be painful)

FWIW we have found BTS a good fit for:

  • all of our synchronous and asynchronous EAI (i.e. formalized integration contracts between major LOB systems, and with trading partners), and the large number of adapters assists with integrating a wide number of protocols.
  • For Business Process and Business Monitoring capabilities
  • Addressing transactional and delivery reliablity - Biztalk has capability to retry, tracking and resumption of Suspended messages, which is useful over unreliable networks or when it comes to integration with unreliable systems.

Update, with some further comparative experiences

  • BTS is very centralised - ultimately, even a multi-server BizTalk cluster / group is dependent on Sql-Server. Queue based ESB products tend to be more decentralised (logically and physically), so loss of a few endpoint or queue servers should not pull the whole enterprise down.
  • Many queue based ESB's are built on open source technologies, with an eye on avoiding single vendor lock-in
  • Many contemporary ESB's seem to take a commodity-computing approach to scale out. Scaling out with products like BizTalk can become expensive.
  • On the plus side, the monitoring and administration capabilities of commercial offerings like BTS should not be underestimated - make sure any ESB you are considering has adequate auditing, instrumenting, retry, and diagnostic (WMI / SNMP / SCOM etc) capabilities - you'll need a dashboard to monitor the health of your bus, and there is nothing worse than not knowing where a message went. Here, centralisation administration and diagnosis is a plus.

BizTalk is a messaging and workflow orchestration platform, on which you can build ESB behaviours and capabilities. To make this easier, and standardise ESB implementation on BizTalk, Microsoft released the BizTalk ESB Toolkit - a set of guidelines, patterns and code.

The concepts of EAI and BPM have been around for a while, so there are many companies that have leveraged BizTalk to create solutions to these problems. Companies that host a full ESB on BizTalk server are far fewer, and adoption has certainly slowed in the advent of WCF/WF/NServiceBus and, of course, Azure Service Bus.

So in summary, BizTalk out of the box is nether EAI or ESB, but can do both with a number of developers applied to the problem.

By "EAI or ESB" I'm assuming you wanted to know if BizTalk follows the Hub&Spoke or the Bus architecture.

From an architecture patterns perspective, integration solutions roughly fall under one of the two patterns-

  • The Hub and spoke: This involves a centralized message broker sending out messages to various receivers, while all the senders send their messages only to this broker. Thus neither the senders nor the receivers need to be aware of each other. This is typically what many people refer to as EAI (although it is absolutely possible to implement an EAI solution that follows the BUS pattern). Solutions following this pattern are easy to develop and administer. All the routing logic is centrally managed at one place - in the hub. But as you would have guessed, this has a glaring drawback - single point of failure. If the hub crashes everything comes to a halt. Also, this model doesn't scale very well.

  • BUS: Enterprise Integration solutions developed around this pattern are generally referred to as ESB. There is no intelligent central authority here. All senders publish their messages on the bus. The receivers need to be intelligent enough to determine which messages are intended for them and take them off the bus. Thus the senders and the receivers need only be aware of the bus. But here the routing logic is spread across the receivers so there is no single point of failure. Also this model is highly scalable. However such solutions are quite complex and difficult to administer.

Coming to the question which pattern does BizTalk follow- it is a hybrid of both these patterns.

the Hub-like appearance is very obvious with its centralized Messaging Engine, and a central MessageBox database. This gives one the simplicity and ease of administration which is typical of the hub approach.

But if you look at the BizTalk architecture, one can have a Host with its Host Instances spread across multiple servers. It is also possible to have the different BizTalk databases like MessageBox, Tracking, Ent SSO etc. configured on different servers. This makes BizTalk solutions more scalable and tolerant to faults than the run-of-the-mill hub implementations - which is a behavior usually attributed to the bus approach.

Hope this answers your question.

BizTalk is certainly an ESB. EAI is more of a loose concept - BizTalk can certainly be deployed to support EAI, and it can also do a lot more.

BizTalk is more than an ESB but certainly fits the bill. This link is a little old, but answers your exact question.

EDIT: Here is a more-recent MS link that gets into specifics of implementation.

BizTalk can be used as both EAI and ESB.

As for ESB, the BizTalk server architecture is publish-subscribed, a single message can be published to the messagebox which acts as the messaging backbone bus. That message can be received by one or more destination systems that are subscribed to that message. Of course there more capabilities and features that you can get by using BizTalk server like the mapper tool and the use of pipeline components for example.

For use as EAI, BizTalk offers you orchestrations that manage the business logic, LOB(Line of business) adatpers to connect to systems(also legacy), mapper tool, rules engine, and a lot of what you need in order to integrate the different systems in or outside your company.

Robert Morschel

Absolutely! Biztalk comes from an EIS background, which makes perfect sense for ESB as an infrastructure backplane for service-oriented architectures that span hybrid technical platforms.

At a previous company we chose Biztalk in preference to the IBM ESB product for reasons of functionality and lower cost.

It is Microsoft, so you get what you pay for, but still well worth looking into.

Biztalk Server withot "ESB Toolkit" Is not an ESB. Because of the following:

  1. Is a contract first, need to build you message types first.
  2. Need to Plan the whole scenario first to minimize the impact of changes.
  3. Changes requires Deployment which increases downtime.

Regarding to your qustion, Yes BizTalk Server is EAI Product

I agree with most of what's said here. It's a stretch to pitch BizTalk as an all inclusive EBS solution even with the EBS toolkit.

To address a couple points made here ...

•BTS is more suited toward asynchronous processes than synchronous processes - latencies will vary depending on load on the system, throttling state, etc.

BizTalk hosts with unchanged defaults are not ideal for a low latency. But those hosts are meant to be tuned. Out of the box configuration is not suitable for any situation where throughput is needed. In my experiences of walking into an organization where BizTalk has been shunned there is always an untuned single host setup sitting in the middle of it. It is somewhat analogous to making tables in a dbms with no indexes, getting performance issues and saying the dbms itself sucks.

•BTS is cumbersome when it comes to ease of versioning of services and schemas (new deployment is needed)

Like with any development platform you need to have a deployment strategy. If schemas have version in the namespace you do not need to redeploy anything. A new version maybe deployed without taking anything down.

As far as the service endpoints are concerned BizTalk can host web services without the use of IIS (BizTalk can use HTTP.SYS to host just as IIS does). To host an inprocess service in BizTalk is merely a matter of importing a binding which can be done without stopping anything in BizTalk. In those end points you can implement versioning as well (like http:.../thing/v1, http:.../thing/v2, etc.).

Anyway ~5 years have passed I'm sure you have hit a conclusion before now :)

BizTalk can do both ESB and EAI, depends how you design your biztalk applications.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!