<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Windows Azure Appfabric Announcements</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/appfabricannounce/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:14:21 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>See what our customers are already doing with the Windows Azure AppFabric June CTP</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp</link>
      <pubDate>Fri, 24 Jun 2011 11:08:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/24/see-what-our-customers-are-already-doing-with-the-windows-azure-appfabric-june-ctp/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]The Windows Azure June CTP has only been...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>The <a href="https://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx" target="_blank">Windows Azure June CTP has only been released a few days ago</a>, and we already have great samples built by our customers that show how to use the CTP capabilities.</p>
<p>Alan Smith has created two webcasts on <a href="https://www.cloudcasts.net/Default.aspx" target="_blank">CloudCasts</a> that show how easy it is to develop AppFabric applications using the June CTP capabilities:</p>
<ul>
<li><a href="https://www.cloudcasts.net/ViewWebcast.aspx?webcastid=2520935311769024826" target="_blank">Introduction to AppFabric Applications</a> &ndash; shows how to use various capabilities released in the June CTP.</li>
<li><a href="https://www.cloudcasts.net/ViewWebcast.aspx?webcastid=2520934331400138004" target="_blank">Using AppFabric Service Bus Queues</a> &ndash; shows how easy it is to build an application that uses the capabilities in the June CTP along with <a href="https://blogs.msdn.com/b/appfabric/archive/2011/05/15/announcing-the-windows-azure-appfabric-ctp-may-and-june-releases.aspx" target="_blank">Service Bus Queues</a> in order to build an application that bridges between a web site running in the cloud, and an application running on-premises.</li>
</ul>
<p>Watch these videos to learn more about these capabilities and how to use them. We hope you enjoy them as we did!</p>
<p>If you would also like to start using the June CTP here is what you need to do:</p>
<p>1. To request access to the Application Manager follow these steps:</p>
<ul>
<li>Sign in to the AppFabric Management Portal at <a href="https://portal.appfabriclabs.com/" target="_blank">https://portal.appfabriclabs.com/</a>.</li>
<li>Choose the entry titled &ldquo;Applications&rdquo; under the &ldquo;AppFabric&rdquo; node on the left side of the screen.</li>
<li>Click on the &ldquo;Request Namespace&rdquo; button on the toolbar on the top of the screen.</li>
<li>You will be asked to answer a few questions before you can request the namespace.</li>
<li>Your request will be in a &ldquo;pending&rdquo; state until it gets approved and you can start using the Application Manager capabilities.</li>
</ul>
<p>2. In order to build applications you will need to install the <a href="https://go.microsoft.com/fwlink/?LinkID=184288" target="_blank">Windows Azure AppFabric CTP SDK and the Windows Azure AppFabric Tools for Visual Studio</a>. Even if you don&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.</p>
<p>Please don&rsquo;t forget to visit the <a href="https://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank">Windows Azure AppFabric CTP Forum</a> to ask questions and provide us with your feedback.</p>
<p>Itai Raz, Product Manager</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure AppFabric will be available on the Official Windows Azure Platform Team Blog</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/windows-azure-appfabric-will-be-available-on-the-official-windows-azure-platform-team-blog</link>
      <pubDate>Fri, 24 Jun 2011 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/24/windows-azure-appfabric-will-be-available-on-the-official-windows-azure-platform-team-blog/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]We are combining all Windows Azure platform...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>We are combining all Windows Azure platform related content into one place: the Windows Azure Platform Team Blog at <a href="https://www.windowsazureblog.com/" target="_blank">www.WindowsAzureBlog.com</a>. 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.</p>
