<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Mick's Breeze Blogs - Biztalk/Sharepoint/... - Async</title>
    <link>http://blogs.breeze.net/mickb/</link>
    <description>Things hard and not so hard....</description>
    <language>en-us</language>
    <copyright>Breeze</copyright>
    <lastBuildDate>Thu, 25 Oct 2012 05:06:11 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>mickb@breezetraining.com.au</managingEditor>
    <webMaster>mickb@breezetraining.com.au</webMaster>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=9946241b-a9ec-48e3-bfed-5cd90bc33913</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,9946241b-a9ec-48e3-bfed-5cd90bc33913.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,9946241b-a9ec-48e3-bfed-5cd90bc33913.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=9946241b-a9ec-48e3-bfed-5cd90bc33913</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Great news – <a href="http://blogs.msdn.com/355260/ProfileUrlRedirect.ashx" target="_blank">Jurgen
Willis</a> and his team have worked hard to bring <a href="http://blogs.technet.com/b/server-cloud/archive/2012/10/24/announcing-the-public-availability-of-workflow-manager-1-0.aspx" target="_blank">Microsoft’s
first V1.0 WF Workflow Hosting Manager</a>.
</p>
        <p>
It  runs both as part of Windows Server and within Azure VMs also. It also is
used by the SharePoint team in 2013, so learn it once and you’ll get great mileage
out of it.<br />
(I’m yet to put it through serious paces)
</p>
        <p>
Some links to help you out…
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/jj193471(v=azure.10).aspx" target="_blank">What
is it?</a>
        </p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/jj193482(v=azure.10).aspx" target="_blank">WF
Mgr 1.0 – Code Samples</a>
        </p>
        <p>
 
</p>
        <p>
The following main areas for WF improvements in .NET 4.5: (great <a href="http://msdn.microsoft.com/en-us/magazine/hh781025.aspx" target="_blank">MSDN
magazine article</a>)
</p>
        <ol>
          <li>
Workflow Designer enhancements 
</li>
          <li>
C# expressions 
</li>
          <li>
Contract-first authoring of WCF Workflow Services 
</li>
          <li>
Workflow versioning 
</li>
          <li>
Dynamic update 
</li>
          <li>
Partial trust 
</li>
          <li>
Performance enhancements</li>
        </ol>
        <p>
Specifically for WorkflowManager there’s integration with:
</p>
        <blockquote>
          <p>
1. Windows Azure Service Bus.
</p>
        </blockquote>
        <p>
So all in all a major improvement and we’ve now got somewhere serious to host our
WF Services. If you’ve ever gone through the process of creating your own WF host,
you’ll appreciate it’s not a trivial task especially if you want some deeper functionality
such as restartability and fault tolerance.
</p>
        <p>
but…. if you want to kick off a quick WF to be part of an install script, evaluate
an Excel spreadsheet and set results, then hosting within the app, spreadsheet is
fine.
</p>
        <p>
          <strong>Let’s go through installation:</strong>
        </p>
        <p>
Download from here
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_2.png">
            <img title="image" style="display: inline" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb.png" width="640" height="238" />
          </a>
        </p>
        <p>
Workflow_Manager_BPA.msi = Best Practices Analyser.
</p>
        <p>
WorfklowClient = Client APIs, install on machines that want to communicate to WF Manager.
</p>
        <p>
WorkflowManager = the Server/Service Component.
</p>
        <p>
WorkflowTools = VS2012 plugin tools – project types etc.
</p>
        <p>
And we’ll grab the 4 or you can you the Web Platform Installer
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_4.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_1.png" width="644" height="381" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <strong>The Workflow Client </strong>should install fine on it’s own (mine didn’t
as I had to remove some of the beta bits that were previously installed).
</p>
        <p>
          <strong>Installing the Workflow Manager – </strong>create a farm, I went for a <strong>Custom
Setting install</strong> below, just to show you the options.
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_6.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_2.png" width="535" height="484" />
          </a>
        </p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_8.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_3.png" width="557" height="484" />
          </a>
        </p>
        <p>
As you scroll down on this page, you’ll notice a <strong>HTTP Port – </strong>check
the check box to enable <strong>HTTP communications to the Workflow Manager.<br /></strong>This just makes it easier if we need to debug anything across the wire.
</p>
        <p>
          <strong>Select NEXT </strong>or the cool little Arrow-&gt;
</p>
        <p>
          <strong>On Prem Service Bus </strong>is rolled into this install now – accepting defaults.
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_10.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_4.png" width="557" height="484" />
          </a>
        </p>
        <p>
Plugin your Service Accounts and passphrase (for Farm membership and an encryption
seed).
</p>
        <p>
Click Next –&gt; to reveal….
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_12.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_5.png" width="578" height="484" />
          </a>
        </p>
        <p>
As with the latest set of MS Products a cool cool feature is the <strong>‘Get PowerShell
Commands’ </strong>so you can see the script behind your UI choices (VMM manager,
SCCM 2012 has all this right through). BTW – passwords don’t get exported in the script,
you’ll need to add.
</p>
        <p>
Script Sample:
</p>
        <p>
          <font style="background-color: #cccccc"># To be run in Workflow Manager PowerShell
console that has both Workflow Manager and Service Bus installed.</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># Create new SB Farm<br />
$SBCertificateAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force 
-String '***** Replace with Service Bus Certificate Auto-generation key ******' -Verbose;</font>
        </p>
        <p>
          <br />
          <font style="background-color: #cccccc">New-SBFarm -SBFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False'
-InternalPortRangeStart 9000 -TcpPort 9354 -MessageBrokerPort 9356 -RunAsAccount 'administrator'
-AdminGroup 'BUILTIN\Administrators' -GatewayDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey
$SBCertificateAutoGenerationKey -MessageContainerDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False' -Verbose;</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># To be run in Workflow Manager PowerShell
console that has both Workflow Manager and Service Bus installed.</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># Create new WF Farm<br />
$WFCertAutoGenerationKey = ConvertTo-SecureString -AsPlainText  -Force 
-String '***** Replace with Workflow Manager Certificate Auto-generation key ******'
-Verbose;</font>
        </p>
        <p>
          <br />
          <font style="background-color: #cccccc">New-WFFarm -WFFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False'
-RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -HttpsPort 12290
-HttpPort 12291 -InstanceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFInstanceManagementDB;Integrated
Security=True;Encrypt=False' -ResourceDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=WFResourceManagementDB;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey
$WFCertAutoGenerationKey -Verbose;</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># Add SB Host<br />
$SBRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String
'***** Replace with RunAs Password for Service Bus ******' -Verbose;</font>
        </p>
        <p>
          <br />
          <font style="background-color: #cccccc">Add-SBHost -SBFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False'
-RunAsPassword $SBRunAsPassword -EnableFirewallRules $true -CertificateAutoGenerationKey
$SBCertificateAutoGenerationKey -Verbose;</font>
        </p>
        <p>
          <font style="background-color: #cccccc">Try<br />
{<br />
    # Create new SB Namespace<br />
    New-SBNamespace -Name 'WorkflowDefaultNamespace' -AddressingScheme
'Path' -ManageUsers 'administrator','mickb' -Verbose;</font>
        </p>
        <p>
          <font style="background-color: #cccccc">    Start-Sleep -s 90<br />
}<br />
Catch [system.InvalidOperationException]<br />
{<br />
}</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># Get SB Client Configuration<br />
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces 'WorkflowDefaultNamespace'
-Verbose;</font>
        </p>
        <p>
          <font style="background-color: #cccccc"># Add WF Host<br />
$WFRunAsPassword = ConvertTo-SecureString -AsPlainText  -Force  -String
'***** Replace with RunAs Password for Workflow Manager ******' -Verbose;</font>
        </p>
        <p>
          <br />
          <font style="background-color: #cccccc">Add-WFHost -WFFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False'
-RunAsPassword $WFRunAsPassword -EnableFirewallRules $true -SBClientConfiguration
$SBClientConfiguration -EnableHttpPort  -CertificateAutoGenerationKey $WFCertAutoGenerationKey
-Verbose;<br /></font>
        </p>
        <p>
 
</p>
        <p>
Upon completion you should see a new IIS Site…. with the ‘management ports’ of in
my case <strong>HTTPS</strong></p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_16.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_7.png" width="640" height="186" />
          </a>
        </p>
        <p>
 
</p>
        <h1>
          <strong>
          </strong>
        </h1>
        <h1>Let’s Play <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/wlEmoticon-smile_2.png" /></h1>
        <p>
Go and grab the samples and have a play – make sure you run the samples as the user
you’ve nominated as ‘Admin’ during the setup – for now.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=9946241b-a9ec-48e3-bfed-5cd90bc33913" />
      </body>
      <title>Azure: Windows Workflow Manager 1.0 RTMed</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,9946241b-a9ec-48e3-bfed-5cd90bc33913.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/10/25/AzureWindowsWorkflowManager10RTMed.aspx</link>
      <pubDate>Thu, 25 Oct 2012 05:06:11 GMT</pubDate>
      <description>&lt;p&gt;
