<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.biztalkgurus.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Workflow</title><link>http://www.biztalkgurus.com/windows_workflow/default.aspx</link><description>This is the top level group for Microsoft Windows Workflow Foundation.  Find blogs, samples, videos, and learning resources for various versions of workflow including 3.0, 3.5, and 4.0 here.</description><dc:language /><generator>Telligent Community 5.6.582.12783 (Build: 5.6.582.12783)</generator><item><title>Blog Post: Side by Side Versioning with a Web-Hosted Xamlx Workflow Service video and download on Code Gallery</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/24/side-by-side-versioning-with-a-web-hosted-xamlx-workflow-service-video-and-download-on-code-gallery.aspx</link><pubDate>Fri, 24 May 2013 21:45:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37535</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;I have created a video walkthrough of implementing side-by-side versioning with a web-hosted xamlx workflow service here:&lt;/p&gt;  &lt;p&gt;&lt;a title="Side by Side Versioning with a Web-Hosted Xamlx Workflow Service" href="http://aka.ms/WFSH_Xamlx_SxS"&gt;Side by Side Versioning with a Web-Hosted Xamlx Workflow Service&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This project provides a demo of implementing side-by-side versioning with a web-hosted xamlx workflow service, as described in the accompanying MSDN topic &lt;a title="Side by Side Versioning in WorkflowServiceHost" href="http://msdn.microsoft.com/en-us/library/hh314045.aspx"&gt; Side by Side Versioning in WorkflowServiceHost&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/system.servicemodel.activities.workflowservicehost.aspx"&gt;WorkflowServiceHost&lt;/a&gt; side-by-side versioning introduced in .NET Framework 4.5 provides the capability to host multiple versions of a workflow service on a single endpoint. The side-by-side functionality provided allows a workflow service to be configured so that new instances of the workflow service are created using the new workflow definition, while running instances complete using the existing definition. It is very easy to configure and implement, and this code gallery project provides a running sample and a video walkthrough that demonstrates how to do it.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10421272" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: Steve Danielson</description></item><item><title>Blog Post: Announcing the release of AMQP support with Windows Azure Service Bus</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/23/announcing-the-release-of-amqp-support-with-windows-azure-service-bus.aspx</link><pubDate>Thu, 23 May 2013 14:42:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37529</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;For the past five years, Microsoft has been working with a diverse group of companies to develop the Advanced Message Queuing Protocol (AMQP) standard. The group of 20+ companies consisted of tech vendors, including Red Hat and VMware, and enterprises like JPMorgan Chase and Credit Suisse. The goal has been to build an open, wire-level protocol standard for messaging that enables easy interoperability between different vendor products. Back in October 2012, the OASIS standards organization &lt;a href="http://blogs.msdn.com/b/interoperability/archive/2012/11/05/advance-message-queuing-protocol-amqp-1-0-approved-as-an-oasis-standard.aspx"&gt;announced the approval of AMQP 1.0 as an OASIS Standard&lt;/a&gt; and, on the same day, we released a preview implementation of it with Windows Azure Service Bus. &lt;/p&gt;  &lt;p&gt;Today, I’m pleased to announce that AMQP 1.0 support in Windows Azure Service Bus has been released as a general availability (GA) feature – and it is ready for production use, and backed by an enterprise SLA.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Interoperable Messaging&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;This release is a big deal. With support for AMQP 1.0, you can now use Windows Azure Service Bus to build applications using a variety of messaging libraries written using different languages and running on different operating systems – that can now all communicate using an efficient, binary, wire-level protocol. &lt;/p&gt;  &lt;p&gt;Because AMQP 1.0 defines a portable data representation, it means that a message sent to Service Bus from a .NET program can be read from a Java program or Python/Ruby/PHP script without losing any of the structure or content of the message. For Java, the standard Java Message Service (JMS) API is supported so it’s straightforward to port an existing Java application to Service Bus from any another JMS provider.&lt;/p&gt;  &lt;p&gt;The end result is really powerful middleware that can be used to build distributed systems, and glue together applications that span on-premises/cloud environments or run across multiple cloud providers.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Walkthrough of How to Build a Pub/Sub Solution using AMQP&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;To highlight how easy it is to use this new messaging support, I’m going to walkthrough how to create a simple .NET console app that sends messages using a publish/subscribe messaging pattern to receiver apps written in Java, Python and PHP.&amp;#160; The Windows Azure Service Bus now provides all of the pub/sub messaging support necessary to facilitate this using the open AMQP protocol and existing messaging frameworks.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1BA7D32D.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7DC94F2B.png" width="689" height="326" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The .NET sender app will post the messages to a Service Bus “Topic” – which is a durable messaging intermediary.&amp;#160; Unlike Queues, where each message to a Queue is processed by a single consumer app, Topics provide a &lt;strong&gt;one-to-many&lt;/strong&gt; form of communication using a publish/subscribe pattern.&amp;#160; It is possible to register multiple subscriptions to a topic – and when a message is sent to the topic, it is then made available to each subscription to handle/process independently.&lt;/p&gt;  &lt;p&gt;You can think of each subscription as a virtual durable queue that receives copies of the messages that were sent to the topic. You can then optionally register filter rules for a topic on a per-subscription basis, which allows you to filter/restrict which messages to a topic are received by which topic subscriptions.&amp;#160; This enable you to scale to process a very large number of messages across a very large number of users and applications.&lt;/p&gt;  &lt;p&gt;&lt;img alt="Topic Concepts" src="http://www.windowsazure.com/media/devcenter/dotnet/sb-topics-01.png" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For this scenario we are going to have the .NET console app post messages to a “scottmessages” topic, and then setup separate subscriptions for three app listeners – one written in Java, Python and PHP – to receive and process the messages.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Step 1: Create a Service Bus Topic and 3 Subscriptions&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Our first step will be to create a Service Bus Topic using the Windows Azure portal.&amp;#160; &lt;/p&gt;  &lt;p&gt;We’ll create a Topic named “scottmessages” in a “scottgu-ns” namespace.&amp;#160; The Windows Azure Management Portal makes this easy to do – just click the New button and navigate to the App Services-&amp;gt;Service Bus-&amp;gt;Topic-&amp;gt;Quick Create option (you can also create this programmatically and from the command-line):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1901A82D.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7B23242B.png" width="859" height="537" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once the “scottmessages” topic is created, we can drill into it to see a familiar Windows Azure dashboard monitoring view of it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6B16E625.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3846DFB1.png" width="842" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’ll then create three subscriptions for the Topic – one for each of our app listeners.&amp;#160; We’ll name these “java”, “python”, and “php” to correspond to the language that each app is written in (note: we could name them whatever we wanted to – I am using these names just to make it clearer which maps to which). We can do this programmatically, or by clicking the “Create Subscription” button in the portal command bar.&amp;#160; This will launch a dialog that allows us to name the subscription we want to create:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_33642BF5.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_55BBC16E.png" width="651" height="470" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The second screen of the dialog allows us to set custom subscription properties like the default message time to live (how long it will remain queued before being deleted), lock and session settings, etc:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_312A33EA.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1E753A33.png" width="646" height="465" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the ok button will create a subscription for our Topic.&amp;#160; We’ll can then repeat this step to create two more subscriptions so that we have all three we want:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_40CCCFAC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_002A833D.png" width="865" height="319" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After we’ve done this, whenever a message is posted to the “scottmessages” topic it will be durably queued for each subscription.&amp;#160; Durably queued means that a consumer app doesn’t need to be actively listening on the subscription at the time the message is posted.&amp;#160; The message will be automatically queued up for the subscriber app to process whenever they connect later.&amp;#160; This enables a very robust, loosely coupled application architecture that allows you to scale the processing of a large number of messages across a very large number of users and applications.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Step 2: Writing the .NET Sender App&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Now that we have the Service Bus Topic and Subscriptions created, we’ll write a simple .NET program to send messages to the Topic. &lt;/p&gt;  &lt;p&gt;The AMQP support is Service Bus is available in the latest version of the Service Bus .NET client library which you can retrieve via NuGet - &lt;a href="http://nuget.org/packages/WindowsAzure.ServiceBus/"&gt;http://nuget.org/packages/WindowsAzure.ServiceBus/&lt;/a&gt;. Version 2.1.0 or later is required.&amp;#160; Just type “Install Package WindowsAzure.ServiceBus” to download and add it to your .NET application.&lt;/p&gt;  &lt;p&gt;The code below is a simple .NET console application that prompts users of the console app to type messages, and then the app uses the Service Bus .NET API to post each message the user types to the “scottmessages” Service Bus Topic we created above:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;  &lt;span class="kwrd"&gt;using&lt;/span&gt; System.Configuration;  &lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.ServiceBus.Messaging;    &lt;span class="kwrd"&gt;namespace&lt;/span&gt; SendToScott  {      &lt;span class="kwrd"&gt;class&lt;/span&gt; Program      {          &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)          {              &lt;span class="kwrd"&gt;string&lt;/span&gt; connectionString = ConfigurationManager.AppSettings[&lt;span class="str"&gt;&amp;quot;Microsoft.ServiceBus.ConnectionString&amp;quot;&lt;/span&gt;];                TopicClient topicClient = TopicClient.CreateFromConnectionString(connectionString, &lt;span class="str"&gt;&amp;quot;scottmessages&amp;quot;&lt;/span&gt;);                Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Type messages you wish to post to the Topic:&amp;quot;&lt;/span&gt;);                &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)              {                  Console.Write(&lt;span class="str"&gt;&amp;quot;&amp;gt; &amp;quot;&lt;/span&gt;);                  &lt;span class="kwrd"&gt;string&lt;/span&gt; messageText = Console.ReadLine();                    topicClient.Send(&lt;span class="kwrd"&gt;new&lt;/span&gt; BrokeredMessage(messageText));              }          }      }  }&lt;/pre&gt;      &lt;p&gt;The above code uses NET’s ConnectionManager class to pull in configuration settings from an app.config file. I’m using this approach to retrieve the connection string to our Service Bus Topic (and to avoid hard coding it into the code).&amp;#160; Here’s the App.config file I’m using to specify this:&lt;/p&gt;    &lt;div style="border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;border-bottom:windowtext 1pt solid;padding-bottom:1pt;padding-top:1pt;padding-left:4pt;border-left:windowtext 1pt solid;padding-right:28pt;"&gt;    &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;xml&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;version&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;1.0&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;encoding&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;utf-8&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; ?&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;startup&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;supportedRuntime&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;version&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;v4.0&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;sku&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;.NETFramework,Version=v4.5&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;startup&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;appSettings&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;add&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;key&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;Microsoft.ServiceBus.ConnectionString&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:red;"&gt;value&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;Endpoint=sb://scottgu-ns.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=sSDdaewGUo3/wsaewtjhELlCi1y3SRwjFMX01tz2c/AXw=;TransportType=Amqp&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;appSettings&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;line-height:normal;padding-right:0in;"&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;  &lt;/div&gt;    &lt;p&gt;&lt;em&gt;Note: You can retrieve the connection string of a Service Bus Topic from the Windows Azure Portal by selecting the Topic and then clicking the “Access Key” button in the command bar at the bottom of the portal.&amp;#160; Note that to configure the .NET client library to use AMQP, I appended “;TransportType=Amqp” to the connection string.&amp;#160; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;u&gt;Running the Console App&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;Now let’s run the .NET console app. Hitting F5 produces a console app and we can now type messages to send to the Topic. Here’s some sample input:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1B62DC3E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1D9F64FA.png" width="677" height="199" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Each message entered above was posted to our Service Bus Topic – which will in turn durably queue a copy of the message for each of the three Subscriptions we’ve setup to process.&lt;/p&gt;    &lt;h2&gt;&lt;u&gt;Step 3: Writing a Java App Listener&lt;/u&gt;&lt;/h2&gt;    &lt;p&gt;Now let’s write a java app that will connect to one of the Subscriptions and process the messages.&lt;/p&gt;    &lt;p&gt;The standard API for messaging in Java is JMS - the Java Message Service. JMS doesn’t specify anything about the underlying transport so different JMS products use different protocols under the covers to talk to their respective messaging brokers. I’m going to use a standard JMS Provider from Apache that uses AMQP 1.0 as the underlying protocol. Using this library, Windows Azure Service Bus becomes an open standards JMS Provider! &lt;/p&gt;    &lt;p&gt;You can obtain the Apache AMQP provider at &lt;a href="http://people.apache.org/~rgodfrey/qpid-java-amqp-1-0-client-jms.html"&gt;http://people.apache.org/~rgodfrey/qpid-java-amqp-1-0-client-jms.html&lt;/a&gt;. The following four JAR files from the distribution archive need to be added to your Java CLASSPATH when building and running applications that use it:&lt;/p&gt;    &lt;ul&gt;    &lt;li&gt;geronimo-jms_1.1_spec-1.0.jar &lt;/li&gt;      &lt;li&gt;qpid-amqp-1-0-client-[version].jar &lt;/li&gt;      &lt;li&gt;qpid-amqp-1-0-client-jms-[version].jar &lt;/li&gt;      &lt;li&gt;qpid-amqp-1-0-common-[version].jar &lt;/li&gt;  &lt;/ul&gt;    &lt;p&gt;We can then write the following Java code which uses the standard JMS messaging API to connect to our Service Bus subscription and process messages in it:&lt;/p&gt;    &lt;div style="border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;border-bottom:windowtext 1pt solid;padding-bottom:1pt;padding-top:1pt;padding-left:4pt;border-left:windowtext 1pt solid;padding-right:4pt;"&gt;    &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;// ReceiveScottsMessages.java &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;import javax.jms.*; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;import javax.naming.Context; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;import javax.naming.InitialContext; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;import java.util.Hashtable; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;public class ReceiveScottsMessages implements MessageListener { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;public static void main(String[] args) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt;(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;quot;org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;env.put(Context.PROVIDER_URL, &amp;quot;servicebus.properties&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Context context = new InitialContext(env); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ConnectionFactory cf = (ConnectionFactory) context.lookup(&amp;quot;SBCF&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Topic topic = (Topic) context.lookup(&amp;quot;EntityName&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Connection connection = cf.createConnection(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;TopicSubscriber subscriber = session.createDurableSubscriber(topic, &amp;quot;java&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;subscriber.setMessageListener(new ReceiveScottsMessages()); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;connection.start(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.out.println(&amp;quot;Receiving messages. Press enter to stop.&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.in.read(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.out.println(&amp;quot;Shutting down.&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;connection.stop(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;subscriber.close(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;session.close(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;connection.close(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} catch (Exception e) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.err.println(&amp;quot;Caught exception. Exiting.&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.exit(1); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;@Override &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;public void onMessage(Message message) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.out.println(&amp;quot;Message From Scott &amp;gt; &amp;quot; + ((TextMessage) message).getText()); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} catch (JMSException e) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;System.err.println(&amp;quot;Caught exception receiving message: &amp;quot; + e); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;  &lt;/div&gt;    &lt;p&gt;Note that the Apache JMS provider uses a simple file based JNDI provider to configure the JMS “Administered Objects”, including the connection details and the logical to physical name mappings of the messaging entities. Here’s the servicebus.properties file I’m using to embed the connection string details to our Windows Azure Service Bus Topic:&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;connectionfactory.SBCF = amqps://owner:sSDdaYGUo3%2FwpewtjhELlCi1y4SSwjFGX01tz2c%2FAXw%3D@scottgu-ns.servicebus.windows.net&lt;/p&gt;      &lt;p&gt;topic.EntityName = scottmessages&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;This properties file defines a ConnectionFactory called “SBCF” which contains the constituent parts from the Service Bus connection string. The format is as follows:&lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;amqps://[username]:[password]@[namespace].servicebus.windows.net&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;In the format above, the [username] corresponds to the issuer name, [password] is a URL-encoded form of the issuer key. You must URL-encode the issuer key manually. A useful URL-encoding utility is available at &lt;a href="http://www.w3schools.com/tags/ref_urlencode.asp"&gt;http://www.w3schools.com/tags/ref_urlencode.asp&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;u&gt;Running the Java App&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;When we run this Java app it will connect to the “Java” subscription on our Service Bus Topic and produce the output below:&lt;/p&gt;    &lt;div style="border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;border-bottom:windowtext 1pt solid;padding-bottom:1pt;padding-top:1pt;padding-left:4pt;border-left:windowtext 1pt solid;padding-right:4pt;"&gt;    &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;Receiving messages. Press enter to stop. &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;Message From Scott &amp;gt; Red Shirts are cool&lt;/span&gt;&lt;/div&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;Message From Scott&lt;/span&gt; &amp;gt; Cross-platform messaging is so simple with AMQP and Service Bus &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;Message From Scott&lt;/span&gt; &amp;gt; Windows Azure Rocks!&lt;/span&gt;&lt;/div&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;Shutting down. &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;  &lt;/div&gt;    &lt;p&gt;Note how the messages we sent to the Topic using .NET were seamlessly consumed from the Java app!&lt;/p&gt;    &lt;p&gt;Popular Java frameworks like Spring and JEE use JMS to integrate different messaging systems – you can now write components using these frameworks and have the messaging system powered by the Windows Service Bus, and seamlessly interoperate and integrate with other languages and frameworks as well.&lt;/p&gt;    &lt;h2&gt;&lt;u&gt;Step 4: Creating a Python App Listener&lt;/u&gt;&lt;/h2&gt;    &lt;p&gt;Let’s now write a Python app that will connect to another of the Subscriptions and process the messages.&amp;#160; We’ll host this Python app in a Linux VM.&lt;/p&gt;    &lt;p&gt;We can create the Linux VM very easily using Windows Azure.&amp;#160; Just select the New command in the portal and use the Compute-&amp;gt;Virtual Machine-&amp;gt;Quick Create option to create a CentOS virtual machine:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3224B478.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_463DD101.png" width="815" height="372" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Once the VM is provisioned we can SSH into it to configure and setup.&lt;/p&gt;    &lt;p&gt;&lt;u&gt;Installing the Proton Library on our Linux VM&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;For both the Python and PHP apps, we’ll use the Proton client libraries from Apache which are available for download from &lt;a href="http://qpid.apache.org/proton/download.html"&gt;http://qpid.apache.org/proton/download.html&lt;/a&gt;. The Proton library provides a AMQP 1.0 compliant library that we’ll be able to use to communicate with the Windows Azure Service Bus.&amp;#160; The README file in the Proton distribution details the steps required to install the dependencies and build Proton. Here’s a summary of the steps I took using the command-line of the Linux VM:&lt;/p&gt;    &lt;p&gt;1) Edit the yum config file (/etc/yum.conf) and comment out the exclusion for updates to kernel headers (# exclude=kernel*). This is necessary to install the gcc compiler&lt;/p&gt;    &lt;p&gt;2) Install the various pre-requisite packages:&lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;&amp;gt;&amp;gt; yum install gcc cmake libuuid-devel&lt;/p&gt;      &lt;p&gt;&amp;gt;&amp;gt; yum install openssl-devel&lt;/p&gt;      &lt;p&gt;&amp;gt;&amp;gt; yum install swig python-devel ruby-devel php-devel java-1.6.0-openjdk&lt;/p&gt;      &lt;p&gt;&amp;gt;&amp;gt; yum install epydoc&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;3) Download the Proton library &lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;&amp;gt;&amp;gt; wget &lt;a title="http://www.bizdirusa.com/mirrors/apache/qpid/proton/0.4/qpid-proton-0.4.tar.gz" href="http://www.bizdirusa.com/mirrors/apache/qpid/proton/0.4/qpid-proton-0.4.tar.gz"&gt;http://www.bizdirusa.com/mirrors/apache/qpid/proton/0.4/qpid-proton-0.4.tar.gz&lt;/a&gt;&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;4) Extract the Proton code from the distribution archive &lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;&amp;gt;&amp;gt; tar -xvf qpid-proton-0.4.tar.gz&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;5) Build and install the code using the following steps, taken from the README file&lt;/p&gt;    &lt;blockquote&gt;    &lt;p&gt;From the directory where you found this README file:&lt;/p&gt;      &lt;p&gt;mkdir build&lt;/p&gt;      &lt;p&gt;cd build&lt;/p&gt;      &lt;p&gt;# Set the install prefix. You may need to adjust depending on your&lt;/p&gt;      &lt;p&gt;# system.&lt;/p&gt;      &lt;p&gt;cmake -DCMAKE_INSTALL_PREFIX=/usr ..&lt;/p&gt;      &lt;p&gt;# Omit the docs target if you do not wish to build or install&lt;/p&gt;      &lt;p&gt;# documentation.&lt;/p&gt;      &lt;p&gt;make all docs&lt;/p&gt;      &lt;p&gt;# Note that this step will require root privileges.&lt;/p&gt;      &lt;p&gt;sudo make install&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;Following all this, Proton will be installed on the machine and ready for you to use. Here’s the Python code I wrote to receive messages from the “python” subscription on our Windows Azure Service Bus Topic:&lt;/p&gt;    &lt;div style="border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;border-bottom:windowtext 1pt solid;padding-bottom:1pt;padding-top:1pt;padding-left:4pt;border-left:windowtext 1pt solid;padding-right:4pt;"&gt;    &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;import sys &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;from proton import Messenger, Message &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;broker = &amp;quot;amqps://owner:sSDdaYHUo3/wpewtjhEDlCi1y6SRwjFMX01tz2c/AXw=@scottgu-ns.servicebus.windows.net&amp;quot; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;entityName = &amp;quot;scottmessages/Subscriptions/python&amp;quot; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;messenger = Messenger() &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;messenger.subscribe(&amp;quot;%s/%s&amp;quot; % (broker, entityName)) &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;messenger.start() &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;msg = Message() &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;while True: &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;messenger.recv(10) &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;while messenger.incoming: &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try: &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;messenger.get(msg) &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;except Exception, e: &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span&gt;&amp;#160;&lt;/span&gt;print e &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;else: &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;print &amp;quot;Message From Scott &amp;gt; %s&amp;quot; % msg.body &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;messenger.stop() &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;print &amp;quot;Done&amp;quot; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;  &lt;/div&gt;    &lt;p&gt;A couple of things to note above:&lt;/p&gt;    &lt;ul&gt;    &lt;li&gt;The connection string for the broker is of the form       &lt;br /&gt;amqps://[issuer-name]:[issuer-key]@[namespace].servicebus.windows.net &lt;/li&gt;      &lt;li&gt;The entityName that we’re receiving messages from is of the form       &lt;br /&gt;[topic-name]/Subscriptions/[subscription-name]. &lt;/li&gt;  &lt;/ul&gt;    &lt;p&gt;And now when we run the above python script (from our Linux VM) we will connect to the Windows Azure Service Bus using AMQP and see the messages we published from our .NET app:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3D50CF73.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_11A00577.png" width="789" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;One of the really cool things about the app above is that it is running in a Linux VM using Python, and leverages an open source AMQP library that communicates with the Windows Azure Service Bus messaging system using only the open AMQP protocol. &lt;/p&gt;    &lt;h2&gt;&lt;u&gt;Step 5: Creating a PHP App Listener&lt;/u&gt;&lt;/h2&gt;    &lt;p&gt;Let’s now finish by writing a PHP app that connects to our final topic subscription and processes the messages.&amp;#160; We’ll host this PHP app in the same Linux VM we used above, and use the same Proton library that we used with Python.&amp;#160; Here is the code to use it from PHP:&lt;/p&gt;    &lt;div style="border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;border-bottom:windowtext 1pt solid;padding-bottom:1pt;padding-top:1pt;padding-left:4pt;border-left:windowtext 1pt solid;padding-right:4pt;"&gt;    &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&amp;lt;?php &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;include(&amp;quot;proton.php&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$broker = &amp;quot;amqps://owner:sSDdaGGUo3/cpewtjhELlCi1y5SRwjFMX01tz2c/AXw=@scottgu-ns.servicebus.windows.net&amp;quot;; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$entityName = &amp;quot;scottmessages/Subscriptions/php&amp;quot;; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$messenger = new Messenger(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$messenger-&amp;gt;start(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$messenger-&amp;gt;subscribe(&amp;quot;$broker/$entityName&amp;quot;); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$msg = new Message(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;while (true) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;$messenger-&amp;gt;recv(10); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;while ($messenger-&amp;gt;incoming) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;$messenger-&amp;gt;get($msg); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} catch (Exception $e) { &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;print &amp;quot;$e\n&amp;quot;; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;continue; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;print &amp;quot;Message From Scott &amp;gt; $msg-&amp;gt;body\n&amp;quot;; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;span&gt;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;} &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;&lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;$messenger-&amp;gt;stop(); &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;div style="margin-bottom:0pt;border-top:medium none;border-right:medium none;border-bottom:medium none;padding-bottom:0in;padding-top:0in;padding-left:0in;border-left:medium none;padding-right:0in;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;line-height:115%;"&gt;?&amp;gt; &lt;/span&gt;&lt;/div&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;      &lt;p&gt;&lt;/p&gt;  &lt;/div&gt;    &lt;p&gt;And here is the output when we run it from the command-line in our Linux VM:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_45D42EBD.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1A2364C1.png" width="789" height="183" /&gt;&lt;/a&gt; .&lt;/p&gt;    &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;    &lt;p&gt;The above sample demonstrates how easy it is to connect to the Windows Azure Service Bus using the open AMQP protocol and the existing AMQP 1.0 libraries already supported by various communities.&amp;#160; &lt;/p&gt;    &lt;p&gt;The new AMQP support in the Windows Azure Service Bus will make it even easier to build powerful distributed applications that can span and interoperate across multiple systems.&amp;#160; One cool thing to note with the same above is how the message has been preserved as it is exchanged between the different languages. This example used a simple text string for the body but the same is true for more complex message formats including lists and maps. This is achievable due to the portable data representation of AMQP 1.0.&amp;#160; &lt;/p&gt;    &lt;p&gt;Here are a few links to some more information on the Service Bus support for AMQP 1.0:&lt;/p&gt;    &lt;ul&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee732537.aspx"&gt;Windows Azure Service Bus&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://nuget.org/packages/WindowsAzure.ServiceBus/"&gt;Latest Service Bus .NET client library on NuGet&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://aka.ms/pgr3dp"&gt;AMQP 1.0 support in Windows Azure Service Bus&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://aka.ms/lym3vk"&gt;How to use AMQP 1.0 with the Service Bus .NET API&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj841071.aspx"&gt;Service Bus AMQP 1.0 Developer&amp;#39;s Guide&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;David Ingham’s &lt;a href="http://channel9.msdn.com/Events/Build/2012/3-033"&gt;presentation&lt;/a&gt; on Service Bus and AMQP 1.0 from the 2012 //build/ conference &lt;/li&gt;      &lt;li&gt;&lt;a href="http://people.apache.org/~rgodfrey/qpid-java-amqp-1-0-client-jms.html"&gt;Apache Qpid AMQP 1.0 JMS library&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://qpid.apache.org/proton/download.html"&gt;Apache Qpid Proton&lt;/a&gt; &lt;/li&gt;  &lt;/ul&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using all of the above features today.&amp;#160; &lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10332912" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Note to self - how to stop VS 2012 menus being all caps</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/21/note-to-self-how-to-stop-vs-2012-menus-being-all-caps.aspx</link><pubDate>Tue, 21 May 2013 20:49:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37524</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;reg ADD &amp;quot;HKCU\Software\Microsoft\VisualStudio\11.0\General&amp;quot; /v &amp;quot;SuppressUpperCaseConversion&amp;quot; /t REG_DWORD /d 1&lt;/p&gt;  &lt;p&gt;I just thought I&amp;#39;d put this here in case I ever lose the info again. :)&lt;/p&gt;  &lt;p&gt;Isn&amp;#39;t setting up a new machine fun.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10420411" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: tilovell09</description></item><item><title>Blog Post: New Workflow Manager 1.0 Getting Started Tutorial</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/16/new-workflow-manager-1-0-getting-started-tutorial.aspx</link><pubDate>Thu, 16 May 2013 14:32:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37505</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;A new Getting Started Tutorial for Workflow Manager 1.0 has been posted here:&lt;/p&gt;  &lt;p&gt;&lt;a title="Workflow Manager 1.0 Getting Started Tutorial" href="http://msdn.microsoft.com/en-us/library/windowsazure/dn217859(v=azure.10).aspx"&gt;Workflow Manager 1.0 Getting Started Tutorial&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a 3 step tutorial which covers creating a custom activity, using it in a workflow, and publishing and invoking the workflow. It covers the use of the HttpSend activity, several of the DynamicValue activities, and also includes troubleshooting steps for common issues related to authoring, publishing, and invoking workflows.&lt;/p&gt;  &lt;p&gt;There is also a video walkthrough and a download of the completed tutorial here:&lt;/p&gt;  &lt;p&gt;&lt;a title="Workflow Manager 1.0 Getting Started Tutorial Download and Video Walkthrough" href="http://aka.ms/WFMgrGettingStarted"&gt;Workflow Manager 1.0 Getting Started Tutorial Download and Video Walkthrough&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This download also includes the starter files for the tutorial.&lt;/p&gt;  &lt;p&gt;I have also started a &lt;a title="thread" href="http://social.msdn.microsoft.com/Forums/en-US/wflmgr/thread/71511cec-f5b1-43dd-bf4e-2597c03f6906"&gt;thread&lt;/a&gt; for discussing the tutorial on the &lt;a title="Workflow Manager 1.0 MSDN Community Forum" href="http://social.msdn.microsoft.com/Forums/en-US/wflmgr/threads"&gt;Workflow Manager 1.0 MSDN Community Forum&lt;/a&gt;. Please feel free to make comments or suggestions to the thread, but if you have any questions, please start a new thread for the question.&lt;/p&gt;  &lt;p&gt;Thanks,&lt;/p&gt;  &lt;p&gt;&lt;a title="Steve Danielson [Microsoft]" href="http://aka.ms/sdprofile"&gt;Steve Danielson [Microsoft]&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10419304" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: Steve Danielson</description></item><item><title>Blog Post: SharePoint 2013 PowerPivot Management Dashboard empty</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/14/sharepoint-2013-powerpivot-management-dashboard-empty.aspx</link><pubDate>Tue, 14 May 2013 11:07:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37499</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>When you install the SharePoint BI stack, you need to create a PowerPivot Service application that will manage the PowerPivot workbooks via a very nice dashboard which unfortunately was empty in my Central Admin. no error, nothing in the ULS, just an empty page. To fix that, I activated the PowerPivot Administration feature in Central [&amp;#8230;]&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1861&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item><item><title>Blog Post: Note to self : Moving a SharePoint contentDB from dev to test</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/10/note-to-self-moving-a-sharepoint-contentdb-from-dev-to-test.aspx</link><pubDate>Fri, 10 May 2013 12:41:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37481</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>How to move a content db from a SharePoint Dev farm to a SharePoint test farm. step 1. backup the dev farm content db step 2. go to your test farm, copy the backup to the SQL Server backup location If you don’t know the default SQL server backup location, start SQL Server Management Studio [&amp;#8230;]&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1849&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item><item><title>Blog Post: The mystery of the missing URL validation</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/08/the-mystery-of-the-missing-url-validation.aspx</link><pubDate>Wed, 08 May 2013 22:22:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37472</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;Further to my adventures with unobtrusive validation of yesterday, I found myself very stuck while implementing&amp;nbsp;a new form for this new editable metadata feature for the NuGet Gallery. And Yet again the cause of all my pain appears to be this evil combination of UnobtrusiveValidation (2.0.30116.0) and JQuery.Validation (1.8.1). (I know it&amp;#39;s not meant to be an evil combination, but believe me, it really starts to feel that way.))&lt;/p&gt;  &lt;p&gt;For the sake of discussion, a feature I&amp;#39;m trying to add is the ability to edit your package&amp;#39;s project url, and logo icon url on nuget.org. Since I&amp;#39;m trying to follow the established patterns of the codebase, I decided to use a RequestModel object to represent the editing form. So naturally I do this inside my request model:&lt;/p&gt;  &lt;p&gt;[StringLength(256)]&lt;br /&gt;[Display(Name = &amp;quot;Icon URL&amp;quot;)]&lt;br /&gt;[DataType(DataType.ImageUrl)]&lt;br /&gt;public string IconUrl { get; set; }&lt;/p&gt;  &lt;p&gt;[StringLength(256)]&lt;br /&gt;[Display(Name = &amp;quot;Project Homepage URL&amp;quot;)]&lt;br /&gt;[DataType(DataType.Url)]&lt;br /&gt;public string ProjectUrl { get; set; }&lt;/p&gt;  &lt;p&gt;Unfortunately, when it comes to validation of this model, woe is me. If you enter a string which is not a valid URL and doesn&amp;#39;t even start with https, you get no indication you&amp;#39;ve done something stupid.&lt;br /&gt;&lt;br /&gt;Perhaps naturally, perhaps not, I had assumed that adding these DataType attributes is going to do something good for me and do URL validation. Why would it be a natural assumption? Well, I say that because UnobtrusiveValidation appears to understand &lt;strong&gt;DataType&lt;/strong&gt;&lt;strong&gt;.Url&lt;/strong&gt; in the following ways:&lt;br /&gt;&lt;br /&gt;[Updated: Gee thanks a lot blogs.msdn.com for corrupting my post. Now don&amp;#39;t do it again!]&lt;/p&gt;  &lt;p&gt;1) It adds a type=&amp;quot;Url&amp;quot; attribute to your form INPUT element&lt;br /&gt;2) It has code inside that tries to add an &lt;em&gt;adapter&lt;/em&gt; which understands URL typed input elements and apply the jquery.validate URL validation to them. At least that&amp;#39;s what I &lt;em&gt;think&lt;/em&gt; it&amp;#39;s meant to do. Because it doesn&amp;#39;t actually work in practice.&lt;/p&gt;  &lt;p&gt;I tried to work around this by adding regex validation to my model, thinking that could replace the non-functioning URL validation. Sadly that doesn&amp;#39;t work either!&lt;/p&gt;  &lt;p&gt;[RegularExpression(Constants.UrlValidationRegEx, ErrorMessage = &amp;quot;This doesn&amp;#39;t appear to be a valid URL&amp;quot;)]&lt;/p&gt;  &lt;p&gt;Some hours of debugging eventually reveals that the reason neither regexes nor URLs are working is because I chose to do [DataType.Url] prevents the focusout delegate from being registered as a validation hook upon the input element&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;function delegate(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var validator = $.data(this[0].form, &amp;quot;validator&amp;quot;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eventType = &amp;quot;on&amp;quot; + event.type.replace(/^validate/, &amp;quot;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;validator.settings[eventType] &amp;amp;&amp;amp; validator.settings[eventType].call(validator, this[0] );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(this.currentForm)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.validateDelegate(&amp;quot;:text, :password, :file, select, textarea&amp;quot;, &amp;quot;focusin focusout keyup&amp;quot;, delegate)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.validateDelegate(&amp;quot;:radio, :checkbox, select, option&amp;quot;, &amp;quot;click&amp;quot;, delegate);&lt;/p&gt;  &lt;p&gt;yes... jquery.validate will only add focusout handlers for stuff it knows about.&lt;br /&gt;And it gives you no way of customizing this. Grrr. Yuck.&lt;/p&gt;  &lt;p&gt;Best option for working around this seems to be &lt;strong&gt;don&amp;#39;t use DataType.Url.&lt;/strong&gt; Second best option would probably be write some script to add the missing focusout event handlers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10417151" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: tilovell09</description></item><item><title>Blog Post: Regular expressions are different in javascript! And Unintrusive Validation.</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/07/regular-expressions-are-different-in-javascript-and-unintrusive-validation.aspx</link><pubDate>Wed, 08 May 2013 02:59:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37469</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;Today while trying to implement some new code, and cutting my teeth on javascript validation, I disbelievingly realized that ALL of our client-side validation had stopped working. Like a month ago. And, nobody had noticed or complained!&amp;nbsp; (As a brief reminder I now work on the NuGet Gallery.)&lt;/p&gt;  &lt;p&gt;Perhaps that just goes to show how little real value client-side form validation is providing our nuget.org users, who are a smart bunch. Especially when Server side validation is there (it&amp;#39;s always going to be there)&amp;nbsp;and it gets the job done. Anyway, regardless of the true value of client side validation, I&amp;#39;m fully mentally and emotionally committed to doing some client side validation for our new features. So let&amp;#39;s move ahead!&lt;/p&gt;  &lt;p&gt;The original thing turned out to be a minor and easy thing to debug and fix, and didn&amp;#39;t require me to understand the validation framework much at all. The script tag for&amp;nbsp;jquery.validate.unobtrusive had&amp;nbsp;accidentally gone missing when my compatriate made some innocent looking performance enhancements to the site. And without that script tag, you&amp;#39;ll never see any validation. So problem solved. The way the tag went missing, honestly, was just one of those accidental things that you would think wouldn&amp;#39;t be so easy to do. If you look at our code (yes, it&amp;#39;s so frickin&amp;#39; cool that I can link to our code since it&amp;#39;s open source)&lt;/p&gt;  &lt;p&gt;&lt;a href="https://github.com/NuGet/NuGetGallery/blob/master/Website/App_Start/AppActivator.cs"&gt;https://github.com/NuGet/NuGetGallery/blob/master/Website/App_Start/AppActivator.cs&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;you&amp;#39;ll see that we&amp;#39;re doing script bundling.&lt;/p&gt;  &lt;p&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scriptBundle&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ScriptBundle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/bundles/js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/p&gt;  &lt;div id="LC63" class="line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Include&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Scripts/jquery-{version}.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;  &lt;div id="LC64" class="line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Include&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Scripts/jquery.validate.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;  &lt;div id="LC65" class="line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Include&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;~/Scripts/jquery.validate.unobtrusive.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;  &lt;div id="LC66" class="line"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="n"&gt;BundleTable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Bundles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scriptBundle&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;And it turned out that we were bundling a script that didn&amp;#39;t exist (we only had jquery.validate.unobtrusive.&lt;strong&gt;min.&lt;/strong&gt;js). Of course we never ever see an error even though we are bundling something that &lt;em&gt;doesn&amp;#39;t exist..&lt;/em&gt;. Oh well. If you were thinking of playing with script bundling, you have &lt;em&gt;now been warned&lt;/em&gt;. :)&lt;/p&gt;  &lt;p&gt;But digressions, digressions. The real point of this post was that even after turning on unobtrusive validation, it became apparent that our email address and username validation on the user registration page were still not working. I could type in &amp;#39;foo#blarg#blah&amp;#39; as an email address and all was well with the webby world. But why?&lt;/p&gt;  &lt;p&gt;Well, let&amp;#39;s see. What&amp;#39;s &lt;em&gt;supposed&lt;/em&gt; to happen is that we set a [RegularExpressionAttribute] on our property, like so:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Required]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [StringLength(64)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [RegularExpression(@&amp;quot;(?i)[a-z0-9][a-z0-9_.-]+[a-z0-9]&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ErrorMessage =&amp;nbsp;&amp;quot;User names must start and end with a letter or number, and may only contain letters, numbers, underscores, periods, and hyphens in between.&amp;quot;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Hint(&amp;quot;Choose something unique so others will know which contributions are yours.&amp;quot;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Username { get; set; }&amp;nbsp;&lt;/p&gt;  &lt;p&gt;And this will cause some funky HTML to get generated, like so:&lt;/p&gt;  &lt;p&gt;&amp;lt;&lt;span style="color:#a31515;font-size:x-small;"&gt;&lt;span style="color:#a31515;font-size:x-small;"&gt;input&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;text-box single-line&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-length&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;The field Username must be a string with a maximum length of 64.&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-length-max&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;64&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-regex&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;User names must start and end with a letter or number, and may only contain letters, numbers, underscores, periods, and hyphens in between.&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-regex-insensitive&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-regex-pattern&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;[a-z0-9][a-z0-9_.-]+[a-z0-9]&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;data-val-required&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;The Username field is required.&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;id&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;Username&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;Username&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;&lt;span style="color:#ff0000;font-size:x-small;"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#0000ff;font-size:x-small;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Which works.&lt;br /&gt;And then there&amp;#39;s a little adapter snippet in the unobtrusive validation script file which turns the data-val- attributes into a jquery.validation rule:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $jQval.addMethod(&amp;quot;regex&amp;quot;, function (value, element,&lt;br /&gt;params) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var match;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.optional(element)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match = new RegExp(params).exec(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (match &amp;amp;&amp;amp; (match.index === 0) &amp;amp;&amp;amp;&lt;br /&gt;(match[0].length === value.length));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/p&gt;  &lt;p&gt;Luckily, the first thing I tried is running this in the JS debugger, and it turns out that &amp;#39;new RegExp(params)&amp;#39; is what fails. And it fails because (as promised in the title) regular expressions are different in javascript from .Net.&lt;/p&gt;  &lt;p&gt;In .Net, the (?i) syntax is legal as part of the regular expression and tells the regular expression parser that you want to build a case-insensitive regular expression.&lt;/p&gt;  &lt;p&gt;In Javascript, there are two ways of doing a case insensitive regular expression. One is to use a regular expression &lt;em&gt;literal&lt;/em&gt; and suffix it with &amp;#39;i&amp;#39; like this: /[a-z0-9][a-z0-9_:-]+[a-z0-9]/i&lt;/p&gt;  &lt;p&gt;The other is to pass a second parameter &amp;quot;i&amp;quot; to the new RegExp constructor.&lt;/p&gt;  &lt;p&gt;This leads to a GRRRRRR moment, where I privately curse the creator of the unobtrusive validation library for failing to consider this issue. And also me spending about an hour trying to understand how to solve the problem myself.&lt;/p&gt;  &lt;p&gt;This turns out to be wasted effort, because as is often the case, some bright person has come up with a clever answer on stackoverflow.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://stackoverflow.com/questions/4218836/regularexpressionattribute-how-to-make-it-not-case-sensitive-for-client-side-v"&gt;http://stackoverflow.com/questions/4218836/regularexpressionattribute-how-to-make-it-not-case-sensitive-for-client-side-v&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That said, I did spend this time coming up with another alternative approach, so might as well record it, and explain how it works. This one works not by introducing a new attribute or new annotation, but by overwriting the existing adapters in the unobtrusive validation pipeline.&lt;br /&gt;The logical pipeline is this:&lt;/p&gt;  &lt;p&gt;1. Data Model &amp;amp; Attributes (e.g. RegularExpressionAttribute) -&amp;gt; &lt;br /&gt;2. DataAnnotationsModelValidatorProvider &amp;amp; Attribute Adapters (e.g. RegularExpressionAttributeAdapter) -&amp;gt;&lt;br /&gt;3. HTML form + &amp;lt;script tags&amp;gt; (e.g. data-val-regex) -&amp;gt;&lt;br /&gt;4. UnobtrusiveValidation Adapters (e.g. &amp;quot;regex&amp;quot; adapter snippet posted above) -&amp;gt;&lt;br /&gt;5. jquery.validation rules - tada!&lt;/p&gt;  &lt;p&gt;We can insert a hacky fix at step 2. in the pipeline:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataAnnotationsModelValidatorProvider.RegisterAdapter(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; typeof(RegularExpressionAttribute),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; typeof(FixedRegularExpressionAttributeAdapter));&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class FixedRegularExpressionAttributeAdapter : RegularExpressionAttributeAdapter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private RegularExpressionAttribute _attribute;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public FixedRegularExpressionAttributeAdapter(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModelMetadata metadata, ControllerContext context, RegularExpressionAttribute attribute)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(metadata, context, attribute)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _attribute = attribute;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override System.Collections.Generic.IEnumerable&amp;lt;ModelClientValidationRule&amp;gt; GetClientValidationRules()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rules = base.GetClientValidationRules();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rule = rules.First();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pattern = (string)rule.ValidationParameters[&amp;quot;pattern&amp;quot;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pattern.StartsWith(&amp;quot;(?i)&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pattern = pattern.Substring(4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rule.ValidationParameters[&amp;quot;pattern&amp;quot;] = pattern;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rule.ValidationParameters[&amp;quot;insensitive&amp;quot;] = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rules;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;this will rewrite our HTML to remove the leading (?i) from the data-val-regex-pattern attribute, and create a new attribute data-val-regex-insensitive=&amp;quot;True&amp;quot;.&lt;br /&gt;And since it&amp;#39;s a script file, we could then modify the code of the unobtrusive validation adapter.&lt;br /&gt;&lt;br /&gt;Well... it sort of gets the job done... but I don&amp;#39;t actually feel like this is a very great solution to apply in practice. For one, pattern.StartsWith(&amp;quot;(?i)&amp;quot;) is hackiness. But for another, making changes to a script file like unobtrusive validation that we get as a nuget package is a headache because updating the nuget package in the future will lose the changes. Not to mention I&amp;#39;m unclear whether licensing permits editing the script files.&lt;/p&gt;  &lt;p&gt;The right thing to do instead seems to be to contribute back to unobtrusive validation, or at least file a bug there, and hope it gets fixed, assuming it&amp;#39;s open source. &lt;br /&gt;&lt;br /&gt;It appears that it is open source, but it took me an awfully long time to confirm it is in the asp.net codeplex project&lt;/p&gt;  &lt;p&gt;&lt;a href="http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/ea64fc86b54d#src/System.Web.Mvc/JavaScript/jquery.unobtrusive-ajax.js"&gt;http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/ea64fc86b54d#src/System.Web.Mvc/JavaScript/jquery.unobtrusive-ajax.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;where, for now, I&amp;#39;ve just filed a bug on the issue. As for now it makes more sense to me to workaround it using &amp;#39;A-Za-z&amp;#39; in the regex&amp;nbsp;than to incorporate a hacky non-future-proof fix, which was an interesting way to learn a bit more about these validation frameworks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10416860" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: tilovell09</description></item><item><title>Blog Post: My SharePoint Saturday (Belgium, BIWUG) Slide deck</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/07/my-sharepoint-saturday-belgium-biwug-slide-deck.aspx</link><pubDate>Tue, 07 May 2013 19:31:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37467</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>A week after the SharePoint Summit (Quebec) I had the pleasure last week to present a session on SharePoint 2013 and Business Intelligence with my partner in crime and colleague isabelle Van Campenhoudt (SQL Server MVP); the slide deck can be downloaded here.&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1829&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item><item><title>Blog Post: SharePoint Summit 2013 Quebec : my slide deck (SharePoint 2013 workflows)</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/07/sharepoint-summit-2013-quebec-my-slide-deck-sharepoint-2013-workflows.aspx</link><pubDate>Tue, 07 May 2013 18:53:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37466</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>les slides de ma session worflow SharePoint 2013; il est très rare que je donne des sessions en français…&amp;#160;&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1826&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item><item><title>Blog Post: Announcing the Release of WebMatrix 3</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/05/01/announcing-the-release-of-webmatrix-3.aspx</link><pubDate>Wed, 01 May 2013 19:53:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37449</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;I’m excited to announce the release of WebMatrix 3.&amp;#160; WebMatrix is a free, lightweight web development tool we first &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/06/introducing-webmatrix.aspx"&gt;introduced in 2010&lt;/a&gt;, and which provides a great, focused web development experience for ASP.NET, PHP, and Node.js.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Today’s release includes a ton of great new features.&amp;#160; You can easily get started by downloading it, and watching an introduction video:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;&lt;img title="clip_image002" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/scottgu/clip_image002_0E62BA81.jpg" width="200" height="49" /&gt;&lt;/a&gt; &lt;a href="http://channel9.msdn.com/posts/WebMatrix-3-Demo-Video"&gt;&lt;img title="clip_image004" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image004" src="http://weblogs.asp.net/blogs/scottgu/clip_image004_62B1F084.jpg" width="200" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Some of the highlights of today’s release include deep Windows Azure integration, source control tooling for Git and TFS, and a new remote editing experience.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;b&gt;&lt;u&gt;Windows Azure Integration&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;  &lt;p&gt;With WebMatrix 3, we are making it really easy to move to the cloud.&amp;#160; &lt;/p&gt;  &lt;p&gt;The first time you launch WebMatrix 3, there’s an option to sign into Windows Azure.&amp;#160; You can sign in using the same credentials you use with the &lt;a href="http://manage.windowsazure.com/"&gt;Windows Azure Management Portal&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_252492BB.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4DC2FEC2.png" width="877" height="547" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you are signed-in your Windows Azure account and subscriptions are integrated directly within WebMatrix.&amp;#160; You have the option to create up to 10 free sites on Windows Azure:&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_56465E0C.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4F29B245.png" width="810" height="495" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use the &lt;strong&gt;My Sites”&lt;/strong&gt;button to browse and edit the web sites you already have hosted on Windows Azure.&amp;#160; You can also use the &lt;strong&gt;New&lt;/strong&gt; button to directly create and host new web sites on Windows Azure – and create either a blank new site, or a site created from the Windows Azure Web App Gallery (which lets you start with templates like Umbraco, WordPress, Drupal, etc):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1300774E.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_34EBD9D2.png" width="290" height="371" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this case we’ll create a new web site using the popular Umbraco CMS solution – one of the templates in the Windows Azure Web Site Gallery:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3DDB6C11.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2643BE9E.png" width="803" height="536" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you select this template, WebMatrix can help you create a new Web Site to host it on Windows Azure, and associate all of the publishing information you need to publish it and keep it in sync with your editing environment within WebMatrix:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7139C01E.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2EC9AE99.png" width="803" height="536" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once created you get a tailored experience within WebMatrix that provides integrated Umbraco (or WordPress or Drupal, etc) editing functionality inside the tool:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_451F53DE.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_504B6ED9.png" width="803" height="507" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And WebMatrix provides the ability to open/edit any appropriate files in it with editing/ and code intellisense support:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7B26639C.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_312AE2AA.png" width="803" height="548" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And when you are done you can one-click publish the site to Windows Azure using the &lt;strong&gt;Publish&lt;/strong&gt; command in top left of the tool.&amp;#160; WebMatrix will provide real-time feedback as it uploads and publishes the site:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7DF139F1.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_08B121F8.png" width="803" height="547" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The end result is a simple, fast and super effective way to edit your sites locally and host and manage them in Windows Azure.&amp;#160; &lt;/p&gt;  &lt;p&gt;Watch &lt;a href="http://youtu.be/liVozPQaaRY"&gt;this great video&lt;/a&gt; as Eric build a site with WebMatrix 3 and &lt;a href="http://youtu.be/liVozPQaaRY"&gt;deploys it to Windows Azure&lt;/a&gt;. &lt;/p&gt;  &lt;h2&gt;&lt;b&gt;&lt;u&gt;Source Control with Git and TFS&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;  &lt;p&gt;One of the &lt;a href="http://webmatrix.uservoice.com/forums/128313-webmatrix-suggestions/filters/top"&gt;most requested features&lt;/a&gt; in WebMatrix 2 was support for version control.&amp;#160; WebMatrix 3 now supports both Git and TFS.&amp;#160; The source control experience is &lt;a href="http://extensions.webmatrix.com/"&gt;extensible&lt;/a&gt;, and we’ve worked with several partners to include rich support for &lt;a href="https://tfs.visualstudio.com/"&gt;Team Foundation Service&lt;/a&gt;, &lt;a href="http://extensions.webmatrix.com/packages/CodePlex"&gt;CodePlex&lt;/a&gt; and &lt;a href="http://extensions.webmatrix.com/packages/GitHubExtension"&gt;GitHub&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image010_73C23035.jpg"&gt;&lt;img title="clip_image010" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image010" src="http://weblogs.asp.net/blogs/scottgu/clip_image010_thumb_5C96B5B7.jpg" width="720" height="520" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Git tooling works with your current source repositories, configuration, and existing tools.&amp;#160; The experience includes support for commits, branching, multiple remotes, and works great for &lt;a href="http://www.windowsazure.com/en-us/develop/net/common-tasks/publishing-with-git/"&gt;publishing Web Sites to Windows Azure&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image012_456B3B39.jpg"&gt;&lt;img title="clip_image012" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image012" src="http://weblogs.asp.net/blogs/scottgu/clip_image012_thumb_4331432E.jpg" width="721" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The TFS experience is focused on making common source control tasks easy.&amp;#160; It matches up well with &lt;a href="https://tfs.visualstudio.com/"&gt;Team Foundation Service&lt;/a&gt;, our hosted TFS solution that provides free private Git and TFS repositories.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Watch these great videos of Justin giving a &lt;a href="http://youtu.be/Q_6gYba3C1k"&gt;tour of the Git&lt;/a&gt; and &lt;a href="http://youtu.be/EyTbQCFmsMs"&gt;TFS integration&lt;/a&gt; in WebMatrix 3&lt;/p&gt;  &lt;h2&gt;&lt;b&gt;&lt;u&gt;Remote Editing&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;  &lt;p&gt;In WebMatrix 2, we added the ability to open your Web Site directly from the Windows Azure Management Portal.&amp;#160; With WebMatrix 3, we’ve rounded out that experience by providing an amazing developer experience for live remote editing of your sites.&amp;#160;&amp;#160; The new &lt;strong&gt;My Sites&lt;/strong&gt; gallery now allows you to open existing web sites on your local machine, or to remotely edit sites that are hosted in Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2C05C8B0.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_26B6E1FF.png" width="833" height="522" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;While working with the remote site, IntelliSense and the other tools work as though the site was on your local machine.&amp;#160; But when you save changes it pushes them directly to the remote hosted site.&amp;#160; This makes it ideal for when you want to make quick changes in a hurry.&lt;/p&gt;  &lt;p&gt;If you want to work with the site locally, you can click the ‘download’ button to install and configure any runtime dependencies, and work with the site on your machine:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image016_0B14E6BA.jpg"&gt;&lt;img title="clip_image016" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image016" src="http://weblogs.asp.net/blogs/scottgu/clip_image016_thumb_7E3D214C.jpg" width="735" height="368" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Watch &lt;a href="http://youtu.be/ioz6KJChXNc"&gt;this video&lt;/a&gt; of Thao showing you how to &lt;a href="http://youtu.be/ioz6KJChXNc"&gt;edit your live site on Windows Azure&lt;/a&gt; using WebMatrix 3&lt;/p&gt;  &lt;h2&gt;&lt;b&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/b&gt;&lt;/h2&gt;  &lt;p&gt;WebMatrix 3 includes a seamless experience for working with sites in Windows Azure, source control support for working with Git and TFS, and a vastly improved remote editing experience.&amp;#160; These are just a few of the hundreds of improvements throughout the application, including an extension for &lt;a href="http://extensions.webmatrix.com/packages/PHPValidator"&gt;PHP validation&lt;/a&gt; and &lt;a href="http://www.typescriptlang.org/"&gt;Typescript&lt;/a&gt; support.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can easily get started with WebMatrix by downloading it for free, and watching an introduction video about it: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;&lt;img title="clip_image002" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/scottgu/clip_image002_0E62BA81.jpg" width="200" height="49" /&gt;&lt;/a&gt; &lt;a href="http://channel9.msdn.com/posts/WebMatrix-3-Demo-Video"&gt;&lt;img title="clip_image004" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image004" src="http://weblogs.asp.net/blogs/scottgu/clip_image004_62B1F084.jpg" width="200" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We look forward to seeing what you build with the new release!&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10237261" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Announcing the release of Windows Azure SDK 2.0 for .NET</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx</link><pubDate>Tue, 30 Apr 2013 17:37:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37444</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;This morning we released the v2.0 update of the Windows Azure SDK for .NET. This is a major refresh of the Windows Azure SDK with some really great new features and enhancements.&amp;#160; These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Web Sites&lt;/strong&gt;: Visual Studio Tooling updates for Publishing, Management, and for Diagnostics&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cloud Services:&lt;/strong&gt; Support for new high memory VM sizes, Faster Cloud Service publishing &amp;amp; Visual Studio Tooling for configuring and viewing diagnostics data &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;: Storage Client 2.0 is now included in new projects &amp;amp; Visual Studio Server Explorer now supports working with Storage Tables &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Service Bus&lt;/strong&gt;: Updated client library with message pump programming model support, support for browsing messages, and auto-deleting idle messaging entities &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;PowerShell Automation&lt;/strong&gt;: Updated support for PowerShell 3.0, and lots of new PowerShell commands for automating Web Sites, Cloud Services, VMs and more. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of these SDK enhancements are now available to start using immediately and the SDK can now be downloaded from the &lt;a href="http://www.windowsazure.com/en-us/develop/net"&gt;Windows Azure .NET Developer Center&lt;/a&gt;.&amp;#160; Like all of the other Windows Azure SDKs we provide, the Windows Azure SDK for .NET is a fully open source project (Apache 2 license) hosted on&lt;b&gt; &lt;/b&gt;&lt;a href="https://github.com/WindowsAzure/azure-sdk-for-net"&gt;GitHub&lt;/a&gt;&lt;b&gt;&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;Below are more details on the new features and capabilities released today:&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Web Sites: Improved Visual Studio Publishing&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s release we’ve made it even easier to publish Windows Azure Web Sites.&amp;#160; Just right-click on any ASP.NET Web Project (or Web Site) within Visual Studio to &lt;strong&gt;Publish&lt;/strong&gt; it to Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1907AB45.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_16618045.png" width="674" height="449" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will bring up a publish profile dialog the first time you run it on a project:&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6D5971F9.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_01728E83.png" width="576" height="452" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the &lt;strong&gt;import&lt;/strong&gt; button will enable you to import a publishing profile (this is a one-time thing you do on a project – it contains the publishing settings for your site in Windows Azure).&amp;#160; &lt;/p&gt;  &lt;p&gt;With previous SDK releases you had to manually download the publish profile file from the Windows Azure Management Portal.&amp;#160; Starting with today’s release you can now associate your Windows Azure Subscription within Visual Studio – at which point you can browse the list of sites in Windows Azure associated with your subscription in real-time, and simply select the one you want to publish to (with no need to manually download anything):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2A7D2D7F.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_70FA1D87.png" width="479" height="286" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then just select the Web Site on Windows Azure that you want to deploy your app to, hit ok, and your app will be live on Windows Azure in seconds.&amp;#160; You can then quickly republish again (also in seconds) without having to configure anything (all of the publish profile settings are persisted for later use).&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Web Sites: Management Support within the Visual Studio Server Explorer&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s SDK release also adds new support for managing Web Sites, deployed in the cloud with Windows Azure, through the Visual Studio Server Explorer.&amp;#160; When you associate your Windows Azure subscription with Visual Studio, you’ll now see all of your running web sites within Windows Azure in the Visual Studio Server Explorer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1E7B3D4B.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_40D2D2C4.png" width="245" height="283" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In addition to listing your sites, you can also perform common operations on them like Starting/Stopping them (just right click on one to do this).&amp;#160; You can also use the &lt;strong&gt;View Settings&lt;/strong&gt; command on a site to retrieve the live site configuration settings from Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_632A683D.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_175E9184.png" width="608" height="454" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you do this you’ll be able to view and edit/save the live settings of the Web Site directly within Visual Studio.&amp;#160; These settings are being pulled in real-time from the running Web Site instance in the cloud within Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_199B1A40.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_221E798A.png" width="801" height="591" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Changes you save here will be persisted immediately into the running instance within Windows Azure.&amp;#160; No need to redeploy the application nor even open the Windows Azure Management Portal.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Web Sites: Streaming Diagnostic Logs&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;One of the really awesome new features in today’s release is support that enables you to stream your Windows Azure Web Site’s application logs directly into Visual Studio.&amp;#160; This is a super useful feature that enables you to easily debug your Web Site when it is running up in the cloud in Windows Azure.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;How to Enable Live Streaming of Diagnostic Logs&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;To try out this feature, we’ll first add a Trace statement to an ASP.NET Web application and publish it to Windows Azure (as a Web Site).&amp;#160; We’ll add the trace statement to our app using the standard &lt;em&gt;System.Diagnostics&lt;/em&gt; tracing API in .NET.&amp;#160; We’ll use the &lt;em&gt;Trace.TraceError()&lt;/em&gt; method to write out an error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4ABCE591.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_735B5198.png" width="834" height="486" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;By default when we hit the Web Site this method will do nothing – because tracing is disabled by default on Web Sites.&amp;#160; &lt;/p&gt;  &lt;p&gt;If we want to enable tracing on our Web Site (in order to debug something) we can do that through the Windows Azure Management Portal (click the Configuration tab within a Web Site to enable this in the portal).&amp;#160; Or alternatively we can now do this directly within Visual Studio using the&lt;strong&gt; View Settings &lt;/strong&gt;command within Server Explorer (like we saw above):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_70B52698.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2E451513.png" width="847" height="563" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice above how we are enabling Application Logging for our Web Site, and turning it on so that it logs all “Error” trace events.&amp;#160; Make sure “Error” is selected and then click the “Save” button to persist the setting to Windows Azure – at which point we can hit our Web Site again and this time our Trace Error statements will be saved.&lt;/p&gt;  &lt;p&gt;To view the trace statements inside Visual Studio we then simply need to click on our Web Site within the Server Explorer and select the &lt;strong&gt;View Streaming Logs in Output Window&lt;/strong&gt; command:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6FDF515F.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3904FD19.png" width="610" height="465" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will open our Visual Studio output window – which will display the Trace.TraceError() statements as they execute in our live site (there is only a ~2 second delay from the time it executes to the point it shows up in our Visual Studio output window – which is super convenient when trying to debug something):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6D39265F.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_18804E18.png" width="859" height="561" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you are done debugging the issue, just right-click on the Web Site again and choose the &lt;strong&gt;Stop Viewing Logs&lt;/strong&gt; command to stop the logs being sent to VS (and when you are done with the issue itself make sure to turn off logging entirely by going back to the settings window and disabling it):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_47D1C3A2.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1C20F9A6.png" width="544" height="426" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above support is super useful and makes it much easier to debug issues that only occur in a live Windows Azure environment.&amp;#160; For more information on this feature (and how to use it from the command-line) check out &lt;a href="http://www.hanselman.com/blog/StreamingDiagnosticsTraceLoggingFromTheAzureCommandLinePlusGlimpse.aspx"&gt;this blog&lt;/a&gt; from Scott Hanselman.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: You must have a /LogFiles/Application directory in your Windows Azure Web Site before you can stream the application logs to Visual Studio. This gets created the first time a trace statement gets written to disk – so you’ll want to make sure you execute a Trace statement first before opening up the log streaming view inside Visual Studio.&amp;#160; We’ll be making an update to Windows Azure Web Sites in the next week or two which will cause this directory to be automatically created for you – both for existing and new web sites.&amp;#160; This will enable you to start streaming the logs even before a trace operation has occurred.&amp;#160; Until then just make sure you have written one trace statement before you start the log streaming window in VS.&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Cloud Services: Support for High Memory VM Instances&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Two weeks ago we &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx"&gt;announced&lt;/a&gt; the general availability of our Windows Azure IaaS release.&amp;#160; Included as part of that release was support for creating large memory IaaS VMs using our new &lt;strong&gt;4 core x 28GB RAM (A6)&lt;/strong&gt; and &lt;strong&gt;8 core x 56GB RAM (A7)&lt;/strong&gt; VM sizes.&lt;/p&gt;  &lt;p&gt;Starting with today’s Windows Azure SDK 2.0 for .NET release, you can also now deploy your Cloud Services to these same VM sizes:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1E5D8262.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_72ACB865.png" width="587" height="411" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For details on the VM sizes please refer to: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn197896.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/dn197896.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Cloud Services: Faster Deployment Support with Simultaneous Update Option&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release includes a number of enhancements to improve the deployment and update times of Cloud Services. &lt;/p&gt;  &lt;p&gt;One of the new deployment options we now support is the ability to do a “Simultaneous Update” of a Cloud Service (we sometimes also refer to this as the “Blast Option”).&amp;#160; When you use this option we bypass the normal upgrade domain walk that is done by default with Cloud Services (where we upgrade parts of the Cloud Service sequentially to avoid ever bringing the entire service down) and we instead upgrade all roles and instances simultaneously. With today’s release this simultaneous update logic now happens within Windows Azure (on the cloud side).&amp;#160; This has the benefit of enabling the Cloud Service update to happen much faster.&lt;/p&gt;  &lt;p&gt;Note that because it updates all roles simultaneously you want to be careful about using it in production for normal updates (otherwise users will experience app downtime).&amp;#160; But it is great for scenarios where you want to quickly update a dev or test environment (and don’t care about a short period of downtime between your updates), or if you need to blast out a critical app update fast in production and you are ok with a short availability impact.&lt;/p&gt;  &lt;p&gt;To perform a Simultaneous Update using Visual Studio, select the “Advanced Settings” tab within the Cloud Service Publish wizard and choose the “Settings” link next to the Deployment Update checkbox:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5BED70DC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5DBDC6A3.png" width="768" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will launch a new dialog.&amp;#160; Within it you can now select the new “Simultaneous Update” option:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7FA92927.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3AFC8EE6.png" width="614" height="260" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once saved, the updates to this Cloud Service will be performed using this option and all roles and instances will be updated simultaneously.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Cloud Services: Improved Diagnostics Support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release also includes some major enhancements to our diagnostics support with Cloud Services.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Easily Configure Diagnostics&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio has enabled Windows Azure Diagnostics for several versions. With today’s Windows Azure .NET SDK release we are making it even easier to start with the right diagnostics collection plan and leverage the data it provides to find errors and other useful information about your live service.&lt;/p&gt;  &lt;p&gt;You can right-click on a Cloud Service role within Visual Studio’s Solution Explorer to pull up &lt;strong&gt;Configuration&lt;/strong&gt; about it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5D54245F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_31A35A63.png" width="552" height="387" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Today’s SDK release includes an updated &lt;strong&gt;Diagnostics&lt;/strong&gt; section within it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_58053DAE.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_555F12AE.png" width="846" height="507" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use this updated Diagnostics section to configure how you want to collect and store errors captured by the default .NET trace listener and your Trace.TraceError() code – all without having to write any glue code to setup or initialize.&amp;#160; You can specify the collection plan you want to use at runtime: &lt;em&gt;Errors Only&lt;/em&gt; [default],&lt;em&gt; All Information&lt;/em&gt; or a &lt;em&gt;Custom Plan.&amp;#160; &lt;/em&gt;The custom plan is pretty rich and enables fine grain control over error levels, performance counters, infrastructure logs, collection intervals and more.&lt;/p&gt;  &lt;p&gt;The diagnostics plan you configure through the configuration UI above is persisted in a &lt;strong&gt;diagnostics.wadcfg&lt;/strong&gt; XML file.&amp;#160; If you open the Cloud Service role node within the Server Explorer you can find it and optionally edit the settings directly within the text editor:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_28029E40.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5A690270.png" width="846" height="397" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Because the file is saved with your source code it can be managed under source control. It is also deployed with your cloud service and can be changed post deployment without requiring an application redeploy (I cover how to enable this live update below).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;View Diagnostics on a Live Service&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With today’s release we are also making it really easy for developers to review the live diagnostics data from their Cloud Services directly within Visual Studio – as well as dynamically turn on or off more detailed diagnostic capturing on their Cloud Services &lt;em&gt;without having to redeploy the Cloud Service &lt;/em&gt;(which makes it much easier to quickly debug live production issues).&lt;/p&gt;  &lt;p&gt;For any published Cloud Service, you can now view a quick summary of live service errors and other important status by clicking the &lt;b&gt;View Diagnostics Data&lt;/b&gt; command in Visual Studio – which is surfaced off of each role node within a Cloud Service in the Visual Studio Server Explorer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_30888E3B.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_79AE39F4.png" width="571" height="335" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Executing this command will query the diagnostics table for the Cloud Service within Windows Azure and list a quick summary view of recent data within it.&amp;#160; In the example below we can see that we forgot to update the app’s configuration pointing to our SQL DB and therefore our stored procedure calls are failing in the deployed service:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4DFD6FF8.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5680CF42.png" width="889" height="437" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Even more detailed diagnostics data has been gathered and stored in the Cloud Service’s Diagnostics Storage account. Click the &lt;b&gt;View all Data&lt;/b&gt; link to drill into it. This loads a new Windows Azure Storage Table viewer. You can make use of the Query Builder support in it to refine your view over the diagnostics data. In the following example we are filtering a window of time occurring after 5:48pm by querying over the TimeStamp(Virtual). This refers to the time it occurred in the service rather than the time the data was collected and transferred.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_73F5B0FF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_63110D0F.png" width="887" height="487" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This makes it much easier for you to look through historical logs to try and identify what the issue is.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Update Diagnostics Settings on a Live Service&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio also now enables you to configure and update the diagnostics settings for running Cloud Service directly from Server Explorer.&amp;#160; Diagnostic configuration can be updated at any time without the need to add code to your project and without having to redeploy the Cloud Service (which makes it much easier to quickly debug live production issues).&lt;/p&gt;  &lt;p&gt;To do this, use the Server Explorer –&amp;gt; Windows Azure Compute node to select a running role instance in Windows Azure, and then click the &lt;strong&gt;Update Diagnostics Settings&lt;/strong&gt; command on it to configure the runtime diagnostics settings for it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_399CCBCF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_02C27789.png" width="574" height="383" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Selecting this command will bring up a dialog that allows you to view and edit the Diagnostics Settings for the role.&amp;#160; Note that we can dynamically change the application log collection settings, event logs, performance counters, Infrastructure logs (like IIS, etc), and more:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_04FF0045.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_79694305.png" width="620" height="419" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this example we will collect information about available memory + CPU + Requests/sec on the role from a performance counter. We’ll do this by selecting the &lt;strong&gt;Performance Counters&lt;/strong&gt; tab and selecting the appropriate counter within it.&amp;#160; In addition to selecting the performance counters we want to track, we also need to set a &lt;strong&gt;Transfer period (in minutes)&lt;/strong&gt; and &lt;strong&gt;Buffer size (MB).&lt;/strong&gt;&amp;#160; We’ll set these to be 1 minute and 1024 MB (if we don’t set these then the logs won’t be copied to our storage account):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_58E20353.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_219B7C18.png" width="558" height="378" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When we click OK, the collection plan will immediately be applied to the live role instances, and we’ll start collecting the new data we specified.&amp;#160; Within about a minute we’ll see a new WADPerformanceCountersTable created in our storage account, and our performance monitor data will start to be collected in it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0A70019A.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_0CAC8A56.png" width="307" height="433" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Double clicking the above table would enable us to browse and review the performance monitor data.&amp;#160; &lt;/p&gt;  &lt;p&gt;Being able to dynamically turn on/off this functionality at runtime (without having to redeploy the Cloud Service) is super useful.&amp;#160; If we wanted to change the collection plan long term for every subsequent deployment, we can just apply the configuration changes we make at runtime back in the role designer for the cloud service project (or check it into source control).&amp;#160; That way new Cloud Service deployments will get it by default.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;More Information&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The above diagnostics support is really powerful, and can be used to capture diagnostic data from any number of roles and instances within a Cloud Service (including both web and worker roles).&amp;#160; And it makes it even easier to debug and analyze issues within multi-tier deployments.&lt;/p&gt;  &lt;p&gt;Note that the .NET Diagnostics Listener support to output trace statements to Windows Azure’s diagnostics agent is enabled by default when you create new Cloud Service projects within Visual Studio.&amp;#160; If you start with an existing ASP.NET Web Project and then later convert it to be a Cloud Service you’ll want to manually add the below trace listener registration code to your web.config file in order to enable the above diagnostics support:&lt;/p&gt;  &lt;p&gt;&amp;lt;system.diagnostics&amp;gt;   &lt;br /&gt;&amp;#160; &amp;lt;trace&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;listeners&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add type=&amp;quot;Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; name=&amp;quot;AzureDiagnostics&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;filter type=&amp;quot;&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/add&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/listeners&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;/trace&amp;gt;    &lt;br /&gt;&amp;lt;/system.diagnostics&amp;gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Storage: Visual Studio Table Explorer&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With the previous Windows Azure SDK 1.8 release we revamped the Visual Studio tooling support for Windows Azure Storage. This previous release focused on read/write features for the Windows Azure Storage Blob and Queue services.&lt;/p&gt;  &lt;p&gt;With today’s Windows Azure SDK 2.0 release, you can also now create and delete Windows Azure Tables, and add/edit/delete table entities in them from the Visual Studio Server Explorer.&amp;#160; This saves you time and allows you to easily use Visual Studio to build apps that use Windows Azure Storage Tables. &lt;/p&gt;  &lt;p&gt;Within the Visual Studio Server Explorer, simply right-click within the Windows Azure Storage node to create and name a new Table:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_75ED42CC.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4A3C78D0.png" width="448" height="385" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you have the table created, you can then optionally add entities to it directly within Visual Studio (just click the “Create Entity” button on the table designer):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1E8BAED4.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_60921E15.png" width="675" height="450" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can also edit/delete existing entities within Tables: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6DF8311B.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2FFEA05D.png" width="721" height="271" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We also now make it much easier to build Table queries - without requiring expertise with OData syntax - using a new Query Builder available as part of the Table tooling:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2468E31E.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_465445A2.png" width="640" height="385" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above features make it much easier to use Windows Azure Storage Tables.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Service Bus: Updated Client Library&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release also includes an updated Service Bus client library with several great new features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Message Browse Support: &lt;/b&gt;Message browsing enables you to view available messages in a queue without locking the message or performing an explicit receive operation on it. This is very useful for debugging scenarios, and in scenarios that involve monitoring. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;New Message Pump Programming Model: &lt;/b&gt;Today’s release also adds support for a new message pump programming model.&amp;#160; The Message Pump programming semantics are similar to an event-driven, or “push” based processing model and provides an alternative to the receive loop which we support today. This approach supports concurrent message processing, and enables processing messages at variable rates. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Auto-delete for Idle Messaging Entities: &lt;/b&gt;Auto-delete enables you to set an interval after which an idle queue, topic, or subscription is automatically deleted. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;PowerShell: Tons of new Automation Commands&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s release, &lt;a href="http://www.windowsazure.com/en-us/manage/downloads/"&gt;Windows Azure PowerShell&lt;/a&gt; (which is a separate download) has moved to support PowerShell 3.0.&amp;#160; Today’s release also includes numerous new PowerShell cmdlets that enable you to automate Windows Azure Web Sites, Cloud Services, Virtual Machines, as well as application services including Service Bus and the Windows Azure Store. You can find the full change log &lt;a href="https://github.com/WindowsAzure/azure-sdk-tools/blob/storage-hotfix/ChangeLog.txt"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Below are a few examples of some of the new functionality provided:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Web Sites&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can now get streaming logs for both http and application logs from your PowerShell console via the following command:&lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; Get-AzureWebsiteLog &amp;lt;your website&amp;gt; –Tail&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Cloud Services&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now use a faster deployment option by opting into a simultaneous upgrade option which will upgrade all web and worker roles in parallel: &lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; Set-AzureDeployment –Mode Simultaneous&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Virtual Machines&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now use the new high memory virtual machine A6 &amp;amp; A7 images with these two commands: &lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; New-AzureVM &lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; New-AzureQuickVM&amp;#160; &lt;/p&gt;  &lt;p&gt;We also enabled PowerShell Remoting by default when you create a VM via PowerShell to enable you to easily run your PowerShell cmdlets or scripts against your newly created virtual machines in Azure.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Service Bus&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now manage Service Bus namespaces via newly added cmdlets which allow you to create, list and remove Service Bus namespaces. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Windows Azure Store&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now manage your Azure Store add-ons from PowerShell. You can list the available add-ons, purchase an add-on, view your purchased add-ons and also upgrade the plan on a purchased add-on. &lt;/p&gt;  &lt;p&gt;For example, the below command would create and deploy a MongoDB service from MongoLab (one of our Windows Azure Store partners): &lt;/p&gt;  &lt;p&gt;&amp;gt;&amp;gt;&amp;gt; New-AzureStoreAddOn myMongoDB –AddOn mongolab –plan free –Location “West US”&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Storage&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We now support blob CRUD operations via PowerShell which allow you to manage Storage blob containers, upload/download blob content, and copy blobs around. This enables you to create scripts to seed some initial data for your applications or check what is in your storage account quickly when you are developing your application. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;Scaffolding cmdlets for Web/Worker Role&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We have also added new cmdlets for scaffolding. You can now use Add-AzureWebRole and Add-AzureWorkerRole to create projects for general web/worker role. You can use New-AzureRoleTemplate to generate a customized role template which you can use in Add-AzureWebRole or Add-AzureWorkerRole via the –TemplateFolder parameter. &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;More Information&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;A few other updates/changes with today’s release:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WindowsAzure.Diagnostics.dll no longer depends on WindowsAzure.StorageClient.dll. You will now be able to import and use the WindowsAzure.Storage 2.0 NuGet package in your application without introducing conflicts with Diagnostics. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;Windows Azure SDK 2.0 supports side by side with Windows Azure SDK 1.8 and 1.7 while dropping support for side by side with Windows Azure SDK 1.6. Therefore you will not be able to debug an SDK 1.6 service if SDK 2.0 is installed on the same machine. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;WindowsAzure.ServiceRuntime.dll, WindowsAzure.Configuration.dll and the caching assemblies are now built against the .Net framework 4.0 runtime. Therefore you will have to retarget your framework 3.5 application to 4.0 after migrating to Windows Azure SDK 2.0. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;We also recently published Windows Azure Cloud Service Support Policy which you can view in detail at &lt;a href="http://support.microsoft.com/gp/azure-cloud-lifecycle-faq"&gt;http://support.microsoft.com/gp/azure-cloud-lifecycle-faq&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;Learn More&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can also learn more about today’s SDK release, and see some demos of it in action, from my visit to this week’s latest &lt;a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-106-Scott-Guthrie-Discusses-Windows-Azure-SDK-20"&gt;Cloud Cover Show&lt;/a&gt; on Channel9:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-106-Scott-Guthrie-Discusses-Windows-Azure-SDK-20"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_085AB4E4.png" width="719" height="405" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release includes a bunch of great features that enable you to build even better cloud solutions.&amp;#160; If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using all of the above features today.&amp;#160; Then visit the &lt;a href="https://www.windowsazure.com/en-us/develop/net/"&gt;Windows Azure .NET Developer Center&lt;/a&gt; to learn more about how to build apps using today’s SDK release.&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10233311" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Windows Azure: Improvements to Virtual Networks, Virtual Machines, Cloud Services and a new Ruby SDK</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/26/windows-azure-improvements-to-virtual-networks-virtual-machines-cloud-services-and-a-new-ruby-sdk.aspx</link><pubDate>Fri, 26 Apr 2013 18:51:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37428</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;This morning we released some great enhancements to Windows Azure. These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Virtual Networks&lt;/strong&gt;: New Point-to-Site Connectivity (very cool!), Software VPN Device and Dynamic DNS Support&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Virtual Machines:&lt;/strong&gt; Remote PowerShell and Linux SSH provisioning enhancements&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cloud Services&lt;/strong&gt;: Enable Remote Desktop Support Dynamically on Web/Worker Roles&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ruby SDK&lt;/strong&gt;: A new Windows Azure SDK support for Ruby&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of these improvements are now available to start using immediately (note: some services are still in preview). Below are more details on them:&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Virtual Networks: New Point-to-Site Connectivity and Software VPN Device support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Last week we &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx"&gt;announced&lt;/a&gt; the general availability of Virtual Network support as part of our IaaS release. &lt;/p&gt;  &lt;p&gt;Virtual Networking allows you to create a private, isolated network in Windows Azure and treat it as an extension of your on-premises datacenter. For example, you can assign private IP addresses to virtual machines inside a virtual network, specify a DNS, and securely connect it to your on-premises infrastructure using a VPN device in a &lt;em&gt;site-to-site &lt;/em&gt;manner. &lt;/p&gt;  &lt;p&gt;Here’s a visual representation of a typical &lt;em&gt;site-to-site&lt;/em&gt; scenario through a secure Site-To-Site VPN connection:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1AA987B3.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_11505330.png" width="658" height="271" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Today, we are excited to announce that we’re expanding the capabilities of Virtual Networks even further to enable three new scenarios:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;New Point-To-Site Connectivity&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With today’s release we’ve added an awesome new feature that allows you to setup VPN connections between &lt;em&gt;individual computers&lt;/em&gt; and a Windows Azure virtual network &lt;u&gt;&lt;strong&gt;without the need for a VPN device&lt;/strong&gt;&lt;/u&gt;. We call this feature &lt;i&gt;Point-to-Site Virtual Private Networking. &lt;/i&gt;This feature greatly simplifies setting up secure connections between Windows Azure and client machines, whether from your office environment or from remote locations.&amp;#160; &lt;/p&gt;  &lt;p&gt;It is especially useful for developers who want to connect to a Windows Azure Virtual Network (and to the individual virtual machines within it) from either behind their corporate firewall or a remote location. Because it is point-to-site &lt;strong&gt;&lt;u&gt;they do not need their IT staff to perform any activities to enable it&lt;/u&gt;&lt;/strong&gt;, and no VPN hardware needs to be installed or configured.&amp;#160; Instead you can just use the built-in Windows VPN client to tunnel to your Virtual Network in Windows Azure.&amp;#160; This tunnel uses the Secure Sockets Tunneling Protocol (&lt;a href="http://msdn.microsoft.com/en-us/library/cc247338.aspx"&gt;SSTP&lt;/a&gt;) and can automatically traverse firewalls and proxies, while giving you complete security.&lt;/p&gt;  &lt;p&gt;Here’s a visual representation of the new &lt;em&gt;point-to-site&lt;/em&gt; scenarios now enabled:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_19D3B27A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_107A7DF7.png" width="670" height="351" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In addition to enabling developers to easily VPN to Windows Azure and directly connect to machines, the new Point-to-Site VPN support enables some other cool new scenarios:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Small businesses (or departments within an enterprise) who don’t have existing VPN devices and/or network expertise to manage VPN devices can now rely on the &lt;i&gt;Point-to-Site VPN&lt;/i&gt; feature to securely connect to their Azure deployments. Because the VPN software to connect is built-into Windows it is really easy to enable and use. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;You can quickly set up secure connections without the involvement from the network administrator, even if your computers are behind a corporate proxy or firewall. This is great for cases where you are at a customer site or working in a remote location (or a coffee shop).&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;How to Enable the Point-to-Site Functionality&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With today’s release we’ve updated the Virtual Network creation wizard in the Portal so that you can now configure it to enable both ‘Site-to-Site’ and ‘Point-to-Site’ VPN options.&amp;#160; Create a Virtual Network using the “Custom Create” option to enable these options:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_3918E9FE.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6FF5CEF5.png" width="818" height="547" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Within the Virtual Network Custom Create wizard you can now click a checkbox to enable either the Point-To-Site or Site-To-Site Connectivity options (or both at the same time):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_43D8D204.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6CE37100.png" width="814" height="530" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the following screens you can then specify the IP address space of your Virtual Network.&amp;#160; Once the network is configured, you will create and upload a root certificate for your VPN clients, start the gateway, and then download the VPN client package.&amp;#160; You can accomplish these steps using the “Quick Glance” commands on the Virtual Network dashboard as well as the “Create Gateway” button on the command-bar of the dashboard.&amp;#160; &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn133792.aspx"&gt;Read this tutorial on how to “Configure a Point-to-Site VPN in the Management Portal”&lt;/a&gt; for detailed instructions on how to do this.&lt;/p&gt;  &lt;p&gt;After you finish installing the VPN client package on your machine, you will see a new connection choice in your Windows Networks panel.&amp;#160; Connecting to this will establish a secure VPN tunnel your Windows Azure Virtual Network:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5CD732FA.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3EF8AEF9.png" width="314" height="318" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you connect you will have full IP level access to all virtual machines and cloud services hosted in your Azure virtual network!&amp;#160; No hardware needs to be installed to enable it, and it works behind firewalls and proxy servers.&amp;#160; Additionally, with this feature, you don’t have to enable public RDP endpoints on virtual machines to connect to them - you can instead use the private IP addresses of your virtual private network to RDP to them through the secure VPN connection.&lt;/p&gt;  &lt;p&gt;For details instructions on how to do all of the above please read our &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn133792.aspx"&gt;Tutorial on how to “Configure a Point-to-Site VPN in the Management Portal”&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Software VPN Device support for Site-to-Site&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;With today’s release we are also &lt;/font&gt;adding software VPN device support to our existing ‘Site-to-Site VPN’ connectivity solution (which previously required you to use a hardware VPN device from Cisco or Juniper). Starting today we also now support a pure software based Windows Server 2012 ‘Site-to-Site’ VPN option.&amp;#160; All you need is a vanilla Windows Server 2012 installation. You can then run a PowerShell script that enables the Routing and Remote Access Service (RRAS) on the Windows Server and configures a Site-To-site VPN tunnel and routing table on it.&amp;#160; &lt;/p&gt;  &lt;p&gt;This allows you to enable a full site-to-site VPN tunnel that connects your on-premises network and machines to your virtual network within Windows Azure - without having to buy a hardware VPN device.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Dynamic DNS Support&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With today’s release we have also relaxed restrictions around DNS server setting updates in virtual networks. You can now update the DNS server settings of a virtual network at any time without having to redeploy the virtual network and the VMs in them. Each VM in the virtual network will pick up the updated settings when the DNS is refreshed on that machine, either by renewing the DNS settings or by rebooting the instance.&amp;#160; This makes updates much simpler.&lt;/p&gt;  &lt;p&gt;If you’re interested further in Windows Azure Virtual Networks, and the capabilities and scenarios it enables, you can find more information &lt;a href="http://go.microsoft.com/fwlink/?LinkId=296649"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Virtual Machines: Remote PowerShell and Linux SSH provisioning enhancements &lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Last week we &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx"&gt;announced&lt;/a&gt; the general availability of Virtual Machine support as part of our IaaS release. With today’s update we are adding two nice enhancements:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Support for Optionally Enabling Remote PowerShell on Windows Virtual Machines&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With today’s update, we now enable you to configure whether remote PowerShell is enabled for Windows VMs when you provision them using the Windows Azure Management Portal. This option is now available when you create a Virtual Machine using the &lt;strong&gt;FROM GALLERY&lt;/strong&gt; option in the portal:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_453F8587.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6E4A2483.png" width="812" height="289" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The last step of the wizard now provides a checkbox that gives you the option of enabling PowerShell Remoting:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_494C640A.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6B37C68E.png" width="784" height="562" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When the checkbox is selected the VM enables remote PowerShell, and a default firewall endpoint is created for the deployment.&amp;#160; This enables you to have the VM immediately configured and ready to use without ever having to RDP into the instance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Linux SSH Provisioning&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Previously, Linux VMs provisioned using Windows Azure defaulted to using a password as their authentication mechanism – with provisioning Linux VMs with SSH key-based authentication being optional. Based on feedback from customers, we have now made SSH key-based authentication the default option and allow you to omit enabling a password entirely if you upload a SSH key:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2214AB86.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5CFBDE4F.png" width="779" height="559" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Cloud Services: Enabling Dynamic Remote Desktop for a Deployed Cloud Service&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Windows Azure Cloud Services support the ability for developers to RDP into web and worker role instances.&amp;#160; This can be useful when debugging issues.&lt;/p&gt;  &lt;p&gt;Prior to today’s release, developers had to explicitly enable RDP support during development – prior to deploying the Cloud Service to production.&amp;#160; If you forgot to enable this, and then ran into an issue in production, you couldn’t RDP into it without doing an app update and redeploy (and then waiting to hit the issue again).&lt;/p&gt;  &lt;p&gt;With today’s release we have added support to enable administrators to dynamically configure remote desktop support – even when it was not enabled during the initial app deployment.&amp;#160; This ensures you can always debug issues in production and never have to redeploy an app in order to RDP into it.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;How to Enable Dynamic Remote Desktop on a Cloud Service&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Remote desktop can be dynamically enabled for all the role instances of a Cloud Service, or enabled for an individual role basis.&amp;#160; To enable remote desktop dynamically, navigate to the Configure tab of a cloud service and click on the &lt;b&gt;REMOTE&lt;/b&gt; button:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_73BDB689.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_15A9190E.png" width="825" height="494" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will bring up a dialog that enables you to enable remote desktop – as well as specify a user/password to login into it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_57AF884F.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_00BA274C.png" width="671" height="575" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once dynamically enabled you can then RDP connect to any role instance within the application using the username/password you specified for them.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure SDK for Ruby&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Windows Azure already has SDKs for .NET, Java, Node.js, Python, PHP and Mobile Devices (Windows 8/Phone, iOS and Android).&amp;#160; Today, we are happy to announce the first release of a new &lt;a href="http://go.microsoft.com/fwlink/?LinkId=296420&amp;amp;clcid=0x409"&gt;Windows Azure SDK for Ruby&lt;/a&gt; (v0.5.0). &lt;/p&gt;  &lt;p&gt;Using our new &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx"&gt;IaaS offering&lt;/a&gt; you can already build and deploy Ruby applications in Windows Azure.&amp;#160; With this first release of the Windows Azure SDK for Ruby, you can also now build Ruby applications that use the following Windows Azure services:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Storage: Blobs, Tables and Queues&lt;/li&gt;    &lt;li&gt;Service Bus: Queues and Topics/Subscriptions&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you have Ruby installed, just do a &lt;strong&gt;gem install azure &lt;/strong&gt;to start using it.&amp;#160; Here are some useful links to learn more about using it:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=296420&amp;amp;clcid=0x409"&gt;Ruby Developer Center&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=296418&amp;amp;clcid=0x409"&gt;GitHub repository&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=296421&amp;amp;clcid=0x409"&gt;Ruby gem&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=296419&amp;amp;clcid=0x409"&gt;Rdoc&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Like all of the other Windows Azure SDKs we provide, the Windows Azure SDK for Ruby is a fully open source project hosted on&lt;b&gt; &lt;/b&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=296418&amp;amp;clcid=0x409"&gt;&lt;b&gt;GitHub&lt;/b&gt;&lt;/a&gt;. The work to develop this Ruby SDK was a joint effort between &lt;a href="https://www.appfog.com/"&gt;AppFog&lt;/a&gt; and Microsoft. I’d like to say a special thanks to AppFog and especially their CEO Lucas Carlson for their passion and support with this effort.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release includes a bunch of nice features that enable you to build even better cloud solutions.&amp;#160; If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using all of the above features today.&amp;#160; Then visit the &lt;a href="https://www.windowsazure.com/en-us/develop/overview/"&gt;Windows Azure Developer Center&lt;/a&gt; to learn more about how to build apps with it.&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10215637" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Windows AzureConf this Tuesday</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/21/windows-azureconf-this-tuesday.aspx</link><pubDate>Mon, 22 Apr 2013 04:59:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37411</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;This Tuesday, April 23, we’ll be hosting &lt;a href="http://www.windowsazureconf.net/"&gt;Windows AzureConf&lt;/a&gt; – a free online event for and by the Windows Azure community.&amp;#160; It will be streamed online from 9:00 AM - 5:00 PM PST via &lt;a href="http://channel9.msdn.com/"&gt;Channel 9&lt;/a&gt;, and you can watch it all for free.&lt;/p&gt;  &lt;p&gt;I’ll be kicking off the event with a Windows Azure keynote in the morning (a great way to learn more about Windows Azure if you haven’t used it yet!). Following my talk the rest of the day will be full of excellent presentations from members of the Windows Azure community.&amp;#160; You can ask questions from them live and I think you’ll find the day an excellent way to learn more about Windows Azure – as well as hear directly from developers building solutions on it today.&lt;/p&gt;  &lt;p&gt;Last year’s Windows AzureConf was a great success, and brought some awesome community members together to deliver some great content around Windows Azure. All of the sessions are available for on-demand viewing on the Windows AzureConf 2012 event page on Channel 9. Sessions from &lt;a href="http://channel9.msdn.com/Events/WindowsAzure/AzureConf2012"&gt;Windows AzureConf 2012&lt;/a&gt; are still available for viewing online. &lt;/p&gt;  &lt;p&gt;For more information including a &lt;a href="http://www.windowsazureconf.net/schedule/"&gt;schedule&lt;/a&gt;, &lt;a href="http://www.windowsazureconf.net/speakers/"&gt;speaker list&lt;/a&gt; or to &lt;a href="http://www.windowsazureconf.net/#register"&gt;register&lt;/a&gt; visit the Windows AzureConf website.&lt;/p&gt;  &lt;p&gt;Hope to see you there!&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;P.S. We will also make the presentations available for download after the event in case you miss them. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image001_7A96850B.png"&gt;&lt;img title="clip_image001" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="clip_image001" src="http://weblogs.asp.net/blogs/scottgu/clip_image001_thumb_4EE5BB0F.png" width="672" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10194509" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: ASP.NET Web API: CORS support and Attribute Based Routing Improvements</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx</link><pubDate>Fri, 19 Apr 2013 18:37:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37409</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;We’ve seen a huge adoption of ASP.NET Web API since its initial release.&amp;#160; In February we &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/02/18/announcing-release-of-asp-net-and-web-tools-2012-2-update.aspx"&gt;shipped the ASP.NET and Web Tools 2012.2 Update&lt;/a&gt; – which added a number of additional enhancements to both Web API and the other components of ASP.NET.&amp;#160; &lt;/p&gt;  &lt;p&gt;The ASP.NET Team has been hard at work on developing the next set of features (lots of cool stuff coming).&amp;#160; One of the great things about this work has been how the team has used the &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx"&gt;open source development process&lt;/a&gt; – which we &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx"&gt;announced we were adopting last spring&lt;/a&gt; - to collaborate even more closely with the community to both validate the features early, as well as enable developers in the community to directly contribute to the development of them.&lt;/p&gt;  &lt;p&gt;Below are some updates on two of the great features coming to ASP.NET Web API – which were developed and contributed by ASP.NET MVP &lt;strong&gt;Brock Allen&lt;/strong&gt; and &lt;strong&gt;Tim McCall &lt;/strong&gt;(of &lt;a href="http://attributerouting.net/"&gt;attributerouting.net&lt;/a&gt; fame):&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;CORS support for ASP.NET Web API&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Cross-origin resource sharing (&lt;a href="https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&amp;amp;redirectslug=HTTP_access_control"&gt;CORS&lt;/a&gt;) is a &lt;a href="http://www.w3.org/"&gt;W3C&lt;/a&gt; standard that allows web pages to make AJAX requests to a different domain. This standard relaxes the same-origin policy implemented in web browsers that restricts calls to the domain of the resource that makes the call. The &lt;a href="http://sharepoint/sites/uifxue/wptdocshare/Shared%20Documents/(http:/www.w3.org/TR/cors"&gt;CORS specification&lt;/a&gt; defines how the browser and server interact to make cross-origin calls.&lt;/p&gt;  &lt;p&gt;The following image shows the &lt;a href="http://blogs.msdn.com/b/yaohuang1/archive/2012/12/02/adding-a-simple-test-client-to-asp-net-web-api-help-page.aspx"&gt;ASP.NET Web API Test Tool&lt;/a&gt; (running on http://xyz123.azurewebsites.net/) making a cross domain call to the Contoso domain. When you click &lt;b&gt;Send&lt;/b&gt;, a cross-origin request is made. Because the Contoso site is not configured to support CORS, an error dialog is displayed.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image0024_1D0A7691.jpg"&gt;&lt;img title="clip_image002[4]" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image002[4]" src="http://weblogs.asp.net/blogs/scottgu/clip_image0024_thumb_75668B17.jpg" width="624" height="245" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The CORS error appears on the &lt;b&gt;Console&lt;/b&gt; tab of the IE F12 tools.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image0044_6DDDAC5B.jpg"&gt;&lt;img title="clip_image004[4]" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image004[4]" src="http://weblogs.asp.net/blogs/scottgu/clip_image0044_thumb_3D4CBF54.jpg" width="624" height="260" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For security reasons, the web browser doesn’t allow calls from the azurewebsites domain to the Contoso domain. With the new ASP.NET Web API CORS framework, Contoso.com can be configured to send the correct CORS headers so the browser will accept cross-origin calls. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image0054_10C6201F.png"&gt;&lt;img title="clip_image005[4]" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image005[4]" src="http://weblogs.asp.net/blogs/scottgu/clip_image0054_thumb_626F2B22.png" width="559" height="550" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;MVP &lt;a href="http://brockallen.com/about/"&gt;&lt;strong&gt;Brock Allen&lt;/strong&gt;&lt;/a&gt; contributed his CORS source to the &lt;a href="http://aspnetwebstack.codeplex.com"&gt;ASP.NET Webstack repository&lt;/a&gt;. Brock worked with &lt;a href="http://blogs.msdn.com/b/yaohuang1"&gt;Yao Huang Lin&lt;/a&gt; (a developer on the ASP.NET team), to refine and iterate the design and then to get it pulled into the Webstack repository. &lt;a href="http://brockallen.com/"&gt;Brock Allen&lt;/a&gt;, &lt;a href="https://twitter.com/danroth27"&gt;Dan Roth&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/b/yaohuang1"&gt;Yao&lt;/a&gt; discuss Brock’s CORS contribution in &lt;a href="http://channel9.msdn.com/Shows/Web+Camps+TV/ASPNET-Web-API-and-CORS-Support"&gt;this Channel 9 video&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The &lt;a href="http://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API&amp;amp;referringTitle=Specs"&gt;CORS support for ASP.NET Web API&lt;/a&gt; page shows how to get started with this new feature.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Attribute-Based Routing in ASP.NET Web API&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;We recently published in the ASP.NET Web API &lt;a href="http://aspnetwebstack.codeplex.com/wikipage?title=Roadmap"&gt;roadmap&lt;/a&gt; our intention to support attribute- based routing in ASP.NET Web API. Route attributes bring the URL definition closer to the code that runs for that particular URL, making it easier to understand which URL must be called for a particular block of code and simplifying many common routing scenarios. &lt;/p&gt;  &lt;p&gt;For example, let’s say you want to define a Web API that has the standard set of HTTP actions (GET, POST, PUT, DELETE, and so on) but you also want to have an additional custom action, such as Approve. Instead of adding another route to the global route table for the Approve action, you can instead just attribute the action directly:&lt;/p&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;OrdersController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; : &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;ApiController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Order&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;gt; GetOrders() {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Order&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; GetOrder(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; id) {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Order&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; Post(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Order&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; order) {…}&lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;HttpPost&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;orders/{id}/approve&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Order&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; Approve(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; id) {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:9.5pt;line-height:115%;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;An extended route template syntax makes it simple to specify default values and constraints for route values. For example, you can now easily create two actions that are called based on parameter type. In the following People controller, the id parameter of the GetByID action takes only int values. The GetByName action method contains a default name of “Nick”.&lt;/p&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;PeopleController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; : &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;ApiController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;HttpGet&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;{name=Nick}&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; GetByName(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; name) {…}      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;HttpGet&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;{id:int}&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;string&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; GetById(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; id) {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;You can also define common route prefixes for your web APIs. For example, you can use route prefixes to set up a resource hierarchy:&lt;/p&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;RoutePrefix&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;movies&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;RoutePrefix&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;actors/{actorId}/movies&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;RoutePrefix&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;directors/{directorId}/movies&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;MoviesController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; : &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;ApiController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;{      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Movie&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;gt; GetMovies() {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Movie&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;gt; GetMoviesByActor(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; actorId) {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;Movie&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&amp;gt; GetMoviesByDirector(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;int&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; directorId) {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size:9.5pt;line-height:115%;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;Or, you can use route prefixes to handle multiple versions of your web API:&lt;/p&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;RoutePrefix&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;api/v1/customers&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;CustomersV1Controller&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; : &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;ApiController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt; {…}     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div style="margin-bottom:0pt;line-height:normal;"&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;"&gt;RoutePrefix&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;(&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#a31515;"&gt;&amp;quot;api/v2/customers&amp;quot;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;"&gt;)]     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt;&lt;span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;line-height:115%;"&gt;public&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:blue;line-height:115%;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt; &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;line-height:115%;"&gt;CustomersV2Controller&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt; : &lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:#2b91af;line-height:115%;"&gt;ApiController&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:consolas;background:white;color:black;line-height:115%;"&gt; {…}&lt;/span&gt;&lt;span style="font-size:9.5pt;line-height:115%;"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/div&gt;  &lt;p&gt;Similar to the new CORS support in ASP.NET Web API, the new support for attribute-based routing is largely a contribution from the community. We are working closely with &lt;strong&gt;Tim McCall&lt;/strong&gt; of &lt;a href="http://attributerouting.net/"&gt;attributerouting.net&lt;/a&gt; fame to bring many of the features of his AttributeRouting project directly into ASP.NET Web API. &lt;/p&gt;  &lt;p&gt;It’s really exciting to see how these collaborations across the ASP.NET Team and the community are helping to move the ASP.NET platform forward!&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S.&lt;/em&gt; &lt;em&gt;In addition to blogging, I use Twitter to-do quick posts and share links. My Twitter handle is: &lt;a href="http://twitter.com/scottgu"&gt;@scottgu&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10184851" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Windows Azure: General Availability of Infrastructure as a Service (IaaS)</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx</link><pubDate>Tue, 16 Apr 2013 13:01:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37389</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;This morning &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-power-of-and.aspx"&gt;we announced&lt;/a&gt; the general availability release of our Infrastructure as a Service (IaaS) support for Windows Azure – including our new Virtual Machine and Virtual Network capabilities.&amp;#160; This release is now live in production, backed by an enterprise SLA, supported by Microsoft Support, and is ready to use for production apps.&amp;#160; If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using it today.&lt;/p&gt;  &lt;p&gt;In addition to supporting all of the features and capabilities included during the preview, today’s IaaS release also includes some great new enhancements:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; VM Image Templates (including SQL Server, BizTalk Server, and SharePoint images) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; VM Sizes (including Larger Memory Machines) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; VM Prices (we’ve &lt;u&gt;reduced prices 21%-33%&lt;/u&gt; for IaaS and PaaS VMs) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Below are more details on today’s release and some of the new enhancements.&amp;#160; You can also read &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-power-of-and.aspx"&gt;Bill Hilf’s blog post&lt;/a&gt; to learn about some of the customers who are already using the IaaS capabilities in production.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure Virtual Machines&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Windows Azure Virtual Machines enable you to deploy and run durable VMs in the cloud.&amp;#160; You can easily create these VMs from an Image Gallery of pre-populated templates built-into the Windows Azure Management Portal, or alternatively upload and run your own custom-built VHD images.&amp;#160; Our built-in image gallery of VM templates includes both Windows Server images (including &lt;strong&gt;Windows Server 2012&lt;/strong&gt;, &lt;strong&gt;Windows Server 2008 R2&lt;/strong&gt;, &lt;strong&gt;SQL Server&lt;/strong&gt;, &lt;strong&gt;BizTalk Server&lt;/strong&gt; and &lt;strong&gt;SharePoint Server&lt;/strong&gt;) as well as Linux images (including &lt;strong&gt;Ubuntu&lt;/strong&gt;, &lt;strong&gt;CentOS&lt;/strong&gt;, and &lt;strong&gt;SUSE&lt;/strong&gt; &lt;strong&gt;Linux distributions&lt;/strong&gt;).&lt;/p&gt;  &lt;p&gt;Windows Azure uses the same Hyper-V virtualization service built-into Windows Server 2012, which means that you can create and use a common set of VHDs across your on-premises and cloud environments.&amp;#160; No conversion process is required as you move these VHDs into or out of Windows Azure – your VMs can be copied up and run as-is in the cloud, and the VMs you create in Windows Azure can also be downloaded and run as-is on your on-premise Windows 2012 Servers.&amp;#160; This provides tremendous flexibility, and enables you to easily build hybrid solutions that span both cloud and on-premises environments.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Easy to Get Started&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can quickly create a new VM in only a few seconds using the Windows Azure Management Portal.&amp;#160; Just click the New command on the bottom left of the portal, and then use the &lt;em&gt;Virtual Machine-&amp;gt;Quick Create &lt;/em&gt;option to instantiate a new Virtual Machine anywhere in the world (if you want to do this via the command line you can also &lt;a href="http://www.windowsazure.com/en-us/downloads/"&gt;download our command-line-tools&lt;/a&gt; for &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156055.aspx"&gt;Windows-based PowerShell users&lt;/a&gt; or for &lt;a href="http://www.windowsazure.com/en-us/manage/linux/how-to-guides/command-line-tools/"&gt;Linux/Mac users&lt;/a&gt;). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_352666CF.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_65504243.png" width="815" height="552" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you create a new VM instance you can easily Remote PowerShell, SSH, or Terminal Server into it in order to customize the VM however you want (and optionally capture your own custom image snapshot of it to use when creating new VM instances).&amp;#160; This provides you with the flexibility to run pretty much any workload within Windows Azure.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Integrated Management and Monitoring&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In addition to enabling you to create VMs, the Windows Azure Management Portal also provides built-in management and monitoring support of them once they are running:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2B60FF57.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7486AB10.png" width="819" height="563" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Durable Data Disks&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Virtual Machines in Windows Azure can optionally attach and use data disks for storage (each disk can be up to 1 TB in size):&lt;/p&gt;  &lt;p&gt;&lt;img alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_76ED7882.png" /&gt;&lt;/p&gt;  &lt;p&gt;Once attached, these disks look like standard disks/devices to a Virtual Machine, and you can format them using whatever disk format you want (e.g. NTFS for Windows, ext3 or ext4 for Linux, etc).&amp;#160; The disks are both persistent and highly durable, and are implemented on top of &lt;a href="https://www.windowsazure.com/en-us/manage/services/storage/"&gt;Windows Azure Blob Storage&lt;/a&gt; (which ensures that each drive is maintained in triplicate for high availability).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Built-in Load Balancer Support&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Virtual Machines in Windows Azure can also optionally utilize a network load-balancer (LB) at no extra charge – enabling you to distribute traffic sent to a single IP address/port to multiple VM machine instances.&amp;#160; You can use the load balancer to both both scale out your apps, as well as provide better fault tolerance when a VM is down or you are performing maintenance on it.&amp;#160; The load balancer can automatically remove the machine from rotation when this happens:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6FA3F754.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_765700D7.png" width="378" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Setting up load-balancing across VMs is easy – just click the the &lt;strong&gt;Endpoints&lt;/strong&gt; tab within a VM in the Windows Azure Management Portal and then choose to add an endpoint to the VM (for the first VM you want to add), and then select “load-balance traffic on an existing endpoint” for the subsequent VM instances:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7D0A0A5A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6D69FF49.png" width="624" height="452" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can find more details on how to configure a set of load-balanced VMs in this &lt;a href="http://www.windowsazure.com/en-us/manage/windows/common-tasks/how-to-load-balance-virtual-machines/"&gt;common task on load-balanced sets&lt;/a&gt;. &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure Virtual Networks&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Along with the general availability of Windows Azure Virtual Machines, we are also today announcing the general availability of Windows Azure Virtual Networks.&amp;#160; Windows Azure Virtual Networks enable you to accomplish the following tasks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Create a virtual private network with persistent private IPs:&lt;/b&gt; You can bring your preferred private IPv4 space (10.x, 172.x, 192.x) to Windows Azure using a Virtual Network. Furthermore, Virtual Machines within a Virtual Network will have a stable private IP address, even across hardware failures. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Cross-premises connectivity over site-to-site IPsec VPNs:&lt;/b&gt; You can extend your on-premises network to Windows Azure and treat Virtual Machines in Windows Azure as a part of your organization’s existing network using a Virtual Network gateway to broker the IPSec connection. We support standard VPN hardware devices from Cisco and Juniper to enable this. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Configure custom DNS servers:&lt;/b&gt; Using a Virtual Network, you can point your Virtual Machines to a DNS server on-premises or a DNS server running in Windows Azure on the same Virtual Network. This also enables running a Windows Server Active Directory &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156090.aspx"&gt;domain controller&lt;/a&gt; on Windows Azure. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Extended trust and security boundary:&lt;/b&gt; Deploying Virtual Machines into a Virtual Network will extend the trust boundary to that Virtual Network. You can create several Virtual Machines and Cloud Services within a single Virtual Network and have them communicate using the private address space. This allows simple communication between different Virtual Machines or even Virtual Machines and web/worker roles in separate Cloud Services, without having to go through a public IP address. Furthermore, Virtual Machines outside the Virtual Network have no way to identify or connect to services hosted within Virtual Network, providing an added layer of isolation to your services. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Creating a Virtual Network&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Creating a virtual network in Windows Azure is easy, just click the New command on the bottom left of the portal, and then use the Networks&amp;gt;Virtual Network-&amp;gt;Quick Create (or Custom Create) option to instantiate a new Virtual Network:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2614A957.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_0F5561CE.png" width="816" height="552" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Virtual Networks can be created and used in Windows Azure for free. The only thing we charge extra for is if you enable the VPN gateway support – at which point we charge a per hour + bandwidth usage fee.&amp;#160; You can find more information on Virtual Network and how it complements our Virtual Machine offering &lt;a href="http://www.windowsazure.com/en-us/home/features/networking/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;New VM Image Templates (including SQL Server, BizTalk, and SharePoint images)&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s Windows Azure release includes several new VM image templates that you can use to easily create and run new Virtual Machines.&amp;#160; These include several new &lt;strong&gt;SQL Server 2012 images&lt;/strong&gt; (including standard and enterprise edition templates), new &lt;strong&gt;BizTalk Server 2013 images&lt;/strong&gt; (including Evaluation, Standard and Enterprise editions), and a new &lt;strong&gt;SharePoint Server 2013 image:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_43898B14.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_4C791D53.png" width="625" height="434" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Hourly Billing Support&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In addition to making it easier and faster to get started, these SQL Server and BizTalk Server images also enable an &lt;strong&gt;hourly billing model&lt;/strong&gt; which means you don’t have to pay for an upfront license of these server products – instead you can deploy the images and pay an additional hourly rate above the standard OS rate for the hours you run the software.&amp;#160; This provides a very flexible way to get started with no upfront costs (instead you pay only for what you use).&amp;#160; You can learn more about the hourly rates &lt;a href="http://www.windowsazure.com/en-us/pricing/details/virtual-machines/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;More Details on SQL Server, BizTalk and SharePoint Server&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;More details on deploying SQL Server in Windows Azure Virtual Machines can be found &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj879332.aspx"&gt;here&lt;/a&gt; and details on BizTalk Server can be found &lt;a href="http://aka.ms/BizTalkIaaS"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;This week we are also releasing a &lt;a href="http://go.microsoft.com/fwlink/?LinkID=288782&amp;amp;clcid=0x409"&gt;SharePoint deployment guide&lt;/a&gt; as well as PowerShell Scripts that make it easy to get started with SharePoint on Windows Azure – and to enable the automation of a complete SharePoint farm.&amp;#160; Once deployed, you can also administer SharePoint 2013 directly using PowerShell. &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;New VM Sizes (including Larger Memory Options)&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s Windows Azure release we are also adding two new VM size options to the existing 5 VM sizes we supported during the public preview.&amp;#160; These two new VM sizes include a new &lt;strong&gt;4 core x 28GB RAM&lt;/strong&gt; configuration as well a &lt;strong&gt;8 core x 56GB RAM&lt;/strong&gt; configuration.&amp;#160; You can now select these options when you create a new VM:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0E7F8C95.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_54FC7C9D.png" width="623" height="451" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;These new VM sizes enable you to run even larger workloads with Windows Azure.&amp;#160; More details on the different sizes and their capabilities can be found &lt;a href="http://go.microsoft.com/FWLink/p/?LinkID=294683"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;New VM Prices (including a price drop of 21% to 33%)&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s Windows Azure release we are also announcing significant price reductions to our Windows Azure compute options.&amp;#160; This new pricing delivers a &lt;strong&gt;21% price reduction&lt;/strong&gt; from the previously announced pricing of Windows Azure Virtual Machines (IaaS), and a &lt;strong&gt;33% price reduction&lt;/strong&gt; for solutions deployed using our Windows Azure Cloud Services (PaaS) model.&amp;#160; Our new VM pricing also matches Amazon’s on-demand VM pricing for both Windows and Linux VMs. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;New Windows Azure Virtual Machine Compute Pricing&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Below are the new hourly on-demand rates for Windows Azure Virtual Machines:&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td style="background:black;color:white;" valign="top" width="93"&gt;           &lt;p&gt;Size Name&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="background:black;color:white;" valign="top" width="97"&gt;           &lt;p&gt;# of CPU Cores&lt;/p&gt;         &lt;/td&gt;          &lt;td style="background:black;color:white;" valign="top" width="76"&gt;           &lt;p&gt;Memory&lt;/p&gt;         &lt;/td&gt;          &lt;td style="background:black;color:white;" valign="top" width="146"&gt;           &lt;p&gt;Windows VM Pricing&lt;/p&gt;         &lt;/td&gt;          &lt;td style="background:black;color:white;" valign="top" width="27%"&gt;           &lt;p&gt;Linux VM Pricing&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;ExtraSmall&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;Shared&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;768 MB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$0.02 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.02 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;Small&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;1&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;1.75 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$0.09 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.06 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;Medium&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;3.5 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$0.18 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.12 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;Large&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;7 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$0.36 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.24 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;ExtraLarge&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;14 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$0.72 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.48 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;A6&lt;b&gt;&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;4&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;28 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$1.02 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$0.82 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="93"&gt;           &lt;p&gt;A7&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="97"&gt;           &lt;p&gt;8&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="76"&gt;           &lt;p&gt;56 GB&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="146"&gt;           &lt;p&gt;$2.04 per hour&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="27%"&gt;           &lt;p&gt;$1.64 per hour&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Note that the above prices are for hourly on-demand usage (meaning there is no commitment to use them for more than an hour and you pay only for what you consume).&amp;#160; Complete pricing details for Windows Azure Virtual Machines can be found &lt;a href="http://www.windowsazure.com/en-us/pricing/details/virtual-machines/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Commitment Pricing Discounts&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can also optionally take advantage of our &lt;strong&gt;6 Month&lt;/strong&gt; and &lt;strong&gt;12 Month commitment plans&lt;/strong&gt; to obtain significant discounts on the standard pay as you go rates.&amp;#160; With a commitment plan you commit to spend a certain amount of money each month and in return we give you a discount on any Windows Azure resource you use that money on (and the more money you commit to use the bigger the discount we give).&lt;/p&gt;  &lt;p&gt;One of the nice aspects of our Windows Azure commitment plans is that they don’t lock you into having to specify upfront the number of VMs or specific VM sizes you want to use (or which regions or availability zones you want to use them in).&amp;#160; Instead you simply commit to spend a certain amount of money each month and we’ll give you a discount on&lt;em&gt; any Windows Azure resource you use that money on&lt;/em&gt;.&amp;#160; This provides you with the flexibility to change your VM deployment sizes dynamically without having to worry about being locked into a particular configuration, as well as the option to spend the commitment on both IaaS + PaaS based services (and take advantage of a discount on both).&amp;#160; You can learn more about our commitment pricing plans &lt;a href="http://www.windowsazure.com/en-us/offers/commitment-plans/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Other Improvements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s Windows Azure release also includes a number of other small VM enhancements including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Increased default OS disk size&lt;/strong&gt;: During the preview our default OS disk partition size was 30GB.&amp;#160; Based on customer feedback all of our new images now default to 127GB in size for the OS partition. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Ability to customize the Administrator username&lt;/strong&gt;: We now enable you to customize the login name of the administrator account when creating VM images.&amp;#160; This enables you to avoid always having a well known username on your VMs (a good security best practice). &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Remote PowerShell Enabled By Default&lt;/strong&gt;: When deploying your Virtual Machine using PowerShell, we now enable remote PowerShell by default in all Windows Server OS images - including the SQL Server, BizTalk Server, and SharePoint images.&amp;#160; This makes it easier to automate setting up VMs without having to ever login interactively to a newly deployed instance. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;We are really excited about today’s release – we know people have been looking forward to this release for awhile.&amp;#160; We’d like to say a special thanks to everyone who used it during the preview and gave us feedback on it.&amp;#160; &lt;/p&gt;  &lt;p&gt;Today’s release now allows everyone to build better cloud solutions than ever before.&amp;#160; These solutions can now integrate IaaS and PaaS together, use both Windows and Linux based software together, and deliver value faster than ever before.&amp;#160; We are really looking forward to the solutions you build with it.&lt;/p&gt;  &lt;p&gt;If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using all of the above features today.&amp;#160; Visit the &lt;a href="https://www.windowsazure.com/en-us/develop/overview/"&gt;Windows Azure Developer Center&lt;/a&gt; to learn more about how to build apps with it.&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10167443" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Windows Azure Global Bootcamp on April 27th – sign up now</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/12/windows-azure-global-bootcamp-on-april-27th-sign-up-now.aspx</link><pubDate>Sat, 13 Apr 2013 01:55:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37362</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;On April 27, something very cool is happening. A bunch of Windows Azure MVP&amp;#39;s and community activists are organizing a &lt;a href="http://globalwindowsazure.azurewebsites.net/"&gt;Global Windows Azure Bootcamp&lt;/a&gt;. This is a completely free, one-day training event for Windows Azure, all organized by the community, and presented in person all over the World. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://globalwindowsazure.azurewebsites.net/"&gt;&lt;img title="clip_image001" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image001" src="http://weblogs.asp.net/blogs/scottgu/clip_image001_6C948099.png" width="300" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m not sure if this is the largest community event ever - it is very cool to see how many places this event is happening.&amp;#160; Below is the &lt;a href="http://globalwindowsazure.azurewebsites.net/?page_id=151"&gt;location map&lt;/a&gt; as it stands today – and new locations are being added daily. Right now there are almost 100 locations and several thousand attendees already registered to take part.&amp;#160; &lt;a href="http://globalwindowsazure.azurewebsites.net/?page_id=151"&gt;Browse the location listings&lt;/a&gt; to find a location near you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/clip_image003_55D53910.jpg"&gt;&lt;img title="clip_image003" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;display:inline;" border="0" alt="clip_image003" src="http://weblogs.asp.net/blogs/scottgu/clip_image003_thumb_3C6D35D6.jpg" width="480" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are interested in learning about Windows Azure or want more info, checkout the &lt;a href="http://globalwindowsazure.azurewebsites.net/"&gt;Global Windows Azure Bootcamp&lt;/a&gt; website to learn more about the bootcamps.&amp;#160; Then find a location near you, sign-up and attend the event for free, and get involved with the Windows Azure community near you!&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10146539" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: Calling the SharePoint 2013 Rest API from a SharePoint Designer Workflow</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/09/calling-the-sharepoint-2013-rest-api-from-a-sharepoint-designer-workflow.aspx</link><pubDate>Tue, 09 Apr 2013 10:16:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37364</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>At the moment you will find many examples illustrating how to call external JSon web services from&amp;#160; SharePoint Designer 2013 workflows by using the Call activity, but we should keep in mind that the Call action works very well with the SharePoint REST api and this opens the door to plenty of possibilities. However you [...]&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1823&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item><item><title>Blog Post: Windows Azure: Active Directory Release, New Backup Service + Web Site Monitoring and Log Improvements</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/08/windows-azure-active-directory-release-new-backup-service-web-site-monitoring-and-log-improvements.aspx</link><pubDate>Mon, 08 Apr 2013 16:07:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37354</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>&lt;p&gt;Today we released some great enhancements to Windows Azure. These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Active Directory&lt;/strong&gt;: General Availability release of Windows Azure AD – it is now ready for production use!&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Backup Service&lt;/strong&gt;: New Service that enables secure offsite backups of Windows Servers in the cloud &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web Sites&lt;/strong&gt;: Monitoring and Diagnostic Enhancements &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of these improvements are now available to start using immediately (note: some services are still in preview). Below are more details on them:&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Active Directory: Announcing the General Availability release&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;I’m excited to announce the General Availability (GA) release of Windows Azure Active Directory!&amp;#160; This means it is ready for production use.&lt;/p&gt;  &lt;p&gt;All Windows Azure customers can now easily create and use a Windows Azure Active Directory to manage identities and security for their apps and organizations.&amp;#160; Best of all, this support is available for free (there is no charge to create a directory, populate it with users, or write apps against it).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Creating a New Active Directory&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;All Windows Azure customers (including those that manage their Windows Azure accounts using Microsoft ID) can now create a new directory by clicking the “Active Directory” tab on the left hand side of the Windows Azure Management Portal, and then by clicking the “Create your directory” link within it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5C8A37AA.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3382295F.png" width="855" height="483" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the “Create Your Directory” link above will prompt you to specify a few directory settings – including a temporary domain name to use for your directory (you can then later DNS map any custom domain you want to it – for example: mycompanyname.com):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_479B45E8.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_34E64C31.png" width="557" height="505" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you click the “Ok” button, Windows Azure will provision a new Active Directory for you in the cloud.&amp;#160; Within a few seconds you’ll then have a cloud-hosted Directory deployed that you can use to manage identities and security permissions for your apps and organization:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1054BEAD.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1DBAD1B3.png" width="814" height="287" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Managing Users within the Directory&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once a directory is created, you can drill into it to manage and populate new users:&lt;/p&gt;  &lt;p&gt;&lt;img alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_1D4847FE.png" /&gt;&lt;/p&gt;  &lt;p&gt;You can choose to maintain a “cloud only” directory that lives and is managed entirely within Windows Azure.&amp;#160; Alternatively, if you already have a Windows Server Active Directory deployment in your on-premises environment you can set it up to federate or directory sync with a Windows Azure Active Directory you are hosting in the cloud.&amp;#160; Once you do this, anytime you add or remove a user within your on-premises Active Directory deployment, the change is immediately reflected as well in the cloud.&amp;#160; This is really great for enterprises and organizations that want to have a single place to manage user security.&lt;/p&gt;  &lt;p&gt;Clicking the “Directory Integration” tab within the Windows Azure Management Portal provides instructions and steps on how to enable this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_66E07D6C.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3B2FB370.png" width="853" height="461" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Enabling Apps&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Starting with today’s release, we are also greatly simplifying the workflow involved to grant and revoke directory access permissions to applications.&amp;#160; This makes it much easier to build secure web or mobile applications that are deployed in the cloud, and which support single-sign-on (SSO) with your enterprise Active Directory.&lt;/p&gt;  &lt;p&gt;You can enable an app to have SSO and/or richer directory permissions by clicking the new “Integrated Apps” tab within a directory you manage:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4B3E8227.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_0691E7E6.png" width="831" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the “Add an App” link will then walk you through a quick wizard that you can use to enable SSO and/or grant directory permissions to an app:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_21CA40E7.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_215E0DF2.png" width="664" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Programmatic Integration&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure Active Directory supports several of the most widely used authentication and authorization protocols.&amp;#160; You can find more details about the protocols we support &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn151124.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Today’s general availability release includes production support for &lt;strong&gt;SAML 2.0&lt;/strong&gt; – which can be used to enable Single Sign-On/Sign-out support from any web or mobile application to Windows Azure Active Directory.&amp;#160; SAML is particularly popular with enterprise applications and is an open standard supported by all languages + operating systems + frameworks.&amp;#160; &lt;/p&gt;  &lt;p&gt;Today’s release of Windows Azure Active Directory also includes production support of the Windows Azure Active &lt;strong&gt;Directory Graph&lt;/strong&gt; – which provides programmatic access to a directory using REST API endpoints.&amp;#160; You can learn more about how to use the Windows Azure Active Directory Graph &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh974476.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In the next few days we are also going to enable a preview of &lt;strong&gt;OAuth 2.0/OpenID&lt;/strong&gt; support which will also enable Single Sign-On/Sign-out support from any web or mobile application to Windows Azure Active Directory. &lt;/p&gt;  &lt;p&gt;For a more detailed discussion of the new Active Directory support released today, read Alex Simons’ post on the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=294292&amp;amp;clcid=0x409"&gt;Active Directory blog&lt;/a&gt;.&amp;#160; Also review the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj673460.aspx"&gt;Windows Azure Active Directory documentation&lt;/a&gt; on MSDN and the following &lt;a href="http://www.windowsazure.com/en-us/manage/services/identity/"&gt;tutorials&lt;/a&gt; on the windowsazure.com website.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure Backup: Enables secure offsite backups of Windows Servers in the cloud&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s Windows Azure update also includes the preview of some great new services that make it really easy to enable backup and recovery protection with Windows Server.&lt;/p&gt;  &lt;p&gt;With the new Windows Azure Backup service, we are adding support to enable offsite backup protection for &lt;strong&gt;Windows Server 2008 R2 SP1&lt;/strong&gt; and &lt;strong&gt;Windows Server 2012&lt;/strong&gt;, &lt;strong&gt;Windows Server 2012 Essentials&lt;/strong&gt;, and&lt;strong&gt; System Center Data Protection Manager 2012 SP1 &lt;/strong&gt;to Windows Azure. You can manage cloud backups using the &lt;b&gt;familiar backup tools&lt;/b&gt; that administrators already use on these servers - and these tools now provide similar experiences for configuring, monitoring, and recovering backups be it to local disk or Windows Azure Storage. After data is backed up to the cloud, authorized users can easily recover backups to any server. And because incremental backups are supported, only changes to files are transferred to the cloud. This helps ensure &lt;b&gt;efficient use of storage&lt;/b&gt;, &lt;b&gt;reduced bandwidth consumption&lt;/b&gt;, and &lt;b&gt;point-in-time recovery of multiple versions&lt;/b&gt; of the data. Configurable data retention policies, data compression, &lt;b&gt;encryption&lt;/b&gt; and data transfer throttling also offer you added flexibility and help boost efficiency.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Managing your Backups in the Cloud&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To get started, you first need to sign up for the &lt;a href="https://account.windowsazure.com/PreviewFeatures"&gt;Windows Azure Backup preview&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Then login to the Windows Azure Management Portal, click the &lt;strong&gt;New&lt;/strong&gt; button, choose the &lt;strong&gt;Recovery Services&lt;/strong&gt; category and then create a &lt;strong&gt;Backup Vault&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_35E35D70.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_43497076.png" width="873" height="273" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once the backup vault is created you’ll be presented with a simple tutorial that will help guide you on how to register your Windows Servers with it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6C540F72.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7543A1B1.png" width="815" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once the servers are registered, you can use the appropriate local management interface (such as the Microsoft Management Console snap-in, System Center Data Protection Manager Console, or Windows Server Essentials Dashboard) to configure the scheduled backups and to optionally initiate recoveries. You can follow these tutorials for these:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=294159&amp;amp;clcid=0x409"&gt;Tutorial: Schedule Backups Using the Windows Azure Backup Agent&lt;/a&gt;&amp;#160;&lt;/b&gt;This tutorial helps you with setting up a backup schedule for your registered Windows Servers. Additionally, it also explains how to use Windows PowerShell cmdlets to set up a custom backup schedule. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=294160&amp;amp;clcid=0x409"&gt;Tutorial: Recover Files and Folders Using the Windows Azure Backup Agent&lt;/a&gt;&amp;#160;&lt;/b&gt;This tutorial helps you with recovering data from a backup. Additionally, it also explains how to use Windows PowerShell cmdlets to do the same tasks. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Within the Windows Azure Management Portal, you can drill into a backup value and click the &lt;strong&gt;SERVERS&lt;/strong&gt; tab to see which Windows Servers have been configured to use it.&amp;#160; You can also click the &lt;b&gt;PROTECTED ITEMS&lt;/b&gt; tab to view the items that have been backed up from the servers, &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Web Sites: Monitoring and Diagnostics Improvements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s Windows Azure update also includes a bunch of new monitoring and diagnostic capabilities for Windows Azure Web Sites.&amp;#160; This includes the ability to easily turn on/off tracing and store trace + log information in log files that can be easily retrieved via FTP or streamed to developer machines (enabling developers to see it in real-time – which can be super useful when you are trying to debug an issue and the app is deployed remotely).&amp;#160; The streaming support allows you to monitor the “tail” of your log files – so that you only retrieve content appended to them – which makes it especially useful when you clicking want to check something out without having to download the full set of logs.&lt;/p&gt;  &lt;p&gt;The new tracing support integrates very nicely with .NET’s System.Diagnostics library as well as ASP.NET’s built-in tracing functionality.&amp;#160; It also works with other languages and frameworks.&amp;#160; The real-time streaming tools are cross platform and work with Windows, Mac and Linux dev machines.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_57651DB0.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;display:inline;border-top-width:0px;" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_723143BC.png" width="797" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Read &lt;a href="http://www.hanselman.com/blog/StreamingDiagnosticsTraceLoggingFromTheAzureCommandLinePlusGlimpse.aspx"&gt;Scott Hanselman’s awesome tutorial and blog post&lt;/a&gt; that covers how to take advantage of this new functionality.&amp;#160; It is very, very slick.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Other Cool Things&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;In addition to the features above, there are several other really nice improvements added with today’s release. These include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;HDInsight&lt;/u&gt;: We launched our new HDInsight Hadoop Service 3 weeks ago.&amp;#160; Today’s update adds the ability to see diagnostic metrics for your HDInsight services in the Windows Azure Management Portal (they are surfaced in the dashboard view now – just like every other service).&amp;#160; This makes it really easy to monitor the number of active map and reduce tasks your service currently is processing. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Operation Logs&lt;/u&gt;: The Windows Azure operation audit logs (which you can view by clicking the “Settings” tab on the left of the Windows Azure Management Portal) now shows the user account name who performed each operation on the account.&amp;#160; This makes it much easier to track who did what on your services. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Media Services&lt;/u&gt;: You can now choose from a wider variety of presets when encoding video content with the portal.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Virtual Machines&lt;/u&gt;: We have increased the default OS disk size for new VMs that are created, and now allow you to specify the default user name for the VM. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;The above features are now available to start using immediately (note: some of the services are still in preview).&amp;#160; If you don’t already have a Windows Azure account, you can sign-up for a &lt;a href="https://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free trial&lt;/a&gt; and start using them today.&amp;#160; Visit the &lt;a href="https://www.windowsazure.com/en-us/develop/overview/"&gt;Windows Azure Developer Center&lt;/a&gt; to learn more about how to build apps with it!&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Scott&lt;/p&gt;  &lt;p&gt;&lt;em&gt;P.S. In addition to blogging, I am also now using Twitter for quick updates and to share links. Follow me at: &lt;/em&gt;&lt;a href="http://www.twitter.com/scottgu"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=10116596" width="1" height="1" alt=" " /&gt;&lt;br /&gt; Blog Post by: ScottGu</description></item><item><title>Blog Post: SharePoint 2013 workflows and content types : forget it</title><link>http://www.biztalkgurus.com/windows_workflow/b/workflow-syn/archive/2013/04/08/sharepoint-2013-workflows-and-content-types-forget-it.aspx</link><pubDate>Mon, 08 Apr 2013 12:04:00 GMT</pubDate><guid isPermaLink="false">c4dd2918-4541-4a95-8338-be99430f076e:37350</guid><dc:creator>Syndicated Workflow Author</dc:creator><description>Creating and using content types in SharePoint is often considered as the best practice; however SharePoint workflows created for SharePoint 2013 cannot be associated anymore with content types. This is a very important point to consider if you are moving to the new platform In MSDN you can read “Unlike previous versions, SharePoint 2013 does [...]&lt;img alt=" " border="0" src="http://stats.wordpress.com/b.gif?host=sergeluca.wordpress.com&amp;#038;blog=11025080&amp;#038;post=1789&amp;#038;subd=sergeluca&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;&lt;br /&gt; Blog Post by: sergeluca</description></item></channel></rss>