<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Kevin Lam's WebLog</title><subtitle type="html" /><id>http://blogs.msdn.com/kevin_lam/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/kevin_lam/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-08-20T09:51:00Z</updated><entry><title>Demystifying Direct Bound Ports - Part 6</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2007/04/05/demystifying-direct-bound-ports-part-6.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2007/04/05/demystifying-direct-bound-ports-part-6.aspx</id><published>2007-04-06T02:14:00Z</published><updated>2007-04-06T02:14:00Z</updated><content type="html">&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;Dynamic Direct Bound Port Clarification&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;There seems to have been some confusion generated by readers trying to implement dynamic direct bound ports that I wanted to clarify.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;A dynamic direct bound port is merely a &lt;I style="mso-bidi-font-style: normal"&gt;direct bound port&lt;/I&gt; whose address is set at runtime.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is not a &lt;I style="mso-bidi-font-style: normal"&gt;dynamic send port&lt;/I&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Dynamic send ports allow you to determine at runtime which send adapter the message will be routed to which is derived from the prefix of the address of the endpoint you have provided.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If you try to set the address of a dynamic send port using the &lt;I style="mso-bidi-font-style: normal"&gt;msgbox:&lt;/I&gt; prefix you will get a routing exception (transport cannot be resolved) as &lt;I style="mso-bidi-font-style: normal"&gt;msgbox:&lt;/I&gt; is not an alias for any send adapter.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;The ability to modify the address of a &lt;I style="mso-bidi-font-style: normal"&gt;direct bound port&lt;/I&gt; is only available in BizTalk Server 2006.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2035892" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Demystifying Direct Bound Ports - Part 5</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2006/07/25/678547.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2006/07/25/678547.aspx</id><published>2006-07-26T04:30:00Z</published><updated>2006-07-26T04:30:00Z</updated><content type="html">&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;Dynamic Direct Bound Ports&lt;/FONT&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A dynamic port allows you to set the address of the logical port to a URI so that at runtime the message can be routed to the correct service to handle the request and the service can then send to the indicated endpoint.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In BizTalk Server 2006 the same can be done for direct bound ports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Setting the address of a port is done by assigning a URI to the Microsoft.XLANGs.BaseTypes.Address property of the port:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;Port_1(Microsoft.XLANGs.BaseTypes.Address) = “http://contoso.com/myService”;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The general format of a port address is:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;adapterAlias&amp;gt;&amp;lt;endpointAddress&amp;gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A port address is made up of the adapter alias that ultimately maps to a transport, and the actual endpoint as is meaningful to the adapter.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;So an adapter alias of &lt;I style="mso-bidi-font-style: normal"&gt;HTTP://&lt;/I&gt; will have a URL and a &lt;I style="mso-bidi-font-style: normal"&gt;FILE://&lt;/I&gt; will have a URN or a reference to a local file on disk.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This of course begs the question of, “what does a direct bound port URI look like?”&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Direct bound port address’ have the following format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;msgbox:&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;PartnerService&amp;gt;&lt;/I&gt;#&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;DirectPortFlavor&lt;/I&gt;#&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;port-type&amp;gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;So for a direct bound port the transport, what would typically be the adapter alias, is the literal &lt;B style="mso-bidi-font-weight: normal"&gt;msgbox:&lt;/B&gt;. The rest is the endpoint address which, for direct bound ports, is a partner service and a port. The &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;#DirectPortFlavor#&lt;/I&gt;&lt;/B&gt; indicates how the partner service will be interpreted.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Let’s look at the address of each flavor of a direct bound port.&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Message Box Direct Bound Port Address&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;There is no address for a message box direct bound port as it doesn’t make sense since it is a pure publish or subscribe into the message bus (i.e. message box).&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Partner Direct &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Bound&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; Address&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A partner direct bound port has the following format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;msgbox:&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;orchestration&amp;gt;&lt;/I&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;#DirectPort#&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;port-type&amp;gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In this case the partner service is the orchestration the port is bound to.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The &amp;lt;orchestration&amp;gt; part is the strong name of the orchestration and has the format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;namespace.orchestrationTypeName, assemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;and &amp;lt;port-type&amp;gt; is the strong name of the port type and has the format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;namespace.portType, assemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The direct port flavor is the literal &lt;B style="mso-bidi-font-weight: normal"&gt;#DirectPort#&lt;/B&gt; and indicates that the partner service is an orchestration.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here’s an example of what an address would look like:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;msgbox:MyTests.TestOrchestration, MyTests.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef#DirectPort#MyTests.SomeDirectBoundPortType, MyTests.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Self-Correlating Direct &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Bound&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; Address&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A self-correlating direct bound port has the following format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;msgbox:&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;portServiceId&amp;gt;&lt;/I&gt;#&lt;B style="mso-bidi-font-weight: normal"&gt;selfCorrelated#&lt;/B&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&amp;lt;port-type&amp;gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In this case the partner service is the &amp;lt;portServiceId&amp;gt; which is the unique identifier, GUID, given to the port when the orchestration was instantiated and &amp;lt;port-type&amp;gt; is again the strong name of the port-type for this port and has the format:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;namespace.portType, assemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The direct port flavor is the literal &lt;B style="mso-bidi-font-weight: normal"&gt;#selfCorrelated#&lt;/B&gt; and indicates that the partner service is a service instance identifier.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here’s an example of what an address would look like:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-pagination: widow-orphan lines-together"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;msgbox:aabbccdd-0011223344-eeff-5566778899aa #selfCorrelated#MyTests.SomeSelfCorrelatingPortType, MyTests.dll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9876543210abcdef&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Scenario for using a self-correlated dynamic direct bound port&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;When doing asynchronous inter-orchestration communication, the typical way of correlating a message to a particular instance of an orchestration is by creating a correlation-set, initializing it with particular property values received or sent in a message, then following that correlation-set on a receive shape.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This can make your orchestration more complex if the values of the properties that you need to correlate on are not in the message when it is originally received forcing you to construct a new message with the correlation properties properly set and sending that message somewhere (it has to be sent to be able to initialize the correlation-set but the destination can be some null orchestration (i.e. an orchestration with just a receive shape)&lt;A title="" style="mso-footnote-id: ftn1" href="#_ftn1" name=_ftnref1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[1]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Another pattern for inter-orchestration communication correlation is when you have a send and receive on separate one-way ports in a loop and you are using the send port to initialize the correlation set and the receive port to follow.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this case you must unwind the loop (the first send must be outside of the loop) because you cannot initialize a correlation-set inside of a loop (a correlation-set can only be initialized once) thus making your orchestration even more complex&lt;A title="" style="mso-footnote-id: ftn2" href="#_ftn2" name=_ftnref2&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[2]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To get around this extra correlation complexity you can use a self-correlating port that under the covers will manage the responsibility of correlating a message back to the current instance of the orchestration.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In the past the only way we would be able to use a self-correlated direct bound port was by passing the port as a parameter to a ‘started’ orchestration so that it can asynchronously send a message back to the instance of the orchestration that started it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Today in an expression shape you can save the port address of the self-correlated direct bound port in a message,&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;Msg1.ReturnAddress = SendPort1(Microsoft.XLANGs.BaseTypes.Address);&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;send it to a partner orchestration and when the partner needs to communicate back to the instance of the orchestration that sent the original request it can set the address of a direct bound port to the port address that was saved in the message.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;ResponsePort1(Microsoft.XLANGs.BaseTypes.Address) = Msg1.ReturnAddress;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This really simplifies the design of the orchestration that is expecting asynchronous responses from its partner orchestrations.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;When you create the send side port it doesn’t matter what type of direct bound port you create as you will be overriding its address.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I would recommend keeping each side as consistent direct bound flavors to make it easier to review the design.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Now that I have lifted the covers of how the dynamic direct bound ports work you can imagine many different scenarios and design patterns.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A few examples include, versioning, dynamic orchestration calling, and, of course, simplified correlation.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;DIV style="mso-element: footnote-list"&gt;&lt;BR clear=all&gt;
&lt;HR align=left width="33%" SIZE=1&gt;