Great news – &lt;a href="http://blogs.msdn.com/355260/ProfileUrlRedirect.ashx" target="_blank"&gt;Jurgen
Willis&lt;/a&gt; and his team have worked hard to bring &lt;a href="http://blogs.technet.com/b/server-cloud/archive/2012/10/24/announcing-the-public-availability-of-workflow-manager-1-0.aspx" target="_blank"&gt;Microsoft’s
first V1.0 WF Workflow Hosting Manager&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
It&amp;nbsp; runs both as part of Windows Server and within Azure VMs also. It also is
used by the SharePoint team in 2013, so learn it once and you’ll get great mileage
out of it.&lt;br&gt;
(I’m yet to put it through serious paces)
&lt;/p&gt;
&lt;p&gt;
Some links to help you out…
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/jj193471(v=azure.10).aspx" target="_blank"&gt;What
is it?&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/jj193482(v=azure.10).aspx" target="_blank"&gt;WF
Mgr 1.0 – Code Samples&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The following main areas for WF improvements in .NET 4.5: (great &lt;a href="http://msdn.microsoft.com/en-us/magazine/hh781025.aspx" target="_blank"&gt;MSDN
magazine article&lt;/a&gt;)
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Workflow Designer enhancements 
&lt;li&gt;
C# expressions 
&lt;li&gt;
Contract-first authoring of WCF Workflow Services 
&lt;li&gt;
Workflow versioning 
&lt;li&gt;
Dynamic update 
&lt;li&gt;
Partial trust 
&lt;li&gt;
Performance enhancements&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Specifically for WorkflowManager there’s integration with:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
1. Windows Azure Service Bus.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So all in all a major improvement and we’ve now got somewhere serious to host our
WF Services. If you’ve ever gone through the process of creating your own WF host,
you’ll appreciate it’s not a trivial task especially if you want some deeper functionality
such as restartability and fault tolerance.
&lt;/p&gt;
&lt;p&gt;
but…. if you want to kick off a quick WF to be part of an install script, evaluate
an Excel spreadsheet and set results, then hosting within the app, spreadsheet is
fine.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Let’s go through installation:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Download from here
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_2.png"&gt;&lt;img title="image" style="display: inline" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb.png" width="640" height="238"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Workflow_Manager_BPA.msi = Best Practices Analyser.
&lt;/p&gt;
&lt;p&gt;
WorfklowClient = Client APIs, install on machines that want to communicate to WF Manager.
&lt;/p&gt;
&lt;p&gt;
WorkflowManager = the Server/Service Component.
&lt;/p&gt;
&lt;p&gt;
WorkflowTools = VS2012 plugin tools – project types etc.
&lt;/p&gt;
&lt;p&gt;
And we’ll grab the 4 or you can you the Web Platform Installer
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_1.png" width="644" height="381"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Workflow Client &lt;/strong&gt;should install fine on it’s own (mine didn’t
as I had to remove some of the beta bits that were previously installed).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Installing the Workflow Manager – &lt;/strong&gt;create a farm, I went for a &lt;strong&gt;Custom
Setting install&lt;/strong&gt; below, just to show you the options.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_2.png" width="535" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_8.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_3.png" width="557" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
As you scroll down on this page, you’ll notice a &lt;strong&gt;HTTP Port – &lt;/strong&gt;check
the check box to enable &lt;strong&gt;HTTP communications to the Workflow Manager.&lt;br&gt;
&lt;/strong&gt;This just makes it easier if we need to debug anything across the wire.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Select NEXT &lt;/strong&gt;or the cool little Arrow-&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;On Prem Service Bus &lt;/strong&gt;is rolled into this install now – accepting defaults.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_4.png" width="557" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Plugin your Service Accounts and passphrase (for Farm membership and an encryption
seed).
&lt;/p&gt;
&lt;p&gt;
Click Next –&amp;gt; to reveal….
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_5.png" width="578" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
As with the latest set of MS Products a cool cool feature is the &lt;strong&gt;‘Get PowerShell
Commands’ &lt;/strong&gt;so you can see the script behind your UI choices (VMM manager,
SCCM 2012 has all this right through). BTW – passwords don’t get exported in the script,
you’ll need to add.
&lt;/p&gt;
&lt;p&gt;
Script Sample:
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# To be run in Workflow Manager PowerShell
console that has both Workflow Manager and Service Bus installed.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# Create new SB Farm&lt;br&gt;
$SBCertificateAutoGenerationKey = ConvertTo-SecureString -AsPlainText&amp;nbsp; -Force&amp;nbsp;
-String '***** Replace with Service Bus Certificate Auto-generation key ******' -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;font style="background-color: #cccccc"&gt;New-SBFarm -SBFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False'
-InternalPortRangeStart 9000 -TcpPort 9354 -MessageBrokerPort 9356 -RunAsAccount 'administrator'
-AdminGroup 'BUILTIN\Administrators' -GatewayDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=SbGatewayDatabase;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey
$SBCertificateAutoGenerationKey -MessageContainerDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=SBMessageContainer01;Integrated Security=True;Encrypt=False' -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# To be run in Workflow Manager PowerShell
console that has both Workflow Manager and Service Bus installed.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# Create new WF Farm&lt;br&gt;
$WFCertAutoGenerationKey = ConvertTo-SecureString -AsPlainText&amp;nbsp; -Force&amp;nbsp;
-String '***** Replace with Workflow Manager Certificate Auto-generation key ******'
-Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;font style="background-color: #cccccc"&gt;New-WFFarm -WFFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False'
-RunAsAccount 'administrator' -AdminGroup 'BUILTIN\Administrators' -HttpsPort 12290
-HttpPort 12291 -InstanceDBConnectionString 'Data Source=BTS2012DEV;Initial Catalog=WFInstanceManagementDB;Integrated
Security=True;Encrypt=False' -ResourceDBConnectionString 'Data Source=BTS2012DEV;Initial
Catalog=WFResourceManagementDB;Integrated Security=True;Encrypt=False' -CertificateAutoGenerationKey
$WFCertAutoGenerationKey -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# Add SB Host&lt;br&gt;
$SBRunAsPassword = ConvertTo-SecureString -AsPlainText&amp;nbsp; -Force&amp;nbsp; -String
'***** Replace with RunAs Password for Service Bus ******' -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;font style="background-color: #cccccc"&gt;Add-SBHost -SBFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=SbManagementDB;Integrated Security=True;Encrypt=False'
-RunAsPassword $SBRunAsPassword -EnableFirewallRules $true -CertificateAutoGenerationKey
$SBCertificateAutoGenerationKey -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;Try&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Create new SB Namespace&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; New-SBNamespace -Name 'WorkflowDefaultNamespace' -AddressingScheme
'Path' -ManageUsers 'administrator','mickb' -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start-Sleep -s 90&lt;br&gt;
}&lt;br&gt;
Catch [system.InvalidOperationException]&lt;br&gt;
{&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# Get SB Client Configuration&lt;br&gt;
$SBClientConfiguration = Get-SBClientConfiguration -Namespaces 'WorkflowDefaultNamespace'
-Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font style="background-color: #cccccc"&gt;# Add WF Host&lt;br&gt;
$WFRunAsPassword = ConvertTo-SecureString -AsPlainText&amp;nbsp; -Force&amp;nbsp; -String
'***** Replace with RunAs Password for Workflow Manager ******' -Verbose;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;font style="background-color: #cccccc"&gt;Add-WFHost -WFFarmDBConnectionString 'Data
Source=BTS2012DEV;Initial Catalog=BreezeWFManagementDB;Integrated Security=True;Encrypt=False'
-RunAsPassword $WFRunAsPassword -EnableFirewallRules $true -SBClientConfiguration
$SBClientConfiguration -EnableHttpPort&amp;nbsp; -CertificateAutoGenerationKey $WFCertAutoGenerationKey
-Verbose;&lt;br&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Upon completion you should see a new IIS Site…. with the ‘management ports’ of in
my case &lt;strong&gt;HTTPS&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_16.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/image_thumb_7.png" width="640" height="186"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h1&gt;&lt;strong&gt;&lt;/strong&gt;
&lt;/h1&gt;
&lt;h1&gt;Let’s Play &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-Windows-Workflow-Manager-1.0-RTMed_9CB3/wlEmoticon-smile_2.png"&gt;
&lt;/h1&gt;
&lt;p&gt;
Go and grab the samples and have a play – make sure you run the samples as the user
you’ve nominated as ‘Admin’ during the setup – for now.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=9946241b-a9ec-48e3-bfed-5cd90bc33913" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,9946241b-a9ec-48e3-bfed-5cd90bc33913.aspx</comments>
      <category>Async</category>
      <category>Azure</category>
      <category>Azure/Integration</category>
      <category>Azure/ServiceBus</category>
      <category>BizTalk</category>
      <category>BizTalk/2010</category>
      <category>BizTalk/2010 R2</category>
      <category>Dev</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=6fcaa62e-199d-4631-bf3e-3bf8f140bb48</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=6fcaa62e-199d-4631-bf3e-3bf8f140bb48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Local MS Developer pillar Andrew Coates spilled the beans on this next new language
to come out of MS Research. 
</p>
        <p>
          <strong>Db.NET</strong> or ‘D flat’ – F#, C# and the Cinderella of the 3 sisters ‘VB.NET’ 
<br />
(Last year I was introduced to F# over a 5 month project and absolutely loved the
simplicity and freshness of it – async was simple, tasks, functions and code that
would normally take 400 lines in C#, we were able to do in 100 in F#)<br /></p>
        <p>
It promises:
</p>
        <p>
- speed
</p>
        <p>
- optimisation (I wonder if it’ll be smart enough to run tasks on different CPU cores?)
</p>
        <p>
          <a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16.png">
            <img title="SNAGHTML7dd9a16" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML7dd9a16" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16_thumb.png" width="644" height="393" />
          </a>
        </p>
        <p>
There is a focus on Orchestration – data Orchestration found here <a title="http://thenextlanguage.net/a-focus-on-orchestration/" href="http://thenextlanguage.net/a-focus-on-orchestration/">http://thenextlanguage.net/a-focus-on-orchestration/</a></p>
        <p>
Where it talks about “An example of the close collaboration between the product team
and the company’s research arm is the use of <strong>Schenkerian Analysis</strong> in
the compiler to maximize orchestration between sections of the code.”
</p>
        <p>
Oooh I thought – let’s check out what this is <strong>Schenkerian Analysis</strong> and
a quick check of Wikipedia reveals <a title="http://en.wikipedia.org/wiki/Schenkerian_analysis" href="http://en.wikipedia.org/wiki/Schenkerian_analysis">http://en.wikipedia.org/wiki/Schenkerian_analysis</a></p>
        <p>
“<b>Schenkerian analysis</b> is a method of <a href="http://en.wikipedia.org/wiki/Musical_analysis">musical
analysis</a> of tonal music based on the <a href="http://en.wikipedia.org/wiki/Theory">theories</a> of <a href="http://en.wikipedia.org/wiki/Heinrich_Schenker">Heinrich
Schenker</a>. The goal of a Schenkerian analysis is to interpret the underlying structure
of a tonal work. The theory's basic tenets can be viewed as a way of defining <a href="http://en.wikipedia.org/wiki/Tonality">tonality</a> in
music. A Schenkerian analysis of a passage of music shows hierarchical relationships
among its pitches, and draws conclusions about the structure of the passage from this
hierarchy. The analysis is demonstrated through reductions of the music, using a specialized
symbolic form of musical notation that Schenker devised to demonstrate various <a href="http://en.wikipedia.org/wiki/Schenkerian_analysis#Techniques_of_prolongation">prolongational
techniques</a>. The concept of tonal prolongation, in which certain pitches determine
the goal of other, subordinate pitches, is a cornerstone of the pitch hierarchy that
Schenkerian analysis involves itself with.”
</p>
        <p>
So tones, pitches and music is where this algorithm has its roots…I can see how you
could take this analysis when applied to the frequency of music and apply it to the
frequency of code items; data being hit etc.
</p>
        <p>
I’ll crack open this <strong>VS.2011 extension and see what transpires…</strong></p>
        <p>
          <strong>Grab the TOOLS here - <a title="http://thenextlanguage.net/tools/" href="http://thenextlanguage.net/tools/">http://thenextlanguage.net/tools/</a></strong>
        </p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6fcaa62e-199d-4631-bf3e-3bf8f140bb48" />
      </body>
      <title>.NET: Microsoft’s new .NET language ‘D-flat’ .net</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2012/04/01/NETMicrosoftsNewNETLanguageDflatNet.aspx</link>
      <pubDate>Sun, 01 Apr 2012 10:10:48 GMT</pubDate>
      <description>&lt;p&gt;
Local MS Developer pillar Andrew Coates spilled the beans on this next new language
to come out of MS Research. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Db.NET&lt;/strong&gt; or ‘D flat’ – F#, C# and the Cinderella of the 3 sisters ‘VB.NET’ 
&lt;br&gt;
(Last year I was introduced to F# over a 5 month project and absolutely loved the
simplicity and freshness of it – async was simple, tasks, functions and code that
would normally take 400 lines in C#, we were able to do in 100 in F#)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
It promises:
&lt;/p&gt;
&lt;p&gt;
- speed
&lt;/p&gt;
&lt;p&gt;
- optimisation (I wonder if it’ll be smart enough to run tasks on different CPU cores?)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16.png"&gt;&lt;img title="SNAGHTML7dd9a16" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="SNAGHTML7dd9a16" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/NET-Microsofts-new-.NET-language-D-.net_117E1/SNAGHTML7dd9a16_thumb.png" width="644" height="393"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There is a focus on Orchestration – data Orchestration found here &lt;a title="http://thenextlanguage.net/a-focus-on-orchestration/" href="http://thenextlanguage.net/a-focus-on-orchestration/"&gt;http://thenextlanguage.net/a-focus-on-orchestration/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Where it talks about “An example of the close collaboration between the product team
and the company’s research arm is the use of &lt;strong&gt;Schenkerian Analysis&lt;/strong&gt; in
the compiler to maximize orchestration between sections of the code.”
&lt;/p&gt;
&lt;p&gt;
Oooh I thought – let’s check out what this is &lt;strong&gt;Schenkerian Analysis&lt;/strong&gt; and
a quick check of Wikipedia reveals &lt;a title="http://en.wikipedia.org/wiki/Schenkerian_analysis" href="http://en.wikipedia.org/wiki/Schenkerian_analysis"&gt;http://en.wikipedia.org/wiki/Schenkerian_analysis&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
“&lt;b&gt;Schenkerian analysis&lt;/b&gt; is a method of &lt;a href="http://en.wikipedia.org/wiki/Musical_analysis"&gt;musical
analysis&lt;/a&gt; of tonal music based on the &lt;a href="http://en.wikipedia.org/wiki/Theory"&gt;theories&lt;/a&gt; of &lt;a href="http://en.wikipedia.org/wiki/Heinrich_Schenker"&gt;Heinrich
Schenker&lt;/a&gt;. The goal of a Schenkerian analysis is to interpret the underlying structure
of a tonal work. The theory's basic tenets can be viewed as a way of defining &lt;a href="http://en.wikipedia.org/wiki/Tonality"&gt;tonality&lt;/a&gt; in
music. A Schenkerian analysis of a passage of music shows hierarchical relationships
among its pitches, and draws conclusions about the structure of the passage from this
hierarchy. The analysis is demonstrated through reductions of the music, using a specialized
symbolic form of musical notation that Schenker devised to demonstrate various &lt;a href="http://en.wikipedia.org/wiki/Schenkerian_analysis#Techniques_of_prolongation"&gt;prolongational
techniques&lt;/a&gt;. The concept of tonal prolongation, in which certain pitches determine
the goal of other, subordinate pitches, is a cornerstone of the pitch hierarchy that
Schenkerian analysis involves itself with.”
&lt;/p&gt;
&lt;p&gt;
So tones, pitches and music is where this algorithm has its roots…I can see how you
could take this analysis when applied to the frequency of music and apply it to the
frequency of code items; data being hit etc.
&lt;/p&gt;
&lt;p&gt;
I’ll crack open this &lt;strong&gt;VS.2011 extension and see what transpires…&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Grab the TOOLS here - &lt;a title="http://thenextlanguage.net/tools/" href="http://thenextlanguage.net/tools/"&gt;http://thenextlanguage.net/tools/&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=6fcaa62e-199d-4631-bf3e-3bf8f140bb48" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,6fcaa62e-199d-4631-bf3e-3bf8f140bb48.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=a0ae34e6-cb75-42c0-9970-05baad02d8f2</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,a0ae34e6-cb75-42c0-9970-05baad02d8f2.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,a0ae34e6-cb75-42c0-9970-05baad02d8f2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=a0ae34e6-cb75-42c0-9970-05baad02d8f2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well folks – the appfabric labs have come out with a real gem recently.
</p>
        <p>
In CTP we have:
</p>
        <ul>
          <li>
EDI + EAI processing</li>
          <li>
AS2 http/s endpoints</li>
          <li>
‘Bridges’</li>
          <li>
Transforms</li>
        </ul>
        <p>
and of course the latest version of
</p>
        <ul>
          <li>
ServcieBus, Queues and Topics.</li>
        </ul>
        <p>
To get the real benefit from this ‘sneak peek’ there’s a bit of setup required. To
those familiar with BizTalk there’s a few EDI screens declaring parties/partners and
agreements you’ll have seen before.
</p>
        <p>
          <strong>To get cracking:</strong>
        </p>
        <ol>
          <li>
Update your local bits with the latest and greatest - <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh689760.aspx" target="_blank">Installing
the Windows Azure Service Bus EAI and EDI Labs - December 2011</a><br />
Part of this install is to install the <strong>Service Bus Connect</strong> component,
which installs the <strong>BizTalk 2010 LOB Adapter pack</strong>.<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb.png" width="644" height="284" /></a><br /><br />
So this is really quite interesting. As the WCF LOB Adapter SDK provides a framework
for developers to build out ‘adapters’ to connect systems/endpoints through a sync/async
messaging pattern.<br /><br />
The BizTalk Adapter Pack 2010 is the BizTalk Team set of adapters built on top of
the WCF Adapter Framework. The BizTalk Adapter pack includes:<br />
- SQL Server Adapter. Hi performance sql work, notifications, async reads, writes
etc.<br />
- SAP Adapter – uses the SAP Client APIs (under the hood) to talk directly to SAP.
Very powerful<br />
- SIEBEL Adapter<br />
- Oracle DB Adapter<br />
- Oracle ES Adapter<br /><br />
These adapters are exposed as ‘WCF Bindings’ with BizTalk or a small amount of code,
allows you to expose these adapters as callable WCF Services.<br /><br /><strong>What does this mean in our case here? </strong><br />
If you think about your on-premise Oracle system, we now have a local means of accessing
Oracle and we can then push the message processing (e.g. a new order arrived) into
our ‘cloud’ bridge where we have the immediate benefit of HA + Scale. Do some work
there, and spit the result out any which way you want. Maybe back down to on-premise,
or in a Queue or to Azure Storage.<br /><br /></li>
          <li>
Sign up to <strong>AppFabricLabs – </strong><a href="http://portal.appfabriclabs.com">http://portal.appfabriclabs.com</a> and
provision your ‘servicebus’ service.<br />
This provides your EDI/EAI relay endpoints and also provides a way for you to listen/send
requests to/from the cloud.<br /></li>
          <li>
Here I have used <strong>mickservices </strong>as my ServiceBus namespace.<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_1.png" width="644" height="273" /></a><br />
(I created a Queue and a couple of Topics for later use – not really needed here)<br /><strong>Note: grab your HIDDEN KEY details from here – </strong>owner + &lt;key#&gt;<br /></li>
          <li>
From within the Portal <strong>Create a Queue called samples/gettingstarted/queueorders</strong><br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_24.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_11.png" width="834" height="164" /></a><br /></li>
          <li>
            <strong>Register at the EDI Portal</strong> – <a href="http://edi.appfabriclabs.com">http://edi.appfabriclabs.com</a><br />
Even though this says ‘EDI’ think of it as your sandpit. It’s where all your ‘widgets’
live that are to run in Azure Integration Services.<br /><br />
The registration form had me stumped for a little bit. Here’s the details that work.<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_6.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_2.png" width="704" height="460" /></a><br /><br />
Notice my servicebus namespace – just the first word. I previously had the whole thing,
then variations of it.<br />
Issuer Name: owner<br />
Issuer secret: &lt;the hidden key from above&gt;<br /><br />
Click <strong>save/register</strong> and you should be good here.<br /></li>
          <li>
Once this is done – click on <strong>Settings –&gt; AS2 </strong>and <strong>Enable
AS2 message processing</strong> (which is EDI/HTTP – you might be lucky enough to
get the msgs as XML, but most times no). This will create some endpoints for you <strong>b2bgateway…</strong> style
endpoints.<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_8.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_3.png" width="1057" height="521" /></a><br /></li>
          <li>
At this stage, have a look under <strong>Resources </strong>and you’ll notice that
it’s empty. <strong>But…</strong>they have <strong>Schemas, Transforms and Certificates.</strong> We’ll
come back to that later.<br /></li>
          <li>
Let’s head to Visual Studio 2010 with the updates installed and open up the Sample
Order Processing project.<br /><br />
I installed my samples under <strong>c:\samples</strong><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_10.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_4.png" width="244" height="167" /></a><br /><br />
If all opens well you should see:<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_12.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_5.png" width="301" height="142" /></a><br /><br /><strong>Note: there’s a couple of new items here: </strong>(expand out artifacts)<br /><strong>*.bcs – </strong>Bridge. There’s a <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh689768.aspx" target="_blank">MSDN
Article describing these</a> – I was like ‘what???’. Basically these are a ‘processing
pipe’ of which various operations can be performed on a message in stages. These stages
are ‘atomic’ and they also have ‘conditions’ as to whether they *need* to be applied
to the said message. So a bridge could take a message, convert it to XML and broadcast
the message out to a Topic.<br /><br />
Opening up the designer – it gets pretty cool I must say!!! 
<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_14.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_6.png" width="1362" height="595" /></a><br /><strong>Note the ‘operations’ on the LHS</strong>. I must have a play with these guys <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/wlEmoticon-smile_2.png" /> <br />
Another thought – how extensible is this? I’d bet we could write our own widgets to
throw on the design surface as well.<br /><br />
By double clicking on the <strong>BridgeOrders </strong>component, you can see the
designer surface come up with the ‘stage processing’.<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_16.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_7.png" width="344" height="560" /></a><br /><br />
Here you can see the ‘bridge’ (I wonder if that term will last till the release) will
accept only 2 types of message schemas – PO1 + PO2. Maps them out to a more generic <strong>PO
format</strong>.<br />
The map – XMLTransform from my initial testing only applies one map, the first one
that matches the source schema (this is the same as BizTalk).<br /><br />
Close the bridge view down and leave the <strong>BridgeConfiguration</strong> open.<br /></li>
          <li>
            <strong>Click anywhere on the white surface of the BridgeConfiguration</strong> and
set your <strong>Service Namespace </strong>property from the Properties window (this
guy was hard to find!!)<br />
Put <strong>&lt;your service namespace&gt;</strong> you created originally.<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_18.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_8.png" width="362" height="126" /></a><br /></li>
          <li>
Save and click <strong>Deploy </strong>and a Deployment window comes up – put your
details in from above.<br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_20.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_9.png" width="442" height="244" /></a><br /><br />
After deployment completes, keep an eye on the Output window as this has all the URLs
you’ll need for the next step. In particular the <strong>BridgeOrders</strong>.<br /><br />
Feel free to go back to your Azure Portal –&gt; Resources and see your deployed bits
in there, Schemas, Transforms etc.<br /><br /></li>
          <li>
            <strong>Running what you’ve built</strong> – sending a message to the ‘bridge’ (here
I’ve borrowed info from the ‘Readme.html’ in the sample project folder)<br />
We don’t need to setup the whole EDI Trading partner piece. – just send messages to
a restful endpoint – aka the bridge.<br /></li>
        </ol>
        <ol>
          <li>
From the samples folder locate the <strong>Tools\MessageSender</strong> project. (you
may have to build it in VS.NET first)</li>
          <li>
from a command prompt run <strong>messagesender.exe 
<br /></strong><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_22.png"><strong><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_10.png" width="1190" height="53" /></strong></a><br /><br />
In my case it looks like this:<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_28.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_13.png" width="672" height="335" /></a><br /><br />
Took me a little to get this originally, make sure all your VS.NET stuff is deployed
properly.<br /><br />
So effectively we have sent PO1.xml to our ‘Bridge’ and it’s been accepted, validated
and transformed into ‘something else’ and popped onto a Queue called <strong>Samples/gettingstarted/QueueOrders.<br /><br />
We will now get the message Reader to Read it.<br /></strong></li>
        </ol>
        <li>
From under the <strong>Samples\Tools </strong>folder locate the <strong>MessageReceiver </strong>project
and build if required.</li>
        <li>
From a command prompt at that location, run the following to <strong>Listen</strong> to
the queue<br /><br /><a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_30.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_14.png" width="672" height="335" /></a></li>
        <p>
          <br />
          <br />
        </p>
        <strong>
        </strong>
        <p>
          <br />
          <br />
        </p>
        <p>
          <br />
        </p>
        <p>
          <strong>Wrapping up - </strong>
          <br />
          <br />
Here is obviously a quick walk through of what’s possible, performance, scale and
throughput are other measures that we haven’t got here – given it’s CTP/Labs we’re
not quite ready for that conversation.
</p>
        <p>
BizTalk adapter pack will expose out for e.g. your SAP system to a wider audience
and imagine having restful WCF services to call that provide you customer data in
the format you want…or better still…deliver it straight to you!<br />
(currently in BTS 2010, the adapter pack is licensed separately, it’s part of BTS
standard or enterprise. BTS2009 it *was* licensed separately for RRP $5K. Maybe we’ll
see this as a separate component again.)<br />
Or you could do like the SharePoint team and write a brand new WCF Adapter (‘connector’
in their terms) – ‘Duet’ and spend 18 months doing so.<br /><br />
Some things I’d like to see here is a <strong>Rules Processor</strong> or Engine –
being a long long BizTalk fan, the rules engine is a massive strength of any loosely
coupled solution. The majority of BizTalk solutions I come across don’t employ any
rules engines…or better still, Windows Workflow 2,3+ (but not 4 or 4.5) has a rules
‘executor’ which is very powerful in it’s own right. Who’s heard or used the Policy
shape?
</p>
        <p>
Given that this is a sneak peak at what is on the horizon, this is definitely a space
not to miss.
</p>
        <p>
Get those trial accounts going and enjoy!
</p>
        <p>
In particular I’d like to call out <a href="http://rickgaribay.net/archive/2011/12/16/azure-service-bus-connect-eai-and-edi-ldquointegration-servicesrdquo-ctp.aspx" target="_blank">Rick’s
Article</a> (well done Rick!) for a great read on this space also.
</p>
        <p>
Mick.
</p>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a0ae34e6-cb75-42c0-9970-05baad02d8f2" />
      </body>
      <title>Azure AppFabric Labs–EAI, Service Bus in the Cloud</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,a0ae34e6-cb75-42c0-9970-05baad02d8f2.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/12/17/AzureAppFabricLabsEAIServiceBusInTheCloud.aspx</link>
      <pubDate>Sat, 17 Dec 2011 11:08:00 GMT</pubDate>
      <description>&lt;p&gt;
Well folks – the appfabric labs have come out with a real gem recently.
&lt;/p&gt;
&lt;p&gt;
In CTP we have:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
EDI + EAI processing&lt;/li&gt;
&lt;li&gt;
AS2 http/s endpoints&lt;/li&gt;
&lt;li&gt;
‘Bridges’&lt;/li&gt;
&lt;li&gt;
Transforms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
and of course the latest version of
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
ServcieBus, Queues and Topics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
To get the real benefit from this ‘sneak peek’ there’s a bit of setup required. To
those familiar with BizTalk there’s a few EDI screens declaring parties/partners and
agreements you’ll have seen before.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;To get cracking:&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Update your local bits with the latest and greatest - &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh689760.aspx" target="_blank"&gt;Installing
the Windows Azure Service Bus EAI and EDI Labs - December 2011&lt;/a&gt;
&lt;br&gt;
Part of this install is to install the &lt;strong&gt;Service Bus Connect&lt;/strong&gt; component,
which installs the &lt;strong&gt;BizTalk 2010 LOB Adapter pack&lt;/strong&gt;.&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb.png" width="644" height="284"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
So this is really quite interesting. As the WCF LOB Adapter SDK provides a framework
for developers to build out ‘adapters’ to connect systems/endpoints through a sync/async
messaging pattern.&lt;br&gt;
&lt;br&gt;
The BizTalk Adapter Pack 2010 is the BizTalk Team set of adapters built on top of
the WCF Adapter Framework. The BizTalk Adapter pack includes:&lt;br&gt;
- SQL Server Adapter. Hi performance sql work, notifications, async reads, writes
etc.&lt;br&gt;
- SAP Adapter – uses the SAP Client APIs (under the hood) to talk directly to SAP.
Very powerful&lt;br&gt;
- SIEBEL Adapter&lt;br&gt;
- Oracle DB Adapter&lt;br&gt;
- Oracle ES Adapter&lt;br&gt;
&lt;br&gt;
These adapters are exposed as ‘WCF Bindings’ with BizTalk or a small amount of code,
allows you to expose these adapters as callable WCF Services.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;What does this mean in our case here? &lt;/strong&gt;
&lt;br&gt;
If you think about your on-premise Oracle system, we now have a local means of accessing
Oracle and we can then push the message processing (e.g. a new order arrived) into
our ‘cloud’ bridge where we have the immediate benefit of HA + Scale. Do some work
there, and spit the result out any which way you want. Maybe back down to on-premise,
or in a Queue or to Azure Storage.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Sign up to &lt;strong&gt;AppFabricLabs – &lt;/strong&gt;&lt;a href="http://portal.appfabriclabs.com"&gt;http://portal.appfabriclabs.com&lt;/a&gt; and
provision your ‘servicebus’ service.&lt;br&gt;
This provides your EDI/EAI relay endpoints and also provides a way for you to listen/send
requests to/from the cloud.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Here I have used &lt;strong&gt;mickservices &lt;/strong&gt;as my ServiceBus namespace.&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_1.png" width="644" height="273"&gt;&lt;/a&gt;
&lt;br&gt;
(I created a Queue and a couple of Topics for later use – not really needed here)&lt;br&gt;
&lt;strong&gt;Note: grab your HIDDEN KEY details from here – &lt;/strong&gt;owner + &amp;lt;key#&amp;gt;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
From within the Portal &lt;strong&gt;Create a Queue called samples/gettingstarted/queueorders&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_24.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_11.png" width="834" height="164"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Register at the EDI Portal&lt;/strong&gt; – &lt;a href="http://edi.appfabriclabs.com"&gt;http://edi.appfabriclabs.com&lt;/a&gt;
&lt;br&gt;
Even though this says ‘EDI’ think of it as your sandpit. It’s where all your ‘widgets’
live that are to run in Azure Integration Services.&lt;br&gt;
&lt;br&gt;
The registration form had me stumped for a little bit. Here’s the details that work.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_2.png" width="704" height="460"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Notice my servicebus namespace – just the first word. I previously had the whole thing,
then variations of it.&lt;br&gt;
Issuer Name: owner&lt;br&gt;
Issuer secret: &amp;lt;the hidden key from above&amp;gt;&lt;br&gt;
&lt;br&gt;
Click &lt;strong&gt;save/register&lt;/strong&gt; and you should be good here.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Once this is done – click on &lt;strong&gt;Settings –&amp;gt; AS2 &lt;/strong&gt;and &lt;strong&gt;Enable
AS2 message processing&lt;/strong&gt; (which is EDI/HTTP – you might be lucky enough to
get the msgs as XML, but most times no). This will create some endpoints for you &lt;strong&gt;b2bgateway…&lt;/strong&gt; style
endpoints.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_8.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_3.png" width="1057" height="521"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
At this stage, have a look under &lt;strong&gt;Resources &lt;/strong&gt;and you’ll notice that
it’s empty. &lt;strong&gt;But…&lt;/strong&gt;they have &lt;strong&gt;Schemas, Transforms and Certificates.&lt;/strong&gt; We’ll
come back to that later.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Let’s head to Visual Studio 2010 with the updates installed and open up the Sample
Order Processing project.&lt;br&gt;
&lt;br&gt;
I installed my samples under &lt;strong&gt;c:\samples&lt;/strong&gt; 
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_4.png" width="244" height="167"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
If all opens well you should see:&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_5.png" width="301" height="142"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Note: there’s a couple of new items here: &lt;/strong&gt;(expand out artifacts)&lt;br&gt;
&lt;strong&gt;*.bcs – &lt;/strong&gt;Bridge. There’s a &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh689768.aspx" target="_blank"&gt;MSDN
Article describing these&lt;/a&gt; – I was like ‘what???’. Basically these are a ‘processing
pipe’ of which various operations can be performed on a message in stages. These stages
are ‘atomic’ and they also have ‘conditions’ as to whether they *need* to be applied
to the said message. So a bridge could take a message, convert it to XML and broadcast
the message out to a Topic.&lt;br&gt;
&lt;br&gt;
Opening up the designer – it gets pretty cool I must say!!! 
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_14.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_6.png" width="1362" height="595"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;Note the ‘operations’ on the LHS&lt;/strong&gt;. I must have a play with these guys &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/wlEmoticon-smile_2.png"&gt;&amp;nbsp;&lt;br&gt;
Another thought – how extensible is this? I’d bet we could write our own widgets to
throw on the design surface as well.&lt;br&gt;
&lt;br&gt;
By double clicking on the &lt;strong&gt;BridgeOrders &lt;/strong&gt;component, you can see the
designer surface come up with the ‘stage processing’.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_16.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_7.png" width="344" height="560"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Here you can see the ‘bridge’ (I wonder if that term will last till the release) will
accept only 2 types of message schemas – PO1 + PO2. Maps them out to a more generic &lt;strong&gt;PO
format&lt;/strong&gt;.&lt;br&gt;
The map – XMLTransform from my initial testing only applies one map, the first one
that matches the source schema (this is the same as BizTalk).&lt;br&gt;
&lt;br&gt;
Close the bridge view down and leave the &lt;strong&gt;BridgeConfiguration&lt;/strong&gt; open.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click anywhere on the white surface of the BridgeConfiguration&lt;/strong&gt; and
set your &lt;strong&gt;Service Namespace &lt;/strong&gt;property from the Properties window (this
guy was hard to find!!)&lt;br&gt;
Put &lt;strong&gt;&amp;lt;your service namespace&amp;gt;&lt;/strong&gt; you created originally.&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_18.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_8.png" width="362" height="126"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Save and click &lt;strong&gt;Deploy &lt;/strong&gt;and a Deployment window comes up – put your
details in from above.&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_20.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_9.png" width="442" height="244"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
After deployment completes, keep an eye on the Output window as this has all the URLs
you’ll need for the next step. In particular the &lt;strong&gt;BridgeOrders&lt;/strong&gt;.&lt;br&gt;
&lt;br&gt;
Feel free to go back to your Azure Portal –&amp;gt; Resources and see your deployed bits
in there, Schemas, Transforms etc.&lt;br&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Running what you’ve built&lt;/strong&gt; – sending a message to the ‘bridge’ (here
I’ve borrowed info from the ‘Readme.html’ in the sample project folder)&lt;br&gt;
We don’t need to setup the whole EDI Trading partner piece. – just send messages to
a restful endpoint – aka the bridge.&lt;br&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
From the samples folder locate the &lt;strong&gt;Tools\MessageSender&lt;/strong&gt; project. (you
may have to build it in VS.NET first)&lt;/li&gt;
&lt;li&gt;
from a command prompt run &lt;strong&gt;messagesender.exe 
&lt;br&gt;
&lt;/strong&gt;&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_22.png"&gt;&lt;strong&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_10.png" width="1190" height="53"&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
In my case it looks like this:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_28.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_13.png" width="672" height="335"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Took me a little to get this originally, make sure all your VS.NET stuff is deployed
properly.&lt;br&gt;
&lt;br&gt;
So effectively we have sent PO1.xml to our ‘Bridge’ and it’s been accepted, validated
and transformed into ‘something else’ and popped onto a Queue called &lt;strong&gt;Samples/gettingstarted/QueueOrders.&lt;br&gt;
&lt;br&gt;
We will now get the message Reader to Read it.&lt;br&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
From under the &lt;strong&gt;Samples\Tools &lt;/strong&gt;folder locate the &lt;strong&gt;MessageReceiver &lt;/strong&gt;project
and build if required.&lt;/li&gt;
&lt;li&gt;
From a command prompt at that location, run the following to &lt;strong&gt;Listen&lt;/strong&gt; to
the queue&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_30.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.breeze.net/mickb/content/binary/Windows-Live-Writer/Azure-AppFabric-LabsEAI-Service-Bus-in-t_11ED4/image_thumb_14.png" width="672" height="335"&gt;&lt;/a&gt;
&lt;/li&gt;&gt;
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;strong&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Wrapping up - &lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
Here is obviously a quick walk through of what’s possible, performance, scale and
throughput are other measures that we haven’t got here – given it’s CTP/Labs we’re
not quite ready for that conversation.
&lt;/p&gt;
&lt;p&gt;
BizTalk adapter pack will expose out for e.g. your SAP system to a wider audience
and imagine having restful WCF services to call that provide you customer data in
the format you want…or better still…deliver it straight to you!&lt;br&gt;
(currently in BTS 2010, the adapter pack is licensed separately, it’s part of BTS
standard or enterprise. BTS2009 it *was* licensed separately for RRP $5K. Maybe we’ll
see this as a separate component again.)&lt;br&gt;
Or you could do like the SharePoint team and write a brand new WCF Adapter (‘connector’
in their terms) – ‘Duet’ and spend 18 months doing so.&lt;br&gt;
&lt;br&gt;
Some things I’d like to see here is a &lt;strong&gt;Rules Processor&lt;/strong&gt; or Engine –
being a long long BizTalk fan, the rules engine is a massive strength of any loosely
coupled solution. The majority of BizTalk solutions I come across don’t employ any
rules engines…or better still, Windows Workflow 2,3+ (but not 4 or 4.5) has a rules
‘executor’ which is very powerful in it’s own right. Who’s heard or used the Policy
shape?
&lt;/p&gt;
&lt;p&gt;
Given that this is a sneak peak at what is on the horizon, this is definitely a space
not to miss.
&lt;/p&gt;
&lt;p&gt;
Get those trial accounts going and enjoy!
&lt;/p&gt;
&lt;p&gt;
In particular I’d like to call out &lt;a href="http://rickgaribay.net/archive/2011/12/16/azure-service-bus-connect-eai-and-edi-ldquointegration-servicesrdquo-ctp.aspx" target="_blank"&gt;Rick’s
Article&lt;/a&gt; (well done Rick!) for a great read on this space also.
&lt;/p&gt;
&lt;p&gt;
Mick.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=a0ae34e6-cb75-42c0-9970-05baad02d8f2" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,a0ae34e6-cb75-42c0-9970-05baad02d8f2.aspx</comments>
      <category>Async</category>
      <category>BizTalk</category>
      <category>BizTalk/2010 R2</category>
      <category>BizTalk/BizTalk Adapter Pack</category>
      <category>BizTalk/BizTalk Adapter Pack/SAP</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=41d4fa95-911d-4f07-9ba0-644285833106</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=41d4fa95-911d-4f07-9ba0-644285833106</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, as you may/may not have been aware these are the core corner stone technologies
of the MS Integration Stack.
</p>
        <p>
The teams have been busily plugging away and coming up with the new versions – 4.5
corresponding to .NET 4.5 framework.
</p>
        <p>
Here’s some links that describe what’s new from MS Santa &amp; his elves:
</p>
        <ol>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx" target="_blank">What's
New in Windows Communication Foundation 4.5</a>
          </li>
        </ol>
        <ol>
          <li>
New Items I found of note are:</li>
        </ol>
        <ul>
          <li>
New Service Transport Default values – keep an eye on these.</li>
          <li>
Improvements from VS.NET 2011 – validation , better intellisence support.</li>
          <li>
Streaming improved – true async (yay!)</li>
          <li>
WebSocket support – through NetHttp(s)Binding</li>
          <li>
Single WSDL file generation with <strong>‘?singleWSDL’</strong> (which is pretty handy)</li>
          <li>
Self hosted + II hosted allow you to get to <strong>ServiceHost</strong> from code
for dynamic configuration.</li>
          <li>
Binary Encoder supports compression!! – this is generally <strong>gzip</strong> compression.</li>
          <li>
My personal favourite – <strong>UDP support<br /></strong></li>
        </ul>
        <li>
          <a href="http://msdn.microsoft.com/en-us/library/hh305677(v=vs.110).aspx" target="_blank">What's
New in Windows Workflow Foundation in .NET 4.5</a>
        </li>
        <ol>
          <li>
New Items of note are:</li>
        </ol>
        <ul>
          <li>
New Activites – NoPersistScope (possible previously but we needed to write code)</li>
          <li>
WF Designer improvements – several here, but the ‘Outline view’ looks to be easier
to work with.</li>
          <li>
            <strong>C# Expressions</strong> – where’s the F# ones <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-sadsmile_2.png" /> ??</li>
          <li>
Designer Annotations – add your own comments to keep control of the jungle that is
built.</li>
          <li>
WF Versioning – use WorkflowIdentity &amp; DefinitionIdentity to define the version. <strong>WorkflowServiceHost</strong> supports
multiple versions of the same WF. All pretty cool.</li>
          <li>
WF Designers can still be <strong>rehosted</strong> – I’ve used that many a place.</li>
          <li>
Contract First Development – ticks the boxes.<br /></li>
        </ul>
        <li>
          <strong>WF Rules – still didn’t make the cut. </strong>There is a sample for WF4 using
a custom Activity calling back to WF 3.5 <strong>Policy4</strong> it’s called. It
uses ‘interop’ back to WF3.5 and is found here - <a title="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx">http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx</a></li>
        <ol>
          <li>
Will have to check out perf in this new land on these rules.<br /></li>
        </ol>
        <li>
          <strong>Async CTP – </strong>while this didn’t make the ‘whats new’ list, it certainly
does deserve a mention here.<br />
Over the last year I’ve built some pretty serious F# projects, and F# has the async
support through and through the language. After over coming the challenge of learning
it, the Async functionality is absolutely brilliant!!! F# does a great job in being
able to turn a non-async chunk of code/method/class into an async one with by using
the keyword <strong>async </strong>and a <strong>!</strong>. It’s straight forward
from that aspect.<br /><br />
It’s great to see the C# &amp; VB.NETs being able to use the same fundamentals (albeit
not as slick IMO <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-winkingsmile_2.png" />).
– see a previous POST - <a title="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx" href="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx">http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx</a><br /><br />
As developers we sit here and say – <strong>what do I need this for?</strong> My code
runs fine as it….and yes for the most part of what we do on our machine it does. This
technology really comes into it’s own when you want consistent throughput from a solution
with 1 person or 10000 concurrent people using it. That’s the difference.<br /><br /><strong>To use it:</strong></li>
        <ol>
          <li>
            <strong>Get VSNET 2011 </strong>(as it requires a new compiler)</li>
          <li>
Use <strong>ASYNC CTP (refresh3) </strong>with <strong>VSNET2010 SP1<br /></strong></li>
        </ol>
        <li>
Check it out from here - <a title="http://msdn.microsoft.com/en-us/vstudio/gg316360" href="http://msdn.microsoft.com/en-us/vstudio/gg316360">http://msdn.microsoft.com/en-us/vstudio/gg316360</a></li>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=41d4fa95-911d-4f07-9ba0-644285833106" />
      </body>
      <title>WCF 4.5 WF 4.5 VSNET 2011: Some details</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/12/12/WCF45WF45VSNET2011SomeDetails.aspx</link>
      <pubDate>Mon, 12 Dec 2011 01:00:52 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, as you may/may not have been aware these are the core corner stone technologies
of the MS Integration Stack.
&lt;/p&gt;
&lt;p&gt;
The teams have been busily plugging away and coming up with the new versions – 4.5
corresponding to .NET 4.5 framework.
&lt;/p&gt;
&lt;p&gt;
Here’s some links that describe what’s new from MS Santa &amp;amp; his elves:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/dd456789(v=vs.110).aspx" target="_blank"&gt;What's
New in Windows Communication Foundation 4.5&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
New Items I found of note are:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
New Service Transport Default values – keep an eye on these.&lt;/li&gt;
&lt;li&gt;
Improvements from VS.NET 2011 – validation , better intellisence support.&lt;/li&gt;
&lt;li&gt;
Streaming improved – true async (yay!)&lt;/li&gt;
&lt;li&gt;
WebSocket support – through NetHttp(s)Binding&lt;/li&gt;
&lt;li&gt;
Single WSDL file generation with &lt;strong&gt;‘?singleWSDL’&lt;/strong&gt; (which is pretty handy)&lt;/li&gt;
&lt;li&gt;
Self hosted + II hosted allow you to get to &lt;strong&gt;ServiceHost&lt;/strong&gt; from code
for dynamic configuration.&lt;/li&gt;
&lt;li&gt;
Binary Encoder supports compression!! – this is generally &lt;strong&gt;gzip&lt;/strong&gt; compression.&lt;/li&gt;
&lt;li&gt;
My personal favourite – &lt;strong&gt;UDP support&lt;br&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/hh305677(v=vs.110).aspx" target="_blank"&gt;What's
New in Windows Workflow Foundation in .NET 4.5&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
New Items of note are:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
New Activites – NoPersistScope (possible previously but we needed to write code)&lt;/li&gt;
&lt;li&gt;
WF Designer improvements – several here, but the ‘Outline view’ looks to be easier
to work with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C# Expressions&lt;/strong&gt; – where’s the F# ones &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-sadsmile_2.png"&gt; ??&lt;/li&gt;
&lt;li&gt;
Designer Annotations – add your own comments to keep control of the jungle that is
built.&lt;/li&gt;
&lt;li&gt;
WF Versioning – use WorkflowIdentity &amp;amp; DefinitionIdentity to define the version. &lt;strong&gt;WorkflowServiceHost&lt;/strong&gt; supports
multiple versions of the same WF. All pretty cool.&lt;/li&gt;
&lt;li&gt;
WF Designers can still be &lt;strong&gt;rehosted&lt;/strong&gt; – I’ve used that many a place.&lt;/li&gt;
&lt;li&gt;
Contract First Development – ticks the boxes.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;strong&gt;WF Rules – still didn’t make the cut. &lt;/strong&gt;There is a sample for WF4 using
a custom Activity calling back to WF 3.5 &lt;strong&gt;Policy4&lt;/strong&gt; it’s called. It
uses ‘interop’ back to WF3.5 and is found here - &lt;a title="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/dd797584(v=VS.100).aspx&lt;/a&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Will have to check out perf in this new land on these rules.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;li&gt;
&lt;strong&gt;Async CTP – &lt;/strong&gt;while this didn’t make the ‘whats new’ list, it certainly
does deserve a mention here.&lt;br&gt;
Over the last year I’ve built some pretty serious F# projects, and F# has the async
support through and through the language. After over coming the challenge of learning
it, the Async functionality is absolutely brilliant!!! F# does a great job in being
able to turn a non-async chunk of code/method/class into an async one with by using
the keyword &lt;strong&gt;async &lt;/strong&gt;and a &lt;strong&gt;!&lt;/strong&gt;. It’s straight forward
from that aspect.&lt;br&gt;
&lt;br&gt;
It’s great to see the C# &amp;amp; VB.NETs being able to use the same fundamentals (albeit
not as slick IMO &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.breezetraining.com.au/mickb/content/binary/Windows-Live-Writer/WCF-4.5-WF-4.5-VSNET-2011-Some-details_9F80/wlEmoticon-winkingsmile_2.png"&gt;).
– see a previous POST - &lt;a title="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx" href="http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx"&gt;http://blogs.breezetraining.com.au/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
As developers we sit here and say – &lt;strong&gt;what do I need this for?&lt;/strong&gt; My code
runs fine as it….and yes for the most part of what we do on our machine it does. This
technology really comes into it’s own when you want consistent throughput from a solution
with 1 person or 10000 concurrent people using it. That’s the difference.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;To use it:&lt;/strong&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Get VSNET 2011 &lt;/strong&gt;(as it requires a new compiler)&lt;/li&gt;
&lt;li&gt;
Use &lt;strong&gt;ASYNC CTP (refresh3) &lt;/strong&gt;with &lt;strong&gt;VSNET2010 SP1&lt;br&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Check it out from here - &lt;a title="http://msdn.microsoft.com/en-us/vstudio/gg316360" href="http://msdn.microsoft.com/en-us/vstudio/gg316360"&gt;http://msdn.microsoft.com/en-us/vstudio/gg316360&lt;/a&gt;
&lt;/li&gt;&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=41d4fa95-911d-4f07-9ba0-644285833106" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,41d4fa95-911d-4f07-9ba0-644285833106.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
      <category>BizTalk</category>
      <category>Dev</category>
      <category>Dev/.NET Framework 4.5</category>
    </item>
    <item>
      <trackback:ping>http://blogs.breeze.net/mickb/Trackback.aspx?guid=eed3722c-aef6-42e1-9ea5-6049a367a8d5</trackback:ping>
      <pingback:server>http://blogs.breeze.net/mickb/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.breeze.net/mickb/PermaLink,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</pingback:target>
      <dc:creator>Mick Badran</dc:creator>
      <wfw:comment>http://blogs.breeze.net/mickb/CommentView,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.breeze.net/mickb/SyndicationService.asmx/GetEntryCommentsRss?guid=eed3722c-aef6-42e1-9ea5-6049a367a8d5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hi folks, I thought I’d share something that captivated me on this rainy Easter day
and that was
</p>
        <p>
          <strong>Visual Studio Asynchronous Programming - </strong>
          <a title="http://msdn.microsoft.com/en-au/vstudio/async" href="http://msdn.microsoft.com/en-au/vstudio/async">
            <strong>http://msdn.microsoft.com/en-au/vstudio/async</strong>
          </a>
          <br />
(you’ll need VS2010 + SP1 before you grab the CTP)<br />
There’s a new improved compiler + an extended library for us.
</p>
        <p>
Hands up who’s done async programming in either VB.NET or C#??? It’s a pain! Thread
management, Main UI threads can only update certain objects, passing values between
main + background threads, determining whether a thread has completed its tasks… and
so on… 
</p>
        <p>
Basically all these ‘issues’ keep us from delving further into the world of asynchronous
programming cause it very rapidly becomes complex just managing the two worlds – sync
+ async.
</p>
        <p>
          <strong>Today I was pleasantly surprised!!!</strong>
        </p>
        <p>
About a year ago I saw a great presentation on F# and I was amazed at how if they
wanted to run a bit of code async it was simple an extra character as in:
</p>
        <p>
set results = …..   &lt;-sync
</p>
        <p>
set results! = ….  &lt;- run this async
</p>
        <p>
(don’t quote me on the above, but it’s something like that – let’s call it pseudo
code)
</p>
        <p>
          <strong>Why are we interested in this?</strong> – that’s always the first question
to ask when investigating. Too many times we here ‘this is really cool’ and ‘check
this cool software out’ etc… but the real reason of WHY do we want to go down this
road is never answered. 
</p>
        <p>
On a ‘developers machine’ looking at 5 items, running a single test client – you’d
have to say “<strong>works on my machine” </strong>and you’d have no need to async
anything. True. Let’s move beyond our beloved developer box and think about UAT/PROD
environments and what your code is doing.<br /><br />
What happens if 4 concurrent requests come along – how is your code going to perform?
(As developers we’d be thinking …’it’s in the hands of IIS, not my issue’ :) )<br />
(I recently was presented with a solution that ran across 20 odd servers, the answer
to everything was get more hardware to make the app more performant, scalable etc
– couldnt be the code.)
</p>
        <p>
So as the requests start to build (don’t know an exact number but let’s say 100/sec),
what is happening to your code? how often do we sit down with profiling tools on our
code in this space? must be the disks..slow…and as always we have definitive proof <strong>works
on my machine</strong> says the developer!
</p>
        <p>
It’s not until we see our code running under load that we get an appreciation for
where things could be improved and are causing grief for not only IIS but other systems
as well.
</p>
        <p>
          <strong>Scalability, performance and scalability</strong> – single threaded app/service
vs multi-threaded. Multi-threaded tend to win all the time.
</p>
        <p>
Let me give you a couple of suggestions where this stuff is great:
</p>
        <ol>
          <li>
As part of a WF/WCF/Class where you want to ‘push’ some processing into the background
– critical things can be done upfront, and you can push some of the ‘other stuff’
into the background.<br /></li>
          <li>
Take advantage of some of the great multi-core/multi-cpu Servers out there – single
threaded tend to run on the same core on the same CPU (known as thread affinity)</li>
        </ol>
        <p>
Anyway enough jabbering from me and let’s see some of the hidden gems…
</p>
        <p>
          <strong>Async Programming Framework</strong>
        </p>
        <p>
Let me show you a couple of examples (from my set):
</p>
        <p>
1. <strong>Fetching a webpage</strong></p>
        <p>
          <a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb.png" width="808" height="247" />
          </a>
        </p>
        <p>
Here I go off to twitter and search for all the BizTalk items.
</p>
        <p>
Couple of things to notice 
<br />
- <strong>…Async</strong> is added to the end of routines for convention, indicating
that these are Async callable routines.<br />
- not a <strong>single IAsyncResult</strong> to be seen, no <strong>StateObject </strong>and
no <strong>Callback routines!</strong><br />
– line 104 the <strong>async</strong> keyword indicating that this routine itself
can be called async if desired (more for the compiler)<br />
- line 108 the <strong>await </strong>keyword is used in the Async framework to ‘wait
for the async task to complete’  then move onto the next line.<br />
- line 108 <strong>WebRequest.Create(…).GetResponseAsync</strong> – it’s the <strong>GetResponseAsync</strong> that
is the async method, no …Begin or ..OnEnd calls! Just write it as you read it.<br />
- line 109 We get a reference to the response stream (I should check for the existence
of data etc – demo code, demo code :))<br />
- line 112 <strong>…await stm.ReadAsync(…</strong>) – reads the response stream into
a buffer on a background thread and we wait there until this completes (await keyword).
By all means there’s many other ways to program this, as in we don’t need to wait,
we could run this guy in the background quite happy and then check on him periodically.<br /><br />
That’s it! Not too tough at all, multi-threaded goodness right there. You can have
blocking and non-blocking calls etc.
</p>
        <p>
          <strong>2. What about a Chunk of CPU based code</strong>
        </p>
        <p>
NO Async Example – as per normal, doing some cpu things.<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_1.png" width="604" height="262" /></a></p>
        <p>
Written in Async….<br /><br /><a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_2.png" width="608" height="349" /></a></p>
        <p>
        </p>
        <p>
        </p>
        <p>
Points to notice:<br />
- line 63 <strong>async Task&lt;int[]&gt;</strong> … to the Async framework the async
methods are wrapped within a <strong>Task</strong> class. We must ‘wrap’ anything
we return from our routines within a <strong>Task&lt;..&gt;</strong> – here I’m returning
an <strong>int[]<br /></strong>-line 66 <strong>… = TaskEx.Run(…something to run in a background thread…). </strong>As
we’re dealing with a block of code, there’s a <strong>Task Extension</strong> class
that allows us to run that bit of code Async.<br />
-line 79 <strong>await matrix</strong> – this line ensures that our async routine
has indeed completed (or errored) before we move onto the next line.
</p>
        <p>
Too easy if you’ve lived in the other world.
</p>
        <p>
As always remember this is CTP so I wouldn’t go rolling out into Prod just yet. The
perf numbers I get are pretty much identical to rolling all of this by hand with ThreadPool.QueueWorkItem(…)
and IAsyncResult etc.
</p>
        <p>
Well done MS!
</p>
        <p>
Enjoy and here’s my VS.NET Sample Solutions – I had great fun! Oh – this is also applicable
to Silverlight + WP7 apps :)<br /></p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:a0df05fc-9ae9-4249-bc41-83e6ce52876b" class="wlWriterEditableSmartContent">
          <p>
            <a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/AsyncExperiments.zip" target="_blank">Samples
