<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>AppFabric Team Blog</title><link>http://blogs.msdn.com/b/appfabric/</link><description>AppFabric Team Blog covering Windows Azure AppFabric, Windows Server AppFabric, WCF and WF, development, deployment, and management</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19431 (Build: 5.6.583.19431)</generator><item><title>We’re Moving To The Windows Azure Team Blog  </title><link>http://blogs.msdn.com/b/appfabric/archive/2011/12/12/we-re-moving-to-the-windows-azure-team-blog.aspx</link><pubDate>Mon, 12 Dec 2011 21:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246920</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10246920</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/12/12/we-re-moving-to-the-windows-azure-team-blog.aspx#comments</comments><description>&lt;p&gt;We are continually looking for ways to make it easier for you to stay on top of the latest product releases, resources, tools and news around &lt;a href="http://www.microsoft.com/windowsazure/" target="_blank"&gt;Windows Azure&lt;/a&gt;.&amp;nbsp; Today, we&amp;rsquo;re happy to announce another step in that direction with the consolidation of this team blog into the &lt;a href="http://blogs.msdn.com/b/windowsazure/" target="_blank"&gt;Windows Azure Team Blog&lt;/a&gt;. The Windows Azure team blog covers a wide variety of topics, from the latest news and announcements, to technical and &amp;ldquo;how-to&amp;rdquo; posts, as well as conversations with customers, partners and Windows Azure experts.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Starting today, the Windows Azure team blog is where you&amp;rsquo;ll be able to find the latest technical information about topics such as &lt;a href="http://www.microsoft.com/windowsazure/features/servicebus/" target="_blank"&gt;Service Bus&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsazure/features/accesscontrol/" target="_blank"&gt;Access Control&lt;/a&gt;, &lt;a href="http://www.microsoft.com/windowsazure/features/caching/" target="_blank"&gt;Caching&lt;/a&gt;, Windows Azure-related workflow, as well as development, deployment, and management.&amp;nbsp; (Generic workflow posts will continue to be posted to the &lt;a href="http://blogs.msdn.com/b/workflowteam/" target="_blank"&gt;Workflow team blog&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;We hope these changes will make your life a little easier by making this blog your single destination for all the latest news and information about Windows Azure.&amp;nbsp; Be sure to let us know what you think about these changes, as well as what kinds of information you&amp;rsquo;re like us to focus on by posting a comment to this post.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10246920" width="1" height="1"&gt;</description></item><item><title>WF Azure Activity Pack CTP 1</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/08/31/wf-azure-activity-pack-ctp-1.aspx</link><pubDate>Wed, 31 Aug 2011 14:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10203632</guid><dc:creator>Ron Jacobs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10203632</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/08/31/wf-azure-activity-pack-ctp-1.aspx#comments</comments><description>&lt;p&gt;We&amp;rsquo;re so excited to announce that the WF Activity Pack for Azure has just been released! Please refer to our &lt;a href="http://wf.codeplex.com/"&gt;CodePlex page&lt;/a&gt; for the download information. The package is also available via &lt;a href="http://nuget.org/List/Packages/WFAzureActivityPack"&gt;NuGet&lt;/a&gt;, you can type &amp;ldquo;Install-Package WFAzureActivityPack&amp;rdquo; in your package manager console to install the activity pack.&lt;/p&gt;
&lt;p&gt;The Azure Activity Pack is built on top of Windows Azure SDK (August Update, 2011). Please &lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;install&lt;/a&gt; the SDK on your development machine.&lt;/p&gt;
&lt;h3&gt;&lt;a name="_Toc301775745"&gt;&lt;/a&gt;Introduction&lt;/h3&gt;
&lt;p&gt;The Microsoft WF Azure Activity Pack CTP 1 is the first community technology preview (CTP) release of Azure activities implementation based on Windows Workflow Foundation in .NET Framework 4.0 (WF4) and Windows Azure SDK. The implementation contains a set of activities based on &lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;Windows Azure Storage Service&lt;/a&gt; and &lt;a href="http://www.microsoft.com/windowsazure/features/caching/"&gt;Windows Azure AppFabric Caching Service&lt;/a&gt;, which enables developers to easily access these Azure services within a workflow application.&lt;/p&gt;
&lt;p&gt;This Activity Pack includes the following activities:&lt;/p&gt;
&lt;p&gt;&lt;a name="_Toc301775746"&gt;&lt;/a&gt;&lt;b&gt;For Windows Azure Storage Service - Blob&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;PutBlob&lt;/b&gt; creates a new block blob, or replace an existing block blob.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetBlob&lt;/b&gt; downloads the binary content of a blob.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DeleteBlob&lt;/b&gt; deletes a blob if it exists.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CopyBlob&lt;/b&gt; copies a blob to a destination within the storage account.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ListBlobs&lt;/b&gt; enumerates the list of blobs under the specified container or a hierarchical blob folder.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name="_Toc301775747"&gt;&lt;/a&gt;&lt;b&gt;For Windows Azure Storage Service - Table&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;InsertEntity&amp;lt;T&amp;gt;&lt;/b&gt; inserts a new entity into the specified table.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;QueryEntities&amp;lt;T&amp;gt;&lt;/b&gt; queries entities in a table according to the specified query options.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UpdateEntity&amp;lt;T&amp;gt;&lt;/b&gt; updates an existing entity in a table.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DeleteEntity&amp;lt;T&amp;gt;&lt;/b&gt; deletes an existing entity in a table using the specified entity object.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DeleteEntity&lt;/b&gt; deletes an existing entity in a table using partition and row keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name="_Toc301775748"&gt;&lt;/a&gt;&lt;b&gt;For Windows Azure AppFabric Caching Service&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;AddCacheItem&lt;/b&gt; adds an object to the cache, or updates an existing object in the cache.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GetCacheItem&lt;/b&gt; gets an object from the cache as well as its expiration time.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RemoveCacheItem&lt;/b&gt; removes an object from the cache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sample&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve prepared a sample for this Activity Pack, which is a simple application for users to upload a file, and view all file entities available in the system. The sample solution is created from the template of Windows Azure Project. Please refer to our &lt;a href="http://wf.codeplex.com/"&gt;CodePlex page&lt;/a&gt; for the source code and document of the sample.&lt;/p&gt;
&lt;h3&gt;Screenshots&lt;/h3&gt;
&lt;p&gt;Here&amp;rsquo;s what they look like in Microsoft Visual Studio.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3302.clip_5F00_image002_5F00_3B3315CF.jpg"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1323.clip_5F00_image002_5F00_thumb_5F00_1AABD61D.jpg" width="244" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can configure the activity in the property grid.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2816.clip_5F00_image003_5F00_3A5AAFE5.png"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0172.clip_5F00_image003_5F00_thumb_5F00_132066B0.png" width="241" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;re 4 generic activities for Azure Table service, and you need to specify the table entity type when adding them to the designer canvas. The type you specified should inherit from &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableserviceentity.aspx"&gt;TableServiceEntity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7041.clip_5F00_image004_5F00_32CF4078.png"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5468.clip_5F00_image004_5F00_thumb_5F00_4E73CC6E.png" width="244" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Notice&lt;/h3&gt;
&lt;p&gt;Activities in this Activity Pack don&amp;rsquo;t have special logics for handling potential exceptions. All exception behaviors are consistent with the Managed Library API provided by the Azure Service. For example, if the GetBlob activity tries to get a blob that doesn&amp;rsquo;t exist, a StorageClientException will be thrown.&lt;/p&gt;
&lt;p&gt;So, please get prepared for the potential exceptions that may occur in the workflow. Today, the simplest approach is to wrap a &lt;i&gt;TryCatch&lt;/i&gt; activity outside of the Azure activity.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2728.clip_5F00_image005_5F00_794C3080.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image005" border="0" alt="clip_image005" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1830.clip_5F00_image005_5F00_thumb_5F00_4E079979.png" width="244" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For more information on the error handling in Windows Workflow Foundation, please refer to the &amp;ldquo;Transactions and Error Handling&amp;rdquo; section in the article &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/ee342461.aspx"&gt;A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;h3&gt;Feedback&lt;/h3&gt;
&lt;p&gt;You&amp;rsquo;re always welcome to send us your thoughts on WF Azure Activity Pack, and please let us know how we can do it better. You can leave feedback:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Here on the blog comments.&lt;/li&gt;
&lt;li&gt;Open an &lt;a href="http://wf.codeplex.com/workitem/list/basic"&gt;Issue&lt;/a&gt; at &lt;a href="http://wf.codeplex.com/"&gt;wf.CodePlex.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10203632" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF/">WF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF4/">WF4</category></item><item><title>How to create a Custom Activity Designer with Windows Workflow Foundation (WF4)</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/08/14/how-to-create-a-custom-activity-designer-with-windows-workflow-foundation-wf4.aspx</link><pubDate>Mon, 15 Aug 2011 01:15:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10195609</guid><dc:creator>Ron Jacobs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10195609</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/08/14/how-to-create-a-custom-activity-designer-with-windows-workflow-foundation-wf4.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://code.msdn.microsoft.com/Windows-Workflow-9e867448"&gt;Windows Workflow Foundation (WF4) - Custom Activity Designer sample&lt;/a&gt; demonstrates how you can build an activity and activity designer.&amp;#160; It includes three projects&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;MyActivityLibrary - The activity library project &lt;/li&gt;    &lt;li&gt;MyActivityLibrary.Design - The activity designer project &lt;/li&gt;    &lt;li&gt;TestDesigner - A rehosted designer project useful for testing the activity &lt;/li&gt; &lt;/ol&gt;  &lt;h1&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6521.testdesigner_5F00_4C939235.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="testdesigner" border="0" alt="testdesigner" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0763.testdesigner_5F00_thumb_5F00_4F78D11B.png" width="644" height="303" /&gt;&lt;/a&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;span&gt;Step 1: Create the Activity     &lt;br /&gt;&lt;/span&gt;&lt;/h1&gt;  &lt;p&gt;The first step is to build your activity.&amp;#160; Don't create a designer until you are satisifed with the interface to your activity in terms of arguments and properties.&amp;#160; This sample includes a native activity named MyActivity which simply returns a string with the activity values.&lt;/p&gt;  &lt;p&gt;The activity includes an InArgument and two properties including an enumerated value so you can see how to use these with your activity designer.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyActivity : NativeActivity&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; MyEnum Option { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; TestCode { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     [DefaultValue(&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt; Text { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Execute(NativeActivityContext context)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Result.Set(&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;             context,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;                 &lt;span style="color: #006080"&gt;&amp;quot;Text is {0}, TestCode is {1}, Option is {2}&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;                 context.GetValue(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Text),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.TestCode,&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Option));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 class="endscriptcode"&gt;Step 2: Add the Design Project&lt;/h1&gt;

&lt;p&gt;Visual Studio uses a naming convention to locate an associated designer project.&amp;#160; Since our assembly is named MyActivity.dll, Visual Studio will attempt to load MyActivity.Design.dll.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Select File / Add / New Project &lt;/li&gt;

  &lt;li&gt;Choose the Activity Designer Library project template &lt;/li&gt;

  &lt;li&gt;Name the project &lt;strong&gt;MyActivityLibrary.Design&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2248.SolutionProj_5F00_47ED61AE.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SolutionProj" border="0" alt="SolutionProj" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7103.SolutionProj_5F00_thumb_5F00_35A49AEC.png" width="244" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;Step 3: Add RegisterMetadata method&lt;/h1&gt;