<p>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.</p>
<p>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 &ldquo;how-to&rdquo; posts. You can continue to expect the same quality content you have been receiving, on this new integrated blog. If you&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.</p>
<p>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&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.</p>]]></content:encoded>
    </item>
    <item>
      <title>SQL Azure Blog is moving to the Official Windows Azure Platform Team Blog</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/sql-azure-blog-is-moving-to-the-official-windows-azure-platform-team-blog</link>
      <pubDate>Fri, 24 Jun 2011 01:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/24/sql-azure-blog-is-moving-to-the-official-windows-azure-platform-team-blog/</guid>
      <description><![CDATA[[This article was contributed by the SQL Azure team.]In an effort to make it easier for you to stay...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the SQL Azure team.]</p><p>In an effort to make it easier for you to stay on top of the latest product releases, resources, tools and&nbsp;news around the Windows Azure platform, today, we&rsquo;re excited to announce that the SQL Azure blog is moving into what will now be called the &lsquo;Windows Azure Platform Team Blog&rsquo;. &nbsp;From now on, you can find all SQL Azure blog posts at <a href="https://www.WindowsAzureBlog.com">www.WindowsAzureBlog.com</a>.</p>
<p>This one-stop-shop blog is where you&rsquo;ll be able to find the latest information about the Windows Azure platform and all its components, including SQL Azure.&nbsp;This blog will continue to cover the wide range of topics we have always addressed, from product announcements, to technical &ldquo;how-to&rdquo; posts, and conversations with our customers.&nbsp;If you&rsquo;re primarily interested in just the posts about SQL Azure, you can subscribe to a dedicated RSS feed for that. Alternatively, you have the option of getting all the Windows Azure platform posts in one integrated RSS feed.&nbsp;&nbsp;</p>
<p>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.&nbsp; We&rsquo;ll be sure to notify you when those properties are integrated.&nbsp; In the meantime, we hope these changes will make your life a little easier by making the Windows Azure Platform blog your single destination for all the latest news and information about SQL Azure and the rest of Windows Azure Platform.</p>
<p>-- Steve</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure AppFabric – Service Bus Access Control Federation and Rule Migration</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/windows-azure-appfabric-service-bus-access-control-federation-and-rule-migration</link>
      <pubDate>Thu, 23 Jun 2011 15:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/23/windows-azure-appfabric-service-bus-access-control-federation-and-rule-migration/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]In the Windows Azure AppFabric May 2011 CTP, we...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>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: <a href="https://blogs.msdn.com/b/appfabric/archive/2011/05/13/introducing-the-windows-azure-appfabric-service-bus-may-2011-ctp.aspx" target="_blank">Introducing the Windows Azure AppFabric Service Bus May 2011 CTP</a>. These enhancements will go live with an update to the commercially available service in a few months.</p>
<p>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: <a href="https://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">Windows Azure AppFabric April release now available featuring a new version of the Access Control service!.</a></p>
<p>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: </p>
<ol>
<li>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.</li>
<li>The April 2011 version of Access Control has great benefits as noted in the blog post referenced in the above.</li>
</ol>
<p>Following are explanations on the current state, what will change once Service Bus gets updated, and how you can prepare.</p>
<p><span style="text-decoration: underline;">Current state in the production environment</span></p>
<p>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.</p>
<p>Today when you create a new Service Bus namespace, a matching ACSV1 namespace is automatically created with the namespace suffix &ldquo;&ndash;sb&rdquo;. This ACSV1 namespace is used by Service Bus.</p>
<p>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.</p>
<p><span style="text-decoration: underline;">Following the Service Bus update</span></p>
<p>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.</p>
<p>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.</p>
<p>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: </p>
<ul>
<li>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.</li>
<li>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.</li>
<li>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 &ndash; effectively swapping the V2 namespace into the place of the existing V1 namespace. This completes the migration.</li>
</ul>
<p>Running applications should not experience any service disruption resulting from this switch.</p>
<p>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: </p>
<ul>
<li>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.</li>
<li>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.</li>
<li>After you have switched to ACSV2, you can resume automated creation of rules by having your code target the new ACSV2 management service.</li>
<li>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://<i>tenant</i>.accesscontol.windows.net/v2/mgmt/service yields an HTTP status code 404, the application runs against ACSV1, otherwise it already runs against ACSV2.</li>
</ul>
<p><span style="text-decoration: underline;">How to prepare</span></p>
<p>Our LABS environment at <a href="https://portal.appfabriclabs.com" target="_blank">https://portal.appfabriclabs.com</a> 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.</p>
<p>In the LABS environment already today, when customers create new Service Bus namespaces the system will generate a new Access Control namespace with the &ldquo;-sb&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.</p>
<p>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 <a href="https://portal.appfabriclabs.com" target="_blank">https://portal.appfabriclabs.com</a>.</p>
<p>&nbsp;</p>
<p>As always, if you have any questions or feedback feel free to visit the <a href="https://social.msdn.microsoft.com/Forums/en-US/windowsazureconnectivity/threads" target="_blank">Connectivity for the Windows Azure Platform</a> forum.</p>
<p>The AppFabric Team.</p>]]></content:encoded>
    </item>
    <item>
      <title>MSDN Wiki Article: Q&amp;A on Open Data Protocol (Odata)</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/msdn-wiki-article-qa-on-open-data-protocol-odata</link>
      <pubDate>Wed, 22 Jun 2011 01:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/22/msdn-wiki-article-qa-on-open-data-protocol-odata/</guid>
      <description><![CDATA[[This article was contributed by the SQL Azure team.]
MSDN has created a Q&amp;A article on Odata...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the SQL Azure team.]</p>
<p>MSDN has created a Q&amp;A article on Odata (Open Data Protocol). <a href="https://www.odata.org">OData</a>&nbsp;applies web technologies such as HTTP, Atom Publishing Protocol (AtomPub) and JSON to provide access to information from a variety of applications, services, and stores. As web development continues to move forward, learning about new languages, like OData, will become more invaluable.&nbsp;Making an OData feed from a SQL Azure or SQL Server database is incredibly easy, usually requiring just a few lines of code.</p>
<p>Let me know your thoughts after reading the article.</p>
<p><a href="https://msdn.microsoft.com/en-us/data/ee844254">Click here to open the article: Open Data Protocol Q&amp;A.</a></p>
<p>-Steve</p>
<div class="author-bio"><img src="https://3.bp.blogspot.com/_EhafbTdBBJo/SwF6S3_wh2I/AAAAAAAAC8w/bQSCu9C9gIk/s1600/Bob%2BDylan11.jpg" width="82" />
<div class="author-content"><b>Bob Dylan</b>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin at elit eu mauris congue posuere. Pellentesque commodo consequat dui, a ornare lectus convallis commodo. Maecenas id mollis lacus. Maecenas vel mauris eget enim pulvinar tincidunt vel quis eros.</p>
<a href="https://www.bobdylan.com/">View Website</a></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Announcing the Windows Azure AppFabric June CTP!</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/announcing-the-windows-azure-appfabric-june-ctp</link>
      <pubDate>Mon, 20 Jun 2011 20:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]Today we are excited to announce the release of...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>Today we are excited to announce the release of the Windows Azure AppFabric June CTP which includes capabilities <b>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 </b>on the Windows Azure Platform<b>.</b></p>