&lt;DIV id=ftn1 style="mso-element: footnote"&gt;
&lt;P class=MsoFootnoteText style="MARGIN: 0in 0in 0pt"&gt;&lt;A title="" style="mso-footnote-id: ftn1" href="#_ftnref1" name=_ftn1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[1]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=2&gt; When using this pattern of communication be careful as there can be a race condition where a message could be sent to the orchestration before the correlation initialization message is sent.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To avoid this ensure that messages that will follow this correlation are not sent until the correlation set is initialized.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV id=ftn2 style="mso-element: footnote"&gt;
&lt;P class=MsoFootnoteText style="MARGIN: 0in 0in 0pt"&gt;&lt;A title="" style="mso-footnote-id: ftn2" href="#_ftnref2" name=_ftn2&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[2]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=2&gt; Another work around is to declare the correlation set within a scope within the loop so that on each iteration of the loop the correlation set falls out of scope and gets re-instantiated and then properly re-initialized.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This may not be a suitable option as there could already be transactional scopes within the loop and adding another transactional scope may cause extra persistence overhead.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=678547" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Demystifying Direct Bound Ports - Part 4</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2006/07/07/659214.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2006/07/07/659214.aspx</id><published>2006-07-07T20:00:00Z</published><updated>2006-07-07T20:00:00Z</updated><content type="html">&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;Self-Correlating Direct Bound Ports&lt;/FONT&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Self-Correlating direct bound ports are self referential (i.e. the address property includes the service instance identifier of the orchestration) providing the capability of getting messages back to a particular orchestration instance without using a correlation set.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;To configure a self-correlating direct bound port select ‘Self Correlating’ as the ‘&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;’.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The way to use it is to create a receive self-correlating direct bound port in orchestration A.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In Orchestration B declare a port as a Send Port Orchestration Parameter of the same port-type as defined in orchestration A.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This declaration will create a logical port on your orchestration designer surface with the direction flipped.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;When orchestration B is called with the ‘Start Orchestration’ shape, pass the port as a parameter to orchestration B.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Orchestration B then does whatever business logic it needs to and then can send a message on the port passed in as a parameter.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The message will be sent to the self-correlating port of the instance of orchestration A that originally started orchestration B.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Although this can be done with a Call Orchestration this would only make sense with a Start Orchestration as it generates an asynchronous instantiation of an orchestration that cannot have out or reference parameters so the self-correlating port can be used as a means of responding back to the orchestration which instantiated it.&lt;A title="" style="mso-footnote-id: ftn1" href="#_ftn1" name=_ftnref1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[1]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Under the covers what happens is that at run time when orchestration A starts a subscription will be created for each self-correlated direct bound port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The subscription will look like the following:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.Operation == Operation_1 And&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerPort == selfCorrelated And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerService == aabbccdd-0011223344-eeff-5566778899aa&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Where Operation_1 is the name of the operation on the port, selfCorrelated is a literal string used as the PartnerPort, and a GUID for the Partner Service that uniquely identifies this port for this instance of the orchestration.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;When orchestration A starts orchestration B the orchestration engine will pass the self-correlated port instance information to orchestration B, along with the other orchestration parameter values.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;When orchestration B then sends a message on the self-correlating port that was passed in as a parameter the orchestration engine will set and promote the properties listed above allowing the message to be routed back to the instance of orchestration A that originally instantiated the current instance of orchestration B.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_i1025 style="WIDTH: 207.75pt; HEIGHT: 154.5pt" o:ole="" type="#_x0000_t75"&gt;&lt;v:imagedata o:title="" src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.emf"&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture659198.aspx" target=_blank&gt;&lt;IMG style="WIDTH: 416px; HEIGHT: 291px" height=307 src="http://blogs.msdn.com/photos/kevin_lam/images/659198/475x350.aspx" width=432 border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;10&lt;/SPAN&gt; self-correlating port communication&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;In the next posting I will explain another way of using self-correlating direct bound ports with dynamic direct bound ports.&lt;/SPAN&gt; 
&lt;DIV style="mso-element: footnote-list"&gt;&lt;BR clear=all&gt;
&lt;HR align=left width="33%" SIZE=1&gt;

