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)
 
 
Most View
- Developing for Windows Phone and Xbox Live : Multiplayer Games (part 4) - Building a Game Lobby
- Active Directory Domain Services 2008: Enable the Directory Service Changes Auditing Subcategory
- Windows 8 : Configuring Network Connections (part 2) - Configuring DNS Resolution, Configuring WINS Resolution
- iPhone 3D Programming : Vertices and Touch Points - Creating a Wireframe Viewer (part 1)
- iPad SDK : New Graphics Functionality - We Are All Tool Users (part 4) - The Ellipse and Rectangle Tools
- SQL Server 2012 : SQL Server Architecture - THE LIFE CYCLE OF A QUERY (part 1)
- Troubleshoot Windows Server 2008
- Tuning Windows 7’s Performance : Optimizing the Hard Disk
- Microsoft Lync Server 2010 : Planning for Deploying External Services - Firewall Configuration (part 1)
- Exchange server 2010 : Designing and Implementing Messaging Records Management (part 1)
Top 10
- Implementing Edge Services for an Exchange Server 2007 Environment : Utilizing the Basic Sender and Recipient Connection Filters (part 3) - Configuring Recipient Filtering
- Implementing Edge Services for an Exchange Server 2007 Environment : Utilizing the Basic Sender and Recipient Connection Filters (part 2)
- Implementing Edge Services for an Exchange Server 2007 Environment : Utilizing the Basic Sender and Recipient Connection Filters (part 1)
- Implementing Edge Services for an Exchange Server 2007 Environment : Installing and Configuring the Edge Transport Server Components
- What's New in SharePoint 2013 (part 7) - BCS
- What's New in SharePoint 2013 (part 6) - SEARCH
- What's New in SharePoint 2013 (part 6) - WEB CONTENT MANAGEMENT
- What's New in SharePoint 2013 (part 5) - ENTERPRISE CONTENT MANAGEMENT
- What's New in SharePoint 2013 (part 4) - WORKFLOWS
- What's New in SharePoint 2013 (part 3) - REMOTE EVENTS