<p>This CTP release consists:</p>
<ul>
<li><b>AppFabric Developer Tools</b> - Enhancements to Visual Studio that enable to visually design and build end-to-end applications on the Windows Azure platform.</li>
<li><b>AppFabric Application Manager</b> &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.</li>
<li><b>Composition Model</b> - 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.</li>
<li><b>Support for running Custom Code, WCF, WF</b> - 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.</li>
</ul>
<p>You can read more details in this blog post: <a href="https://blogs.msdn.com/b/appfabric/archive/2011/06/20/introducing-windows-azure-appfabric-applications.aspx" target="_blank">Introducing Windows Azure AppFabric Applications</a> and the <a href="https://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP" target="_blank">Channel 9 announcement video</a>.</p>
<p>The release is already live in our LABS/Previews environment at: <a href="https://portal.appfabriclabs.com/" target="_blank">https://portal.appfabriclabs.com/</a>.</p>
<p>There is<b> limited space available to try out the AppFabric Application Manager CTP</b> so be sure to sign-up as early as possible for a better chance to get access to the CTP.</p>
<p>To request access to the CTP follow these steps:</p>
<ul>
<li>Sign in to the AppFabric Management Portal at <a href="https://portal.appfabriclabs.com/" target="_blank">https://portal.appfabriclabs.com/</a>.</li>
<li>Choose the entry titled &ldquo;Applications&rdquo; under the &ldquo;AppFabric&rdquo; node on the left side of the screen.</li>
<li>Click on the &ldquo;Request Namespace&rdquo; button on the toolbar on the top of the screen.</li>
<li>You will be asked to answer a few questions before you can request the namespace.</li>
<li>Your request will be in a &ldquo;pending&rdquo; state until it gets approved and you can start using the CTP capabilities.</li>
</ul>
<p>In order to build applications for the CTP you will need to install the <a href="https://go.microsoft.com/fwlink/?LinkID=184288" target="_blank">Windows Azure AppFabric CTP SDK and the Windows Azure AppFabric Tools for Visual Studio</a>. Even if you don&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.</p>
<p>This CTP is intended for you to check out and provide us with feedback, so please remember to visit the <a href="https://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank">Windows Azure AppFabric CTP Forum</a> to ask questions and provide us with your feedback.</p>
<p>To learn more please use the following resources:</p>
<ul>
<li><a href="https://www.microsoft.com/showcase/en/us/details/c7bd65e3-f1d2-4e39-9321-291173548e86" target="_blank">Composing and Managing Applications with Windows Azure AppFabric</a> video which is part of the <a href="https://appfabricdemos.codeplex.com/" target="_blank">Windows Azure AppFabric Learning Series</a> available on CodePlex.</li>
<li>Watch the relevant TechEd sessions:
<ul>
<li><a href="https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS311" target="_blank">Introduction to Windows Azure AppFabric Composite Applications</a></li>
<li><a href="https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS318" target="_blank">A Lap around Windows Azure AppFabric</a></li>
<li><a href="https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/MID313" target="_blank">Workflow in Windows Azure AppFabric</a></li>
</ul>
</li>
<li><a href="https://msdn.microsoft.com/en-us/library/hh182177.aspx" target="_blank">MDSN Documentation</a></li>
<li>Visit the <a href="https://windowsazure.com/appfabric" target="_blank">Windows Azure AppFabric website</a></li>
<li>Visit the <a href="https://appfabric.net" target="_blank">Windows Azure AppFabric Developer page</a></li>
<li>Read the <a href="https://go.microsoft.com/?linkid=9773006" target="_blank">Windows Azure AppFabric Overview Whitepaper</a></li>
</ul>
<p><a href="https://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP">&nbsp;AppFabric.tv - Announcing the Windows Azure AppFabric June CTP</a></p>
<p><object data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADqNAAAxB0AAAAAAAAAAAAAAAAAAAAAAABoAAAAaAB0AHQAcAA6AC8ALwBjAGgAYQBuAG4AZQBsADkALgBtAHMAZABuAC4AYwBvAG0ALwBzAGMAcgBpAHAAdABzAC8AQwBoAGEAbgBuAGUAbAA5AC4AeABhAHAAPwB2AD0AMQAuADUAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAIAAG0AZQBkAGkAYQB1AHIAbAA9AGgAdAB0AHAAOgAvAC8AcwBtAG8AbwB0AGgALgBjAGgAOQAuAG0AcwAvAGMAaAA5AC8AOQBhADQAYgAvADQAMwA3ADkANAA1ADgAMQAtADMAZABiAGEALQA0ADEAMABhAC0AYgBiADAAYwAtADkAZgAwADMAMAAxADcAYgA5AGEANABiAC8AQQBwAHAARgBhAGIAcgBpAGMAVABWAEMAVABQAEwAYQB1AG4AYwBoAC4AaQBzAG0ALwBtAGEAbgBpAGYAZQBzAHQALAB0AGgAdQBtAGIAbgBhAGkAbAA9AGgAdAB0AHAAOgAvAC8AbQBlAGQAaQBhAC4AYwBoADkALgBtAHMALwBjAGgAOQAvADkAYQA0AGIALwA0ADMANwA5ADQANQA4ADEALQAzAGQAYgBhAC0ANAAxADAAYQAtAGIAYgAwAGMALQA5AGYAMAAzADAAMQA3AGIAOQBhADQAYgAvAEEAcABwAEYAYQBiAHIAaQBjAFQAVgBDAFQAUABMAGEAdQBuAGMAaABfADUAMQAyAF8AYwBoADkALgBqAHAAZwAsAGQAZQBsAGkAdgBlAHIAeQBtAGUAdABoAG8AZAA9AGEAZABhAHAAdABpAHYAZQBzAHQAcgBlAGEAbQBpAG4AZwAsAGEAdQB0AG8AcABsAGEAeQA9AGYAYQBsAHMAZQAsAGUAbgB0AHIAeQBpAGQAPQA0ADMANwA5ADQANQA4ADEAMwBkAGIAYQA0ADEAMABhAGIAYgAwAGMAOQBmADAAMwAwADEANwBiADkAYQA0AGIAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAGAAAADQALgAwAC4ANQAwADQAMAAxAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAA=" width="512" type="application/x-silverlight-2" height="288"><param name="minRuntimeVersion" value="4.0.50401.0" /><param name="source" value="https://channel9.msdn.com/scripts/Channel9.xap?v=1.5" /><param name="initParams" value="mediaurl=https://smooth.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch.ism/manifest,thumbnail=https://media.ch9.ms/ch9/9a4b/43794581-3dba-410a-bb0c-9f03017b9a4b/AppFabricTVCTPLaunch_512_ch9.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=437945813dba410abb0c9f03017b9a4b" /></object></p>
<p>Don&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!</p>
<p><a href="https://www.microsoft.com/windowsazure/free-trial/" target="_blank"><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="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/4034.clip_image001_5B0E0C9E.png" original-url="https://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" /></a></p>
<p>The AppFabric Team.</p>]]></content:encoded>
    </item>
    <item>
      <title>Introducing Windows Azure AppFabric Applications</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/introducing-windows-azure-appfabric-applications</link>
      <pubDate>Mon, 20 Jun 2011 20:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/20/introducing-windows-azure-appfabric-applications/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]Posted by Karandeep Anand