&lt;DIV id=ftn1 style="mso-element: footnote"&gt;
&lt;P class=MsoFootnoteText style="MARGIN: 0in 0in 0pt"&gt;&lt;A title="" style="mso-footnote-id: ftn1" href="#_ftnref1" name=_ftn1&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="mso-special-character: footnote"&gt;&lt;SPAN class=MsoFootnoteReference&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;[1]&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT size=2&gt; Note that you can pass an initialized correlation set as a parameter to a called orchestration and follow the correlation set within the called orchestration.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This means that subscriptions and convoys work across call orchestration boundaries.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This does not work with started orchestrations.&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=659214" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Demystifying Direct Bound Ports - Part 3</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2006/06/14/631313.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2006/06/14/631313.aspx</id><published>2006-06-14T22:00:00Z</published><updated>2006-06-14T22:00:00Z</updated><content type="html">&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;Partner Direct Bound Ports&lt;/FONT&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Partner direct bound ports provide the capability of having inter-orchestration communication via ports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;To configure a partner direct bound port you must choose the orchestration and port for the ‘&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;’ property.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;When configuring the two partner ports you must have one side select the orchestration.port it will communicate with and the other side will select its own orchestration.port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is a little non-intuitive but will be explained in the sections below.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Also the port types for both ports must be the same, which implies that the message-types must also be the same.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is one of the places where the Type Modifier property on the port-type matters.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To be able to direct bind to a partner port the port-type type modifier must either be internal for orchestrations within the same assembly or public to allow an orchestration from another assembly to bind to it.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Finally, the polarities of the ports must be opposite.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In other words, if one side is a send port then the other side must be a receive port.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;There are two communication patterns that can be created; forward partner direct binding and inverse partner direct binding.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These two patterns provide explicit inter-orchestration communication.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;By explicit I mean that there is an intended recipient orchestration (forward partner direct binding) or an intended sender (inverse partner direct binding).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You can design implicit partner direct binding by having either the receiver be message box direct bound and create a filter that will accept messages from a particular sending orchestration or have the sender be message box direct bound and promote properties that will match a subscription on the receiving orchestration.&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Forward Partner Direct Binding&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This is the typical communication pattern that is used for partner direct binding.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Orchestration A has a partner direct bound send port that will send a message to Orchestration B on its partner direct bound receive port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To configure this forward partner direct binding you must have orchestrationA.sendPort1, which is of type portType1, select orchestrationB.receivePort1, which is also of type portType1, as its Partner Orchestration Port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;orchestrationB.receivePort1 will select itself, orchestrationB.receivePort1, as its Partner Orchestration Port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_i1025 style="WIDTH: 208.5pt; HEIGHT: 106.5pt" type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.emf" o:title=""&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631260.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631260.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631281.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631281.aspx" target=_blank&gt;&lt;IMG style="WIDTH: 392px; HEIGHT: 212px" height=208 src="http://blogs.msdn.com/photos/kevin_lam/images/631281/470x240.aspx" width=424 border=0&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631260.aspx" target=_blank&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;6&lt;/SPAN&gt; Forward Partner Direct Binding Configuration&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;On the sender’s side what this says is, “I will send messages to orchestrationB.receivePort1” and on the receiver’s side it says, “I will receive any messages sent directly to my receivePort1”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Under the covers when messages are sent out of sendPort1 the orchestration engine will set the following properties:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.Operation&lt;/I&gt; to the operation on the port being used.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.PartnerPort&lt;/I&gt; to the name of the partner direct bound port configured in the &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; property&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.PartnerService&lt;/I&gt; to the strong name of the orchestration referenced in the &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; property&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Note: the strong name of the partner service will usually look something like:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;OrchNamespace.OrchTypeName&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;, &lt;I style="mso-bidi-font-style: normal"&gt;AssemblyName&lt;/I&gt;, Version=&lt;I style="mso-bidi-font-style: normal"&gt;1.0.0.0&lt;/I&gt;, Culture=&lt;I style="mso-bidi-font-style: normal"&gt;neutral&lt;/I&gt;, PublicKeyToken=&lt;I style="mso-bidi-font-style: normal"&gt;fedcba9876543210&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;On the receive side the subscription will be (for brevity I will use the &lt;I style="mso-bidi-font-style: normal"&gt;BTS&lt;/I&gt; namespace instead of &lt;I style="mso-bidi-font-style: normal"&gt;http://schemas.microsoft.com/BizTalk/2003/system-properties&lt;/I&gt; as you would see in the actual subscription)&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.Operation == operation1 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerPort == receivePort1 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerService == MyTest.OrchestrationB, MyTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fedcba9876543210 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.MessageType == http://MyNamespace#MyRootNodeTypeName&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Something to note here is that there is a strong binding from the sender orchestration to the receiver orchestration.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;By strong binding I mean that the sender orchestration is referencing the receiver’s strong name as its partner service.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What this means is that if you want to change the receiver’s side or if you change the version of the receiver’s side you must update the design time configuration of the sender’s port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;But the receiver has no explicit knowledge of the sender so the senders’ orchestrations can be updated without affecting the receiver.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This type of forward binding allows you to have multiple senders bound to the same recipient.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1026 style="WIDTH: 208.5pt; HEIGHT: 207pt" type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtmlclip1\01\clip_image003.emf" o:title=""&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631288.aspx" target=_blank&gt;&lt;IMG style="WIDTH: 327px; HEIGHT: 335px" height=432 src="http://blogs.msdn.com/photos/kevin_lam/images/631288/475x465.aspx" width=315 border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;7&lt;/SPAN&gt; N:1 communication&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here orchestrationD would be doing some common asynchronous work needed by many different orchestrations.&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial&gt;Inverse Partner Direct Binding&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This is not the typical communication pattern that is used for partner direct binding as the direction of binding is inverse of its direction of communication.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Orchestration A has a partner direct bound send port will send a message to Orchestration B on its partner direct bound receive port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To configure this inverse partner direct binding you must have orchestrationB.receivePort1, which is of type portType1, select orchestrationA.sendPort1, which is also of type portType1, as its Partner Orchestration Port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;orchestrationA.sendPort1 will select itself, orchestrationA.sendPort1, as its Partner Orchestration Port.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1027 style="WIDTH: 209.25pt; HEIGHT: 107.25pt" type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtmlclip1\01\clip_image005.emf" o:title=""&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631294.aspx" target=_blank&gt;&lt;IMG style="WIDTH: 357px; HEIGHT: 196px" height=221 src="http://blogs.msdn.com/photos/kevin_lam/images/631294/475x245.aspx" width=409 border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;8&lt;/SPAN&gt; Inverse Direct Binding Configuration&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;On the sender’s side what this says is, “I will send a message to anyone who is listening for messages from my send port” and on the receiver’s side it says, “I will receive messages sent from orchestrationA.sendPort1”.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Under the covers when messages are sent out of sendPort1 the logic for setting properties is still the same as it was for the forward case.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The orchestration engine will still set the following properties:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.Operation&lt;/I&gt; to the operation on the port being used.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.PartnerPort&lt;/I&gt; to the name of the partner direct bound port configured in the &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; property&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;BTS.PartnerService&lt;/I&gt; to the strong name of the orchestration referenced in the &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt; property&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;On the receive side the subscription will &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.Operation == operation1 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerPort == sendPort1 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.PartnerService == MyTest.OrchestrationA, MyTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fedcba9876543210 And&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;BTS.MessageType == http://MyNamespace#MyRootNodeTypeName&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In this case the receiver is strongly bound to the sender implying that if you want to change the receiver’s orchestration or update the version then you must update the sender’s port configuration.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The sender has no explicit knowledge of the receiver so the receivers’ orchestrations can be updated without affect the sender.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;This type of inverse binding allows you to have a single sender communicate with multiple receivers.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1028 style="WIDTH: 227.25pt; HEIGHT: 223.5pt" type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtmlclip1\01\clip_image007.emf" o:title=""&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631304.aspx" target=_blank&gt;&lt;IMG style="WIDTH: 314px; HEIGHT: 363px" height=421 src="http://blogs.msdn.com/photos/kevin_lam/images/631304/480x480.aspx" width=314 border=0&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture578556.aspx" target=_blank&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;9&lt;/SPAN&gt; 1:N communication&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Inverse direct bound ports allows for a recipient list pattern.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The recipient list is determined by which receive ports are bound to a particular send port and is maintained as part of the orchestration design.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here either all of the recipient orchestrations can consume any message coming from the send port or they can each have a filter to determine which messages each of the recipients should consume from the sender.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;One thing to be careful about is that if you are using a two-way port type with inverse partner direct binding then you must setup your filters to ensure that only one of the recipients will consume (i.e. subscription will match) the message.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is because a solicit-response port is expecting a single response and if multiple recipients get the message, then it will accept the first response and all subsequent responses would be suspended non-resumable.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The engine won’t let that happen and it will instead throw an exception when you try to send the message indicating that there would be multiple recipients for a solicit-response request.&lt;/P&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631260.aspx" target=_blank&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture631281.aspx" target=_blank&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=631313" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Demystifying Direct Bound Ports - Part 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2006/04/25/583490.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2006/04/25/583490.aspx</id><published>2006-04-25T22:53:00Z</published><updated>2006-04-25T22:53:00Z</updated><content type="html">&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;Message Box Direct Bound Ports&lt;/FONT&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Message box direct bound ports, as its name implies, allows you to drop messages directly into the message box without an explicit recipient and it allows you to subscribe to messages, not from any particular sender, which meet certain criteria.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To configure a message box direct bound port set the ‘&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;’ property to ‘Message Box’.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Sending a message on a message box direct bound port is equivalent to publishing the message to a message bus, in this case the message box.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For any published message there can be any number of subscribers for that message.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If there are no subscribers interested in the message at the time you publish it a persistence exception is thrown with an inner exception of subscription not found. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Sometimes when sending a message through a message box direct bound port you may have an implicit recipient in mind and will set properties to particular values that you know a subscriber(s) is looking for and is therefore used as a method for loose-coupling.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Recipients of the message can be any type of service that can subscribe to messages which include orchestrations and send ports.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Receiving a message through a message box direct bound port is equivalent to subscribing to a message bus with filter criteria.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For an activating receive shape the subscription will be the message type and the filter and for non-activating receive shapes the subscription will be the message type and the correlation set.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Every receive shape always includes the message type as part of its subscription.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;If you don’t add any filter criteria to the activating receive shape connected to a message box direct bound port then the subscription will be:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;http://schemas.microsoft.com/BizTalk/2003/system-properties.MessageType == &lt;I style="mso-bidi-font-style: normal"&gt;MyMessageType&lt;/I&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Which can be read as, “Give me every message whose message-type is &lt;I style="mso-bidi-font-style: normal"&gt;MyMessageType&lt;/I&gt;”.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is what differentiates a send port subscription from an orchestration subscription.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A send port subscription, if you don’t provide it with a filter, will only handle messages sent directly to it via a bound (specify-now or specify-later) logical orchestration port (i.e. the subscription for a send port includes its send port id as a clause OR’ed with it’s filter).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A message box direct bound receive port that does not have a filter explicitly added will receive every message that matches the message type that the port’s operation is configured for.&amp;nbsp; [Note: If the message-type is XmlDocument then this is a type-agnostic port.&amp;nbsp; Type-agnostic ports accept any message&amp;nbsp;type.&amp;nbsp; To accomplish this the subscription won't include a message-type, implying that it is not filtering based on message-type.&amp;nbsp; So if there is no filter on the port and the port is type-agnostic then the subscription will be empty and in this case will not match any incoming message as there are no predicates for the routing engine to match against.]&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;When using message box direct bound receive ports be careful to make the filter as specific as possible.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I typically caution developers to only use receive message box direct bound ports only when it is absolutely necessary or the benefits (e.g. loose-coupling) out-weigh the risks, as many developers make the mistake of not making their filter distinguishing enough.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The side effect of not having a distinguishing enough filter is that the orchestration can receive messages it didn’t intend to.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;An example of a mistake that is commonly made is the following; an activating receive shape with a filter using some custom property followed sometime later by a send shape sending the same message to a send port physically bound to an endpoint.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In this case the developer assumes that since the logical send port is bound to a physical send port then only that physical send port will get the message.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is not the case.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What will happen is that after the first message is published to the message box an infinite number of orchestrations will be activated. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;This will happen because the message being sent to the send port endpoint is published to the message box and, because every time a message is sent to the message box all subscriptions are checked for a match, the activation filter of the orchestration will match the message and a new orchestration instance will be started, then recurse to infinity.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If the orchestration is more complex and/or if the receive is using a correlation set as its subscription then the difficulty of trying to debug a similar scenario increases dramatically.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_i1025 style="WIDTH: 322.5pt; HEIGHT: 247.5pt" type="#_x0000_t75" o:ole=""&gt;&lt;v:imagedata src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtml1\01\clip_image001.emz" o:title=""&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture583486.aspx" target=_blank&gt;&lt;IMG src="http://blogs.msdn.com/photos/kevin_lam/images/583486/485x371.aspx" border=0&gt;&lt;/A&gt;&lt;A href="http://blogs.msdn.com/photos/kevin_lam/picture583474.aspx" target=_blank&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;5&lt;/SPAN&gt; Orchestration that will consume its own messages&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In this case the only way to not have the orchestration pick-up the same messages it is sending&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(i.e. incorrectly activate a new instance of the same orchestration) is to either construct a new message and change MyProp property to some other value or send a message of a different message-type.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=583490" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Demystifying Direct Bound Ports - Part 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2006/04/18/578572.aspx" /><link rel="enclosure" type="image/jpeg" length="35894" href="http://blogs.msdn.com/kevin_lam/attachment/578572.ashx" /><id>http://blogs.msdn.com/kevin_lam/archive/2006/04/18/578572.aspx</id><published>2006-04-18T20:20:00Z</published><updated>2006-04-18T20:20:00Z</updated><content type="html">&lt;H1 style="MARGIN: 12pt 0in 3pt"&gt;&lt;FONT face=Arial size=5&gt;Direct Bound Ports&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;In BizTalk Server 2004/2006 orchestrations can have direct bound ports.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Direct bound ports are logical one-way or two-way ports in your orchestration that are not explicitly bound to physical ports that allow you to have different communication patterns amongst your services.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To create a direct bound port select the binding of the logical port to be direct then choose as the ‘&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;’ what this port will be bound to.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;There are three types of direct bound ports that you can choose as the &lt;st1:place w:st="on"&gt;&lt;st1:PlaceName w:st="on"&gt;Partner&lt;/st1:PlaceName&gt; &lt;st1:PlaceName w:st="on"&gt;Orchestration&lt;/st1:PlaceName&gt; &lt;st1:PlaceType w:st="on"&gt;Port&lt;/st1:PlaceType&gt;&lt;/st1:place&gt;; message box, partner, and self-correlating.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Message box direct bound ports&lt;/B&gt; allows for publish-subscribe design patterns.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Messages sent on a message box direct bound port are published to the message box without any explicit intent of the message recipients.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Logical receive ports configured as message box direct bound ports get messages directly from the message box whose subscriptions are based only on message type and filter expression (for activating receive shapes) or correlation set (for non-activating receive shapes).&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;&lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;&lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;v:shape id=_x0000_i1025 style="WIDTH: 233.25pt; HEIGHT: 179.25pt" o:ole="" type="#_x0000_t75"&gt;&lt;v:imagedata o:title="" src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtml1\01\clip_image001.emz"&gt;&lt;A href="/photos/kevin_lam/picture578556.aspx" target=_blank&gt;&lt;IMG src="/photos/kevin_lam/images/578556/330x250.aspx" border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;1&lt;/SPAN&gt; Message Box Direct Bound Ports&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Partner direct bound ports&lt;/B&gt; provide for inter-orchestration communication.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Messages sent on a direct bound port can be sent to an intended recipient orchestration and messages received on a partner direct bound port can be received from an intended sender orchestration. &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1026 style="WIDTH: 210.75pt; HEIGHT: 108pt" o:ole="" type="#_x0000_t75"&gt;&lt;v:imagedata o:title="" src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtml1\01\clip_image003.emz"&gt;&lt;A href="/photos/kevin_lam/picture578563.aspx" target=_blank&gt;&lt;IMG src="/photos/kevin_lam/images/578563/290x160.aspx" border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;2&lt;/SPAN&gt; Partner Direct&lt;SPAN style="mso-no-proof: yes"&gt; Bound Ports&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Self-correlating direct bound ports&lt;/B&gt; assists you in designing asynchronous inter-orchestration communication.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Messages sent to a self-correlating direct bound port are routed to the instance of the orchestration that created the receiving end of the self-correlated direct bound port.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1027 style="WIDTH: 207pt; HEIGHT: 106.5pt" o:ole="" type="#_x0000_t75"&gt;&lt;v:imagedata o:title="" src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtml1\01\clip_image005.emz"&gt;&lt;A href="/photos/kevin_lam/picture578565.aspx" target=_blank&gt;&lt;IMG src="/photos/kevin_lam/images/578565/280x150.aspx" border=0&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;3&lt;/SPAN&gt; Self-Correlating Direct Bound Ports&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;A commonly misunderstood aspect of direct bound ports is its interaction with the message box with some incorrectly thinking that there is direct communication with another instance of an orchestration without traversing the message box.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is not the case; any message sent through any type of logical port always travels through the message box.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;v:shape id=_x0000_i1028 style="WIDTH: 253.5pt; HEIGHT: 122.25pt" o:ole="" type="#_x0000_t75"&gt;&lt;v:imagedata o:title="" src="file:///C:\DOCUME~1\klam\LOCALS~1\Temp\msohtml1\01\clip_image007.emz"&gt;&lt;A href="/photos/kevin_lam/picture578561.aspx" target=_blank&gt;&lt;IMG src="/photos/kevin_lam/images/578561/340x170.aspx" border=0&gt;&lt;/A&gt;&lt;A href="/photos/kevin_lam/picture578523.aspx" target=_blank&gt;&lt;/A&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/P&gt;
&lt;P class=MsoCaption style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Figure &lt;SPAN style="mso-no-proof: yes"&gt;4&lt;/SPAN&gt; All logical ports communicate through the message box&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-ALIGN: center" align=center&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Direct bound ports are only logical ports and therefore only a design time configuration feature.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An administrator cannot bind a direct bound port to a physical port nor change the partner it is currently configured for.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;To see each of these different types of ports in action and in context you can look at the Business Process Management (BPM) scenario that ships as part of the SDK in BizTalk Server 2006.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;I will have a separate posting and go into more detail on each type of direct bound port.&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'MS Mincho'; mso-fareast-language: JA; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;BR style="PAGE-BREAK-BEFORE: always; mso-special-character: line-break" clear=all&gt;&lt;/SPAN&gt;&lt;A href="/photos/kevin_b_smith_-_photo_gallery/picture576992.aspx" target=_blank&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=578572" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Get Connected to Free Product Support and Tremendous Online Collaboration</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2005/07/11/437590.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2005/07/11/437590.aspx</id><published>2005-07-11T20:57:00Z</published><updated>2005-07-11T20:57:00Z</updated><content type="html">&lt;P class=MsoTitle style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 12.0pt"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Have you ever wanted to speak to Microsoft developers of a specific feature of&amp;nbsp;BizTalk Server? I am sure your answer was “&lt;I&gt;&lt;SPAN style="FONT-STYLE: italic"&gt;Yes let me at them&lt;/SPAN&gt;&lt;/I&gt;”, so the Business Process Integration Division is extending an invitation to all customers to join our key feature developers, program managers, and testers in the following newsgroups:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&amp;nbsp;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.accelerator.forsuppliers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.newuser&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.accelerator.rosettanet&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.admin&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.appintegration&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.framework&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.general&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.library&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.nonxml&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.orchestration&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.sdk&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.server&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.setup&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.tools&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.xlangs&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l1 level1 lfo1; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;microsoft.public.biztalk.xsharp&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;We’ve been working very hard over the past year to connect with folks just like you and want to include you in our community of Most Valuable Professionals (MVP), developers, information technology professionals, chief information officers, chief executive officers, or any other role within large, medium, and small companies that hang out in our online newsgroup communities. We want to have you join in this vibrant online community to ask those questions you always wanted to ask but did not know where to go. Well, now you know where to go, we want you to come on in and join us!&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-ALIGN: justify"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;If you are new to BizTalk Server, try out the NewUser newsgroup, Microsoft.public.biztalk.newuser.&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-ALIGN: justify"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;We’re offering two levels of interaction with Microsoft Corporation employees as follows:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;OL style="MARGIN-TOP: 0in" type=1&gt;
&lt;LI class=MsoNormal style="TEXT-ALIGN: justify; mso-list: l2 level1 lfo2"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Managed Newsgroup Support&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; 
&lt;LI class=MsoNormal style="TEXT-ALIGN: justify; mso-list: l2 level1 lfo2"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Unmanaged Newsgroup Support&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;
&lt;H2 style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 12.0pt"&gt;&lt;EM&gt;&lt;B&gt;&lt;I&gt;&lt;FONT face=Arial size=5&gt;&lt;SPAN style="FONT-SIZE: 18pt; FONT-FAMILY: Arial"&gt;Managed Newsgroup Support&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/EM&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="TEXT-ALIGN: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;MSDN managed newsgroups are available in English to MSDN Universal, Enterprise, Professional and Operating Systems subscribers to receive free technical support on select Microsoft technologies as well as to share ideas with other subscribers. MSDN managed newsgroups provide:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="mso-list: l0 level1 lfo3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Unlimited on-line technical support&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; - keep your PSS incidents &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="mso-list: l0 level1 lfo3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;A commitment to respond to your post&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; within two business days &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="mso-list: l0 level1 lfo3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Over 200 newsgroups&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; to choose from &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="mso-list: l0 level1 lfo3; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Spam protection&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt; for your e-mail address when posting items&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Go to the following URL to sign up: &lt;A title=http://msdn.microsoft.com/newsgroups/managed href="http://msdn.microsoft.com/newsgroups/managed"&gt;http://msdn.microsoft.com/newsgroups/managed&lt;/A&gt; .&amp;nbsp; These newsgroups are monitored by Microsoft support engineers and product group team member as described above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN-BOTTOM: 3pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; mso-margin-top-alt: 12.0pt"&gt;&lt;EM&gt;&lt;B&gt;&lt;I&gt;&lt;FONT face=Arial size=5&gt;&lt;SPAN style="FONT-SIZE: 18pt; FONT-FAMILY: Arial"&gt;Unmanaged Newsgroup Support&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;/B&gt;&lt;/EM&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;MSDN unmanaged newsgroups are available to all individuals. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="TEXT-ALIGN: justify; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Go to the following URL to participate: &lt;A title=http://msdn.microsoft.com/newsgroups href="http://msdn.microsoft.com/newsgroups"&gt;http://msdn.microsoft.com/newsgroups&lt;/A&gt;. These newsgroups are monitored by Microsoft product group members, other customers like you, most valuable professionals, and various other individuals.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;Questions, suggestions, and direct feedback can be sent to me.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;James Fort&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;BPI Community Lead&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Times New Roman" size=3&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;A title=mailto:jfort@microsoft.com href="mailto:jfort@microsoft.com"&gt;mailto:jfort@microsoft.com&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=437590" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Low-latency scenarios that use two-way (solicit-response) HTTP send ports.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2005/04/11/407373.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2005/04/11/407373.aspx</id><published>2005-04-12T00:30:00Z</published><updated>2005-04-12T00:30:00Z</updated><content type="html">&lt;H2&gt;HttpOutCompleteSize&lt;/H2&gt;
&lt;P class=MsoNormal&gt;This setting controls the size of the batch of messages that is returned from the HTTP send adapter.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The default value for this is 5.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If the buffer is not full and there are outstanding responses then the adapter will wait for 1 second until it commits the batch.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;For low-latency scenarios this should be set to 1 which will allow the adapter to send response messages immediately to the message box for processing. &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;This will have the greatest effect during times of low-throughput activity with varied response times from backend systems.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Actually this setting controls the number of messages being returned to BizTalk (EPM) from the HTTP adapter regardless of whether the port is one-way or two-way.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A message that is returned in the batch includes a request to DeleteMessage, MoveToNextTransport, MoveToSuspendedQ, and, most interestingly, SubmitResponseMessage.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Although this setting will improve response times in low-latency scenarios it does increase the amount of chattiness between the adapter and the message box.&lt;/P&gt;
&lt;P class=MsoNormal&gt;It is the send side equivalent to the &lt;I&gt;HttpBatchSize&lt;/I&gt; on an HTTP receive adapter.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In low-latency scenarios this is typically set to 1 to ensure that the messages are getting processed as quickly as they are received.&lt;/P&gt;
&lt;P class=MsoNormal&gt;To set this value you need to add &lt;SPAN&gt;HttpOutCompleteSize&lt;/SPAN&gt; as a DWORD value to the registry under:&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;HKLM\SYSTEM\CurrentControlSet\Services\BTSSvc{&lt;I&gt;guid&lt;/I&gt;}\&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;where GUID is the ID of the host for HTTP send handler.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;This information is specific to BizTalk Server 2004 and there is no guarantee that this setting will behave the same way in the next release of BizTalk Server.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Disclaimer: This is an undocumented setting and was not formally tested since it was not considered to be publicly available.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;You must do your own testing to ensure that the behavior and performance of your system are as expected.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=407373" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>An orchestration pattern that can hog the master message box CPU</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2004/08/20/217687.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2004/08/20/217687.aspx</id><published>2004-08-20T17:04:00Z</published><updated>2004-08-20T17:04:00Z</updated><content type="html">&lt;h2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;Overview&lt;/font&gt;&lt;/em&gt;&lt;/h2&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;We had a customer scenario such that when a complex business process was executed at the rate of 1 request per second the CPU utilization of the &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:mswterms w:st="on"&gt;SQL Server&lt;/st1:mswterms&gt; hosting the master message box quickly grew up to 100% sustained.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Having the master message box’s CPU utilization so high is not desirable as it can:&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;cause SQL connection timeouts, which has the side affect of restarting BizTalk host instances &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;SQL jobs fail, which has the side affect of aged data not getting cleaned out of the database &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;Performance impact, as it will take longer to submit messages into the message box, since the master message box is responsible for subscription matching&lt;/li&gt;&lt;/ul&gt; &lt;h2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;Background&lt;/font&gt;&lt;/em&gt;&lt;/h2&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;In this scenario, there were two SQL Servers allocated for BizTalk; one held only the master message box with publication turned off and the other had all of the other BizTalk databases including a secondary message box.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Both &lt;st1:mswterms w:st="on"&gt;SQL Server&lt;/st1:mswterms&gt; machines had 8 hyper-threaded 3.0 GHz processors and 8GB of RAM.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The orchestrations consisted of about 4 orchestrations chained via messaging including about 2 called orchestrations.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;In this scenario a new business process is created per order and there can only be one business process running at any one time for a particular {customer, order} pair.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Each order can have updates which can interrupt the currently running business process handling that request.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;An interruption can only happen at certain points in the business process (i.e. business process atomicity).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So if an update has come in and a business process is currently handling a request, then the update will be queued up to a point in the business process where it can check to see if this current business process instance should terminate and then allow the update to start a new business process.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;To accomplish this in orchestration we used correlations.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;At certain points in the orchestrations there would be a &lt;i style="mso-bidi-font-style: normal"&gt;Listen&lt;/i&gt; shape with a &lt;i style="mso-bidi-font-style: normal"&gt;Delay&lt;/i&gt; of 0 on one branch and a &lt;i style="mso-bidi-font-style: normal"&gt;Receive&lt;/i&gt; following a correlation on the other branch.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So when the orchestration gets to this point in the orchestration, if there is no update then the business process continues until it needs to check again at the next interrupt point.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;In the design of the orchestration there are several &lt;st1:mswterms w:st="on"&gt;.NET&lt;/st1:mswterms&gt; remoting calls made.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If the remoting call fails then an exception orchestration is “&lt;i style="mso-bidi-font-style: normal"&gt;Called&lt;/i&gt;”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Since there are several remoting calls, then there are several of these exception orchestrations called throughout the main orchestration.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The exception orchestration includes logic such that it can post a request to an operator to determine whether or not to terminate the instance or to try again.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Since there is a blocking call waiting for user input, there can be a significant window of time where the orchestration instance is running.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In the meantime an update message could come, which would invalidate this original request.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To accomplish this interruption in the exception handling orchestration, the correlation set was passed in as a parameter to the called orchestration so that it can either wait (&lt;i style="mso-bidi-font-style: normal"&gt;listen&lt;/i&gt;) for the response from the operator or an update message that interrupts the currently running instance.&lt;/p&gt; &lt;h2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;BizTalk Behavior&lt;/font&gt;&lt;/em&gt;&lt;/h2&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The master message box is responsible for doing subscription matching.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If publication is turned off on the master message box, then it will only do subscription matching and the other message boxes will handle message publication and storage.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The master message box can only be scaled up but not out.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So eventually it can become the limiting factor in how far the message boxes can be scaled.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;The orchestration engine creates the necessary subscriptions when the orchestration is instantiated.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One set of subscriptions it will create include the ones for followed correlations. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;The orchestration engine will find all of the points where the correlation is followed and create subscriptions for them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If a correlation set is passed to a called orchestration then the engine crawls the called orchestration to create those subscriptions as well.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;A called orchestration is essentially in-lined code which means that the called orchestration will look like it is part of the orchestration that calls it.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;A subscription, in this case, will consist of a message type, an orchestration instance, a port operation, and the properties used in the correlation set.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;So the subscriptions for the called orchestrations will actually have the name of the caller orchestration as its orchestration instance name.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;By default, when you create a port in the orchestration designer the first operation under the port is defaulted to &lt;i style="mso-bidi-font-style: normal"&gt;Operation_1&lt;/i&gt;.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Unless a developer has an explicit purpose for changing this (for example, if he is exposing an orchestration as a web service this operation will become part of the method name) the developer will typically leave it with the default name.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Since the same &lt;i style="mso-bidi-font-style: normal"&gt;called&lt;/i&gt; exception orchestration is called many times within the main orchestration with the same correlation set with the same port operation name, then identical subscriptions will be created in the master message box.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As a general rule of thumb, the master message box can get overwhelmed when trying to match a message to a subscription with more than 20 identical subscriptions (I won’t go into the complexities of what happens when a number of subscriptions are matched for a particular message).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So in this case each request is putting a lot of strain on the master message box trying to match the request to a particular subscriber since the message would match the subscription for activating receive as well as all of the receives that are in each call to the exception orchestration.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;In this case, messages which are destined for the receive points in the exception orchestration are not common, but they are still referenced since the subscriptions are all the same.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To alleviate the strain put on the matching processing we changed the names of the port operations to be unique.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Since the orchestration engine uses the port operation name as the distinguishing property for a subscription, the subscription for the activating &lt;i style="mso-bidi-font-style: normal"&gt;receive&lt;/i&gt; is now unique and the master message box doesn’t have to waste CPU cycle trying to figure which of the other subscriptions it needs to match against.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;In the above described scenario, after making this change, the CPU utilization dropped from 100% to about 20%.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt; &lt;h2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;Recommendations&lt;/font&gt;&lt;/em&gt;&lt;/h2&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Change the operation type name to something unique.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Even if the design doesn’t have a called orchestration with a correlation set passed to it, it is a best practice to change these names in case in the future these orchestrations get repurposed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Also it allows you to more easily find the subscription for a particular operation port in the orchestration.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Lee&amp;nbsp; talks about this scenario in his blog with some more technical detail under his post on&amp;nbsp; &lt;A href="http://blogs.msdn.com/Biztalk_Core_Engine/archive/2004/07/22/191888.aspx"&gt;Is there a pub/sub system underneath BizTalk?&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=217687" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry><entry><title>Welcome to my blog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/kevin_lam/archive/2004/08/20/217679.aspx" /><id>http://blogs.msdn.com/kevin_lam/archive/2004/08/20/217679.aspx</id><published>2004-08-20T16:51:00Z</published><updated>2004-08-20T16:51:00Z</updated><content type="html">&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I suppose I should give a little background on myself before I start blogging to give my posts some context.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Before Microsoft I was designing and developing parts of foreign exchange transaction systems for Reuters. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;I started at Microsoft about 7 years ago as a software design engineer on Windows working on the index server.&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;I spent much of my time porting the code to 64-bit.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As the year 2000 approached Microsoft was pushing harder into the &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Enterprise&lt;/st1:place&gt;&lt;/st1:City&gt; market with the 2000 series of products (Windows, SQL, BizTalk, Host Integration Server, and Commerce Server) on the horizon.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I was fortunate enough to get a position as an Enterprise Solutions Architect working closely with customers designing systems built on pre-released bits of Microsoft platforms and applications helping make them successful on Microsoft products and getting feedback of our findings back into the product teams.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I have been able to work closely with financial, telecommunication, retail and many other types of companies architecting solutions to work with our latest applications. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Now I am part of the Business Process and Integration division still working closely with customers on design wins and architectures but now mostly with projects using BizTalk Server 2004. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;While working in this position I have been able to experience both sides of our products; getting the customers’ perspectives and understanding the product group’s inner workings.&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;In this blog I am planning on sharing some of these experiences and findings.&amp;nbsp; We sometimes discover that users don't understand parts of the system, or didn't know that they had to architect their system in a particular way (for example, many users don't realize that the master secret server must be clustered for a high availability build out).&amp;nbsp; I will use this blog to share some of that information as well.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;There are some folks from the BizTalk team who are already blogging:&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Scott Woodgate&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Kevin Smith&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Lee (the dude) Graber (BizTalk Core Engine)&lt;br /&gt;Eldar Musayev&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;They already have some excellent posts and I would recommend looking at them as well.&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Enjoy,&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;Kevin&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=217679" width="1" height="1"&gt;</content><author><name>Kevin Lam</name><uri>http://blogs.msdn.com/members/Kevin+Lam.aspx</uri></author></entry></feed>