(114KB)</a>
          </p>
        </div>
        <img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=eed3722c-aef6-42e1-9ea5-6049a367a8d5" />
      </body>
      <title>Easier Async Programming Coming to C#/VB soon…</title>
      <guid isPermaLink="false">http://blogs.breeze.net/mickb/PermaLink,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</guid>
      <link>http://blogs.breeze.net/mickb/2011/04/26/EasierAsyncProgrammingComingToCVBSoon.aspx</link>
      <pubDate>Tue, 26 Apr 2011 13:33:52 GMT</pubDate>
      <description>&lt;p&gt;
Hi folks, I thought I’d share something that captivated me on this rainy Easter day
and that was
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Visual Studio Asynchronous Programming - &lt;/strong&gt;&lt;a title="http://msdn.microsoft.com/en-au/vstudio/async" href="http://msdn.microsoft.com/en-au/vstudio/async"&gt;&lt;strong&gt;http://msdn.microsoft.com/en-au/vstudio/async&lt;/strong&gt;&lt;/a&gt;
&lt;br&gt;
(you’ll need VS2010 + SP1 before you grab the CTP)&lt;br&gt;
There’s a new improved compiler + an extended library for us.
&lt;/p&gt;
&lt;p&gt;
Hands up who’s done async programming in either VB.NET or C#??? It’s a pain! Thread
management, Main UI threads can only update certain objects, passing values between
main + background threads, determining whether a thread has completed its tasks… and
so on… 
&lt;/p&gt;
&lt;p&gt;
Basically all these ‘issues’ keep us from delving further into the world of asynchronous
programming cause it very rapidly becomes complex just managing the two worlds – sync
+ async.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Today I was pleasantly surprised!!!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
About a year ago I saw a great presentation on F# and I was amazed at how if they
wanted to run a bit of code async it was simple an extra character as in:
&lt;/p&gt;
&lt;p&gt;
set results = …..&amp;nbsp;&amp;nbsp; &amp;lt;-sync
&lt;/p&gt;
&lt;p&gt;
set results! = ….&amp;nbsp; &amp;lt;- run this async
&lt;/p&gt;
&lt;p&gt;
(don’t quote me on the above, but it’s something like that – let’s call it pseudo
code)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Why are we interested in this?&lt;/strong&gt; – that’s always the first question
to ask when investigating. Too many times we here ‘this is really cool’ and ‘check
this cool software out’ etc… but the real reason of WHY do we want to go down this
road is never answered. 
&lt;/p&gt;
&lt;p&gt;
On a ‘developers machine’ looking at 5 items, running a single test client – you’d
have to say “&lt;strong&gt;works on my machine” &lt;/strong&gt;and you’d have no need to async
anything. True. Let’s move beyond our beloved developer box and think about UAT/PROD
environments and what your code is doing.&lt;br&gt;
&lt;br&gt;
What happens if 4 concurrent requests come along – how is your code going to perform?
(As developers we’d be thinking …’it’s in the hands of IIS, not my issue’ :) )&lt;br&gt;
(I recently was presented with a solution that ran across 20 odd servers, the answer
to everything was get more hardware to make the app more performant, scalable etc
– couldnt be the code.)
&lt;/p&gt;
&lt;p&gt;
So as the requests start to build (don’t know an exact number but let’s say 100/sec),
what is happening to your code? how often do we sit down with profiling tools on our
code in this space? must be the disks..slow…and as always we have definitive proof &lt;strong&gt;works
on my machine&lt;/strong&gt; says the developer!
&lt;/p&gt;
&lt;p&gt;
It’s not until we see our code running under load that we get an appreciation for
where things could be improved and are causing grief for not only IIS but other systems
as well.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Scalability, performance and scalability&lt;/strong&gt; – single threaded app/service
vs multi-threaded. Multi-threaded tend to win all the time.
&lt;/p&gt;
&lt;p&gt;
Let me give you a couple of suggestions where this stuff is great:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
As part of a WF/WCF/Class where you want to ‘push’ some processing into the background
– critical things can be done upfront, and you can push some of the ‘other stuff’
into the background.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Take advantage of some of the great multi-core/multi-cpu Servers out there – single
threaded tend to run on the same core on the same CPU (known as thread affinity)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Anyway enough jabbering from me and let’s see some of the hidden gems…
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Async Programming Framework&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Let me show you a couple of examples (from my set):
&lt;/p&gt;
&lt;p&gt;
1. &lt;strong&gt;Fetching a webpage&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb.png" width="808" height="247"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here I go off to twitter and search for all the BizTalk items.
&lt;/p&gt;
&lt;p&gt;
Couple of things to notice 
&lt;br&gt;
- &lt;strong&gt;…Async&lt;/strong&gt; is added to the end of routines for convention, indicating
that these are Async callable routines.&lt;br&gt;
- not a &lt;strong&gt;single IAsyncResult&lt;/strong&gt; to be seen, no &lt;strong&gt;StateObject &lt;/strong&gt;and
no &lt;strong&gt;Callback routines!&lt;/strong&gt;
&lt;br&gt;
– line 104 the &lt;strong&gt;async&lt;/strong&gt; keyword indicating that this routine itself
can be called async if desired (more for the compiler)&lt;br&gt;
- line 108 the &lt;strong&gt;await &lt;/strong&gt;keyword is used in the Async framework to ‘wait
for the async task to complete’&amp;nbsp; then move onto the next line.&lt;br&gt;
- line 108 &lt;strong&gt;WebRequest.Create(…).GetResponseAsync&lt;/strong&gt; – it’s the &lt;strong&gt;GetResponseAsync&lt;/strong&gt; that
is the async method, no …Begin or ..OnEnd calls! Just write it as you read it.&lt;br&gt;
- line 109 We get a reference to the response stream (I should check for the existence
of data etc – demo code, demo code :))&lt;br&gt;
- line 112 &lt;strong&gt;…await stm.ReadAsync(…&lt;/strong&gt;) – reads the response stream into
a buffer on a background thread and we wait there until this completes (await keyword).
By all means there’s many other ways to program this, as in we don’t need to wait,
we could run this guy in the background quite happy and then check on him periodically.&lt;br&gt;
&lt;br&gt;
That’s it! Not too tough at all, multi-threaded goodness right there. You can have
blocking and non-blocking calls etc.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. What about a Chunk of CPU based code&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
NO Async Example – as per normal, doing some cpu things.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_1.png" width="604" height="262"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Written in Async….&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/image_thumb_2.png" width="608" height="349"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Points to notice:&lt;br&gt;
- line 63 &lt;strong&gt;async Task&amp;lt;int[]&amp;gt;&lt;/strong&gt; … to the Async framework the async
methods are wrapped within a &lt;strong&gt;Task&lt;/strong&gt; class. We must ‘wrap’ anything
we return from our routines within a &lt;strong&gt;Task&amp;lt;..&amp;gt;&lt;/strong&gt; – here I’m returning
an &lt;strong&gt;int[]&lt;br&gt;
&lt;/strong&gt;-line 66 &lt;strong&gt;… = TaskEx.Run(…something to run in a background thread…). &lt;/strong&gt;As
we’re dealing with a block of code, there’s a &lt;strong&gt;Task Extension&lt;/strong&gt; class
that allows us to run that bit of code Async.&lt;br&gt;
-line 79 &lt;strong&gt;await matrix&lt;/strong&gt; – this line ensures that our async routine
has indeed completed (or errored) before we move onto the next line.
&lt;/p&gt;
&lt;p&gt;
Too easy if you’ve lived in the other world.
&lt;/p&gt;
&lt;p&gt;
As always remember this is CTP so I wouldn’t go rolling out into Prod just yet. The
perf numbers I get are pretty much identical to rolling all of this by hand with ThreadPool.QueueWorkItem(…)
and IAsyncResult etc.
&lt;/p&gt;
&lt;p&gt;
Well done MS!
&lt;/p&gt;
&lt;p&gt;
Enjoy and here’s my VS.NET Sample Solutions – I had great fun! Oh – this is also applicable
to Silverlight + WP7 apps :)&lt;br&gt;
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:a0df05fc-9ae9-4249-bc41-83e6ce52876b" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;
&lt;a href="http://blogs.breezetraining.com.au/mickb/content/binary/WindowsLiveWriter/EasierAsyncProgrammingComingtoCVBsoon_149A8/AsyncExperiments.zip" target="_blank"&gt;Samples
(114KB)&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blogs.breeze.net/mickb/aggbug.ashx?id=eed3722c-aef6-42e1-9ea5-6049a367a8d5" /&gt;</description>
      <comments>http://blogs.breeze.net/mickb/CommentView,guid,eed3722c-aef6-42e1-9ea5-6049a367a8d5.aspx</comments>
      <category>.NET Developer</category>
      <category>Async</category>
      <category>Silverlight</category>
      <category>TechTalk</category>
      <category>Tips</category>
    </item>
  </channel>
</rss>