Programming4us
         
 
 
Applications Server

BizTalk Server 2009: What is MessageBox direct binding?

12/29/2010 7:51:05 PM
The easiest way to link orchestration with messaging endpoints is to create logical ports in orchestrations and bind them to physical ports at runtime. A developer using this technique will know for sure that an orchestration will exchange messages with the appropriate ports. However, this mechanism of orchestration communication is more point-to-point oriented than event driven. What if relevant messages for an orchestration could arrive via multiple receive ports? Or how about trying to anticipate all the possible parties interested in a message that your orchestration is sending out?

The tight coupling produced by binding orchestration ports to physical ports is not the most service-oriented way to design orchestration communication. Instead, MessageBox direct binding is the cleanest way to sever the one-to-one relationship between the messaging and orchestration architectural layers. The way it works is that the "activating" receive shape that instantiates the orchestration maintains a subscription based on the message type in combination with any "filter" applied to the receive shape. ANY message that hits the MessageBox and meets this subscription criterion will get delivered to this orchestration. For any "non-activating" receive shape (such as receive shapes present elsewhere in the orchestration), the subscription is based on the message type and a correlation set made up of additional subscription attributes.

The greatest benefit of this technique is that orchestrations can absorb messages that match specific data criteria instead of focusing on the data publisher. When sending messages on MessageBox direct bound ports, we get the benefit of broadcasting messages without identifying an individual target. There are cases where you want to use MessageBox direct binding but still need to target a specific consumer and this is entirely possible.

How do you apply MessageBox direct binding? When creating a new orchestration receive port, you get the option of choosing a target binding. In the book so far, we've typically used a Specify later binding, which allows us to hook up logical and physical ports at deployment time. However, notice that we also have the option to choose Direct binding from this orchestration port creation wizard.

When creating orchestration send ports, we get a similar experience when choosing direct binding.

For orchestrations that use direct bound ports, you will see a much different "binding" view in the BizTalk Administration Console. Specifically, you'll notice that there are no ports to bind! The only activity required is the binding of the orchestration to a specific host.

Throughout this article, we'll make heavy use of MessageBox direct bound ports in order to demonstrate this technique in a variety of scenarios.

Pitfall

What's the downside of MessageBox direct bound ports? For one, careless usage can lead to unanticipated messages reaching your orchestration or worse, infinite loops. Consider an "activating" receive which is direct bound solely on the message type (i.e., no additional filter applied). If you decide to send this same message out of your orchestration later on (via ANY type of port binding), you will unexpectedly find that this original orchestration starts up all over again! The proper application of direct binding requires forethought of subscription criteria and situational modelling of instantiation scenarios.

Other -----------------
- Designing and Optimizing Storage in an Exchange Server 2010 Environment : When Is the Right Time to Implement NAS and SAN Devices?
- Designing and Optimizing Storage in an Exchange Server 2010 Environment : Defining the Technologies
- Active Directory Domain Services 2008: Create Shadow Groups
- Active Directory Domain Services 2008: View the Resultant Password Settings Objects for a User or Group
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2007 (part 3)
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2007 (part 2) - Upgrading Message Connectivity From Exchange Server 2007
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2007 (part 1)
- BizTalk Server 2009 : Using queues within asynchronous scenarios (part 3)
- BizTalk Server 2009 : Using queues within asynchronous scenarios (part 2)
- BizTalk Server 2009 : Using queues within asynchronous scenarios (part 1)
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 13) - Removing Legacy Exchange Servers
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 12) - Planning Public Folder Access and Migration
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 11)
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 10) - Recipient Update Service Migration
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 9) - Moving Offline Address Books
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 8)
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 7) - Coexistence for Management
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 6) - Upgrading Message Connectivity From Exchange Server 2003
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 5)
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 4)
 
 
Top 10
- Windows Small Business Server 2011 : A Networking Primer - Ethernet/IEEE 802.3 & TCP/IP Basics
- Discovering the Microsoft Azure Platform
- Microsoft Dynamics GP 2010 : Populating Initial Data - Inventory items
- Developing for Windows Phone and Xbox Live : Reach and HiDef Graphics Profiles
- Windows 7: Managing Your Hardware with Device Manager (part 2) - Working with Device Drivers
- Windows Phone7: Pinning a Contact to Start
- Developing BlackBerry Tablet Applications with Flex 4.5 : Create a Flex Mobile Project (part 1)
- BizTalk Server 2009 : Getting results from asynchronous invocations (part 3)
- SharePoint 2010 : Add a Column to a List or Document Library
- Windows7: General Solutions to Network Problems (part 2) - Updating the Router Firmware
Most view
- Exchange Server 2010 : Planning Cross-site Failovers (part 1)
- Windows Server 2008 : Understanding the Windows AIK (part 4) - Understanding ImageX and the .wim File Format
- Sharepoint 2010 : Optimizing Outside of SQL Server
- Publishing SharePoint 2010 to Mobile Devices : Examining Common Firewall Configurations
- Windows Phone 7 : Working with Browsing History
- Windows Server 2008: Enhancing Replication and WAN Utilization at the Branch Office
- Windows Server 2008 : Configuring IIS Security (part 5) - Connecting to a Remote Server Using IIS Manager
- Windows 7 : Getting to Know the Registry (part 2)
- SharePoint 2010 : Creating an Information Repository with the User Profile Service (part 2) - Setting Up and Configuring the User Profile Service
- SharePoint 2007 : Create an Alert on a List or a Library