&lt;p&gt;The activity designer class should include a method to register the metadata for that designer.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyActivityDesigner&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; MyActivityDesigner()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.InitializeComponent();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RegisterMetadata(AttributeTableBuilder builder)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         builder.AddCustomAttributes(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyActivity), &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DesignerAttribute(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyActivityDesigner)));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         builder.AddCustomAttributes(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyActivity), &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DescriptionAttribute(&lt;span style="color: #006080"&gt;&amp;quot;My sample activity&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1&gt;Step 4: Add Metadata Class&lt;/h1&gt;

&lt;p&gt;Add a class that implements &lt;strong&gt;System.Activities.Presentation.Metadata.IRegisterMetadata&lt;/strong&gt;. This class will be invoked at runtime to add attributes to the activity class. In the sample, I've added a static method called RegisterAll() which will register all of the activities contained in this library.&amp;#160; This method is called from the test designer.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyActivityLibraryMetadata : IRegisterMetadata&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Register()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         RegisterAll();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RegisterAll()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         var builder = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; AttributeTableBuilder();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         MyActivityDesigner.RegisterMetadata(builder);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color: #008000"&gt;// TODO: Other activities can be added here&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         MetadataStore.AddAttributeTable(builder.CreateTable());&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1&gt;Step 5: Add an activity image to your Design Project&lt;/h1&gt;

&lt;p&gt;Your designer should include a 16x16 ToolBox image.&amp;#160; The sample application includes the image &lt;strong&gt;QuestionMark.png&lt;/strong&gt; in the&amp;#160; activity library.&amp;#160; The &lt;strong&gt;Build Action&lt;/strong&gt; for this file should be set to &lt;strong&gt;Resource&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1731.buildactionresource_5F00_0E6A51B7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="buildactionresource" border="0" alt="buildactionresource" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2728.buildactionresource_5F00_thumb_5F00_353867F7.png" width="342" height="141" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;Step 6: Add the ToolboxBitmap&lt;/h1&gt;

&lt;p&gt;To support a Toolbox Bitmp you will need to add the activity image to your activity library project also and set the &lt;strong&gt;Build Action &lt;/strong&gt;to &lt;strong&gt;Embedded Resource.&amp;#160; &lt;/strong&gt;The sample application has included the file QuestionMark.png as a linked file from the design project.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8270.buildactionembedded_5F00_75024E7C.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="buildactionembedded" border="0" alt="buildactionembedded" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0268.buildactionembedded_5F00_thumb_5F00_06DEE24A.png" width="343" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next go back to your activity class and add the ToolboxBitmap attribute&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// TODO: Be sure the build action for your bitmap is set to Embedded Resource&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; [ToolboxBitmap(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyActivity), &lt;span style="color: #006080"&gt;&amp;quot;QuestionMark.png&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyActivity : NativeActivity&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h1 class="endscriptcode"&gt;Step 7: Create The Designer&lt;/h1&gt;

&lt;div class="endscriptcode"&gt;The XAML in the Activity Designer Library template is for a simple designer.&amp;#160; This sample includes a designer with support for Expand/Collapse and an activity image as well as a drop down list with enumerated values.&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;Here is the collapsed view where you would show only the most important values&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&amp;#160;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5554.collapsed_5F00_18BB7617.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="collapsed" border="0" alt="collapsed" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4786.collapsed_5F00_thumb_5F00_547B0ECA.png" width="361" height="83" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&amp;#160;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;And this is the expanded view where you can add more commonly access properties.&amp;#160; Remember the property grid allows access to other properties that are not included on the design surface.&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8508.expanded_5F00_386A4FDF.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="expanded" border="0" alt="expanded" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5050.expanded_5F00_thumb_5F00_0D25B8D8.png" width="442" height="141" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class="endscriptcode"&gt;&lt;/div&gt;

&lt;h1 class="endscriptcode"&gt;Step 8: Configure the Designer project for debugging&lt;/h1&gt;

&lt;p&gt;There are two options for debugging your designer project.&amp;#160; The recommended approach is to debug with a re-hosted designer application such as the one included with this application.&amp;#160; Set the project properties as shown for debugging support.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0753.tddebug_5F00_4CEF9F5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="tddebug" border="0" alt="tddebug" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7522.tddebug_5F00_thumb_5F00_77C8036F.png" width="507" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To test with Visual Studio it is best to use the Experimental Instance option.&amp;#160; Debugging with Visual Studio can take a long time so it is best to test by starting without debugging.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5140.vsdebug_5F00_657F3CAD.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="vsdebug" border="0" alt="vsdebug" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8015.vsdebug_5F00_thumb_5F00_25492333.png" width="508" height="251" /&gt;&lt;/a&gt;&lt;/p&gt;



























&lt;p&gt;And that’s it.&amp;#160; Now all you need to do is manage the WPF side of things.&amp;#160; Check the sample to see how it’s done.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;Ron Jacobs
  &lt;br /&gt;&lt;a href="http://www.ronjacobs.com"&gt;http://www.ronjacobs.com&lt;/a&gt;

  &lt;br /&gt;&lt;a href="http://www.twitter.com/ronljacobs"&gt;@ronljacobs&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10195609" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF/">WF</category></item><item><title>Announcing The End of The Free Promotional Period for Windows Azure AppFabric Caching</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/08/01/announcing-the-end-of-the-free-promotional-period-for-windows-azure-appfabric-caching.aspx</link><pubDate>Mon, 01 Aug 2011 21:18:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10191811</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10191811</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/08/01/announcing-the-end-of-the-free-promotional-period-for-windows-azure-appfabric-caching.aspx#comments</comments><description>&lt;p&gt;For the past few months, we have offered the Windows Azure AppFabric Caching service free of charge for the promotional period that ends July 31, 2011. For all billing periods beginning on August 1, 2011 onward, we will begin charging at the following standard monthly rates:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;$45.00 for a 128MB cache&lt;/li&gt;    &lt;li&gt;$55.00 for a 256MB cache&lt;/li&gt;    &lt;li&gt;$75.00 for a 512MB cache&lt;/li&gt;    &lt;li&gt;$110.00 for a 1GB cache&lt;/li&gt;    &lt;li&gt;$180.00 for a 2GB cache&lt;/li&gt;    &lt;li&gt;$325.00 for a 4GB cache&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are signed up for one of the Windows Azure Platform offers, it may include a 128MB cache option at no additional charge for a certain period of time, depending on the specific offer. You can find out whether your offer includes a 128MB cache at no additional charge by going to our page that lists our various &lt;a href="http://www.microsoft.com/windowsazure/offers/popup/popup.aspx?lang=en&amp;amp;locale=en-us&amp;amp;offer=COMPARE_PUBLIC"&gt;Windows Azure Platform offers&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you are using caching and do not desire to be billed, please be sure to stop using caching in excess of what is included with your offer immediately.&lt;/p&gt;  &lt;p&gt;If you have any questions about the Windows Azure platform or the Windows Azure AppFabric Caching service, please visit our &lt;a href="http://www.microsoft.com/windowsazure/support/"&gt;support page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thank you for your continued interest in the Windows Azure platform.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10191811" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Caching/">Caching</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Windows Workflow Foundation - WF Migration Kit CTP 2 Released</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/08/01/windows-workflow-foundation-wf-migration-kit-ctp-2-released.aspx</link><pubDate>Mon, 01 Aug 2011 14:16:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10191656</guid><dc:creator>Ron Jacobs</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10191656</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/08/01/windows-workflow-foundation-wf-migration-kit-ctp-2-released.aspx#comments</comments><description>&lt;h3&gt;Update&lt;/h3&gt;  &lt;p&gt;We’re happy to announce that CTP 2 version of WF Migration Kit has been released to CodePlex, please refer to our &lt;a href="http://wf.codeplex.com/"&gt;CodePlex page&lt;/a&gt; for more information.&amp;#160; The new &lt;a href="http://blogs.msdn.com/b/endpoint/archive/2011/04/20/wf4-state-machine-user-experience.aspx"&gt;State Machine&lt;/a&gt; activity for WF 4 is released with the &lt;a href="http://blogs.msdn.com/b/endpoint/archive/2011/04/18/microsoft-net-framework-4-platform-update-1.aspx"&gt;.NET Framework 4 Platform Update 1&lt;/a&gt; in April, 2011. In our CTP 2 release, we’ve added the support of State Machine migration.&lt;/p&gt;  &lt;p&gt;&lt;i&gt;If you already have CTP 1 installed, the CTP 2 installation will remove CTP 1 version on your machine.      &lt;br /&gt;&lt;/i&gt;&lt;/p&gt;  &lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;The WF Migration Kit helps users migrate WF3 (System.Workflow) artifacts to WF4 (System.Activities). The high level goal is to migrate workflow definitions and declarative conditions, but not code (such as workflow code-beside methods). Some WF3 workflows will be fully migratable to WF4, while others will be partially migratable and will require manual editing to complete the migration to WF4.&lt;/p&gt;  &lt;p&gt;The WF Migration Kit provides an API as well as a command line executable tool, which is a wrapper around the API. Migrators are included for some, but not all, of the WF3 out-of-box activities. The WF Migration Kit offers an extensibility point so that custom activity migrators can be developed by third parties.&lt;/p&gt;  &lt;p&gt;Activity migrators are provided for the following WF3 activities:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Delay &lt;/li&gt;    &lt;li&gt;Throw &lt;/li&gt;    &lt;li&gt;Terminate &lt;/li&gt;    &lt;li&gt;Send, Receive &lt;/li&gt;    &lt;li&gt;CallExternalMethod, HandleExternalEvent (requires ExternalDataExchangeMapping information) &lt;/li&gt;    &lt;li&gt;Sequence, SequentialWorkflow &lt;/li&gt;    &lt;li&gt;IfElse, IfElseBranch &lt;/li&gt;    &lt;li&gt;While &lt;/li&gt;    &lt;li&gt;Parallel &lt;/li&gt;    &lt;li&gt;Listen &lt;/li&gt;    &lt;li&gt;Replicator &lt;/li&gt;    &lt;li&gt;TransactionScope &lt;/li&gt;    &lt;li&gt;CancellationHandler, FaultHandlers, FaultHandler &lt;/li&gt;    &lt;li&gt;StateMachineWorkflow, State, StateInitialization, StateFinalization, SetState, EventDriven &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The WF Migration Kit CTP runs on top of the Visual Studio 2010 and .NET Framework 4, which can be found &lt;a href="http://msdn.microsoft.com/en-us/vstudio/"&gt;here&lt;/a&gt;. Please note that the Client Profile of the .NET Framework 4 is not sufficient since it does not contain the WF3 assemblies. State Machine migration requires .NET Framework 4 Platform Update 1, which can be found &lt;a href="http://go.microsoft.com/fwlink/?LinkID=209209"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The WF Migration Kit is also available via &lt;a href="http://nuget.org/List/Packages/WFMigrationKit"&gt;NuGet&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;State Machine Migration&lt;/h3&gt;  &lt;p&gt;Now let’s take a look at how WF Migration Kit can help us with State Machine migration. Please download &lt;b&gt;WF Migration Kit CTP 2 Samples.zip&lt;/b&gt; from our CodePlex page.&lt;/p&gt;  &lt;p&gt;The overall steps of State Machine migration includes:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Either download and install &lt;b&gt;WF Migration Kit CTP 2 Setup.msi&lt;/b&gt; from CodePlex, or download &lt;b&gt;WFMigrationKit&lt;/b&gt; package from NuGet. &lt;/li&gt;    &lt;li&gt;Execute migration on the legacy workflow project: &lt;b&gt;DelayStateMachine3&lt;/b&gt;. &lt;/li&gt;    &lt;li&gt;Port migrated activities to the new workflow project: &lt;b&gt;DelayStateMachine4&lt;/b&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;h5&gt;Installation&lt;/h5&gt;  &lt;p&gt;You can download and install &lt;b&gt;WF Migration Kit CTP 2 Setup.msi&lt;/b&gt; from CodePlex, or download &lt;b&gt;WFMigrationKit&lt;/b&gt; package from NuGet.&lt;/p&gt;  &lt;h5&gt;Download and install &lt;b&gt;WF Migration Kit CTP 2 Setup.msi&lt;/b&gt; from CodePlex.&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Visit WF Migration Kit homepage on CodePlex. &lt;/li&gt;    &lt;li&gt;Download &lt;b&gt;WF Migration Kit CTP 2 Setup.msi&lt;/b&gt; from the page. &lt;/li&gt;    &lt;li&gt;Install WF Migration Kit CTP 2. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4527.clip_5F00_image001_5F00_36473DF6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0638.clip_5F00_image001_5F00_thumb_5F00_75A4F186.png" width="244" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The WF Migration Kit is installed in the &lt;b&gt;%ProgramFiles%\Microsoft WF Migration Kit\CTP 2\&lt;/b&gt; folder or &lt;b&gt;%ProgramFiles(x86)%\Microsoft WF Migration Kit\CTP 2\&lt;/b&gt; for 64-bit operating system.&lt;/p&gt;  &lt;h5&gt;Download &lt;b&gt;WFMigrationKit&lt;/b&gt; package from NuGet.&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Download &lt;a href="http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c"&gt;NuGet Package Manager&lt;/a&gt;, and install. &lt;/li&gt;    &lt;li&gt;Open a project in Microsoft Visual Studio 2010 &lt;/li&gt;    &lt;li&gt;Right click on &lt;b&gt;References&lt;/b&gt; and choose &lt;b&gt;Manage NuGet Packages&lt;/b&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0714.clip_5F00_image002_5F00_474B6BD9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3463.clip_5F00_image002_5F00_thumb_5F00_0715525F.png" width="244" height="159" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the &lt;b&gt;Online&lt;/b&gt; tab search for &lt;b&gt;WFMigrationKit&lt;/b&gt;. Click on &lt;b&gt;Install&lt;/b&gt; button to download the package. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8737.clip_5F00_image004_5F00_26C42C27.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7167.clip_5F00_image004_5F00_thumb_5F00_746058A7.jpg" width="244" height="139" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Close the dialog, open a Command Prompt window and change to the package tools directory. e.g: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;cd WF Migration Kit CTP 2 Samples\StateMachineMigrationSamples\Begin\packages\WFMigrationKit.1.1.0.0\tools&lt;/p&gt;  &lt;h5&gt;Test migration on the legacy workflow project: &lt;b&gt;DelayStateMachine3&lt;/b&gt;.&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Compile the &lt;b&gt;DelayStateMachine3&lt;/b&gt; project, which produces an executable &lt;b&gt;DelayStateMachine3.exe&lt;/b&gt;. &lt;/li&gt;    &lt;li&gt;Copy &lt;b&gt;DelayStateMachine3.exe&lt;/b&gt; to the installation directory (or package tools directory for NuGet) which contains &lt;b&gt;WFMigrator.exe&lt;/b&gt; and &lt;b&gt;Microsoft.Workflow.Migration.dll&lt;/b&gt;. &lt;/li&gt;    &lt;li&gt;Execute the following command in the previously opened Command Prompt: &lt;/li&gt; &lt;/ul&gt;  &lt;pre&gt;WFMigrator DelayStateMachine3.exe&lt;/pre&gt;

&lt;p&gt;A &lt;b&gt;DelayWorkflow.xaml &lt;/b&gt;file has been generated in the current working directory. The migration completes with information indicating actions required to manually solve custom code activities not migrated during the execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2867.clip_5F00_image006_5F00_6CD4E93A.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2451.clip_5F00_image006_5F00_thumb_5F00_7A3AFC40.jpg" width="244" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;Port migrated activities to the new workflow project: &lt;b&gt;DelayStateMachine4&lt;/b&gt;.&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;Use Microsoft Visual Studio to add the &lt;b&gt;DelayWorkflow.xaml&lt;/b&gt; file generated earlier to &lt;b&gt;DelayStateMachine4&lt;/b&gt; project.&lt;/li&gt;

  &lt;li&gt;Open &lt;b&gt;DelayWorkflow.xaml&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8540.clip_5F00_image007_5F00_5300B30B.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1781.clip_5F00_image007_5F00_thumb_5F00_44C23A1B.png" width="206" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Adjust the design canvas as you need.&lt;/li&gt;

  &lt;li&gt;Inspect WriteLine activities which have been emitted in places of custom code activities, and develop corresponding WF 4 activities for a manual migration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5584.clip_5F00_image009_5F00_32797359.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4011.clip_5F00_image009_5F00_thumb_5F00_724359DE.png" width="244" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Verify workflow behaviors after migration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Feedback&lt;/h3&gt;

&lt;p&gt;You’re always welcome to send us your thoughts on WF Migration Kit, and please let us know how we can do it better. You can leave feedback&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Here on the blog comments&lt;/li&gt;

  &lt;li&gt;Open an &lt;a href="http://wf.codeplex.com/workitem/list/basic"&gt;Issue&lt;/a&gt; at &lt;a href="http://wf.CodePlex.com"&gt;wf.CodePlex.com&lt;/a&gt;&amp;#160;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10191656" width="1" height="1"&gt;</description></item><item><title>Now Available: The June CTP of Windows Azure AppFabric Service Bus REST API from Java, PHP</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/28/now-available-the-june-ctp-of-windows-azure-appfabric-service-bus-rest-api-from-java-php.aspx</link><pubDate>Thu, 28 Jul 2011 17:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10190791</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10190791</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/28/now-available-the-june-ctp-of-windows-azure-appfabric-service-bus-rest-api-from-java-php.aspx#comments</comments><description>&lt;p&gt;Good news for all PHP and Java developers: today we are publishing some Windows Azure AppFabric Service Bus samples just for you.&lt;/p&gt;
&lt;p&gt;Since the &lt;a href="http://msdn.microsoft.com/en-us/library/gg278338.aspx"&gt;AppFabric Service Bus REST API&lt;/a&gt; can be used from almost all programming languages and operating systems, it makes it very easy for applications written on any platform to interoperate with each another through Windows Azure. To illustrate the point, we took the chat application that is already available as part of the Silverlight samples and made sample clients in PHP and Java that can all work seamlessly together.&lt;/p&gt;
&lt;p&gt;You can &lt;a href="http://servicebus.codeplex.com/"&gt;download&lt;/a&gt; the new PHP and Java samples, as well as all others for all other supported environments, from CodePlex.&lt;/p&gt;
&lt;p&gt;The Java application is implemented as a stand-alone client application and these are the steps you need to follow to build it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit the src\config\appfabric.properties file and add your Service Namespace, Issuer Name and Issuer Secret Key (obtained &lt;a href="https://portal.appfabriclabs.com/Default.aspx"&gt;here&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Compile the source using Apache Ant: navigate to the application directory in a command prompt and run &amp;ldquo;ant&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Once the build is complete, cd to the new &amp;ldquo;dist&amp;rdquo; directory and run the jar file: &amp;ldquo;java &amp;ndash;jar AppFabricChat.jar&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To use the PHP app, you need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add your Service Namespace, Issuer Name and Issuer Secret Key to application\configs\appfabric.ini (obtained &lt;a href="https://portal.appfabriclabs.com/Default.aspx"&gt;here&lt;/a&gt;).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Then point your webserver at the &amp;ldquo;public&amp;rdquo; directory and browse to the site.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To set up a new site in IIS:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &amp;ldquo;Internet Information Services (IIS) Manager&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;View Sites&amp;rdquo;, then &amp;ldquo;Add Web Site&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Give the site a name such as AppFabricChat and point &amp;ldquo;Physical path&amp;rdquo; to the &amp;ldquo;public&amp;rdquo; directory of the PHP application.&lt;/li&gt;
&lt;li&gt;Pick port and hostname information, and click OK.&lt;/li&gt;
&lt;li&gt;Click the link under &amp;ldquo;Browse Web Site&amp;rdquo; to see the application.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;i&gt;Note: If PHP isn&amp;rsquo;t enabled on your web server, use &lt;/i&gt;&lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;&lt;i&gt;WebPI&lt;/i&gt;&lt;/a&gt;&lt;i&gt; to install it.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;We would really like to get your feedback on these Java and PHP samples, so please feel free to ask questions and provide feedback on this at the Windows Azure AppFabric CTP Forum.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Alessandro Catorcini&lt;br /&gt; Principal Group Program Manager&lt;br /&gt; &lt;a href="http://blogs.msdn.com/b/interoperability"&gt;Interoperability Strategy Team&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10190791" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Announcing the Windows Azure AppFabric July release</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/25/announcing-the-windows-azure-appfabric-july-release.aspx</link><pubDate>Mon, 25 Jul 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188985</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10188985</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/25/announcing-the-windows-azure-appfabric-july-release.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;Today we are excited to announce several updates and enhancements made to the Windows Azure AppFabric Management Portal and the Access Control service.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span size="2"&gt;Management Portal&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small; text-decoration: underline;"&gt;&lt;span size="2"&gt;Localization&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span size="2"&gt;As announced on the Windows Azure blog: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/07/18/windows-azure-platform-management-portal-updates-now-available.aspx" target="_blank"&gt;&lt;span size="2"&gt;Windows Azure Platform Management Portal Updates Now Available&lt;/span&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;span size="2"&gt;, the Windows Azure Platform Management Portal now supports localization in 11 languages. The newly supported languages are Japanese, German, Traditional Chinese, Simplified Chinese, French, Italian, Spanish, Korean, Russian, and Brazilian Portuguese.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;Users can choose their desired language from the language chooser in the top left pane of the Portal.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3771.clip_5F00_image001_5F00_337D92D5.png"&gt;&lt;span size="2"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5822.clip_5F00_image001_5F00_thumb_5F00_4802E253.png" width="177" height="150" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span size="2"&gt;You can read about additional enhancements in the blog post: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/07/18/windows-azure-platform-management-portal-updates-now-available.aspx" target="_blank"&gt;&lt;span size="2"&gt;Windows Azure Platform Management Portal Updates Now Available&lt;/span&gt;&lt;/a&gt;&lt;span size="2"&gt;.&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small; text-decoration: underline;"&gt;&lt;span size="2"&gt;Co-admin support&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span size="2"&gt;Customers can grant access to additional users (Co-Administrators) on the Windows Azure Management Portal as documented here: &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg456328.aspx" target="_blank"&gt;&lt;span size="2"&gt;How to Setup Multiple Administrator Accounts&lt;/span&gt;&lt;/a&gt;&lt;span size="2"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;These Co-administrators will now have access to the AppFabric section of the portal.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span size="2"&gt;For any questions or feedback regarding the Management Portal please visit the &lt;/span&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuremanagement/threads" target="_blank"&gt;&lt;span size="2"&gt;Managing Services on the Windows Azure Platform&lt;/span&gt;&lt;/a&gt;&lt;span size="2"&gt; forum.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span size="2"&gt;Access Control&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;The following updates have been made to all ACS 2.0 namespaces.&lt;/span&gt;&lt;/p&gt;
&lt;h5&gt;&lt;span style="font-size: small; text-decoration: underline;"&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;Rules now support up to two input claims&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;h5&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;The ACS 2.0 rules engine now supports a new type of rule that allows up to two input claims to be configured, instead of only one input claim. Rules with two input claims can be used to reduce the overall number of rules required to perform complex user authorization functions. For more information on rules with two input claims, see &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg185923.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/gg185923.aspx&lt;/a&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;&lt;/span&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;h5&gt;&lt;span style="font-size: small;"&gt;&lt;a name="_Changes"&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;Encoding is now UTF-8 for all OAuth 2.0 responses&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h5&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;In the initial release of ACS 2.0, the character encoding set for all HTTP responses from the OAuth 2.0 endpoint was US-ASCII. In the July 2011 release, the character encoding of HTTP responses is now set to UTF-8 to support extended character sets.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-size: small; text-decoration: underline;"&gt;&lt;span style="font-family: Segoe UI;" size="2" face="Segoe UI"&gt;Quotas Removed&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;The previous quotas on configuration data have been removed in this release. This includes removal of all limitations on the number of identity providers, relying party applications, rule groups, rules, service identities, claim types, delegation records, issuers, keys, and addresses that can be created in a given ACS namespace.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;Please use the following resources to learn more about this release:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;a href="http://blogs.msdn.com/b/vbertocci/archive/2011/07/25/new-in-acs-portal-in-multiple-languages-a-new-rule-type-and-wave-bye-bye-to-quotas.aspx"&gt;Vittorio Bertocci's blog post&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/gg429787.aspx" target="_blank"&gt;Release Notes&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=212360" target="_blank"&gt;MSDN Documentation&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="2"&gt;&lt;a href="http://acs.codeplex.com" target="_blank"&gt;CodePlex Site&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span size="2"&gt;For any questions or feedback regarding the Access Control service please visit the &lt;/span&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuresecurity/threads" target="_blank"&gt;Security for the Windows Azure Platform&lt;/a&gt;&lt;span size="2"&gt;&lt;/span&gt;&lt;span size="2"&gt; forum.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;If you have not signed up for Windows Azure AppFabric and would like to start using these new capabilities, be sure to take advantage of our free trial offer. Just click on the image below and get started today!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.microsoft.com/en-us/appfabric/azure/purchase.aspx"&gt;&lt;span size="2"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span size="2"&gt;&lt;a href="http://www.microsoft.com/en-us/appfabric/azure/purchase.aspx" target="_blank"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5415.clip_5F00_image002_5F00_20C8991E.png" width="148" height="78" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="2"&gt;The AppFabric Team&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188985" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Access+Control/">Access Control</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Tutorial: Creating a custom external service in Azure AppFabric June CTP</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/20/tutorial-creating-a-custom-external-service-in-azure-appfabric-june-ctp.aspx</link><pubDate>Wed, 20 Jul 2011 23:41:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188379</guid><dc:creator>Miguel Susffalich</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10188379</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/20/tutorial-creating-a-custom-external-service-in-azure-appfabric-june-ctp.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://geekswithblogs.net/asmith/archive/2011/07/18/146257.aspx"&gt;this&lt;/a&gt; tutorial, Alan Smith (MVP) uses the Azure AppFabric June CTP to create a basic custom external service to call the BingMaps Geocode service. This is a great starting point on how to write a basic custom external service fully integrated with the Azure AppFabric designer June CTP. Look for the webcast version coming soon on &lt;a href="http://channel9.msdn.com/Shows/AppFabric-tv"&gt;AppFabric.tv&lt;/a&gt; and follow up posts to add more capabilities to this custom external service, such as rich domain-specific monitoring metrics and tracing integration. &lt;/p&gt;  &lt;p&gt;Thanks to Alan for his active contribution to the AppFabric community!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188379" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Extensibility/">Extensibility</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Using MSBuild to deploy your AppFabric Application</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/20/using-msbuild-to-deploy-your-appfabric-application.aspx</link><pubDate>Wed, 20 Jul 2011 20:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188328</guid><dc:creator>Justin Beckwith</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10188328</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/20/using-msbuild-to-deploy-your-appfabric-application.aspx#comments</comments><description>&lt;p&gt;As the hosting of applications moves from our local staging environments to the cloud, one of the areas that needs to improve is the ability to include deployment in our automated build processes. Using the June CTP AppFabric bits, Visual Studio does an excellent job of enabling developers to design, build, and deploy AppFabric applications. However, the current tools do not provide a way to integrate these tools into a standard, repeatable build process. The goal of this post is to outline the steps necessary to integrate automated AppFabric deployment into your build process, and show off some of the REST API features we&amp;rsquo;ve built into the Application Manager.&lt;/p&gt;
&lt;p&gt;Before we get started, let&amp;rsquo;s run through a list of tools I&amp;rsquo;m using for this sample:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2010 with the .NET Framework 4.0&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=17691"&gt;The Windows Azure AppFabric SDK CTP &amp;ndash; June Update&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;AppFabric Samples&lt;/li&gt;
&lt;li&gt;AppFabric SDK&lt;/li&gt;
&lt;li&gt;AppFabric Tools for Visual Studio&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AzureAppManager/MSBuildTask" target="_blank"&gt;Sample code on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the goal of this post is to use MSBuild to deploy our AppFabric Application, you&amp;rsquo;re going to need to register for an account over at our labs site. To request access to the CTP follow these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sign in to the AppFabric Management Portal at &lt;a href="http://portal.appfabriclabs.com/"&gt;http://portal.appfabriclabs.com/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Choose the entry titled &amp;ldquo;Applications&amp;rdquo; under the &amp;ldquo;AppFabric&amp;rdquo; node on the left side of the screen.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;Request Namespace&amp;rdquo; button on the toolbar on the top of the screen.&lt;/li&gt;
&lt;li&gt;You will be asked to answer a few questions before you can request the namespace.&lt;/li&gt;
&lt;li&gt;Your request will be in a &amp;ldquo;pending&amp;rdquo; state until it gets approved and you can start using the CTP capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3&gt;Using the REST API&lt;/h3&gt;
&lt;p&gt;The AppFabric Application Manager provides a useful RESTful API to automate most tasks available in the Application Manager. We are going to take advantage of the application lifecycle methods (start, stop, deploy, etc) to write our custom task. To help you get started with the API, we&amp;rsquo;ve put together a &lt;b&gt;ResourceAccessor.cs&lt;/b&gt; class to abstract some of the calls we&amp;rsquo;re making using the AtomPub protocol. For example, to get the details for an application you would instantiate the class using your namespace and management key:&lt;/p&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 96%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 131px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// create a new instance of the Application Manager REST API wrapper&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;ResourceAccessor appManagerAPI = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ResourceAccessor(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Namespace, &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ManagementKey);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// get some details about our application&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;ApplicationResource ar = appManagerAPI.GetApplication(&lt;span style="color: #006080;"&gt;"myApplicationName"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This sample assumes you have an existing account on &lt;a href="http://portal.appfabriclabs.com/"&gt;http://portal.appfabriclabs.com&lt;/a&gt;, and that you have already created a namespace. To get the management key for your namespace, click on the &amp;lsquo;View&amp;rsquo; button located in the properties panel on the right side of the portal, then copy the key to your clipboard:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2158.image_5F00_43B6C017.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4705.image_5F00_thumb_5F00_35784727.png" border="0" height="350" width="507" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For our purposes, we&amp;rsquo;re mostly interested in automating the shutdown, un-deployment, import, deployment, then re-starting of the application. For example, to start the application we can issue a &lt;b&gt;SendCommand&lt;/b&gt; call:&lt;/p&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 101px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// attempt to start the application&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;Log.LogMessage(MessageImportance.Normal, &lt;span style="color: #006080;"&gt;"Starting the application ..."&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;appManagerAPI.SendCommand(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ApplicationName, LifecycleCommand.Start);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you&amp;rsquo;re interested in automating other application commands, the samples we&amp;rsquo;ve included should give you a head start.&lt;/p&gt;
&lt;h3&gt;Building the MSBuild Task&lt;/h3&gt;
&lt;p&gt;Now that we&amp;rsquo;re comfortable with the REST API, it&amp;rsquo;s time to start working on our custom MSBuild Task. This is relatively easy, and very well documented:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/t9883dzc.aspx"&gt;http://msdn.microsoft.com/en-us/library/t9883dzc.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We need to create a new .NET Class Library project for our custom task. For this sample, I chose to implement a class that inherits from &amp;lsquo;Task&amp;rsquo;, and overrides the &lt;b&gt;Execute&lt;/b&gt; method:&lt;/p&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 169px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; AppManagerDeploy : Task&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        ...&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To deploy our custom package, the &lt;b&gt;Execute&lt;/b&gt; method uses the REST API Wrapper to stop the running application, un-deploy the application, and then upload the new package:&lt;/p&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 98.05%; font-family: 'Courier New', courier, monospace; direction: ltr; height: 252px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// This is the main function that executes when creating a custom MSBuild Task. This &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// function is responsible for uploading the given *.afpkg file to the Application &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// Manager API.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// output debugging information to the MSBuild console&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    ...&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// create a new instance of the Application Manager API&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;ResourceAccessor appManagerAPI = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ResourceAccessor(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Namespace, &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ManagementKey);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// check to see if the requested application is in a valid state for the upload &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #008000;"&gt;// operation (stopped, undeployed)&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    ...&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;     &lt;span style="color: #008000;"&gt;// upload the given *.afpkg file to the Application Manager deployment service&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    appManagerAPI.UploadPackage(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ApplicationName, &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.PackagePath);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// attempt to deploy the application&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    Log.LogMessage(MessageImportance.Normal, &lt;span style="color: #006080;"&gt;"Deploying the application ..."&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    crResult = appManagerAPI.SendCommand(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ApplicationName, LifecycleCommand.Deploy);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// attempt to start the application&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    Log.LogMessage(MessageImportance.Normal, &lt;span style="color: #006080;"&gt;"Starting the application ..."&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    crResult = appManagerAPI.SendCommand(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ApplicationName, LifecycleCommand.Start);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    Log.LogMessage(MessageImportance.High, &lt;span style="color: #006080;"&gt;"Deployment Complete!"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For the full source, please visit our &lt;a href="https://github.com/AzureAppManager/MSBuildTask" target="_blank"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Attaching the MSBuild Task to the Azure AppFabric Application&lt;/h3&gt;
&lt;p&gt;After the custom MSBuild task is complete, we now attach the task to our current application *.csproj file. I chose to use the Stock Ticker Application available in the June CTP Samples, and the modified version of this solution is available with the source code for this post. To modify the *.csproj file, you need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open your AppFabric Application solution file (Ex. StockTickerApp.sln)&lt;/li&gt;
&lt;li&gt;Right click on the AppFabric Project containing App.cs, and unload the project&lt;/li&gt;
&lt;li&gt;Right click on the unloaded project and edit the *.csproj file&lt;/li&gt;
&lt;li&gt;Scroll to the bottom of the *.csproj file, and add this target just above the &amp;lt;/project&amp;gt; tag:&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;UsingTask&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TaskName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AppManagerDeploy"&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #ff0000;"&gt;AssemblyFile&lt;/span&gt;="&lt;span style="color: #ff0000;"&gt;C:&lt;/span&gt;\&amp;gt;&lt;span style="color: #ff0000;"&gt;Path&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;to&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Samples&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;\AFDeployTask\bin\Debug\Microsoft.Samples.AppFabric.MSBuildTask.dll" &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="DeployToAppFabric"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;AfterTargets&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Build"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Condition&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Deploying Project to AppFabric Portal"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Importance&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="high"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;        &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;AppManagerDeploy&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #ff0000;"&gt;Namespace&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="justbe"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #ff0000;"&gt;ManagementKey&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="jmjMPi0GvG97U/eISgswcdt/K3zlrr+MyPS8+DQhlqk="&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #ff0000;"&gt;ApplicationName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="stockticker"&lt;/span&gt;                &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #ff0000;"&gt;PackagePath&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(MSBuildProjectDirectory)\bin\release\publish\StockTickerApp.afpkg"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If you choose to implement this task as part of your build and deployment strategy, you could register the Microsoft.Samples.AppFabric.MSBuildTask.dll assembly in the GAC to avoid referencing the path to the *.dll each time. The &lt;b&gt;UsingTask&lt;/b&gt; command attaches the new assembly to the build, and ensures we can use the AppManagerDeploy task we just created. The AppManagerDeploy task accepts the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Namespace&lt;/b&gt; &amp;ndash; The application namespace generated in the Azure portal&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ManagementKey&lt;/b&gt; &amp;ndash; The namespace Management key accessible in the Azure portal&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ApplicationName&lt;/b&gt; &amp;ndash; the name of the application in the AppFabric Application Manager&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PackagePath&lt;/b&gt; &amp;ndash; the relative path to the *.afpkg file generated during the build&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This target is configured to only execute when using the &lt;b&gt;Release&lt;/b&gt; mode configuration. We now have two ways of executing our build with a deploy command: by building in Visual Studio using release mode, or by issuing an MSBuild command at the command prompt. Since the point of the exercise is to create an MSBuild task for automated builds, let&amp;rsquo;s step through executing our build at the Visual Studio command prompt. First navigate to the path where your application *.sln file is stored. Then execute the command to build your project:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0181.clip_5F00_image001_5F00_7137DFDA.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image001" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8103.clip_5F00_image001_5F00_thumb_5F00_6A18A362.png" border="0" height="212" width="523" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep in mind; this will likely take some time to execute. However, once the deployment is complete you should get a success message in the console:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4621.clip_5F00_image003_5F00_350C1432.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image003" alt="clip_image003" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8816.clip_5F00_image003_5F00_thumb_5F00_5BDA2A72.jpg" border="0" height="269" width="521" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After allowing the deployment task to execute, check out the Admin Log in the Application Manager to review all of the commands that were executed:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0005.clip_5F00_image005_5F00_69AC706D.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image005" alt="clip_image005" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4380.clip_5F00_image005_5F00_thumb_5F00_297656F3.jpg" border="0" height="504" width="538" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Other Examples&lt;/h4&gt;
&lt;p&gt;For other examples of using the Windows Azure AppFabric Application Manager REST API, be sure to check out our PowerShell sample in the June CTP. For other great resources on using Azure AppFabric, please visit our blog at &lt;a href="http://blogs.msdn.com/b/appfabric/"&gt;http://blogs.msdn.com/b/appfabric/&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188328" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/REST/">REST</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Configuring, deploying, and monitoring applications using AppFabric Application Manager</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/15/configuring-deploying-and-monitoring-applications-using-appfabric-application-manager.aspx</link><pubDate>Fri, 15 Jul 2011 21:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10187031</guid><dc:creator>adamab</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10187031</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/15/configuring-deploying-and-monitoring-applications-using-appfabric-application-manager.aspx#comments</comments><description>&lt;p&gt;In the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/07/15/developing-a-windows-azure-appfabric-application.aspx"&gt;previous blog post&lt;/a&gt; on developing AppFabric Applications, we showed you how to create a simple AppFabric application. This app was an ASP.NET web site that used a SQL Database. In this blog post, we’ll use the AppFabric Application Manager to configure, deploy, and monitor that application. Here is a breakdown of what we will cover:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;i&gt;The &lt;b&gt;AppFabric Player&lt;/b&gt; application has been imported (where the last blog post left off).&amp;#160; Package can be downloaded &lt;a href="https://skydrive.live.com/redir.aspx?cid=e29520586d3d0983&amp;amp;resid=E29520586D3D0983!103"&gt;here (AppFabricPlayer.afpkg).&lt;/a&gt;&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;Update the connection string to point to a SQL Azure database &lt;/li&gt;    &lt;li&gt;Initialize the SQL Azure Database with application data &lt;/li&gt;    &lt;li&gt;Deploy and start the application &lt;/li&gt;    &lt;li&gt;View aggregate ASP.NET monitoring metrics at both web app and web page granularities &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Before we can do those things, we’ll sign into the AppFabric LABS Portal at &lt;a href="https://portal.appfabriclabs.com"&gt;https://portal.appfabriclabs.com&lt;/a&gt; using our Live Id. Since this is a limited CTP, only approved users will have access to the service, but all users can try the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=17691"&gt;SDK and VS Tools&lt;/a&gt; on your local machines. To request access to the AppFabric June CTP, follow the instructions in &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/24/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp.aspx"&gt;this blog post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4722.clip_5F00_image002_5F00_199A71F6.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4807.clip_5F00_image002_5F00_thumb_5F00_38DD18C9.jpg" width="244" height="178" /&gt;&lt;/a&gt;&lt;/b&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1106.clip_5F00_image004_5F00_18C20C0C.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2766.clip_5F00_image004_5F00_thumb_5F00_26945207.jpg" width="244" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After signing in with an approved account, we click on &lt;b&gt;AppFabric Services &lt;/b&gt;in the bottom left corner and then select &lt;b&gt;Applications&lt;/b&gt; from the tree view.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2337.clip_5F00_image006_5F00_1F75158F.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3817.clip_5F00_image006_5F00_thumb_5F00_7F5A08D1.jpg" width="244" height="147" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1754.clip_5F00_image008_5F00_5F3EFC14.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8611.clip_5F00_image008_5F00_thumb_5F00_6D11420F.jpg" width="244" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we can start with our first task, &lt;b&gt;updating the connection string&lt;/b&gt; to the SQL database that is used by the AppFabric Player app. Users of the AppFabric June CTP are provided with a SQL Azure database at no charge. We will use this database. To get access to our SQL Azure connection string, we’ll click on the database in the main panel and then click &lt;b&gt;View&lt;/b&gt; under &lt;b&gt;Connection String&lt;/b&gt;. The resulting dialog lets us copy the connection string to the clipboard.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7633.clip_5F00_image0104_5F00_4CF63552.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010[4]" border="0" alt="clip_image010[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3252.clip_5F00_image0104_5F00_thumb_5F00_45D6F8DA.png" width="244" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we’re ready to go to the Application Manager. We select our namespace from the main content area and then click &lt;b&gt;Application Manager&lt;/b&gt; on the ribbon.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6888.clip_5F00_image0124_5F00_3EB7BC62.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012[4]" border="0" alt="clip_image012[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7450.clip_5F00_image0124_5F00_thumb_5F00_6585D2A2.png" width="244" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We can also reach the Application Manager directly by using a URL in this format: &lt;a href="https://yournamespacehere.appmanager.appfabriclabs.com"&gt;https://&lt;b&gt;yournamespacehere&lt;/b&gt;.appmanager.appfabriclabs.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We click on &lt;b&gt;AppFabricPlayer&lt;/b&gt; to manage that app.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2744.clip_5F00_image014_5F00_30794372.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0601.clip_5F00_image014_5F00_thumb_5F00_3E4B896D.jpg" width="244" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then we’ll click on &lt;b&gt;Referenced Services&lt;/b&gt; in the Summary area.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6557.clip_5F00_image016_5F00_1E307CB0.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7127.clip_5F00_image016_5F00_thumb_5F00_2C02C2AB.jpg" width="244" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then we’ll click on the &lt;b&gt;VideoDb&lt;/b&gt; link to configure the database. Now we will update the connection string using the value we copied earlier. Note that the &lt;b&gt;DatabaseName&lt;/b&gt; and the &lt;b&gt;ServerConnectionString&lt;/b&gt; fields are separate so you will have to remove the database name from the value before pasting it in.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Before&lt;/b&gt; Data Source=myservername;&lt;s&gt;Initial Catalog=mydatabase&lt;/s&gt;;User ID=myuserid;Password=mypassword&lt;/p&gt;  &lt;p&gt;&lt;b&gt;After&lt;/b&gt; Data Source=myservername;User ID=myuserid;Password=mypassword&lt;/p&gt;  &lt;p&gt;We update both fields and select &lt;b&gt;Save&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4426.clip_5F00_image018_5F00_76F6337A.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1373.clip_5F00_image018_5F00_thumb_5F00_04C87976.jpg" width="244" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next we will create and populate the SQL table that this app expects in the database. We’ll go to &lt;a href="https://manage-sn1.sql.azure.com/"&gt;https://manage-sn1.sql.azure.com/&lt;/a&gt; to do that. We login with the same credentials that appear in our connection string.&lt;/p&gt;  &lt;p&gt;We’ll click on New Query from the ribbon and paste in the SQL script below. We execute the script and the database is initialized.&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="1883"&gt; &lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;CREATE TABLE [dbo].[AppFabricVideos] ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Id] [int] IDENTITY(1,1) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Title] [nvarchar](256) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Description] [nvarchar](2048) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Uri] [nvarchar](1024) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONSTRAINT [PK_AppFabricVideos] PRIMARY KEY ([Id] ASC) &lt;br /&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;INSERT INTO [dbo].[AppFabricVideos] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ([Title] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,[Description] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,[Uri]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('ServiceBus HTTP / REST API' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'Recently the ServiceBus team released some great new support for Queues and Topics, allowing you to access queues via a client library as well as HTTP. In this episode, I am joined by Will Perry, a tester on the ServiceBus team, who shows us how you can use the HTTP API with ServiceBus queues.Ron&amp;hellip;' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '&lt;/span&gt;&lt;a href="http://media.ch9.ms/ch9/8f5a/e7dea0d6-f591-412b-8e75-9f0c012b8f5a/AppFabricServiceBusHTTP_low_ch9.mp4')"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;http://media.ch9.ms/ch9/8f5a/e7dea0d6-f591-412b-8e75-9f0c012b8f5a/AppFabricServiceBusHTTP_low_ch9.mp4')&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;INSERT INTO [dbo].[AppFabricVideos] &lt;br /&gt;([Title] &lt;br /&gt;,[Description] &lt;br /&gt;,[Uri]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('Announcing the Windows Azure AppFabric June CTP' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'Today we are exciting to announce the release of the Windows Azure AppFabric June CTP which includes capabilities that make it easy for developers to build, deploy, manage and monitor multi-tier applications across web, business logic and database tiers as a single logical entity on the Windows Azure Platform.' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '&lt;/span&gt;&lt;a href="http://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_low_ch9.mp4')"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;http://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_low_ch9.mp4')&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;Go&lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;   &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2843.clip_5F00_image0204_5F00_64AD6CB8.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image020[4]" border="0" alt="clip_image020[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0020.clip_5F00_image0204_5F00_thumb_5F00_2FA0DD88.jpg" width="244" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that the database is ready we can deploy and start our application. We go back to the Application Manager and navigate to the AppFabric Player’s &lt;b&gt;Application Page&lt;/b&gt;. From this page, we’ll click on &lt;b&gt;Deploy Application&lt;/b&gt; and then accept the dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1680.clip_5F00_image022_5F00_6B60763B.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image022" border="0" alt="clip_image022" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6888.clip_5F00_image022_5F00_thumb_5F00_4B45697E.jpg" width="244" height="193" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0525.clip_5F00_image0245_5F00_2B2A5CC1.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image024[5]" border="0" alt="clip_image024[5]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4810.clip_5F00_image0245_5F00_thumb_5F00_6AF44346.png" width="283" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once the application state changes to &lt;b&gt;Started&lt;/b&gt; we visit the site. To do this, we’ll click on &lt;b&gt;Endpoints &lt;/b&gt;in the Summary area and then select the app’s &lt;b&gt;Published Address&lt;/b&gt; link.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2766.clip_5F00_image026_5F00_35E7B416.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image026" border="0" alt="clip_image026" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2337.clip_5F00_image026_5F00_thumb_5F00_15CCA759.jpg" width="244" height="193" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0284.clip_5F00_image028_5F00_75B19A9B.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image028" border="0" alt="clip_image028" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7140.clip_5F00_image028_5F00_thumb_5F00_0383E097.jpg" width="244" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that the app is running we are able to monitor important activity. To simulate activity we wrote a load test that hits the web page once every second or so. If we go back to the application page and click on &lt;b&gt;Monitoring&lt;/b&gt; in the Summary area, we’ll see some interesting metrics.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6153.clip_5F00_image030_5F00_6368D3D9.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image030" border="0" alt="clip_image030" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7633.clip_5F00_image030_5F00_thumb_5F00_2E5C44A9.jpg" width="244" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These metrics are aggregated at the application level, but if we drill down into the ASP.NET Web Application we can see more granular metrics. We click on &lt;b&gt;Containers&lt;/b&gt; in the Summary area and then select &lt;b&gt;Web1&lt;/b&gt;, which represents our one and only service group. We then click on &lt;b&gt;PlayerWeb&lt;/b&gt;, which represents our ASP.NET Web Application. We then click on &lt;b&gt;Monitoring&lt;/b&gt; from the Summary area.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5700.clip_5F00_image0325_5F00_6A1BDD5C.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image032[5]" border="0" alt="clip_image032[5]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1108.clip_5F00_image0325_5F00_thumb_5F00_350F4E2C.jpg" width="244" height="200" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5383.clip_5F00_image0344_5F00_42E19427.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image034[4]" border="0" alt="clip_image034[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5315.clip_5F00_image0344_5F00_thumb_5F00_3BC257AF.jpg" width="244" height="203" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0601.clip_5F00_image0364_5F00_34A31B37.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image036[4]" border="0" alt="clip_image036[4]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5808.clip_5F00_image0364_5F00_thumb_5F00_2D83DEBF.jpg" width="244" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our breadcrumb bar now indicates that we have navigated into the PlayerWeb ASP.NET Web Application. From this view, we can see exactly how many times each file in the web application has been requested as well as the average request latency for each.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6560.clip_5F00_image038_5F00_0D68D202.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image038" border="0" alt="clip_image038" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7140.clip_5F00_image038_5F00_thumb_5F00_49286AB5.jpg" width="244" height="75" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5086.clip_5F00_image040_5F00_141BDB85.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image040" border="0" alt="clip_image040" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8228.clip_5F00_image040_5F00_thumb_5F00_7400CEC7.jpg" width="244" height="39" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And just like we saw at the application page, we can expand each row to display a chart to see how each value has changed over time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7853.clip_5F00_image042_5F00_68D7447D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image042" border="0" alt="clip_image042" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5700.clip_5F00_image042_5F00_thumb_5F00_48BC37C0.jpg" width="244" height="95" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That’s it. In this post we showed how to configure, deploy, and monitor and AppFabric application using Application Manager. In future posts, we’ll cover troubleshooting, extensibility, and more. Stay tuned.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10187031" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Developing a Windows Azure AppFabric Application</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/15/developing-a-windows-azure-appfabric-application.aspx</link><pubDate>Fri, 15 Jul 2011 21:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10187046</guid><dc:creator>Vikram Desai - Microsoft</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10187046</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/15/developing-a-windows-azure-appfabric-application.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;span style="font-size: small;" size="3"&gt;In this post, we will go through developing an AppFabric application that contains a web frontend and a database. Before we can develop an application, we&amp;rsquo;ll sign into the AppFabric LABS Portal at &lt;/span&gt;&lt;a href="https://portal.appfabriclabs.com"&gt;&lt;span style="font-size: small;" size="3"&gt;https://portal.appfabriclabs.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt; using our Live Id. Since this is a limited CTP, only approved users will have access to the service, but all users can try the &lt;/span&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=17691"&gt;&lt;span style="font-size: small;" size="3"&gt;SDK and VS Tools&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt; on their local machines. To request access to the AppFabric June CTP, follow the instructions in &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/24/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp.aspx"&gt;&lt;span style="font-size: small;" size="3"&gt;this blog post&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;. &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;After we have installed the SDK, we will launch Visual studio and create a new AppFabric Application&lt;/span&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2577.clip_5F00_image002_5F00_726951E7.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4214.clip_5F00_image002_5F00_thumb_5F00_642AD8F7.png" width="346" height="180" /&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt; &lt;br /&gt;The application definition view (App.cs) is the default view that is opened when a new project is created. This view allows us to add and compose between various services that constitute an application. We can add the various services that make up the application here. The application consists of a frontend web tier to play videos and accesses backend database to get the list of videos. To add the web project we will open the App.cs view and click on &lt;b&gt;&lt;i&gt;Add New Service -&amp;gt; ASP.NET&lt;/i&gt;&lt;/b&gt; and name it &lt;b&gt;PlayerWeb&lt;/b&gt;. We have also attached the completed solution for this app along with this post.&lt;/span&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6303.clip_5F00_image004_5F00_1FEA71AB.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6864.clip_5F00_image004_5F00_thumb_5F00_31C70578.png" width="360" height="181" /&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt; &lt;br /&gt;Similarly we will add a new service for database &lt;b&gt;&lt;i&gt;Add New Service -&amp;gt; SQL Azure&lt;/i&gt;&lt;/b&gt; with name: &lt;b&gt;VideoDb &lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;By default when the database is added it points to a local database in SQL Express. For developing the application locally we will create and use a database in SQL Express. When the application is deployed to the cloud the database will point to a SQL Azure database. A follow-up post covering Application Manager in detail will show how to change the database to point a SQL Azure database instead of a local database.&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="265"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4721.clip_5F00_image006_5F00_3F994B73.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3225.clip_5F00_image006_5F00_thumb_5F00_7190EBFD.png" width="264" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="373"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2642.clip_5F00_image008_5F00_23888C88.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image008" border="0" alt="clip_image008" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7455.clip_5F00_image008_5F00_thumb_5F00_3F2D187E.png" width="300" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;When we add the database, the default database name populated in properties panel is &amp;ldquo;&lt;b&gt;&lt;i&gt;Database&lt;/i&gt;&lt;/b&gt;&amp;rdquo;. This will need to be changed to the database used by the AppFabricPlayer application. For this app we will create a database called &lt;b&gt;AppFabricPlayer&lt;/b&gt; in SQL Express and add a table to store the videos to be played. The table in the database is created and populated using the following script&lt;/span&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="1883"&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;CREATE TABLE [dbo].[AppFabricVideos] ( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Id] [int] IDENTITY(1,1) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Title] [nvarchar](256) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Description] [nvarchar](2048) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Uri] [nvarchar](1024) NOT NULL, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONSTRAINT [PK_AppFabricVideos] PRIMARY KEY ([Id] ASC) &lt;br /&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;INSERT INTO [dbo].[AppFabricVideos] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ([Title] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,[Description] &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,[Uri]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('ServiceBus HTTP / REST API' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'Recently the ServiceBus team released some great new support for Queues and Topics, allowing you to access queues via a client library as well as HTTP. In this episode, I am joined by Will Perry, a tester on the ServiceBus team, who shows us how you can use the HTTP API with ServiceBus queues.Ron&amp;hellip;' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '&lt;/span&gt;&lt;a href="http://media.ch9.ms/ch9/8f5a/e7dea0d6-f591-412b-8e75-9f0c012b8f5a/AppFabricServiceBusHTTP_low_ch9.mp4')"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;http://media.ch9.ms/ch9/8f5a/e7dea0d6-f591-412b-8e75-9f0c012b8f5a/AppFabricServiceBusHTTP_low_ch9.mp4')&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;INSERT INTO [dbo].[AppFabricVideos] &lt;br /&gt;([Title] &lt;br /&gt;,[Description] &lt;br /&gt;,[Uri]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('Announcing the Windows Azure AppFabric June CTP' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'Today we are exciting to announce the release of the Windows Azure AppFabric June CTP which includes capabilities that make it easy for developers to build, deploy, manage and monitor multi-tier applications across web, business logic and database tiers as a single logical entity on the Windows Azure Platform.' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '&lt;/span&gt;&lt;a href="http://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_low_ch9.mp4')"&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;http://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_low_ch9.mp4')&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;Go&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;&lt;span style="font-size: small;" size="3"&gt;For the app to refer to the correct database we will change the Database Name property for VideoDb definition to the database we created in SQL Express - &lt;b&gt;AppFabricPlayer.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3644.clip_5F00_image010_5F00_7EF6FF03.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image010" border="0" alt="clip_image010" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/0005.clip_5F00_image010_5F00_thumb_5F00_57BCB5CE.png" width="305" height="134" /&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt; &lt;br /&gt;Now that we have added the ASP.NET and database services to the application we can compose from the web to the data tier. AppFabric Application allows us to specify relationships between various services within the app. The relationships allow us to define dependencies between the services within the application. The resulting composition model is used at management time to deploy, configure, control, monitor, troubleshoot and scale the application. &lt;br /&gt;To compose between the ASP.NET and the database, in the application definition (App.cs) view, we will add a service reference between PlayerWeb and VideoDB. We will go to the App.CS and click on &lt;b&gt;&lt;i&gt;App.CS -&amp;gt;PlayerWeb-&amp;gt;Add Service Reference&lt;/i&gt;&lt;/b&gt; followed by selecting &lt;b&gt;&lt;i&gt;VideoDb&lt;/i&gt;&lt;/b&gt; endpoint&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="291"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7851.clip_5F00_image012_5F00_6999499B.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image012" border="0" alt="clip_image012" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3250.clip_5F00_image012_5F00_thumb_5F00_776B8F96.png" width="276" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="406"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6886.clip_5F00_image014_5F00_425F0066.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image014" border="0" alt="clip_image014" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7457.clip_5F00_image014_5F00_thumb_5F00_7E1E9919.png" width="299" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;We will rename the reference name from Import1 to VideoDbImport&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="205"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4718.clip_5F00_image016_5F00_76FF5CA1.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image016" border="0" alt="clip_image016" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7455.clip_5F00_image016_5F00_thumb_5F00_21D7C0B4.png" width="279" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="532"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6787.clip_5F00_image018_5F00_2FAA06AF.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image018" border="0" alt="clip_image018" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2086.clip_5F00_image018_5F00_thumb_5F00_288ACA37.png" width="265" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="205"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1513.clip_5F00_image020_5F00_365D1032.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image020" border="0" alt="clip_image020" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1184.clip_5F00_image020_5F00_thumb_5F00_0F22C6FD.png" width="276" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="532"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2654.clip_5F00_image022_5F00_1CF50CF8.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image022" border="0" alt="clip_image022" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6886.clip_5F00_image022_5F00_thumb_5F00_7CDA003A.png" width="262" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;The application is now completed structurally. We can view the application diagram by right clicking on App.cs in Solution Explorer and selecting view Diagram&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="319"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5314.clip_5F00_image024_5F00_5CBEF37D.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image024" border="0" alt="clip_image024" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7041.clip_5F00_image024_5F00_thumb_5F00_3584AA48.png" width="240" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="418"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7455.clip_5F00_image026_5F00_00781B18.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image026" border="0" alt="clip_image026" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6787.clip_5F00_image026_5F00_thumb_5F00_754E90CD.png" width="102" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;Now we will add the logic for the application. We will create the model class called Video.cs in the web project and add the following code in the class.&lt;/span&gt;&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="1877"&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;using System; &lt;br /&gt;using System.Collections.Generic; &lt;br /&gt;using System.Linq; &lt;br /&gt;using System.Web; &lt;br /&gt;using System.Data.SqlClient;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;namespace PlayerWeb &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Video &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Title { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Description { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string VideoSourceURI { get; set; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int Id { get; set; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Video() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IEnumerable&amp;lt;Video&amp;gt; GetVideos() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Video&amp;gt; videos = new List&amp;lt;Video&amp;gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlConnection connection = ServiceReferences.CreateVideoDbImport()) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.Open(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlCommand command = connection.CreateCommand()) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command.CommandText = "select * from AppFabricVideos"; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlDataReader reader = command.ExecuteReader()) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (reader.Read()) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; videos.Add(new Video() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Id = (int)reader["Id"], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title = reader["Title"] as string, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description = reader["Description"] as string, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VideoSourceURI = reader["Uri"] as string &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (SqlException ex) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Trace.TraceError("Error getting videos from database: {0}", ex); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return videos; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;One thing that is different here is the code to get SqlConnection: &lt;br /&gt;SqlConnection connection = ServiceReferences.CreateVideoDbImport(); &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;Previously, when we added a service reference between ASP.NET and database, a helper method is created to access the referenced database. In our code this allows us to easily resolve the SqlConnection. Under the covers the helper method has code that reads the database name and connection string from application definition. Later when the application is configured in management portal we will see how this information can be changed by the application administrator. &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;To complete the application we will change the code in default.aspx, default.aspx.cs and sites.css (The full solution along with these files can be downloaded from &lt;a href="https://skydrive.live.com/redir.aspx?cid=e29520586d3d0983&amp;amp;resid=E29520586D3D0983!103"&gt;here&lt;/a&gt; (download AppFabricPlayer.zip)). &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;We will run the application in our local environment in Visual Studio using Debug-&amp;gt;Start Without Debugging (Ctrl-F5). The output window in Visual Studio shows when the application is ready to be tested in the local emulator. &lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="317"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6371.clip_5F00_image028_5F00_072B249B.png"&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;/span&gt;&lt;/a&gt;
&lt;p align="left"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5707.clip_5F00_image028_5F00_5FF0DB65.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image028" border="0" alt="clip_image028" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7444.clip_5F00_image028_5F00_thumb_5F00_66A3E4E8.png" width="284" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="1267"&gt;
&lt;p align="left"&gt;&lt;/p&gt;
&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3250.clip_5F00_image030_5F00_1EE25C01.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image030" border="0" alt="clip_image030" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8053.clip_5F00_image030_5F00_thumb_5F00_45443F4C.png" width="279" height="171" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;&lt;span style="font-size: small;" size="3"&gt;The published address shown above is the address of the web app. Also, we get a pointer to the location of the application log files. If the ASP.NET component within the application was emitting traces, the traces will be in a file in this location. Another note if we want to debug this application in the debugger we can attach the debugger to w3wp.exe process and step through the code. &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;Now that we have seen the application running locally we are ready to publish it for running in the cloud. To deploy to Azure through AppFabric Application Manager, we can start by publishing the application from within Visual Studio. This can be done by clicking on the AppFabricPlayer in Solution Explorer and selecting Publish. We will need to enter the credentials required to publish to AppFabric Application Manager namespace including the management key that allows us to access AppFabric Application Manager namespace. The management key required to publish an application can be obtained from &lt;/span&gt;&lt;a href="http://portal.appfabricabs.com"&gt;&lt;span style="font-size: small;" size="3"&gt;https://portal.appfabricabs.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;, by clicking on AppFabric Services and selecting Applications. From the properties on the right hand side properties grid, we can get the management key, as shown from the properties pane below.&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="319"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6874.clip_5F00_image032_5F00_32FB788A.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image032" border="0" alt="clip_image032" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1007.clip_5F00_image032_5F00_thumb_5F00_3DB8CFDF.png" width="269" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="319"&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5226.clip_5F00_image034_5F00_790C359D.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image034" border="0" alt="clip_image034" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5314.clip_5F00_image034_5F00_thumb_5F00_51D1EC68.png" width="240" height="258" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;Alternatively, the application package can be imported through the AppFabric Application Manager Portal. This can be done by navigating to, and logging in to &lt;/span&gt;&lt;a href="https://yournamespacehere.appmanager.appfabriclabs.com"&gt;&lt;span style="font-size: small;" size="3"&gt;https://yournamespacehere.appmanager.appfabriclabs.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;. Here, we can create a New Application (under common tasks) and select the package to import. &lt;br /&gt;&lt;/span&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2273.clip_5F00_image036_5F00_3869E92E.png"&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/2086.clip_5F00_image036_5F00_5818C2F6.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image036" border="0" alt="clip_image036" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4237.clip_5F00_image036_5F00_thumb_5F00_1BECF74E.png" width="478" height="81" /&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;We showed how to develop a simple AppFabric Application and publish it to Azure; in a follow-up blog post, we will show how we will manage this application using AppFabric Application Manager.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;The AppFabricPlayer solution can be downloaded from &lt;a href="https://skydrive.live.com/redir.aspx?cid=e29520586d3d0983&amp;amp;resid=E29520586D3D0983!103"&gt;here&lt;/a&gt; (AppFabricPlayer.zip)&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10187046" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Lead Hosts versus SQL Server for Windows Server AppFabric Caching</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/06/lead-hosts-versus-sql-server-for-windows-server-appfabric-caching.aspx</link><pubDate>Wed, 06 Jul 2011 23:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10183621</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10183621</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/06/lead-hosts-versus-sql-server-for-windows-server-appfabric-caching.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Note:&lt;/span&gt;&lt;/strong&gt; This is only relevant the on-premises version of the Caching service which is part of Windows Server AppFabric&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;The following would go over the concepts of lead host and offloading in both network share configuration (aka XML configuration) and SQL configuration for the AppFabric Caching technology. In addition, it will also explain when to use one configuration over the other.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;AppFabric Caching is built on top of a stateful partitioned cluster. It ensures that the cluster is consistent with minimal down time at all times. To maintain consistency the cluster needs a master which would create the cluster, maintain its uptime and ensure its validity. Hence the cluster would go offline along with its master.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Having a single master introduces a single point of failure, so we have a set of nodes called lead hosts acting as the master. Consequently, when a quorum of lead hosts goes down the cluster goes down. For instance, the quorum for a cluster of 5 cache hosts would be 3 lead hosts, quorum for 6 is 4 and so on. This is the network share configuration.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;For small clusters (having 2 cache hosts), lead hosts master configuration would not work well since that means one host going down would take the cluster down (if both of them are lead hosts). For those cases, there is another master configuration where we offload the master capabilities and responsibilities to an external custom store. SQL Server custom store is shipped by default. Here SQL Server becomes the master and hence the single point of failure. This is called &amp;lsquo;master offloading&amp;rsquo;/&amp;rsquo;lead hosts offloading&amp;rsquo;/ or just &amp;rsquo;offloading&amp;rsquo; and the corresponding configuration is SQL Server configuration.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Which configuration to use?&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Since lead host configuration avoids a single point of failure, we recommend this to be the default choice for customers with non-trivial deployments.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;If a customer has a deployment consisting of two cache hosts or wishes to avoid managing seed nodes then offloading can be used &lt;b&gt;provided he can ensure uptime of SQL for the entire cluster lifetime&lt;/b&gt;. &lt;b&gt;The uptime requirement on SQL was not emphasized in our previous guidance and this doc is meant to clarify the same.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Managing a SQL offloaded cluster&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Though offloading avoids managing lead hosts, it comes at a cost of maintaining a very high consistent uptime of SQL server to keep the cluster alive. Various techniques could be used like mirroring/failover for this purpose.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size: medium;" size="4"&gt;&lt;span style="color: #4f81bd;" color="#4f81bd"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Relevant links&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Database mirroring: High safety mode is required in this case. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ms188712.aspx"&gt;&lt;span style="font-family: calibri; color: #0000ff; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://technet.microsoft.com/en-us/library/ms188712.aspx&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/appfabriccat/archive/2010/11/01/disaster-recovery-for-appfabric-caching-v1-0-sql-mirroring.aspx"&gt;&lt;span style="font-family: calibri; color: #0000ff; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://blogs.msdn.com/b/appfabriccat/archive/2010/11/01/disaster-recovery-for-appfabric-caching-v1-0-sql-mirroring.aspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Failover clustering &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms189134.aspx"&gt;&lt;span style="font-family: calibri; color: #0000ff; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://msdn.microsoft.com/en-us/library/ms189134.aspx&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style="font-size: medium;" size="4"&gt;&lt;span style="color: #4f81bd;" color="#4f81bd"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;FAQs on Offloading &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;SQL Server going down would eventually bring the cluster down. But how soon would that be? Is there any SQL Server downtime cluster can survive?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;If the SQL Server downtime is strictly less than one minute, the cluster would be able to survive it. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Can the limit of 1 minute be increased? Or in other words, can the cluster be made to survive larger SQL Server downtimes?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;It is possible to do that, but we do not recommend that since it would mean the violation of the original requirement of an external master &amp;ndash; consistent uptime. In this case the network share configuration should be used.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;What happens during the time SQL Server is down?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Following are the effects during SQL Server downtime:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Management operations from administration tool would not be available.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;If a host goes down during SQL unavailability it might result in a cascading effect and thus the whole cluster can go offline. The reason is when a host goes down; its neighbors would not be able to heal the cluster properly as they would not be able to talk with neither the node which went down nor the master.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Managing a lead host based cluster&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;In this mode, the deployment has to select a set of lead hosts so that a quorum of them is always up.&amp;nbsp; This can be done as a one-time step &lt;b&gt;before&lt;/b&gt; you bring up the cluster.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size: medium;" size="4"&gt;&lt;span style="color: #4f81bd;" color="#4f81bd"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Considerations in choosing lead hosts&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;We recommend that you use at least 3 lead hosts. You may choose more but empirical observations have shown that you&amp;rsquo;d not require more than 7. Also have an odd number of them as having an even number (x) is not better than the previous odd number (x-1).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size: medium;" size="4"&gt;&lt;span style="color: #4f81bd;" color="#4f81bd"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;Steps to configure a lead host&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Open the PowerShell based administration tool. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Use the following command to export the cluster configuration: &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Export-CacheClusterConfig -File &amp;lt;filename.xml&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Open filename.xml and change the attribute &amp;lsquo;leadHost&amp;rsquo; (under &amp;lt;host&amp;gt; tag in &amp;lt;hosts&amp;gt;) to true to make a particular host as a lead host.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Repeat the above step until you have sufficient number of lead hosts.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Save the file.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Import the file using the following command (the cluster should be down at this point): &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Import-CacheClusterConfig -File &amp;lt;filename.xml&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;You can also refer to &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee790910.aspx"&gt;&lt;span style="font-family: calibri; color: #0000ff; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;http://msdn.microsoft.com/en-us/library/ee790910.aspx&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size: medium;" size="4"&gt;&lt;span style="color: #4f81bd;" color="#4f81bd"&gt;&lt;span style="font-family: cambria;" face="Cambria"&gt;FAQs on Onloading&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;How many lead hosts should I use?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;As stated above, you should at least have three lead hosts. &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Can I add a lead host dynamically when the cluster is running?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;This functionality is not available in RTM 1.0.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;What is the connection between lead hosts and network share?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Lead host configuration is the default and the network share is used to store cluster metadata. However when SQL configuration is used, in RTM 1.0, in addition to store cluster metadata, it is automatically picked as the single master.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;I already have an offloading configured cluster, what should I do now to go to a lead host based one?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;You need to bring down the cluster and reconfigure the administration tool and all the cache hosts to use network share configuration. You can do it via UI or configuration commands &amp;ndash; New-CacheCluster, Register-CacheHost. As pointed above you need to configure individual lead hosts also.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;[Update]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;Q.&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="font-size: x-small;" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="line-height: 115%; font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa; mso-fareast-language: en-us;"&gt;Is it possible to use lead host management with the cache configuration in a SQL database instead of a network share?&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;A.&lt;/span&gt;&lt;span style="font-size: x-small;" size="2"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="line-height: 115%; font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: arial; mso-bidi-theme-font: minor-bidi; mso-bidi-language: ar-sa; mso-fareast-language: en-us;"&gt;No, it is not possible to do this in v1.0.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;Q. What happens if the network share goes down?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;A. In the network share configuration, it acts as a passive entity (unlike SQL Server). Hence the network share going down would &lt;b&gt;not&lt;/b&gt; result in the cluster going down. However there are some limitations during its downtime:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;Administration tool operations won&amp;rsquo;t work.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;Named cache creation/deletion would not work.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;Node installation/uninstallation would not work.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;If an existing node reboots, it won&amp;rsquo;t be able to join the cluster.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;Q. Does the network share have to be writable by the cache hosts?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: x-small;" face="Calibri" size="2"&gt;A. No, cache hosts only read from the network share.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt; &lt;br /&gt;Amit Kumar Yadav&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;Kalyan Chakravarthy Sonnathi&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: calibri;" face="Calibri"&gt;AppFabric Caching Team&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10183621" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/On_2D00_premises/">On-premises</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Caching/">Caching</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Server+AppFabric/">Windows Server AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Nice post covering Windows Azure AppFabric Applications</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/07/06/nice-post-covering-windows-azure-appfabric-applications.aspx</link><pubDate>Wed, 06 Jul 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10183600</guid><dc:creator>Itai Raz - Microsoft</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10183600</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/07/06/nice-post-covering-windows-azure-appfabric-applications.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://convective.wordpress.com/author/nmackenzie2010/" target="_blank"&gt;Neil Mackenzie&lt;/a&gt;, a Windows Azure MVP, has written a great blog post regarding &lt;a href="http://convective.wordpress.com/2011/07/01/windows-azure-appfabric-applications/" target="_blank"&gt;Windows Azure AppFabric Applications&lt;/a&gt; which were introduced as part the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx" target="_blank"&gt;Windows Azure AppFabric June CTP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Neil summed up the concept very nicely in his post:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&amp;ldquo;&lt;/i&gt;&lt;i&gt;I am a great advocate of the PaaS model of cloud computing. I believe that AppFabric Applications represents the future of PaaS for use cases involving the composition of services that can benefit from the cost savings of running in a multi-tenanted environment. AppFabric Applications reduces the need to understand the service hosting environment allowing the focus to remain on the services. That is what PaaS is all about.&lt;/i&gt;&lt;i&gt;&amp;rdquo;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you would also like to start using the June CTP here is what you need to do:&lt;/p&gt;
&lt;p&gt;1. To request access to the Application Manager follow these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sign in to the AppFabric Management Portal at &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;http://portal.appfabriclabs.com/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Choose the entry titled &amp;ldquo;Applications&amp;rdquo; under the &amp;ldquo;AppFabric&amp;rdquo; node on the left side of the screen.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;Request Namespace&amp;rdquo; button on the toolbar on the top of the screen.&lt;/li&gt;
&lt;li&gt;You will be asked to answer a few questions before you can request the namespace.&lt;/li&gt;
&lt;li&gt;Your request will be in a &amp;ldquo;pending&amp;rdquo; state until it gets approved and you can start using the Application Manager capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2. In order to build applications you will need to install the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=184288" target="_blank"&gt;Windows Azure AppFabric CTP SDK and the Windows Azure AppFabric Tools for Visual Studio&lt;/a&gt;. Even if you don&amp;rsquo;t have access to the Application Manager you can still install the tools and SDK to build and run applications locally in your development environment.&lt;/p&gt;
&lt;p&gt;Please don&amp;rsquo;t forget to visit the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank"&gt;Windows Azure AppFabric CTP Forum&lt;/a&gt; to ask questions and provide us with your feedback.&lt;/p&gt;
&lt;p&gt;Itai Raz, Product Manager&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10183600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Client Side Tracing for Windows Azure AppFabric Caching</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/29/client-side-tracing-for-windows-azure-appfabric-caching.aspx</link><pubDate>Wed, 29 Jun 2011 17:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10181204</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10181204</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/29/client-side-tracing-for-windows-azure-appfabric-caching.aspx#comments</comments><description>&lt;p&gt;In this post, I will describe how to enable Client-side traces for AppFabric Caching Service. I will also touch upon some basic problems you might face while trying out the same.&lt;/p&gt;
&lt;p&gt;To configure the cache client to generate System.Diagnostic.Traces pertaining to the AppFabric cache, please follow the below steps:&lt;/p&gt;
&lt;h3&gt;Configuration File Option&lt;/h3&gt;
&lt;p&gt;In your app.config/web.config you need to add &amp;lt;tracing sinkType="DiagnosticSink" traceLevel="Verbose" /&amp;gt;, to the appropriate location as per the cases below:&lt;/p&gt;
&lt;h3&gt;a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataCacheClients Section&lt;/h3&gt;
&lt;p&gt;If you have a &amp;lsquo;dataCacheClients&amp;rsquo; section in your app.config/web.config file under &amp;lt;configuration&amp;gt; section, then add the tracing section as below:&lt;/p&gt;
&lt;p&gt;&amp;lt;configuration&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;configSections&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;/configSections&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;dataCacheClients&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--traceLevel can have the following values : Verbose, Info, Warning, Error or Off--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tracing sinkType="DiagnosticSink" traceLevel="Verbose" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dataCacheClient name="default"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hosts&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;host name="[YOUR CACHE ENDPOINT]" cachePort="22233" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hosts&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;securityProperties mode="Message"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;messageSecurity authorizationInfo="[YOUR TOKEN]"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/messageSecurity&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/securityProperties&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dataCacheClient&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;/dataCacheClients&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ...&lt;/p&gt;
&lt;p&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Note&lt;/span&gt;: Tracing section should be a direct child of the &amp;lt;dataCacheClients&amp;gt; section and should not be added under &amp;lt;dataCacheClient&amp;gt; section(s), if &amp;lt;dataCacheClients&amp;gt; section is present.&lt;/p&gt;
&lt;h3&gt;b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataCacheClient Section&lt;/h3&gt;
&lt;p&gt;If you do not have a &amp;lt;dataCacheClients&amp;gt; section, and the app.config/web.config has only a &amp;lt;dataCacheClient&amp;gt; section, then add the Tracing section as below:&lt;/p&gt;
&lt;p&gt;&amp;lt;configuration&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;configSections&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;/configSections&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;dataCacheClient&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!--traceLevel can have the following values : Verbose, Info, Warning, Error or Off--&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tracing sinkType="DiagnosticSink" traceLevel="Verbose" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;hosts&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;host name="[YOUR CACHE ENDPOINT]" cachePort="22233" /&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hosts&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;securityProperties mode="Message"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;messageSecurity authorizationInfo="[YOUR TOKEN]"&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/messageSecurity&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/securityProperties&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;lt;/dataCacheClient&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt;
&lt;p&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt;
&lt;h3&gt;Programmatic Option&lt;/h3&gt;
&lt;p&gt;You may also choose to set the System.Diagnostic.Trace for cache client programmatically, by calling the below method at any point:&lt;/p&gt;
&lt;p&gt;//Argument 1 specifies that a System.Diagnostic.Trace will be used, and&lt;/p&gt;
&lt;p&gt;//Argument 2 specifies the trace level filter.&lt;/p&gt;
&lt;p&gt;DataCacheClientLogManager.SetSink(DataCacheTraceSink.DiagnosticSink, System.Diagnostics.TraceLevel.Verbose);&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;You may also change the level at which the trace logs are filtered, programmatically by calling the below method at any stage (say, 5 minutes after your service has started and stabilized you may want to set the cache client trace level to Warning instead of Verbose):&lt;/p&gt;
&lt;p&gt;DataCacheClientLogManager.ChangeLogLevel(System.Diagnostics.TraceLevel.Warning);&lt;/p&gt;
&lt;h2&gt;Troubleshooting&lt;/h2&gt;
&lt;p&gt;If you are using Azure SDK 1.3 or above, and trying to get cache client side traces within a Web Role using the above mechanism on DevelopmentFabric environment, you will not be able to see the Cache client traces on the Development Fabric Emulator (or DevFabric UI)&lt;/p&gt;
&lt;h3&gt;&lt;span style="color: #17365d;" color="#17365d"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;-&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Reasoning/Explanation for the given behavior&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;With SDK 1.3, the IIS (Role Runtime) runs in a separate process as compared to web role (for ASP.Net session state provider scenario) and all the logs related to Web Role can be seen in the DevFabric UI, however, the cache client side traces go as part of IIS i.e. the Role Runtime. The DevFabric Emulator attaches its own listener &amp;ldquo;DevelopmentFabricTraceListener&amp;rdquo; by default and its UI emits logs only heard by this listener. Since IIS is in a different process, this listener is not present and logs cannot be seen on the DevFabric UI.&lt;/p&gt;
&lt;h3&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;-&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #17365d;" color="#17365d"&gt;Resolution&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Note&lt;/span&gt;: The resolution below is only to see logs for DevFabric scenario; otherwise the logs would go to xStore (Azure Storage Account) in a perfectly fine manner. For your project, add the below in web.config under &amp;lt;system.diagnostics&amp;gt;\&amp;lt;trace&amp;gt;\&amp;lt;listeners&amp;gt; section:&lt;/p&gt;
&lt;p&gt;&amp;lt;add type="Microsoft.ServiceHosting.Tools.DevelopmentFabric.Runtime.DevelopmentFabricTraceListener, Microsoft.ServiceHosting.Tools.DevelopmentFabric.Runtime, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="DevFabricListener"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;&amp;lt;/add&amp;gt;&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may add this only for your Web.Debug.config, so that when you actually deploy to an Azure environment, this section does not get added as you will use Web.Release.config file.&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You also need *not* add a reference to the DLL &amp;ldquo;Microsoft.ServiceHosting.Tools.DevelopmentFabric.Runtime.dll&amp;rdquo; as the machine on which you are deploying it on Development Fabric should have this DLL present in GAC (Search for this DLL under %windir%\assembly).&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deploy the sample on DevFabric, and you should now be able to see the Cache traces on the Development Fabric UI.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For any questions or feedback regarding the Caching service please visit the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/threads" target="_blank"&gt;&lt;span style="color: #0000ff;" color="#0000ff"&gt;Windows Azure Storage, CDN and Caching&lt;/span&gt;&lt;/a&gt; forum.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sharad Agrawal&lt;/p&gt;
&lt;p&gt;On behalf of the AppFabric Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10181204" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Caching/">Caching</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>See what our customers are already doing with the Windows Azure AppFabric June CTP</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/24/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp.aspx</link><pubDate>Fri, 24 Jun 2011 18:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10178781</guid><dc:creator>Itai Raz - Microsoft</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10178781</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/24/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx" target="_blank"&gt;Windows Azure June CTP has only been released a few days ago&lt;/a&gt;, and we already have great samples built by our customers that show how to use the CTP capabilities.&lt;/p&gt;
&lt;p&gt;Alan Smith has created two webcasts on &lt;a href="http://www.cloudcasts.net/Default.aspx" target="_blank"&gt;CloudCasts&lt;/a&gt; that show how easy it is to develop AppFabric applications using the June CTP capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cloudcasts.net/ViewWebcast.aspx?webcastid=2520935311769024826" target="_blank"&gt;Introduction to AppFabric Applications&lt;/a&gt; &amp;ndash; shows how to use various capabilities released in the June CTP.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.cloudcasts.net/ViewWebcast.aspx?webcastid=2520934331400138004" target="_blank"&gt;Using AppFabric Service Bus Queues&lt;/a&gt; &amp;ndash; shows how easy it is to build an application that uses the capabilities in the June CTP along with &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/15/announcing-the-windows-azure-appfabric-ctp-may-and-june-releases.aspx" target="_blank"&gt;Service Bus Queues&lt;/a&gt; in order to build an application that bridges between a web site running in the cloud, and an application running on-premises.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Watch these videos to learn more about these capabilities and how to use them. We hope you enjoy them as we did!&lt;/p&gt;
&lt;p&gt;If you would also like to start using the June CTP here is what you need to do:&lt;/p&gt;
&lt;p&gt;1. To request access to the Application Manager follow these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sign in to the AppFabric Management Portal at &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;http://portal.appfabriclabs.com/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Choose the entry titled &amp;ldquo;Applications&amp;rdquo; under the &amp;ldquo;AppFabric&amp;rdquo; node on the left side of the screen.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;Request Namespace&amp;rdquo; button on the toolbar on the top of the screen.&lt;/li&gt;
&lt;li&gt;You will be asked to answer a few questions before you can request the namespace.&lt;/li&gt;
&lt;li&gt;Your request will be in a &amp;ldquo;pending&amp;rdquo; state until it gets approved and you can start using the Application Manager capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2. In order to build applications you will need to install the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=184288" target="_blank"&gt;Windows Azure AppFabric CTP SDK and the Windows Azure AppFabric Tools for Visual Studio&lt;/a&gt;. Even if you don&amp;rsquo;t have access to the Application Manager you can still install the tools and SDK to build and run applications locally in your development environment.&lt;/p&gt;
&lt;p&gt;Please don&amp;rsquo;t forget to visit the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank"&gt;Windows Azure AppFabric CTP Forum&lt;/a&gt; to ask questions and provide us with your feedback.&lt;/p&gt;
&lt;p&gt;Itai Raz, Product Manager&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10178781" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Windows Azure AppFabric will be available on the Official Windows Azure Platform Team Blog</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/24/windows-azure-appfabric-will-be-available-on-the-official-windows-azure-platform-team-blog.aspx</link><pubDate>Fri, 24 Jun 2011 16:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10178442</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10178442</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/24/windows-azure-appfabric-will-be-available-on-the-official-windows-azure-platform-team-blog.aspx#comments</comments><description>&lt;p&gt;We are combining all Windows Azure platform related content into one place: the Windows Azure Platform Team Blog at &lt;a href="http://www.windowsazureblog.com/" target="_blank"&gt;www.WindowsAzureBlog.com&lt;/a&gt;. This will be the new destination for all product releases, resources, tools and news around the Windows Azure platform. You can bookmark this new blog location and sign up for the Windows Azure AppFabric RSS feed there.&lt;/p&gt;
&lt;p&gt;We will continue to post about Windows Azure AppFabric on this blog, as well as post about Windows Server AppFabric, WCF, WF, development, deployment, and management.&lt;/p&gt;
&lt;p&gt;Why are we adding the Windows Azure AppFabric content to the Windows Azure Platform Team Blog? The Windows Azure Platform Team Blog will be the one-stop-shop blog for all components of Windows Azure platform, including Windows Azure, SQL Azure, Windows Azure AppFabric and DataMarket. If you are interested in the Windows Azure platform you will no longer have to visit multiple blog locations to be on top of all the late-breaking news and information. The Windows Azure Platform Team Blog will continue to cover the wide range of topics we have addressed on this blog, from product announcements to technical &amp;ldquo;how-to&amp;rdquo; posts. You can continue to expect the same quality content you have been receiving, on this new integrated blog. If you&amp;rsquo;re primarily interested in posts about Windows Azure AppFabric, you can subscribe to a dedicated RSS feed in the new blog or continue following it on this blog. Alternatively, now you will also have the option to get all the Windows Azure platform information in one integrated RSS feed.&lt;/p&gt;
&lt;p&gt;To continue to provide a single view of the Windows Azure platform, expect to see a similar evolution across Facebook, Twitter, and YouTube over the coming weeks. We&amp;rsquo;ll be sure to notify you when that happens. In the meantime, we hope these changes will make your life a little easier by making the Windows Azure Platform Team Blog your destination for all the latest news and information about the Windows Azure platform.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10178442" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category></item><item><title>Windows Azure AppFabric – Service Bus Access Control Federation and Rule Migration</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/23/windows-azure-appfabric-service-bus-access-control-federation-and-rule-migration.aspx</link><pubDate>Thu, 23 Jun 2011 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10178262</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10178262</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/23/windows-azure-appfabric-service-bus-access-control-federation-and-rule-migration.aspx#comments</comments><description>&lt;p&gt;In the Windows Azure AppFabric May 2011 CTP, we released enhancements to Service Bus including the new message-oriented middleware features around Queues and Topics. More details regarding these features can be found here: &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/13/introducing-the-windows-azure-appfabric-service-bus-may-2011-ctp.aspx" target="_blank"&gt;Introducing the Windows Azure AppFabric Service Bus May 2011 CTP&lt;/a&gt;. These enhancements will go live with an update to the commercially available service in a few months.&lt;/p&gt;
&lt;p&gt;Currently we have two versions of the Access Control service in our production environment: the January 2010 version and the April 2011 version. More details regarding this can be found here: &lt;a href="http://blogs.msdn.com/b/windowsazureappfabric/archive/2011/04/07/2-windows-azure-appfabric-april-release-now-available-featuring-a-new-version-of-the-access-control-service.aspx" target="_blank"&gt;Windows Azure AppFabric April release now available featuring a new version of the Access Control service!.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Until the production Service Bus is updated it continues to use the January 2010 version of the Access Control service. But once Service Bus is updated it will also be able to use the new April 2011 version of the Access Control service. Once the Service Bus update goes live we strongly recommend to customers to update their Service Bus solutions to use the new version of the Access Control service for two reasons: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Service Bus will cease to use the older version of the Access Control service at some point in the future. In compliance with our lifecycle support policies for Windows Azure, we will provide you with 12 month notice before this event.&lt;/li&gt;
&lt;li&gt;The April 2011 version of Access Control has great benefits as noted in the blog post referenced in the above.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Following are explanations on the current state, what will change once Service Bus gets updated, and how you can prepare.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Current state in the production environment&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In the Windows Azure AppFabric Management Portal, the two versions of Access Control are labeled ACSV1 for the January 2010 release and ACSV2 for the April 2011 release.&lt;/p&gt;
&lt;p&gt;Today when you create a new Service Bus namespace, a matching ACSV1 namespace is automatically created with the namespace suffix &amp;ldquo;&amp;ndash;sb&amp;rdquo;. This ACSV1 namespace is used by Service Bus.&lt;/p&gt;
&lt;p&gt;The two versions of the Access Control service support the same protocol and authorization token format that is expected by Service Bus today (OAuth WRAP SWT), and are fully compatible for all runtime operations. However, ACSV2 supports a new, richer management service protocol based on OData. While the two services are runtime-compatible, they are not compatible for code performing automated setup of access control rules and service identities via the management service.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Following the Service Bus update&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For backwards-compatibility with existing applications, Service Bus namespaces that exist in the production environment at the time of the update will not be automatically switched over to ACSV2, and will continue to use ACSV1. You will need to migrate these namespaces from ACSV1 to ACSV2 on your own, coordinated with updates to your code that calls the management service.&lt;/p&gt;
&lt;p&gt;As we update the service in a few months, we will provide tooling and step-by-step guidance for how to perform the migration from ACSV1 to ACSV2.&lt;/p&gt;
&lt;p&gt;While we will provide detailed guidance as we release the update, the migration process will generally involve the following test-then-migrate sequence of steps: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, you will create a brand-new, temporary Service Bus namespace that will automatically come paired with an ACSV2 namespace. This namespace will be used for end to end testing of your application with ACSV2, including your updated code to call the management service.&lt;/li&gt;
&lt;li&gt;Using a to-be-provided command line tool, you will copy the state of your production ACSV1 namespace into the temporary ACSV2 namespace. Your production Service Bus namespace and corresponding ACSV1 namespace will remain untouched during this process. You can now test your application and updated code against the temporary Service Bus and ACSV2 namespace to ensure everything works as expected.&lt;/li&gt;
&lt;li&gt;After you have verified that your application works as expected, you will use the to-be-provided command line tool to change the DNS name of the temporary ACSV2 namespace to be the name of the ACSV1 namespace associated with your production Service Bus &amp;ndash; effectively swapping the V2 namespace into the place of the existing V1 namespace. This completes the migration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Running applications should not experience any service disruption resulting from this switch.&lt;/p&gt;
&lt;p&gt;The version differences and migration will mostly affect applications that automatically provision rules in ACSV1 using the management service. Since the management service differs between ACSV1 and ACSV2, the guidance will suggest a process that can be outlined as follows: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As you prepare for the switchover, you should have a mode in your application, or a procedure in your operations process, that allows you to temporarily suspend automated creation of rules. This may be a simple notice to operations staff or may require some work in your application.&lt;/li&gt;
&lt;li&gt;Immediately before you copy rules to the temporary namespace for the final time before making the DNS name change, you should engage this suspension mode so that no new rules are created in the ACSV1 namespace that end up being orphaned after the data migration.&lt;/li&gt;
&lt;li&gt;After you have switched to ACSV2, you can resume automated creation of rules by having your code target the new ACSV2 management service.&lt;/li&gt;
&lt;li&gt;We suggest that you have both, the ACSV1 and the ACSV2 client code existing in your application side-by-side and that you switch between the code paths using a simple check against an HTTP URL. If a simple GET request against the ACSV2 management endpoint https://&lt;i&gt;tenant&lt;/i&gt;.accesscontol.windows.net/v2/mgmt/service yields an HTTP status code 404, the application runs against ACSV1, otherwise it already runs against ACSV2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;How to prepare&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Our LABS environment at &lt;a href="http://portal.appfabriclabs.com" target="_blank"&gt;http://portal.appfabriclabs.com&lt;/a&gt; already includes the enhancements to Service Bus, as well as the new version of Access Control. Hence, you can use this environment, free of charge, to start planning your migration and test it.&lt;/p&gt;
&lt;p&gt;In the LABS environment already today, when customers create new Service Bus namespaces the system will generate a new Access Control namespace with the &amp;ldquo;-sb&amp;rdquo; suffix, but that namespace is created in ACSV2. This will be the production experience when we release the update to Service Bus in a few months.&lt;/p&gt;
&lt;p&gt;You can immediately start developing this new management code path creating rules against ACSV2 against the versions of Service Bus and Access Control that are available in the May 2011 CTP environment at &lt;a href="http://portal.appfabriclabs.com" target="_blank"&gt;http://portal.appfabriclabs.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As always, if you have any questions or feedback feel free to visit the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazureconnectivity/threads" target="_blank"&gt;Connectivity for the Windows Azure Platform&lt;/a&gt; forum.&lt;/p&gt;
&lt;p&gt;The AppFabric Team.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10178262" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Access+Control/">Access Control</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Announcing the Windows Azure AppFabric June CTP!</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx</link><pubDate>Tue, 21 Jun 2011 03:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10177015</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10177015</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx#comments</comments><description>&lt;p&gt;Today we are excited to announce the release of the Windows Azure AppFabric June CTP which includes capabilities &lt;b&gt;that make it easy for developers to build, deploy, manage and monitor multi-tier applications across web, business logic and database tiers as a single logical entity &lt;/b&gt;on the Windows Azure Platform&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This CTP release consists:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;AppFabric Developer Tools&lt;/b&gt; - Enhancements to Visual Studio that enable to visually design and build end-to-end applications on the Windows Azure platform.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AppFabric Application Manager&lt;/b&gt; &amp;ndash; Powerful, yet easy way to host and manage n-tier applications that span web, middle and data-tier through the entire application lifecycle including deployment, configuration, monitoring and troubleshooting. The Application Manager includes a comprehensive application management portal that is powered by a REST API for monitoring the health of your n-tier application and performing management operations on the running applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Composition Model&lt;/b&gt; - A set of .NET Framework extensions for composing applications on the Windows Azure platform. This builds on the familiar Azure Service Model concepts and adds new capabilities for describing and integrating the components of an application. The AppFabric Developer Tools leverage the composition model to create an application manifest that is used by the AppFabric Application Manager at deployment time to understand the application structure and metadata.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Support for running Custom Code, WCF, WF&lt;/b&gt; - Formal support for executing Windows Workflow Foundation (WF) on Windows Azure and the composition of Windows Communication Foundation (WCF) and WF services, as well as custom code, into a composite application. In addition, it provides enhanced development, deployment, management and monitoring support for WCF and WF services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read more details in this blog post: &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/20/introducing-windows-azure-appfabric-applications.aspx" target="_blank"&gt;Introducing Windows Azure AppFabric Applications&lt;/a&gt; and the &lt;a href="http://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP" target="_blank"&gt;Channel 9 announcement video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The release is already live in our LABS/Previews environment at: &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;http://portal.appfabriclabs.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There is&lt;b&gt; limited space available to try out the AppFabric Application Manager CTP&lt;/b&gt; so be sure to sign-up as early as possible for a better chance to get access to the CTP.&lt;/p&gt;
&lt;p&gt;To request access to the CTP follow these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sign in to the AppFabric Management Portal at &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;http://portal.appfabriclabs.com/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Choose the entry titled &amp;ldquo;Applications&amp;rdquo; under the &amp;ldquo;AppFabric&amp;rdquo; node on the left side of the screen.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;Request Namespace&amp;rdquo; button on the toolbar on the top of the screen.&lt;/li&gt;
&lt;li&gt;You will be asked to answer a few questions before you can request the namespace.&lt;/li&gt;
&lt;li&gt;Your request will be in a &amp;ldquo;pending&amp;rdquo; state until it gets approved and you can start using the CTP capabilities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to build applications for the CTP you will need to install the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=184288" target="_blank"&gt;Windows Azure AppFabric CTP SDK and the Windows Azure AppFabric Tools for Visual Studio&lt;/a&gt;. Even if you don&amp;rsquo;t have access to the AppFabric Application Manager CTP you can still install the tools and SDK to build and run applications locally in your development environment.&lt;/p&gt;
&lt;p&gt;This CTP is intended for you to check out and provide us with feedback, so please remember to visit the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank"&gt;Windows Azure AppFabric CTP Forum&lt;/a&gt; to ask questions and provide us with your feedback.&lt;/p&gt;
&lt;p&gt;To learn more please use the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/showcase/en/us/details/c7bd65e3-f1d2-4e39-9321-291173548e86" target="_blank"&gt;Composing and Managing Applications with Windows Azure AppFabric&lt;/a&gt; video which is part of the &lt;a href="http://appfabricdemos.codeplex.com/" target="_blank"&gt;Windows Azure AppFabric Learning Series&lt;/a&gt; available on CodePlex.&lt;/li&gt;
&lt;li&gt;Watch the relevant TechEd sessions:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS311" target="_blank"&gt;Introduction to Windows Azure AppFabric Composite Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS318" target="_blank"&gt;A Lap around Windows Azure AppFabric&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/MID313" target="_blank"&gt;Workflow in Windows Azure AppFabric&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh182177.aspx" target="_blank"&gt;MDSN Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Visit the &lt;a href="http://windowsazure.com/appfabric" target="_blank"&gt;Windows Azure AppFabric website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Visit the &lt;a href="http://appfabric.net" target="_blank"&gt;Windows Azure AppFabric Developer page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read the &lt;a href="http://go.microsoft.com/?linkid=9773006" target="_blank"&gt;Windows Azure AppFabric Overview Whitepaper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP"&gt;&amp;nbsp;AppFabric.tv - Announcing the Windows Azure AppFabric June CTP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;object data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADqNAAAxB0AAAAAAAAAAAAAAAAAAAAAAABoAAAAaAB0AHQAcAA6AC8ALwBjAGgAYQBuAG4AZQBsADkALgBtAHMAZABuAC4AYwBvAG0ALwBzAGMAcgBpAHAAdABzAC8AQwBoAGEAbgBuAGUAbAA5AC4AeABhAHAAPwB2AD0AMQAuADUAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAIAAG0AZQBkAGkAYQB1AHIAbAA9AGgAdAB0AHAAOgAvAC8AcwBtAG8AbwB0AGgALgBjAGgAOQAuAG0AcwAvAGMAaAA5AC8AOQBhADQAYgAvADQAMwA3ADkANAA1ADgAMQAtADMAZABiAGEALQA0ADEAMABhAC0AYgBiADAAYwAtADkAZgAwADMAMAAxADcAYgA5AGEANABiAC8AQQBwAHAARgBhAGIAcgBpAGMAVABWAEMAVABQAEwAYQB1AG4AYwBoAC4AaQBzAG0ALwBtAGEAbgBpAGYAZQBzAHQALAB0AGgAdQBtAGIAbgBhAGkAbAA9AGgAdAB0AHAAOgAvAC8AbQBlAGQAaQBhAC4AYwBoADkALgBtAHMALwBjAGgAOQAvADkAYQA0AGIALwA0ADMANwA5ADQANQA4ADEALQAzAGQAYgBhAC0ANAAxADAAYQAtAGIAYgAwAGMALQA5AGYAMAAzADAAMQA3AGIAOQBhADQAYgAvAEEAcABwAEYAYQBiAHIAaQBjAFQAVgBDAFQAUABMAGEAdQBuAGMAaABfADUAMQAyAF8AYwBoADkALgBqAHAAZwAsAGQAZQBsAGkAdgBlAHIAeQBtAGUAdABoAG8AZAA9AGEAZABhAHAAdABpAHYAZQBzAHQAcgBlAGEAbQBpAG4AZwAsAGEAdQB0AG8AcABsAGEAeQA9AGYAYQBsAHMAZQAsAGUAbgB0AHIAeQBpAGQAPQA0ADMANwA5ADQANQA4ADEAMwBkAGIAYQA0ADEAMABhAGIAYgAwAGMAOQBmADAAMwAwADEANwBiADkAYQA0AGIAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAGAAAADQALgAwAC4ANQAwADQAMAAxAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAA=" width="512" type="application/x-silverlight-2" height="288"&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0" /&gt;&lt;param name="source" value="http://channel9.msdn.com/scripts/Channel9.xap?v=1.5" /&gt;&lt;param name="initParams" value="mediaurl=http://smooth.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch.ism/manifest,thumbnail=http://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_512_ch9.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=437945813dba410abb0c9f03017b9a4b" /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget that we already have several Windows Azure AppFabric services (Service Bus, Access Control, Caching) in production that are supported by a full SLA. If you have not signed up for Windows Azure AppFabric yet be sure to take advantage of our free trial offer. Just click on the image below and get started today!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/windowsazure/free-trial/" target="_blank"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/4034.clip_5F00_image001_5F00_5B0E0C9E.png" width="184" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The AppFabric Team.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10177015" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF/">WF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category></item><item><title>Introducing Windows Azure AppFabric Applications</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/20/introducing-windows-azure-appfabric-applications.aspx</link><pubDate>Tue, 21 Jun 2011 03:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10177065</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10177065</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/20/introducing-windows-azure-appfabric-applications.aspx#comments</comments><description>&lt;p&gt;Posted by Karandeep Anand&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Last October, at the PDC 2010 keynote, we shared our &lt;a href="http://channel9.msdn.com/Events/PDC/PDC10/CS04" target="_blank"&gt;vision&lt;/a&gt; of building, running, and managing applications reliably and at scale in Windows Azure. Since then, the team has been heads-down to make the vision a reality, and last month at TechEd 2011, we &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS311" target="_blank"&gt;announced&lt;/a&gt; that we&amp;rsquo;ll soon be releasing a rich set of new capabilities to build AppFabric Applications using AppFabric Developer Tools, run them in the AppFabric Container service, and manage them using the AppFabric Application Manager. Today, we are very pleased to announce that the day has come when we can publicly share the first Community Technology Preview (CTP) of these capabilities in Windows Azure! As announced &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx" target="_blank"&gt;here&lt;/a&gt;, the June CTP of AppFabric is now live, and you can start by downloading the new &lt;a href="http://go.microsoft.com/fwlink/?LinkID=184288" target="_blank"&gt;SDK and Developer Tools&lt;/a&gt; and by signing up for a &lt;b&gt;free&lt;/b&gt; account at the &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;AppFabric Labs portal&lt;/a&gt;. Now we&amp;rsquo;ll go into more detail about what we&amp;rsquo;ve released today and how you can get started building and managing AppFabric Applications.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;" size="2"&gt;&lt;strong&gt;AppFabric Applications&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start by defining what we mean when we say AppFabric Applications. In a nutshell, it is any n-tier .NET application that spans the web, middle, and data tiers, composes with external services, and is inherently written to the cloud architecture for scale and availability. In CTP1, we are focusing on a great out-of-box experience for ASP.NET, WCF, and Windows Workflow (WF) applications that consume other Windows Azure services like SQL Azure, AppFabric Caching, AppFabric Service Bus and Azure Storage. The goal is to enable both application developers and ISVs to be able to leverage these technologies to build and manage scalable and highly available applications in the cloud. In addition, the goal is to help both developers and IT Pros, via the AppFabric Developer Tools and AppFabric Application Manager, respectively, to be able to manage the entire lifecycle of an application from coding and testing to deploying and managing.&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s take a deeper look at the 3 key pieces of the puzzle and how they all fit together to help you through the lifecycle of AppFabric Applications:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Developer Tools&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AppFabric Container&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application Manager&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;" size="2"&gt;&lt;strong&gt;Developer Tools&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;AppFabric Developer Tools provide the rich Visual Studio experience at design-time to build and debug AppFabric Applications. The key goal of the Developer Tools is to enable .NET developers to leverage their existing skills and knowledge with the .NET framework and Visual Studio and &lt;i&gt;extend&lt;/i&gt; it to build cloud-ready applications in an easy yet rich way for Windows Azure. The Developer Tools are an extension to the existing way of building .NET applications. And the additional tooling allows developers to not only author business and presentation logic that run in the web and middle-tier, but also to easily enrich and extend their apps by &lt;i&gt;composing&lt;/i&gt; with other services through a rich service composition experience.&lt;/p&gt;
&lt;p&gt;The first goal with Developer Tools is to enable developers to build cloud-ready&amp;mdash;i.e. scalable and available&amp;mdash;applications by building on concepts they already know. The AppFabric Container service does the heavy lifting of elastically scaling and making an application available and reliable. In Developer Tools, we distilled the set of design principles and configuration knobs that a developer would need to make their application code leverage these capabilities, and we provided these via simple configuration settings on out-of-box components like WCF services and Workflows. In addition, we also provide a powerful programming model to do state management for scalable and resilient stateful services, but more on that topic later. The developer gets to specify intent on the number of scale instances, number of replicas, the partitioning policies etcetera, depending upon how much control they want; or they could go with the default settings and let the runtime manage most of it. In all cases, basic cloud design principles, like address virtualization and automatic address resolution when deployed in Azure, get taken care of automatically, without ever having to think of the underlying compute or network infrastructure.&lt;/p&gt;
&lt;p&gt;The second goal is based on a key trend we see today: to be agile and stay competitive, developers want to focus on building code that adds value to their core offering, and therefore want to just use, or compose with, existing services. There is a large ecosystem of existing web services that help with everything from managing basic identity and access, to processing complex multi-party payments across geographies! Hence, service composition is no longer an afterthought but a core part of designing and building an application. Addressing this became one of the key design principles for the AppFabric Developer Tools experience. The tools provide a simple yet powerful experience for composing applications with first party Azure services like Caching or Storage, as well as for consuming external services like Netflix or PayPal. The extensibility of the developer tools allows even the list of service components we ship out of the box to be extended to include 3&lt;sup&gt;rd&lt;/sup&gt; party services, or your own frequently used custom services. The screenshot below shows a list of out-of-box shipping service components like ASP.Net or Caching (in blue) and some example custom service components like Authorize.Net and Facebook (in black).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8662.clip_5F00_image002_5F00_4462D772.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/7674.clip_5F00_image002_5F00_thumb_5F00_563F6B3F.jpg" width="512" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To get developers started quickly, we are shipping a few templates for building applications using commonly used patterns like a high-performance ASP.NET application using Caching or a rich Silverlight Business Application. These templates get installed as part of the Developer Tools and provide an easy way to get started for building AppFabric applications.&lt;/p&gt;
&lt;p&gt;The third key goal is to enable developers to build and debug the application as a whole. No web site or WCF service is an island; each is part of an end to end multi-tier application. AppFabric Developer Tools allow for a local simulation of building and running an application distributed across a web-tier, middle-tier and data-tier&amp;mdash;but by building on top of the existing Windows Azure Compute Emulator that Azure developers are already familiar with.&lt;/p&gt;
&lt;p&gt;The last design pivot is to enable developers to easily define the end-to-end multi-tier application in terms of the web and middle-tier code artifacts, database and storage resources, and a spectrum of external services referenced by the application. This metadata is automatically captured as the &lt;b&gt;Composition Model.&lt;/b&gt; The model then gets packaged along with the application so that the management system (the A&lt;b&gt;pplication Manager&lt;/b&gt;) can use it for managing the application lifecycle easily.&lt;/p&gt;
&lt;p&gt;With CTP1, our goal is to first enable the &lt;i&gt;end-to-end&lt;/i&gt; developer experience built around these core principles. We&amp;rsquo;ll build out richer experiences for each step in the development lifecycle as we go through future iterations of the tools.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;" size="2"&gt;&lt;strong&gt;AppFabric Container&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The &lt;b&gt;AppFabric Container&lt;/b&gt; service is the new multi-tenant middle-tier container for hosting and running mid-tier code like WCF and WF, or your custom code, at scale with high availability. At its core, the AppFabric Container consists of a large cluster of machines that have been set up to be resilient, scalable and multi-tenant, and has been pre-provisioned with the necessary frameworks and runtimes required to run your custom code, WCF services or Workflows. With AppFabric Container, we raise the level of abstraction for developers and admins so that they don&amp;rsquo;t have to deal with any of the complexity of the underlying computing, networking and storage infrastructure. Developers can focus on the business logic, and let the runtime manage the complex details of partitioning, replication, state management, address virtualization, dynamic address resolution, failover, isolation, resiliency, load balancing, request routing etcetera. You simply package and drop your WCF services, Workflows or custom .NET code into the AppFabric Container using the Application Manager or directly from Visual Studio, and let the container host, run and scale the application for you. Then you sit back and manage the service level objectives of your services via the Application Manager.&lt;/p&gt;
&lt;p&gt;In addition, the AppFabric Container enables rich hosting scenarios &amp;amp; configurations for both WCF &amp;amp; Windows Workflows (WF). You can build and run brokered services i.e. message activated WCF services, with the integration that AppFabric Container provides with Service Bus. Also, you can run rich WF applications on AppFabric Container with support for persisting state easily and providing business process visibility through the management endpoint to get instance status. We&amp;rsquo;ll go in to a lot more detail about building WCF &amp;amp; WF applications to run in Windows Azure using AppFabric Container in future blog posts.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;" size="2"&gt;&lt;strong&gt;Application Manager&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The Application Manager is the last piece of the puzzle. It is the infrastructure and tooling that enables you to manage any AppFabric Application through its lifecycle&amp;mdash;configuring, deploying, controlling, monitoring, troubleshooting and scaling, &lt;i&gt;all as a single logical application&lt;/i&gt;. It uses the metadata of the application i.e. the Composition Model, to automatically understand the components, dependencies and requirements of your multi-tier application so that you don&amp;rsquo;t have to. The screenshot below shows a sample application that spans the web, middle and data tiers; the application composes with Windows Azure and external 3&lt;sup&gt;rd&lt;/sup&gt; party services, but is being managed as a &lt;i&gt;single unit&lt;/i&gt; in the Application Manager.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1452.clip_5F00_image004_5F00_3EA7939D.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/6254.clip_5F00_image004_5F00_thumb_5F00_2296D4B2.jpg" width="789" height="636" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the first things that the Application Manager does when you publish or upload an n-tier application to it is to help you understand the end to end application structure and its contents. It then allows you to centrally &lt;b&gt;configure&lt;/b&gt; your entire application and all its parts, including detailed WCF configuration settings&amp;mdash;like setting timeouts and number of concurrent connections, or simple environment settings such as which database to connect to in production versus staging. Once you are done configuring the application, a single click allows you to &lt;b&gt;deploy&lt;/b&gt; your entire application across multiple web containers and the AppFabric Container. It also wires the application up to all the internal and external referenced services, including, but not limited to, SQL Azure, Caching, Blob Storage, Service Bus Queues etc. And it uses the Access Control Service (ACS) to secure the namespaces. Anyone who has deployed a distributed application spanning multiple tiers understands all the pain that the Application Manager will take away with a single-click! And never once will you have to deal with any virtual machines, network settings or storage configurations.&lt;/p&gt;
&lt;p&gt;In addition to centrally configuring and deploying your application, the Application Manager also helps you manage certificates to secure your application, configures the monitoring and diagnostics stores for your app automatically, and creates the right end points and URIs for your deployed services in your namespace.&lt;/p&gt;
&lt;p&gt;Other key investments in the Application Manager are in out-of-box monitoring and troubleshooting support for your application. Once you start using your deployed application, you&amp;rsquo;ll notice a rich set of metrics being automatically generated and collected for your application&amp;mdash;everything from basic ASP.NET metrics like number of requests, to request latency numbers for ASP.NET and WCF services, to SQL DB call execution time, to the number of times your cache gets called. All without writing a single line of code during development! And these metrics get aggregated for you across all the instances of your scaled out application, as it is running on the web and AppFabric Container. In addition, if you have built custom components, say for example, a PayPal service that you reference from your application, you can even generate custom metrics in CTP1. You can then start tracking items like the number of orders sent, the number of orders over $1000 processed, and see those custom metrics rendered along with other out-of-box metrics using rich chart controls right in the Application Manager.&lt;/p&gt;
&lt;p&gt;On similar lines, we&amp;rsquo;ve made troubleshooting of your distributed application a lot easier by collecting and centralizing all troubleshooting logs (you get to pick the diagnostics level of the app when you build it) from all the instances of web and AppFabric Container to which the app is deployed to at any given point. All logs are available from one location in the Application Manager, and you can open the downloaded logs in the SvcTraceViewer tool for detailed debugging and diagnosis. You no longer have to write tons of scripts, peer through files, and separate infrastructure issues from application issues. You get all the logs through a UI, and programmatically through our REST API. Yes, we do offer a full REST API (and PowerShell samples too!) to automate, or programmatically access anything that the UI can do, using your own custom dashboards and management tools.&lt;/p&gt;
&lt;p&gt;Last but not the least, the Application Manager allows you to scale-out your application with a single-click. You select the number of instances you want to scale different parts of your application to (there are restrictions on the max scale count in CTP1 as we are paying your bills!). And voila&amp;mdash;the application automatically and elastically gets scaled out without any downtime!&lt;/p&gt;
&lt;p&gt;While I can go on for a while describing all the cool and powerful things you can do with the CTP1 bits, I&amp;rsquo;ll wrap up this blog post by saying that we are super excited to share this technology preview and hope that you&amp;rsquo;ll be as excited to try them out and discover all the things we&amp;rsquo;ve built, and to take the conversation of building and managing applications to the next level! And remember, we have a limited capacity for CTP1 so &lt;a href="http://portal.appfabriclabs.com/" target="_blank"&gt;sign-up&lt;/a&gt; quickly for your free account.&lt;/p&gt;
&lt;p&gt;We have an exciting roadmap ahead, but we&amp;rsquo;ll get to that in future blog posts &amp;ndash; for now, we&amp;rsquo;d love to &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank"&gt;hear&lt;/a&gt; what you have to say about your experience with CTP1. Watch out for a series of blog posts in the coming weeks that&amp;rsquo;ll go in to a lot more detail about the various scenarios, features and capabilities across the 3 key parts we&amp;rsquo;ve discussed today. Meanwhile, you can start with the samples that get installed with the AppFabric June CTP SDK or use the tutorials available on &lt;a href="http://msdn.microsoft.com/en-us/library/hh182177.aspx" target="_blank"&gt;MSDN&lt;/a&gt;. You can also watch this &lt;a href="http://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP" target="_blank"&gt;short video&lt;/a&gt; on Channel 9 that Ron Jacobs and I did to give you a quick overview and demo of the things we&amp;rsquo;ve discussed above.&lt;/p&gt;
&lt;p&gt;Welcome to a new era of building and managing rich cloud applications on Windows Azure!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/windowsazure/free-trial/" target="_blank"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="clip_image005" border="0" alt="clip_image005" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5315.clip_5F00_image005_5F00_259A773D.png" width="184" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Karandeep Anand for the AppFabric Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10177065" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF/">WF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WCF+RIA+Services/">WCF RIA Services</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WCF+Http/">WCF Http</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/App+Manager/">App Manager</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Updates to Windows Azure AppFabric SDK available for download</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/17/updates-to-windows-azure-appfabric-sdk-available-for-download.aspx</link><pubDate>Fri, 17 Jun 2011 11:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10175512</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10175512</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/17/updates-to-windows-azure-appfabric-sdk-available-for-download.aspx#comments</comments><description>&lt;p&gt;An update to the Windows Azure AppFabric SDK is available for download. The updated SDK introduces fixes to a few bugs related to the Caching service. You can find more details on the bugs it addresses &lt;a href="http://go.microsoft.com/fwlink/?LinkId=221455" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are not experiencing any of the issues the updated SDK solves there is no need to install the updated SDK. You can download the updated SDK &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=39856a03-1490-4283-908f-c8bf0bfad8a5&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Note:&lt;/span&gt; This is the production environment SDK, not the SDK used to develop for the LABS/Previews environment.&lt;/p&gt;
&lt;p&gt;As always, feel free to ask questions and provide us with feedback on the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windowsazureplatform" target="_blank"&gt;Windows Azure Platform Forums&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;If you haven&amp;rsquo;t signed up for Windows Azure AppFabric be sure take advantage of our free trial offer. Just click on the image below and get started today!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/appfabric/azure/purchase.aspx"&gt;&lt;img alt="" src="data:image/png;base64,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" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The AppFabric Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10175512" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Caching/">Caching</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>How To Load WF4 Workflow Services from a Database with IIS/AppFabric</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/16/how-to-load-wf4-workflow-services-from-a-database-with-iis-appfabric.aspx</link><pubDate>Thu, 16 Jun 2011 14:05:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10175286</guid><dc:creator>Ron Jacobs</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10175286</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/16/how-to-load-wf4-workflow-services-from-a-database-with-iis-appfabric.aspx#comments</comments><description>&lt;p&gt;Cross Post from &lt;a href="http://blogs.msdn.com/b/rjacobs/"&gt;Ron Jacobs blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This morning I saw a message post on the .NET 4 Windows Workflow Foundation Forum titled &lt;a href="http://social.msdn.microsoft.com/Forums/en/wfprerelease/thread/cd47355a-abcc-42ab-92e6-d6d8850ceaa4"&gt;Load XAMLX from database&lt;/a&gt;.&amp;#160; I’ve been asked this question many times.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;em&gt;How can I store my Workflow Service definitions (xamlx files) in a database with IIS and AppFabric?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Today I decided to create a sample to answer this question.&amp;#160; Lately I’ve been picking up ASP.NET MVC 3 so my sample code is written with it and EntityFramework 4.1 using a code first approach with SQL Server Compact Edition 4.&lt;/p&gt;  &lt;p&gt;Download &lt;a href="http://code.msdn.microsoft.com/Windows-Workflow-8697594e"&gt;Windows Workflow Foundation (WF4) - Workflow Service Repository Example&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;AppFabric.tv - How To Build Workflow Services with a Database Repository&lt;/h3&gt;  &lt;p&gt;&lt;video controls poster="http://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_512_ch9.jpg"&gt;&lt;source src="http://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_low_ch9.mp4" /&gt;&lt;object type="application/x-silverlight-2" data="data:application/x-silverlight-2," width="512" height="288"&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0" /&gt;&lt;param name="source" value="http://channel9.msdn.com/scripts/Channel9.xap?v=1.5" /&gt;&lt;param name="initParams" value="mediaurl=http://smooth.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository.ism/manifest,thumbnail=http://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_512_ch9.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=7bafa9a39f334965b4e19f03016acfba" /&gt;&lt;/object&gt;&lt;/video&gt;&lt;/p&gt;  &lt;h2&gt;Step 1: Create a Virtual Path Provider&lt;/h2&gt;  &lt;p&gt;Implementing a &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx"&gt;VirtualPathProvider&lt;/a&gt; is fairly simple.&amp;#160; The thing you have to keep in mind is that it will be called whenever ASP.NET wants to resolve a file or directory anywhere on the website.&amp;#160; You will need a way to determine if you want to provide virtual content.&amp;#160; For my example I created a folder in the web site called XAML.&amp;#160; This folder is empty but I found that it has to be there or the WCF Activation code will throw an exception.&lt;/p&gt;  &lt;p&gt;When I want to activate a Workflow Service that is stored in the database I use a URI that will point to this directory like this &lt;strong&gt;http://localhost:34372/xaml/Service1.xamlx&lt;/strong&gt;&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WorkflowVirtualPathProvider : VirtualPathProvider&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Public Methods&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; FileExists(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; IsPathVirtual(virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                    ? GetWorkflowFile(virtualPath).Exists&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                    : &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Previous.FileExists(virtualPath);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; VirtualFile GetFile(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; IsPathVirtual(virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                    ? GetWorkflowFile(virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                    : &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Previous.GetFile(virtualPath);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Methods&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; WorkflowVirtualFile GetWorkflowFile(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; path)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WorkflowVirtualFile(path);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// TODO (01.1) Create a folder that will be used for your virtual path provider&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// Note: System.ServiceModel.Activation code will throw an exception if there is not a real folder with this name&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; IsPathVirtual(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        var checkPath = VirtualPathUtility.ToAppRelative(virtualPath);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; checkPath.StartsWith(&lt;span style="color: #006080"&gt;&amp;quot;~/xaml&amp;quot;&lt;/span&gt;, StringComparison.InvariantCultureIgnoreCase);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h2&gt;Step 2: Create a VirtualFile class&lt;/h2&gt;

&lt;p&gt;The VirtualFile class has to load content from somewhere (in this case a database) and then return a stream to ASP.NET.&amp;#160; Performance is a concern so you should definitely make use of caching when doing this.&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; WorkflowVirtualFile : VirtualFile&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Constants and Fields&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; Workflow workflow;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Constructors and Destructors&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; WorkflowVirtualFile(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            : &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;(virtualPath)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.LoadWorkflow();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Properties&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; Exists&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            get { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; Public Methods&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; LoadWorkflow()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            var id = Path.GetFileNameWithoutExtension(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.VirtualPath);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(id))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080"&gt;&amp;quot;Cannot find workflow definition for {0}&amp;quot;&lt;/span&gt;, id));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #008000"&gt;// TODO (02.1) Check the Cache for workflow definition&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow = (Workflow)HostingEnvironment.Cache[id];&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;// TODO (02.2) Load it from the database&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;// Note: I'm using EntityFramework 4.1 with a Code First approach&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                var db = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WorkflowDBContext();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow = db.Workflows.Find(id);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                    &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #006080"&gt;&amp;quot;Cannot find workflow definition for {0}&amp;quot;&lt;/span&gt;, id));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #008000"&gt;// TODO (02.3) Save it in the cache&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                HostingEnvironment.Cache[id] = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;///   When overridden in a derived class, returns a read-only stream to the virtual resource.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;///   A read-only stream to the virtual file.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #008000"&gt;/// &amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; Stream Open()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;                &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(&lt;span style="color: #006080"&gt;&amp;quot;Workflow definition is null&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #008000"&gt;// TODO (02.4) Return a stream with the workflow definition&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            var stream = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MemoryStream(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow.WorkflowDefinition.Length);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            var writer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StreamWriter(stream);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            writer.Write(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.workflow.WorkflowDefinition);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            writer.Flush();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            stream.Seek(0, SeekOrigin.Begin);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; stream;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Step 3: Register the Virtual Path Provider&lt;/h2&gt;

&lt;p&gt;Finally you register the provider and you will be on your way.&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Application_Start()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    Database.SetInitializer(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WorkflowInitializer());&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    AreaRegistration.RegisterAllAreas();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    RegisterGlobalFilters(GlobalFilters.Filters);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    RegisterRoutes(RouteTable.Routes);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #008000"&gt;// TODO (03) Register the Virtual Path Provider&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    HostingEnvironment.RegisterVirtualPathProvider(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; WorkflowVirtualPathProvider());&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ron Jacobs 
  &lt;br /&gt;&lt;a href="http://blogs.msdn.com/rjacobs"&gt;http://blogs.msdn.com/rjacobs&lt;/a&gt; 

  &lt;br /&gt;Twitter: @ronljacobs &lt;a href="http://twitter.com/ronljacobs"&gt;http://twitter.com/ronljacobs&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10175286" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WF/">WF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Server+AppFabric/">Windows Server AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category></item><item><title>Announcing WCF Express Interop Bindings</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/13/announcing-wcf-express-interop-bindings.aspx</link><pubDate>Mon, 13 Jun 2011 21:36:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10174071</guid><dc:creator>Abu Obeida</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10174071</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/13/announcing-wcf-express-interop-bindings.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Calibri"&gt;Today, we are pleased to further simplify the WS-* interop challenge by providing the &lt;/font&gt;&lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20Express%20Interop%20Bindings"&gt;&lt;font size="3" face="Calibri"&gt;WCF Express Interop Bindings&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; Extension for Visual Studio 2010, launched at wcf.codeplex.com. &lt;/font&gt;&lt;/strong&gt;&lt;font size="3" face="Calibri"&gt;This new extension enables WCF developers to avoid much of the formerly needed guesswork to configure a WCF service to connect with the top Java platforms via the known WS-* specifications, by creating custom interoperable WCF bindings on demand, building on settings described in the WS-* interop white papers. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;When we shipped .NET 4, we &lt;/font&gt;&lt;a href="http://blogs.msdn.com/b/interoperability/archive/2010/06/17/voice-your-opinion-on-net-interoperability-with-windows-communication-foundation-wcf.aspx"&gt;&lt;font size="3" face="Calibri"&gt;asked you&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; to send us your top concerns about WCF interop with Java. You've shared your thoughts, wishes and complaints. I am glad to report that we've taken your feedback to heart and are delivering on it. The most mentioned concern was reducing the complexity of configuration needed to enable .NET WCF interop with Java. Since WCF allows for all sorts of knobs to be turned, configuring an interoperable WCF service has never always been easy.&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Until now, the bindings in WCF provided a wide range of interoperable and non-interoperable options to establish connections. Developers burned the midnight oil too many times, perusing various reports from WS-I, or huddling in&amp;#160; online forums figuring out the required interop settings. Java web services, mostly relying on policy based configurations, proved tricky for .NET WCF developers to configure their services and clients. .NET Developers needed to configure security settings, algorithms, policies in&amp;#160; various bindings elements in an often time consuming manner, resulting in a challenge larger than necessary.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;We took the first step towards simplifying interop with Java by releasing a series of &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/webservicesinterop"&gt;&lt;font size="3" face="Calibri"&gt;white papers&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;&amp;#160; outlining settings required for security interop with IBM WebSphere and Oracle WebLogic and Metro, along with various guidance on interop with Java datatypes and SAP.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Today, we are taking the second step in releasing this extension that simplifies interop with the leading java middleware platforms:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/5672.image3_5F00_1A44CFEC.png"&gt;&lt;font size="3" face="Calibri"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/3286.image3_5F00_thumb_5F00_124D2D8A.png" width="398" height="201" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Simply select your platform of choice, the options of&amp;#160; Reliable Messaging, Security, MTOM, and the extension generates a complete WCF service, configured with a dynamically generated binding that works right out of the with box with the Java platform of your choice. This extension is the best interop solution for the novice and intermediate WCF developer. Advanced developers can further customize the pre-defined settings that we have tested with the leading Java platforms for their own use. What required hours and days before is now doable in mere minutes!&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The extension is provided as an open source project at wcf.codeplex.com amongst other projects by the WCF Team.&amp;#160; Download the source code and the binary &lt;/font&gt;&lt;a href="http://wcf.codeplex.com/releases/view/68276"&gt;&lt;font face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;We will be publishing a series of walkthroughs on codeplex helping you establish quick interoperable services. The first of which is &lt;/font&gt;&lt;a href="http://wcf.codeplex.com/wikipage?title=WCF%20Express%20Interop%20Bindings%20Walk%20Through"&gt;&lt;font face="Calibri"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Feel free to customize this extension for your own enterprise use, and share your feedback on how this might evolve to cover more scenarios.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Thanks,&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Abu Obeida Bakhach&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;Interoperability Program Manager&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10174071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Server+AppFabric/">Windows Server AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Dev+Tools/">Dev Tools</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Extensibility/">Extensibility</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/interop/">interop</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Updated IP addresses for AppFabric Data Centers</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/06/10/updated-ip-addresses-for-appfabric-data-centers.aspx</link><pubDate>Sat, 11 Jun 2011 01:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10173556</guid><dc:creator>AppFabric Team</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10173556</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/06/10/updated-ip-addresses-for-appfabric-data-centers.aspx#comments</comments><description>&lt;p&gt;Today (6/10/2010) the Windows Azure AppFabric has updated the IP ranges on which the AppFabric nodes are hosted. If your firewall restricts outbound traffic, you will need to perform the additional step of opening your outbound TCP ports and IP addresses for these nodes. Please see the 1/28/2010 &amp;ldquo;&lt;a href="http://blogs.msdn.com/b/windowsazureappfabricannounce/archive/2010/01/28/additional-data-centers-for-windows-azure-platform-appfabric.aspx"&gt;Additional Data Centers for Windows Azure AppFabric&lt;/a&gt;&amp;rdquo; for full list of IP ranges, which was updated today to include changes shown below.&lt;/p&gt;
&lt;p&gt;Updates&amp;nbsp;made today&amp;nbsp;are shown below:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Added IPs&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;United States (South/Central) &lt;/span&gt;&lt;br /&gt;157.55.196.0/22,157.55.200.0/22&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;United States (North/Central)&lt;/span&gt; &lt;br /&gt;65.52.106.240/28,65.52.106.16/28,65.52.107.0/28,65.52.106.224/28,65.52.106.32/27,65.52.106.64/27,65.52.106.160/27,65.52.106.192/27,65.52.106.96/27,65.52.106.128/27,157.55.24.0/21,157.55.208.0/21,157.55.60.240/28&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;United States (North/West)&lt;/span&gt;&lt;br /&gt;65.52.98.96/28,65.52.103.128/27,65.52.98.96/28,65.55.19.64/26,65.52.99.0/24,65.52.101.0/24,65.55.25.96/28&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;Europe (North)&lt;/span&gt; &lt;br /&gt;157.55.3.0/24&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;Europe (West)&lt;/span&gt; &lt;br /&gt;213.199.128.0/20,213.199.180.112/28,213.199.180.32/28,213.199.180.96/28,213.199.180.192/26,213.199.183.0/24,157.55.8.128/28,157.55.8.144/28,157.55.8.160/28,157.55.8.64/26&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;Asia (Southeast)&lt;/span&gt;&lt;br /&gt;207.46.48.0/20, 111.221.16.0/21, 111.221.80.0/20,111.221.96.0/20&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;span style="text-decoration: underline;"&gt;Asia (East)&lt;/span&gt; &lt;br /&gt;207.46.72.0/26, 207.46.89.16/28, 207.46.95.32/27, 207.46.77.224/28, 207.46.87.0/24, 207.46.67.160/27, 207.46.67.192/27&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Removed IPs&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;None.&lt;/p&gt;
&lt;p&gt;The AppFabric Team.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif;"&gt;&lt;span style="font-size: medium;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10173556" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Access+Control/">Access Control</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Caching/">Caching</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Announcements/">Announcements</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Production+Environment/">Production Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item><item><title>Making an activity's display name readonly in the Workflow 4 designer</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/05/30/making-an-activity-s-display-name-readonly-in-the-workflow-4-designer.aspx</link><pubDate>Tue, 31 May 2011 06:10:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169713</guid><dc:creator>Patrick D. Fletcher [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10169713</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/05/30/making-an-activity-s-display-name-readonly-in-the-workflow-4-designer.aspx#comments</comments><description>&lt;p&gt;To make an activity's display name readonly, it isn't enough to use the ReadOnlyAttribute on the DisplayName. In order to do this, create a custom PropertyValueEditor that displays a string in a text block, then declare an editor attribute on the "DisplayName" property of your activity. The following code demonstrates how to create a read-only custom PropertyValueEditor.&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;public class ReadOnlyStringEditor : PropertyValueEditor&lt;br /&gt;
{&lt;br /&gt;
    public ReadOnlyStringEditor()&lt;br /&gt;
    {&lt;br /&gt;
        FrameworkElementFactory factory = new FrameworkElementFactory(typeof(TextBlock));&lt;br /&gt;
        factory.SetBinding(TextBlock.TextProperty, new Binding("Value"));&lt;br /&gt;
        this.InlineEditorTemplate = new DataTemplate();&lt;br /&gt;
        this.InlineEditorTemplate.VisualTree = factory;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The following code demonstrates how to assign the custom property editor. This should be done in the constructor for the designer.\&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;// Add attribute onto MyCustomActivity.DisplayName&lt;br /&gt;
AttributeTableBuilder builder = new AttributeTableBuilder();&lt;br /&gt;
builder.AddCustomAttributes(typeof(Activity), "DisplayName", new EditorAttribute(typeof(ReadOnlyStringEditor), typeof(PropertyValueEditor)));&lt;br /&gt;
MetadataStore.AddAttributeTable(builder.CreateTable());&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, assign the display name in the custom activity's constructor.&lt;/p&gt;
&lt;p&gt;﻿&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;this.DisplayName = "Custom Sequence Activity";&lt;/code&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169713" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/wf+4+designer+property+readonly/">wf 4 designer property readonly</category></item><item><title>An Introduction to Service Bus Topics</title><link>http://blogs.msdn.com/b/appfabric/archive/2011/05/25/an-introduction-to-service-bus-topics.aspx</link><pubDate>Wed, 25 May 2011 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10167981</guid><dc:creator>David Ingham</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/appfabric/rsscomments.aspx?WeblogPostID=10167981</wfw:commentRss><comments>http://blogs.msdn.com/b/appfabric/archive/2011/05/25/an-introduction-to-service-bus-topics.aspx#comments</comments><description>&lt;p class="Publishwithline"&gt;In the May CTP of Service Bus, &lt;span style="color: black;"&gt;we&amp;rsquo;ve added a brand-new set of cloud-based, message-oriented-middleware technologies including reliable message queuing and durable publish/subscribe messaging. Last week I posted the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;Introduction to Service Bus Queues&lt;/a&gt; blog entry. This post follows on from that and provides an introduction to the publish/subscribe capabilities offered by Service Bus Topics. Again, I&amp;rsquo;m not going to cover all the features in this article, I just want to give you enough information to get started with the new feature. We&amp;rsquo;ll have follow-up posts that drill into some of the details.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;I&amp;rsquo;m going to continue with the retail scenario that I started in the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;queues blog post&lt;/a&gt;. Recall that &lt;/span&gt;sales data from individual Point of Sale (POS) terminals needs to be routed to an inventory management system which uses that data to determine when stock needs to be replenished. Each POS terminal reports its sales data by sending messages to the DataCollectionQueue where they sit until they are received by the inventory management system as shown below:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/7853.t1.GIF"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/7853.t1.GIF" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Now let&amp;rsquo;s evolve this scenario. A new requirement has been added to the system: the store owner wants to be able to monitor how the store is performing in real-time. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;To address this requirement we need to take a &amp;ldquo;tap&amp;rdquo; off the sales data stream. We still want each message sent by the POS terminals to be sent to the Inventory Management System as before but we want another copy of each message that we can use to present the dashboard view to the store owner.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;In any situation like this, where you need each message to be consumed by multiple parties, you need the Service Bus Topic feature. Topics provide the publish/subscribe pattern in which each published message is made available to each subscription registered with the Topic. Contrast this with the queue where each message is consumed by a single consumer. That&amp;rsquo;s the key difference between the two models. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;Messages are sent to a topic in exactly the same way as they are sent to a queue but messages aren&amp;rsquo;t received from the topic directly, instead they are received from subscriptions. You can think of a topic subscription like a virtual queue that gets copies of the messages that are sent to the topic. Messages are received from a subscription in exactly the same way as they are received from a queue.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;So, going back to the scenario, the first thing to do is to switch out the queue for a topic and add a subscription that will be used by the Inventory Management System. So, the system would now look like this:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/8546.t2.GIF"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/8546.t2.GIF" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The above configuration would perform identically to the previous queue-based design. That is, messages sent to the topic would be routed to the Inventory subscription from where the Inventory Management System would consume them.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;Now, in order to support the management dashboard, we need to create a second subscription on the topic as shown below:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/6758.t3.GIF"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/6758.t3.GIF" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;Now, with the above configuration, each message from the POS terminals will be made available to both the Dashboard and Inventory subscriptions.&lt;/p&gt;
&lt;h2 class="WordSection1"&gt;&lt;br /&gt;Show Me the Code&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;I described how to sign-up for a Service Bus account and create a namespace in the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;queues blog post&lt;/a&gt; so I won&amp;rsquo;t cover that again here. Recall that to use the Service Bus namespace, an application needs to reference the AppFabric Service Bus DLLs, namely Microsoft.ServiceBus.dll and Microsoft.ServiceBus.Messaging.dll. You can find these as part of the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=D89640FC-C552-446E-AEAD-B1E0D940F31B"&gt;SDK download&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class="WordSection1"&gt;&lt;br /&gt;Creating the Topic and Subscriptions&lt;/h3&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;Management operations for Service Bus messaging entities (queues and topics) are performed via the ServiceBusNamespaceClient which is constructed with the base address of the Service Bus namespace and the user credentials. The ServiceBusNamespaceClient provides methods to create, enumerate and delete messaging entities. The snippet below shows how the ServiceBusNamespaceClient is used to create the DataCollectionTopic.&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;Uri&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;ServiceBusEnvironment&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;.CreateServiceUri(&lt;span style="color: #a31515;"&gt;"sb"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"ingham-blog"&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;.Empty);&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;string&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; name = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"owner"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;string&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; key = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"abcdefghijklmopqrstuvwxyz"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;ServiceBusNamespaceClient&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; namespaceClient = &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;new&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;ServiceBusNamespaceClient&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; baseAddress, &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;TransportClientCredentialBase&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;.CreateSharedSecretCredential(name, key) );&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;Topic&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; dataCollectionTopic = &lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;namespaceClient.CreateTopic(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"DataCollectionTopic"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p class="MsoNormal"&gt;Note that there are overloads of the CreateTopic method that allow properties of the topic to be tuned, for example, to set the default time-to-live to be applied to messages sent to the topic. Next, let&amp;rsquo;s add the Inventory and Dashboard subscriptions.&lt;/p&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataCollectionTopic.AddSubscription(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"Inventory"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataCollectionTopic.AddSubscription(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"Dashboard"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 class="WordSection1"&gt;Sending Messages to the Topic&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;As I mentioned earlier, applications send messages to a topic in the same way that they send to a queue so the code below will look very familiar if you read the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;queues blog post&lt;/a&gt;. The difference is the application creates a TopicClient instead of a QueueClient.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;For runtime operations on Service Bus entities, i.e., sending and receiving messages, an application first needs to create a MessagingFactory. The base address of the ServiceBus namespace and the user credentials are required. &lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;Uri&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;ServiceBusEnvironment&lt;/span&gt;&lt;span style="font-family: consolas; font-size: 8pt;"&gt;.CreateServiceUri(&lt;span style="color: #a31515;"&gt;"sb"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"ingham-blog"&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;.Empty);&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;string&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; name = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"owner"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;string&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; key = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"abcdefghijklmopqrstuvwxyz"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessagingFactory&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; factory = &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;MessagingFactory&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;.Create(&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; baseAddress, &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;TransportClientCredentialBase&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;.CreateSharedSecretCredential(name, key) );&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;From the factory, a TopicClient is created for the particular topic of interest, in our case, the DataCollectionTopic.&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TopicClient&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; topicClient = factory.CreateTopicClient(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"DataCollectionTopic"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;A MessageSender is created from the TopicClient to perform the send operations.&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageSender&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; ms = topicClient.CreateSender();&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;Messages sent to, and received from, Service Bus topics (and queues) are instances of the BrokeredMessage class which consists of a set of standard properties (such as Label and TimeToLive), a dictionary that is used to hold application properties, and a body of arbitrary application data. An application can set the body by passing in any serializable object into CreateMessage (the example below passes in a SalesData object representing the sales data from the POS terminal) which will use the DataContractSerializer to serialize the object. Alternatively, a System.IO.Stream can be provided.&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: green; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BrokeredMessage&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; bm = &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;BrokeredMessage&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;.CreateMessage(salesData);&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bm.Label = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"SalesReport"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bm.Properties[&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"StoreName"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;] = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"Redmond"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bm.Properties[&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"MachineID"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;] = &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"POS_1"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ms.Send(bm);&lt;/span&gt;&lt;/p&gt;
&lt;h3 class="WordSection1"&gt;&lt;br /&gt;Receiving Messages from a Subscription&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;Just like when using queues, messages are received from a subscription using a MessageReceiver. The difference is that the MessageReceiver is created from a SubscriptionClient rather than a QueueClient. Everything else remains the same including support for the two different receive modes (ReceiveAndDelete and PeekLock) that I discussed in the &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;queues blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;So, first we create the SubscriptionClient, passing the name of the topic and the name of the subscription as parameters. Here I&amp;rsquo;m using the Inventory subscription.&lt;/p&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SubscriptionClient&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; subClient = factory.CreateSubscriptionClient(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"DataCollectionTopic"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"Inventory"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p class="MsoNormal"&gt;Next we create the MessageReceiver and receive a message.&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;MessageReceiver&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; mr = subClient.CreateReceiver();&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;BrokeredMessage&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; receivedMessage = mr.Receive();&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;try&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessMessage(receivedMessage);&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receivedMessage.Complete();&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;catch&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; (&lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;Exception&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt; e)&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receivedMessage.Abandon();&lt;/span&gt;&lt;/p&gt;
&lt;p class="WordSection1" style="margin: 2.15pt 0in 0pt;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;h2 class="WordSection1"&gt;&lt;br /&gt;Subscription Filters&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;So far, I&amp;rsquo;ve said that all messages sent to the topic are made available to all registered subscriptions. The key phrase there is &amp;ldquo;made available&amp;rdquo;. While Service Bus subscriptions see all messages sent to the topic, it is possible to only copy a subset of those messages to the virtual subscription queue. This is done using subscription filters. When a subscription is created, it&amp;rsquo;s possible to supply a filter expression in the form of a SQL92 style predicate that can operate over the properties of the message, both the system properties (e.g., Label) and the application properties, such as StoreName in the above example.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;Let&amp;rsquo;s evolve the scenario a little to illustrate this. A second store is to be added to our retail scenario. Sales data from all of the POS terminals from both stores still need to be routed to the centralized Inventory Management System but a store manager using the Dashboard tool is only interested in the performance of her store. We can use subscription filtering to achieve this. Note that when the POS terminals publish messages, they set the StoreName application property on the message. Now we have two stores, let&amp;rsquo;s say Redmond and Seattle, the POS terminals in the Redmond store stamp their sales data messages with a StoreName of Redmond while the Seattle store POS terminals use a StoreName of Seattle. The store manager of the Redmond store only wishes to see data from its POS terminals. Here&amp;rsquo;s how the system would look:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/4628.t4.GIF"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09/4628.t4.GIF" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;To set this routing up, we need to make a simple change to how we&amp;rsquo;re creating the Dashboard subscription as follows:&lt;/p&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;dataCollectionTopic.AddSubscription(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"Dashboard"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;, &lt;/span&gt;&lt;span style="font-family: consolas; color: blue; font-size: 8pt;"&gt;new&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: consolas; color: #2b91af; font-size: 8pt;"&gt;SqlFilterExpression&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;(&lt;/span&gt;&lt;span style="font-family: consolas; color: #a31515; font-size: 8pt;"&gt;"StoreName = 'Redmond'"&lt;/span&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="WordSection1"&gt;
&lt;pre style="background: white;"&gt;&lt;span style="font-family: consolas; color: black; font-size: 8pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p class="MsoNormal"&gt;With this subscription filter in place, only messages with the StoreName property set to Redmond will be copied to the virtual queue for the Dashboard subscription.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;There is a bigger story to tell around subscription filtering. Applications have an option to have multiple filter rules per subscription and there&amp;rsquo;s also the ability to modify the properties of a message as it passes in to a subscription&amp;rsquo;s virtual queue. We&amp;rsquo;ll cover these advanced topics in a separate blog post.&lt;/p&gt;
&lt;h2 class="WordSection1"&gt;&lt;br /&gt;Wrapping up&lt;/h2&gt;
&lt;p class="MsoNormal"&gt;Hopefully this post has shown you how to get started with the topic-based publish/subscribe feature being introduced in the new May CTP of Service Bus.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;It&amp;rsquo;s worth noting that all of the reasons for using queuing that I mentioned in the introduction to &lt;a href="http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduction-to-service-bus-queues.aspx"&gt;queuing blog post&lt;/a&gt; also apply to topics, namely:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Temporal decoupling &amp;ndash; message producers and consumers do not have to be online at the same time.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Load leveling &amp;ndash; peaks in load are smoothed out by the topic allowing consuming applications to be provisioned for average load rather than peak load.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Load balancing &amp;ndash; just like with a queue, it&amp;rsquo;s possible to have multiple competing consumers listening on a single subscription with each message being handed off to only one of the consumers, thereby balancing load.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Loose coupling &amp;ndash; it&amp;rsquo;s possible to evolve the messaging network without impacting existing endpoints, e.g., adding subscriptions or changing filters to a topic to accommodate new consumers.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;We&amp;rsquo;ve only really just scratched the surface here; we&amp;rsquo;ll go in to more depth in future posts.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;Finally, remember one of the main goals of our CTP release is to get feedback on the service. We&amp;rsquo;re interested to hear what you think of the Service Bus messaging features. We&amp;rsquo;re particularly keen to get your opinion of the API. So, if you have suggestions, critique, praise, or questions, please let us know at &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/appfabricctp/"&gt;http://social.msdn.microsoft.com/Forums/en-US/appfabricctp/&lt;/a&gt;. Your feedback will help us improve the service for you and other users like you. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10167981" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/LABS_2F00_Previews+Environment/">LABS/Previews Environment</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/appfabric/archive/tags/Developers/">Developers</category></item></channel></rss>