&nbsp;
Last...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>Posted by Karandeep Anand</p>
<p>&nbsp;</p>
<p>Last October, at the PDC 2010 keynote, we shared our <a href="https://channel9.msdn.com/Events/PDC/PDC10/CS04" target="_blank">vision</a> 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 <a href="https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS311" target="_blank">announced</a> that we&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 <a href="https://blogs.msdn.com/b/appfabric/archive/2011/06/20/announcing-the-windows-azure-appfabric-june-ctp.aspx" target="_blank">here</a>, the June CTP of AppFabric is now live, and you can start by downloading the new <a href="https://go.microsoft.com/fwlink/?LinkID=184288" target="_blank">SDK and Developer Tools</a> and by signing up for a <b>free</b> account at the <a href="https://portal.appfabriclabs.com/" target="_blank">AppFabric Labs portal</a>. Now we&rsquo;ll go into more detail about what we&rsquo;ve released today and how you can get started building and managing AppFabric Applications.</p>
<p><span style="font-size: x-small;" size="2"><strong>AppFabric Applications</strong></span></p>
<p>Let&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.</p>
<p>Now, let&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:</p>
<ol>
<li><b>Developer Tools</b></li>
<li><b>AppFabric Container</b></li>
<li><b>Application Manager</b></li>
</ol>
<p></p>
<p><span style="font-size: x-small;" size="2"><strong>Developer Tools</strong></span></p>
<p>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 <i>extend</i> 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 <i>composing</i> with other services through a rich service composition experience.</p>
<p>The first goal with Developer Tools is to enable developers to build cloud-ready&mdash;i.e. scalable and available&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.</p>
<p>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<sup>rd</sup> 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).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/8662.clip_image002_4462D772.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/8662.clip_5F00_image002_5F00_4462D772.jpg"><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="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/7674.clip_image002_thumb_563F6B3F.jpg" original-url="https://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" /></a></p>
<p>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.</p>
<p>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&mdash;but by building on top of the existing Windows Azure Compute Emulator that Azure developers are already familiar with.</p>
<p>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 <b>Composition Model.</b> The model then gets packaged along with the application so that the management system (the A<b>pplication Manager</b>) can use it for managing the application lifecycle easily.</p>
<p>With CTP1, our goal is to first enable the <i>end-to-end</i> developer experience built around these core principles. We&rsquo;ll build out richer experiences for each step in the development lifecycle as we go through future iterations of the tools.</p>
<p><span style="font-size: x-small;" size="2"><strong>AppFabric Container</strong></span></p>
<p>The <b>AppFabric Container</b> 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&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.</p>
<p>In addition, the AppFabric Container enables rich hosting scenarios &amp; configurations for both WCF &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&rsquo;ll go in to a lot more detail about building WCF &amp; WF applications to run in Windows Azure using AppFabric Container in future blog posts.</p>
<p><span style="font-size: x-small;" size="2"><strong>Application Manager</strong></span></p>
<p>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&mdash;configuring, deploying, controlling, monitoring, troubleshooting and scaling, <i>all as a single logical application</i>. 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&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<sup>rd</sup> party services, but is being managed as a <i>single unit</i> in the Application Manager.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/1452.clip_image004_3EA7939D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-45-09-metablogapi/1452.clip_5F00_image004_5F00_3EA7939D.jpg"><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="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/6254.clip_image004_thumb_2296D4B2.jpg" original-url="https://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" /></a></p>
<p>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 <b>configure</b> your entire application and all its parts, including detailed WCF configuration settings&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 <b>deploy</b> 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.</p>
<p>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.</p>
<p>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&rsquo;ll notice a rich set of metrics being automatically generated and collected for your application&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.</p>
<p>On similar lines, we&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.</p>
<p>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&mdash;the application automatically and elastically gets scaled out without any downtime!</p>
<p>While I can go on for a while describing all the cool and powerful things you can do with the CTP1 bits, I&rsquo;ll wrap up this blog post by saying that we are super excited to share this technology preview and hope that you&rsquo;ll be as excited to try them out and discover all the things we&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 <a href="https://portal.appfabriclabs.com/" target="_blank">sign-up</a> quickly for your free account.</p>
<p>We have an exciting roadmap ahead, but we&rsquo;ll get to that in future blog posts &ndash; for now, we&rsquo;d love to <a href="https://social.msdn.microsoft.com/Forums/en-US/appfabricctp" target="_blank">hear</a> what you have to say about your experience with CTP1. Watch out for a series of blog posts in the coming weeks that&rsquo;ll go in to a lot more detail about the various scenarios, features and capabilities across the 3 key parts we&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 <a href="https://msdn.microsoft.com/en-us/library/hh182177.aspx" target="_blank">MSDN</a>. You can also watch this <a href="https://channel9.msdn.com/Shows/AppFabric-tv/AppFabrictv-Announcing-the-Windows-Azure-AppFabric-June-CTP" target="_blank">short video</a> on Channel 9 that Ron Jacobs and I did to give you a quick overview and demo of the things we&rsquo;ve discussed above.</p>
<p>Welcome to a new era of building and managing rich cloud applications on Windows Azure!</p>
<p><a href="https://www.microsoft.com/windowsazure/free-trial/" target="_blank"><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="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/45/09/metablogapi/5315.clip_image005_259A773D.png" original-url="https://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" /></a></p>
<p>Karandeep Anand for the AppFabric Team</p>]]></content:encoded>
    </item>
    <item>
      <title>Considerations When Building Database Schema with Federations in SQL Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/considerations-when-building-database-schema-with-federations-in-sql-azure</link>
      <pubDate>Mon, 20 Jun 2011 10:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/20/considerations-when-building-database-schema-with-federations-in-sql-azure/</guid>
      <description><![CDATA[[This article was contributed by the SQL Azure team.]Cihan Biyikoglu has written an interesting...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the SQL Azure team.]</p><p>Cihan Biyikoglu has written an interesting article on database schema when working with Federations.</p>
<p>&ldquo;With federations, you take parts of your schema and scale it out. With each federation in the root database, a subset of objects are scaled-out. You may create multiple federations because distribution characteristics and scalability requirements may vary across sets of tables. For example, with an ecommerce app, you may both have a large customer-orders set of tables and a very large product catalog that may have completely different distribution requirements.&rdquo;</p>
<p><a href="https://blogs.msdn.com/b/cbiyikoglu/archive/2011/04/16/schema-constraints-to-consider-with-federations-in-sql-azure.aspx">To learn more, click here for the article from Cihan Biyikoglu&rsquo;s blog, &ldquo;Considerations When Building Database Schema with Federations in SQL Azure.</a></p>
<p>-Steve</p>
<p></p>
<p>&nbsp;</p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Updates to Windows Azure AppFabric SDK available for download</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/updates-to-windows-azure-appfabric-sdk-available-for-download</link>
      <pubDate>Fri, 17 Jun 2011 04:57:00 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/17/updates-to-windows-azure-appfabric-sdk-available-for-download/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]An update to the Windows Azure AppFabric SDK is...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>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 <a href="https://go.microsoft.com/fwlink/?LinkId=221455" target="_blank">here</a>.</p>
