Wednesday, October 14, 2009

How-to find the right granularity designing biztalk applications?

Microsofts definition of a biztalk application:
The BizTalk application is a feature of BizTalk Server that makes it quicker and easier to deploy, manage, and troubleshoot BizTalk Server business solutions. A BizTalk application is a logical grouping of the items, called "artifacts," used in a BizTalk Server business solution

I don't think that this definition tells us about the fact what we really are realizing, that is, processes, services, systems functionality and further. We need to answer several questions:
- What function/purpose should the biztalk platform make in our enterprise?
- Should it serve as a Service Bus or an integration platform?

The answers gives us the initial requirements for establishing an initial design and architecture for the biztalk infrastructure.

Initial requirements for the picture below:
- ESB solution
- medium or big biztalk solution
- a lot artefacts to manage(orchestrations, schemas, maps, pipelines, ports)
- support for complex long-running processes
- support for messaging/CBR(content based router)
- different clients demanding similar functionality

Goals:
- reusable services/orchestrations
- easy to manage, deploy and redeploy artifacts
- few, or no dependencies between applications
- loosely coupled services/orchestrations using MsgBox direct binding
- versioning of assemblies supporting different versions, for example a long-running process
- organic growth of artefacts, create applications when needed

Other discussions on the same topic.


Tuesday, October 6, 2009

Supporting Dual MEP:s reusing same service

The tenets of SOA...."loosely coupled" and "autonomous" services.
Here i'll show how you can reuse the same service, e.g the same service implementation, supporting different Message Exchange Patterns.
- synchronous two-way request-response pattern
- asynchronous one-way request pattern

* Reusing the same orchestration(service) for both synchronous and asynchronous interaction
* MsgBox direct-binding(e.g no logical/orchestration ports) -> more autonomous and self-contained
* To fulfil the above you have to copy all(*) BTS subscription-properties from inbound to outbound message. You also have to set the property (BTS.RouteDirectToTP = true).
* One way to determine if the request originates from a one-way or two-way conversation is to evaluate the property (BTS.EpmRRCorrelationToken exists "inboundmessage")

email: robert.sodergren@gmail.com