<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1152907556749443781</id><updated>2011-11-27T15:35:34.397-08:00</updated><category term='biztalk'/><category term='asynchronous integration'/><category term='error exceptions routing failed messages biztalk'/><category term='soi'/><category term='contract-first'/><category term='biztalk application SOA process artefact'/><category term='wsdl'/><category term='biztalk server 2006'/><category term='xsd'/><category term='dual MEP message exchange pattern biztalk'/><category term='soa'/><title type='text'>SOA - SOI - Integration - Biztalk</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1152907556749443781.post-1526916819010317138</id><published>2009-11-05T00:45:00.000-08:00</published><updated>2009-11-18T06:52:06.014-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contract-first'/><category scheme='http://www.blogger.com/atom/ns#' term='xsd'/><category scheme='http://www.blogger.com/atom/ns#' term='biztalk'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Why Contract-First? Part 1</title><content type='html'>Contract first admits you taking control over your domain artefacts. It also loosely couples the external view from the internal implementation logic(black boxing). Just as a remainder, this doesn't mean you should build a big design upfront(BDUF). &lt;br /&gt;&lt;br /&gt;When it comes to primitive SOA e.g. building services, the basic building blocks are schemas and service contracts. In technical terms it translates to xsd's and wsdl's.&lt;br /&gt;&lt;br /&gt;Whats needed:&lt;br /&gt;*Definition of the term &lt;span style="font-weight:bold;"&gt;endpoint&lt;/span&gt; -&gt; &lt;span style="font-weight:bold;"&gt;ABC&lt;/span&gt;(adress, binding, contract). The adress specifies an url for the endpoint, the binding defines the concrete part(actual protocol) and the contract defines the abstract parts(messages and interface operations).&lt;br /&gt;*Good understanding of &lt;span style="font-weight:bold;"&gt;wsdl&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;xsd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;+Take control over your domain - think about your domain elements&lt;br /&gt;+Better support for enterprise transformation - strategic thinking&lt;br /&gt;+Let the clients have their contracts early delivered, work separately(loosely coupled, no implementation at this phase)&lt;br /&gt;+Higher interoperability&lt;br /&gt;+Artefacts usable in biztalk ports mapping system specific format to canonical format&lt;br /&gt;+You can ignore horrific Microsoft-wizards&lt;br /&gt;+Reusability for shared datatypes&lt;br /&gt;+No vendor lock-in&lt;br /&gt;&lt;br /&gt;-Learning curve&lt;br /&gt;-Tooling support&lt;br /&gt;&lt;br /&gt;How-to? step-by-step&lt;br /&gt;1.Identify strategies for versioning and namespaces of schemas/endpoints, e.g. &lt;span style="font-style:italic;"&gt;"http://YourCompany/Customer/Email/v1"&lt;/span&gt;&lt;br /&gt;2.Create reusable datatypes&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q02syaiLZzg/SvnUM6O4XTI/AAAAAAAAARA/qXmLshwJJHg/s1600-h/Email.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 162px;" src="http://3.bp.blogspot.com/_Q02syaiLZzg/SvnUM6O4XTI/AAAAAAAAARA/qXmLshwJJHg/s320/Email.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5402582546262809906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.Create messages &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q02syaiLZzg/SvnUeQxmcMI/AAAAAAAAARI/RxGslpBEFMw/s1600-h/GetCustomer.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://3.bp.blogspot.com/_Q02syaiLZzg/SvnUeQxmcMI/AAAAAAAAARI/RxGslpBEFMw/s320/GetCustomer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5402582844371792066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.Create operations  &lt;br /&gt;5.Compose endpoints&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q02syaiLZzg/SvnUmeuVPmI/AAAAAAAAARQ/XP3UVGZQavE/s1600-h/CustomerService.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 193px;" src="http://2.bp.blogspot.com/_Q02syaiLZzg/SvnUmeuVPmI/AAAAAAAAARQ/XP3UVGZQavE/s320/CustomerService.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5402582985555132002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.Governance(security, policy)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://soaproffs.se/Projects/CustomerService.zip"&gt;Code showing contract first!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1152907556749443781-1526916819010317138?l=biztalkpros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/1526916819010317138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biztalkpros.blogspot.com/2009/11/why-contract-first.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/1526916819010317138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/1526916819010317138'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/2009/11/why-contract-first.html' title='Why Contract-First? Part 1'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Q02syaiLZzg/SvnUM6O4XTI/AAAAAAAAARA/qXmLshwJJHg/s72-c/Email.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1152907556749443781.post-7481993290401378077</id><published>2009-10-14T04:27:00.000-07:00</published><updated>2009-10-16T02:13:37.243-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='biztalk application SOA process artefact'/><title type='text'>How-to find the right granularity designing biztalk applications?</title><content type='html'>Microsofts definition of a biztalk application:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;“&lt;/span&gt;&lt;em style="font-style: italic;"&gt;The BizTalk application is a feature of BizTalk Server that makes it quicker and easier to deploy, manage, and troubleshoot BizTalk Server business solutions. A BizTalk application is a logical grouping of the items, called "artifacts," used in a BizTalk Server business solution&lt;/em&gt;&lt;span style="font-style: italic;"&gt;”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't think that this definition tells us about the fact what we really are realizing, that is, processes, services, systems functionality and further. We need to answer several questions:&lt;br /&gt;- What function/purpose should the biztalk platform make in our enterprise?&lt;br /&gt;- Should it serve as a &lt;span style="font-style: italic;"&gt;Service Bus&lt;/span&gt; or an &lt;span style="font-style: italic;"&gt;integration platform&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The answers gives us the initial requirements for establishing an initial design and architecture for the biztalk infrastructure.&lt;br /&gt;&lt;br /&gt;Initial requirements for the picture below:&lt;br /&gt;- ESB solution&lt;br /&gt;- medium or big biztalk solution&lt;br /&gt;- a lot artefacts to manage(orchestrations, schemas, maps, pipelines, ports)&lt;br /&gt;- support for complex long-running processes&lt;br /&gt;- support for messaging/CBR(content based router)&lt;br /&gt;- different clients demanding similar functionality&lt;br /&gt;&lt;br /&gt;Goals:&lt;br /&gt;- reusable services/orchestrations&lt;br /&gt;- easy to manage, deploy and redeploy artifacts&lt;br /&gt;- few, or no dependencies between applications&lt;br /&gt;- loosely coupled services/orchestrations using MsgBox direct binding&lt;br /&gt;- versioning of assemblies supporting different versions, for example a long-running process&lt;br /&gt;- organic growth of artefacts, create applications when needed&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogical.se/blogs/mikael/archive/2009/06/18/what-is-a-biztalk-application.aspx"&gt;Other discussions&lt;/a&gt; on the same topic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Q02syaiLZzg/StW2oVugEvI/AAAAAAAAAQE/mRHI3BMcV4Y/s1600-h/BiztalkApplication.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Q02syaiLZzg/StW2oVugEvI/AAAAAAAAAQE/mRHI3BMcV4Y/s400/BiztalkApplication.jpg" alt="" id="BLOGGER_PHOTO_ID_5392416932989244146" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1152907556749443781-7481993290401378077?l=biztalkpros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/7481993290401378077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biztalkpros.blogspot.com/2009/10/how-to-find-right-granularity-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/7481993290401378077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/7481993290401378077'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/2009/10/how-to-find-right-granularity-for.html' title='How-to find the right granularity designing biztalk applications?'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Q02syaiLZzg/StW2oVugEvI/AAAAAAAAAQE/mRHI3BMcV4Y/s72-c/BiztalkApplication.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1152907556749443781.post-6886588870402169363</id><published>2009-10-06T01:34:00.000-07:00</published><updated>2009-10-06T03:35:48.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dual MEP message exchange pattern biztalk'/><title type='text'>Supporting Dual MEP:s reusing same service</title><content type='html'>The tenets of SOA...."loosely coupled" and "autonomous" services.&lt;br /&gt;Here i'll show how you can reuse the same service, e.g the same service implementation, supporting different Message Exchange Patterns.&lt;br /&gt;- synchronous two-way request-response pattern&lt;br /&gt;- asynchronous one-way request pattern&lt;br /&gt;&lt;br /&gt;* Reusing the same orchestration(service) for both synchronous and asynchronous interaction&lt;br /&gt;* MsgBox direct-binding(e.g no logical/orchestration ports) -&gt; more autonomous and self-contained&lt;br /&gt;* To fulfil the above you have to copy all(*) BTS subscription-properties from inbound to outbound message. You also have to set the property (BTS.RouteDirectToTP = true).&lt;br /&gt;* One way to determine if the request originates from a one-way or two-way conversation is to evaluate the property (BTS.EpmRRCorrelationToken exists "inboundmessage")&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q02syaiLZzg/SssCN6ZlFQI/AAAAAAAAAP8/3ZIh9qUWbDA/s1600-h/DualMEPs.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 254px;" src="http://2.bp.blogspot.com/_Q02syaiLZzg/SssCN6ZlFQI/AAAAAAAAAP8/3ZIh9qUWbDA/s400/DualMEPs.png" alt="" id="BLOGGER_PHOTO_ID_5389403817117029634" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1152907556749443781-6886588870402169363?l=biztalkpros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/6886588870402169363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biztalkpros.blogspot.com/2009/10/supporting-dual-meps-reusing-same.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/6886588870402169363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/6886588870402169363'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/2009/10/supporting-dual-meps-reusing-same.html' title='Supporting Dual MEP:s reusing same service'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Q02syaiLZzg/SssCN6ZlFQI/AAAAAAAAAP8/3ZIh9qUWbDA/s72-c/DualMEPs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1152907556749443781.post-842763974834388924</id><published>2009-09-01T04:37:00.001-07:00</published><updated>2009-09-01T05:16:16.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='error exceptions routing failed messages biztalk'/><title type='text'>Consistent and unified error handling in Biztalk 2006</title><content type='html'>To provide your solution an unified and consistent treatment of exception handling in biztalk 2006 these factors must be fulfilled or at least looked into.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;• Standardize how application exceptions are detected and caught in the BizTalk envi-&lt;br /&gt;ronment, i.e., messaging and orchestration subsystems.&lt;br /&gt;• Provide common patterns that allow automated processes to react and manage appli-&lt;br /&gt;cation exceptions.&lt;br /&gt;• Provide a loosely coupled exception management pattern that facilitates reuse.&lt;br /&gt;• Develop a common reporting paradigm of application exceptions and their available&lt;br /&gt;message state that applies to any BizTalk subsystem. &lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;The first important thing you have to do is enabling "Enable routing for failed messages" on receive port. The consequence is that instead of suspending the message the message will be published and a several properties will be promoted to the message context.&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Q02syaiLZzg/Sp0NW99d_MI/AAAAAAAAAPQ/ybdGW2OyJwk/s1600-h/Bild+3.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 318px;" src="http://4.bp.blogspot.com/_Q02syaiLZzg/Sp0NW99d_MI/AAAAAAAAAPQ/ybdGW2OyJwk/s400/Bild+3.png" alt="" id="BLOGGER_PHOTO_ID_5376468218390904002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;Now we have the ability to subscribe on all errormessages using System.Xml.XmlDocument for message type and evaluating the property ErrorType in namespace ErrorReport:&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;If orchestration Activate==true and Filter expression like:&lt;/div&gt;&lt;div&gt;(ErrorReport.ErrorType == "FailedMessage")&lt;/div&gt;&lt;div&gt; &lt;/div&gt;If filter on send port:&lt;br /&gt;(ErrorReport.ErrorType == FailedMessage)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Q02syaiLZzg/Sp0NjF7OOrI/AAAAAAAAAPY/4kPi45A1Hwo/s1600-h/Bild+5.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 178px;" src="http://2.bp.blogspot.com/_Q02syaiLZzg/Sp0NjF7OOrI/AAAAAAAAAPY/4kPi45A1Hwo/s400/Bild+5.png" alt="" id="BLOGGER_PHOTO_ID_5376468426687396530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1152907556749443781-842763974834388924?l=biztalkpros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/842763974834388924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biztalkpros.blogspot.com/2009/09/consistent-and-unified-error-handling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/842763974834388924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/842763974834388924'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/2009/09/consistent-and-unified-error-handling.html' title='Consistent and unified error handling in Biztalk 2006'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Q02syaiLZzg/Sp0NW99d_MI/AAAAAAAAAPQ/ybdGW2OyJwk/s72-c/Bild+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1152907556749443781.post-4576634555969184578</id><published>2009-08-13T23:54:00.000-07:00</published><updated>2009-08-14T02:06:42.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asynchronous integration'/><category scheme='http://www.blogger.com/atom/ns#' term='soi'/><category scheme='http://www.blogger.com/atom/ns#' term='biztalk server 2006'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Asynchronous integration for service oriented integration using Biztalk Server 2006</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Q02syaiLZzg/SoUh541e1MI/AAAAAAAAAOo/ucNjcS3iXFQ/s1600-h/Bild+2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 212px;" src="http://1.bp.blogspot.com/_Q02syaiLZzg/SoUh541e1MI/AAAAAAAAAOo/ucNjcS3iXFQ/s400/Bild+2.png" alt="" id="BLOGGER_PHOTO_ID_5369735409102148802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;Three different strategies among asynchronous integration using biztalk server 2006.&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Client-side asynchrony&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Asynchronous integration with polling&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Asynchronous integration with callback&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;Although option 1 may be the easiest to construct, it is essentially a synchronous SOAP interaction that just appears to be asynchronous to the client code because the connection between the client and the service remains active throughout the whole interaction. Option 1 is therefore not a good choice.&lt;br /&gt;&lt;br /&gt;The difference between option 2 and 3 is more about where you want to hold the state. Option 2 holds the state on server-side, in this case Biztalk Server. Option 3 holds the state on the web server using the global cache. Both servers are multithreaded and quite efficient at keeping state for many concurrent requests. Both options are good choice and is more about where you have your skills and limitations and which area you're focusing on.&lt;br /&gt;&lt;br /&gt;Option 2 requires a little extra work on the BizTalk Server to ensure proper correlation and to allow the concurrent servicing of multiple requests. Option 3 requires additional coding effort in the Web server to maintain and to clear the global cache.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;I will highlight option 2 in more detail and discuss a few aspects you have to take care of.&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;First the client request with a customer id and server responds with a unique correlation id. An import detail here is to initialize the correlation set on the Send shape so the server knows which client should be correlated to the future poll request. Furthermore the process makes asynchronous requests to host systems. (The parallell branch is not true asynchronous, see &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.sabratech.co.uk/blogs/yossidahan/"&gt;"Parallel shape behaviour in BizTalk 2004 and &gt;2006"&lt;/a&gt; of Yossi Dahan. &lt;a href="http://www.biztalkgurus.com/blogs/biztalk/archive/2006/02/28/Working-With-Start-Orchestration-Shapes_2C00_-Self-Correlated-Ports_2C00_-and-Configured-Port-Parameters.aspx"&gt;A better choice for true asynchronues design is using self correlated ports and Start orchestration&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;). The responses from the host systems aggregates into one message and is ready to be sent out. I'm using atomic scope to ensure transactional consistentency when adding the responses to the list.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;The client polls the server with the actual correlation id. The request shape follows the initialized correlation set to correlate the correct instance. If the service has completed its work the server responds with the result otherwise it responds with an empty message. If not a correct correlation id is sent in the server responds with a soap exception. The left branch uses infinite looping to ensure listening for client polling requests. One important thing to mention is that you have to set the orchestration to long running and a corresponding timeout(in my case 60 seconds), otherwise you could increase the actual instances and bloating the server resources.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1152907556749443781-4576634555969184578?l=biztalkpros.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://biztalkpros.blogspot.com/feeds/4576634555969184578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://biztalkpros.blogspot.com/2009/08/asynchronous-integration-in-service.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/4576634555969184578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1152907556749443781/posts/default/4576634555969184578'/><link rel='alternate' type='text/html' href='http://biztalkpros.blogspot.com/2009/08/asynchronous-integration-in-service.html' title='Asynchronous integration for service oriented integration using Biztalk Server 2006'/><author><name>Robert</name><uri>http://www.blogger.com/profile/04920713312417416949</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Q02syaiLZzg/SoUh541e1MI/AAAAAAAAAOo/ucNjcS3iXFQ/s72-c/Bild+2.png' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