<p>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 <a href="https://www.microsoft.com/downloads/en/details.aspx?FamilyID=39856a03-1490-4283-908f-c8bf0bfad8a5&amp;displaylang=en" target="_blank">here</a>.</p>
<p><span style="text-decoration: underline;">Note:</span> This is the production environment SDK, not the SDK used to develop for the LABS/Previews environment.</p>
<p>As always, feel free to ask questions and provide us with feedback on the <a href="https://social.msdn.microsoft.com/Forums/en-US/category/windowsazureplatform" target="_blank">Windows Azure Platform Forums</a>.</p>
<p></p>
<p></p>
<p><br />If you haven&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!</p>
<p><a href="https://www.microsoft.com/en-us/appfabric/azure/purchase.aspx"><img alt="" src="data:image/png;base64,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" /></a></p>
<p>The AppFabric Team</p>]]></content:encoded>
    </item>
    <item>
      <title>How To Load WF4 Workflow Services from a Database with IIS/AppFabric</title>
      <link>https://docs.microsoft.com/archive/blogs/appfabricannounce/how-to-load-wf4-workflow-services-from-a-database-with-iisappfabric</link>
      <pubDate>Thu, 16 Jun 2011 07:05:26 GMT</pubDate>
      <dc:creator><![CDATA[Windows Azure Team]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/appfabricannounce/2011/06/16/how-to-load-wf4-workflow-services-from-a-database-with-iisappfabric/</guid>
      <description><![CDATA[[This article was contributed by the AppFabric team.]Cross Post from Ron Jacobs blog  This morning I...]]></description>
      <content:encoded><![CDATA[<p>[This article was contributed by the AppFabric team.]</p><p>Cross Post from <a href="https://blogs.msdn.com/b/rjacobs/">Ron Jacobs blog</a></p>  <p>This morning I saw a message post on the .NET 4 Windows Workflow Foundation Forum titled <a href="https://social.msdn.microsoft.com/Forums/en/wfprerelease/thread/cd47355a-abcc-42ab-92e6-d6d8850ceaa4">Load XAMLX from database</a>.&#160; I’ve been asked this question many times.</p>  <blockquote>   <p><strong><em>How can I store my Workflow Service definitions (xamlx files) in a database with IIS and AppFabric?</em></strong></p> </blockquote>  <p>Today I decided to create a sample to answer this question.&#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.</p>  <p>Download <a href="https://code.msdn.microsoft.com/Windows-Workflow-8697594e">Windows Workflow Foundation (WF4) - Workflow Service Repository Example</a></p>  <h3>AppFabric.tv - How To Build Workflow Services with a Database Repository</h3>  <p><video controls poster="https://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_512_ch9.jpg"><source src="https://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_low_ch9.mp4" /><object type="application/x-silverlight-2" data="data:application/x-silverlight-2," width="512" height="288"><param name="minRuntimeVersion" value="4.0.50401.0" /><param name="source" value="https://channel9.msdn.com/scripts/Channel9.xap?v=1.5" /><param name="initParams" value="mediaurl=https://smooth.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository.ism/manifest,thumbnail=https://media.ch9.ms/ch9/cfba/7bafa9a3-9f33-4965-b4e1-9f03016acfba/AppFabricWorkflowRepository_512_ch9.jpg,deliverymethod=adaptivestreaming,autoplay=false,entryid=7bafa9a39f334965b4e19f03016acfba" /></object></video></p>  <h2>Step 1: Create a Virtual Path Provider</h2>  <p>Implementing a <a href="https://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx">VirtualPathProvider</a> is fairly simple.&#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.&#160; You will need a way to determine if you want to provide virtual content.&#160; For my example I created a folder in the web site called XAML.&#160; This folder is empty but I found that it has to be there or the WCF Activation code will throw an exception.</p>  <p>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 <strong>https://localhost:34372/xaml/Service1.xamlx</strong></p>  <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: &#39;Courier New&#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">   <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: &#39;Courier New&#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">     <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> WorkflowVirtualPathProvider : VirtualPathProvider</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">{</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #cc6633">#region</span> Public Methods</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> <span style="color: #0000ff">bool</span> FileExists(<span style="color: #0000ff">string</span> virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> IsPathVirtual(virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    ? GetWorkflowFile(virtualPath).Exists</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    : <span style="color: #0000ff">this</span>.Previous.FileExists(virtualPath);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> VirtualFile GetFile(<span style="color: #0000ff">string</span> virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> IsPathVirtual(virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    ? GetWorkflowFile(virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    : <span style="color: #0000ff">this</span>.Previous.GetFile(virtualPath);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #cc6633">#region</span> Methods</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> WorkflowVirtualFile GetWorkflowFile(<span style="color: #0000ff">string</span> path)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> WorkflowVirtualFile(path);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #008000">// TODO (01.1) Create a folder that will be used for your virtual path provider</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #008000">// Note: System.ServiceModel.Activation code will throw an exception if there is not a real folder with this name</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">bool</span> IsPathVirtual(<span style="color: #0000ff">string</span> virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        var checkPath = VirtualPathUtility.ToAppRelative(virtualPath);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">return</span> checkPath.StartsWith(<span style="color: #006080">&quot;~/xaml&quot;</span>, StringComparison.InvariantCultureIgnoreCase);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">}</pre>
<!--CRLF--></div>
</div>

<h3></h3>

<h2>Step 2: Create a VirtualFile class</h2>

<p>The VirtualFile class has to load content from somewhere (in this case a database) and then return a stream to ASP.NET.&#160; Performance is a concern so you should definitely make use of caching when doing this.</p>

<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: &#39;Courier New&#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">
  <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: &#39;Courier New&#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">
    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> WorkflowVirtualFile : VirtualFile</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#region</span> Constants and Fields</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">private</span> Workflow workflow;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#region</span> Constructors and Destructors</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> WorkflowVirtualFile(<span style="color: #0000ff">string</span> virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            : <span style="color: #0000ff">base</span>(virtualPath)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.LoadWorkflow();</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#region</span> Properties</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">bool</span> Exists</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            get { <span style="color: #0000ff">return</span> <span style="color: #0000ff">this</span>.workflow != <span style="color: #0000ff">null</span>; }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#region</span> Public Methods</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> LoadWorkflow()</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            var id = Path.GetFileNameWithoutExtension(<span style="color: #0000ff">this</span>.VirtualPath);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (<span style="color: #0000ff">string</span>.IsNullOrWhiteSpace(id))</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> InvalidOperationException(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;Cannot find workflow definition for {0}&quot;</span>, id));</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #008000">// TODO (02.1) Check the Cache for workflow definition</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">this</span>.workflow = (Workflow)HostingEnvironment.Cache[id];</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.workflow == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #008000">// TODO (02.2) Load it from the database</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #008000">// Note: I'm using EntityFramework 4.1 with a Code First approach</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                var db = <span style="color: #0000ff">new</span> WorkflowDBContext();</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">this</span>.workflow = db.Workflows.Find(id);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.workflow == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                    <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> InvalidOperationException(<span style="color: #0000ff">string</span>.Format(<span style="color: #006080">&quot;Cannot find workflow definition for {0}&quot;</span>, id));</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #008000">// TODO (02.3) Save it in the cache</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                HostingEnvironment.Cache[id] = <span style="color: #0000ff">this</span>.workflow;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">/// &lt;summary&gt;</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">///   When overridden in a derived class, returns a read-only stream to the virtual resource.</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">/// &lt;/summary&gt;</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">/// &lt;returns&gt;</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">///   A read-only stream to the virtual file.</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #008000">/// &lt;/returns&gt;</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> Stream Open()</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.workflow == <span style="color: #0000ff">null</span>)</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            {</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">                <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> InvalidOperationException(<span style="color: #006080">&quot;Workflow definition is null&quot;</span>);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #008000">// TODO (02.4) Return a stream with the workflow definition</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            var stream = <span style="color: #0000ff">new</span> MemoryStream(<span style="color: #0000ff">this</span>.workflow.WorkflowDefinition.Length);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            var writer = <span style="color: #0000ff">new</span> StreamWriter(stream);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            writer.Write(<span style="color: #0000ff">this</span>.workflow.WorkflowDefinition);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            writer.Flush();</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            stream.Seek(0, SeekOrigin.Begin);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">            <span style="color: #0000ff">return</span> stream;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        }</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">        <span style="color: #cc6633">#endregion</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    }</pre>
<!--CRLF--></div>
</div>

<h2>Step 3: Register the Virtual Path Provider</h2>

<p>Finally you register the provider and you will be on your way.</p>

<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: &#39;Courier New&#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">
  <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: &#39;Courier New&#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">
    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> Application_Start()</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">{</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    Database.SetInitializer(<span style="color: #0000ff">new</span> WorkflowInitializer());</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    AreaRegistration.RegisterAllAreas();</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    RegisterGlobalFilters(GlobalFilters.Filters);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    RegisterRoutes(RouteTable.Routes);</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">&#160;</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    <span style="color: #008000">// TODO (03) Register the Virtual Path Provider</span></pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">    HostingEnvironment.RegisterVirtualPathProvider(<span style="color: #0000ff">new</span> WorkflowVirtualPathProvider());</pre>
<!--CRLF-->

    <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: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">}</pre>
<!--CRLF--></div>
</div>

<p>Ron Jacobs 
  <br /><a href="https://blogs.msdn.com/rjacobs">https://blogs.msdn.com/rjacobs</a> 

  <br />Twitter: @ronljacobs <a href="https://twitter.com/ronljacobs">https://twitter.com/ronljacobs</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>