<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>ScottGu's Blog  : Community News</title><link>http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx</link><description>Tags: Community News</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Windows Azure: Major Updates for Mobile Backend Development</title><link>http://weblogs.asp.net/scottgu/archive/2013/06/14/windows-azure-major-updates-for-mobile-backend-development.aspx</link><pubDate>Fri, 14 Jun 2013 09:32:51 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10378274</guid><dc:creator>ScottGu</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10378274</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10378274</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/06/14/windows-azure-major-updates-for-mobile-backend-development.aspx#comments</comments><description>&lt;p&gt;This week we released some great updates to Windows Azure that make it significantly easier to develop mobile applications that use the cloud. These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;: Custom API support&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;: Git Source Control support &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;: Node.js NPM Module support&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;: A .NET API via NuGet &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mobile Services and Web Sites&lt;/strong&gt;: Free 20MB SQL Database Option for Mobile Services and Web Sites &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mobile Notification Hubs&lt;/strong&gt;: Android Broadcast Push Notification Support &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of these improvements are now available to use immediately (note: some are still in preview).&amp;#160; Below are more details about them.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Mobile Services: Custom APIs, Git Source Control, and NuGet&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Windows Azure Mobile Services provides the ability to easily stand up a mobile backend that can be used to support your Windows 8, Windows Phone, iOS, Android and HTML5 client applications.&amp;#160; Starting with the first preview we supported the ability to easily extend your data backend logic with server side scripting that executes as part of client-side CRUD operations against your cloud back data tables. &lt;/p&gt;  &lt;p&gt;With today’s update we are extending this support even further and introducing the ability for you to &lt;strong&gt;also&lt;/strong&gt; &lt;strong&gt;create and expose Custom APIs from your Mobile Service backend&lt;/strong&gt;, and easily publish them to your Mobile clients without having to associate them with a data table. This capability enables a whole set of new scenarios – including the ability to work with data sources other than SQL Databases (for example: Table Services or MongoDB), broker calls to 3rd party APIs, integrate with Windows Azure Queues or Service Bus, work with custom non-JSON payloads (e.g. &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/create-pull-notifications-dotnet/"&gt;Windows Periodic Notifications&lt;/a&gt;), route client requests to services back on-premises (e.g. with the new Windows Azure BizTalk Services), or simply implement functionality that doesn’t correspond to a database operation.&amp;#160; The custom APIs can be written in server-side JavaScript (using Node.js) and can use Node’s NPM packages.&amp;#160; We will also be adding support for custom APIs written using .NET in the future as well.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Creating a Custom API&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Adding a custom API to an existing Mobile Service is super easy.&amp;#160; Using the Windows Azure Management Portal you can now simply click the new “API” tab with your Mobile Service, and then click the “Create a Custom API” button to create a new Custom API within it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6BF23530.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_3271B5EA.png" width="840" height="538" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Give the API whatever name you want to expose, and then choose the security permissions you’d like to apply to the HTTP methods you expose within it.&amp;#160; You can easily lock down the HTTP verbs to your Custom API to be available to anyone, only those who have a valid application key, only authenticated users, or administrators.&amp;#160; Mobile Services will then enforce these permissions without you having to write any code:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_63FFB430.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_1EE977AB.png" width="536" height="463" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you click the ok button you’ll see the new API show up in the API list.&amp;#160; Selecting it will enable you to edit the default script that contains some placeholder functionality:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6736BD7A.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_7FC8EB7B.png" width="840" height="538" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Today’s release enables Custom APIs to be written using Node.js (we will support writing Custom APIs in .NET as well in a future release), and the Custom API programming model follows the Node.js convention for modules, which is to export functions to handle HTTP requests.&lt;/p&gt;  &lt;p&gt;The default script above exposes functionality for an HTTP POST request. To support a GET, simply change the export statement accordingly.&amp;#160; Below is an example of some code for reading and returning data from Windows Azure Table Storage using the &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/how-to-guides/table-services/"&gt;Azure Node API&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_65F745FD.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_30811489.png" width="840" height="536" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After saving the changes, you can now call this API from any Mobile Service client application (including Windows 8, Windows Phone, iOS, Android or HTML5 with CORS).&lt;/p&gt;  &lt;p&gt;Below is the code for how you could invoke the API asynchronously from a Windows Store application using .NET and the new InvokeApiAsync method, and data-bind the results to control within your XAML:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white"&gt;private&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;async&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;void&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; RefreshTodoItems() &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;{     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white"&gt;var&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; results = &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;await&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;App&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;.MobileService.InvokeApiAsync&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;List&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;TodoItem&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&amp;gt;&amp;gt;(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white"&gt;&amp;quot;todos&amp;quot;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;, &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;HttpMethod&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;.Get, parameters: &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;null&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;);     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;ListItems.ItemsSource = &lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;new&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;ObservableCollection&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #2b91af; mso-highlight: white"&gt;TodoItem&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&amp;gt;(results)&lt;/span&gt;;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Integrating authentication and authorization with Custom APIs is really easy with Mobile Services. Just like with data requests, &lt;strong&gt;custom API requests enjoy the same built-in authentication and authorization support of Mobile Services (including integration with Microsoft ID, Google, Facebook and Twitter authentication providers)&lt;/strong&gt;, and it also enables you to easily integrate your Custom API code with other Mobile Service capabilities like push notifications, logging, SQL, etc. &lt;/p&gt;  &lt;p&gt;Check out our new &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/create-pull-notifications-dotnet/" target="_blank"&gt;tutorials&lt;/a&gt; to learn more about to use new Custom API support, and starting adding them to your app today.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Mobile Services: Git Source Control Support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s Mobile Services update also enables source control integration with Git.&amp;#160; The new source control support provides a Git repository as part your Mobile Service, and it includes all of your existing Mobile Service scripts and permissions. &lt;strong&gt;You can clone that git repository on your local machine, make changes to any of your scripts, and then easily deploy the mobile service to production using Git&lt;/strong&gt;. This enables a really great developer workflow that works on any developer machine (Windows, Mac and Linux).&lt;/p&gt;  &lt;p&gt;To use the new support, navigate to the dashboard for your mobile service and select the &lt;strong&gt;Set up source control&lt;/strong&gt; link:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_526F07BE.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_1CF8D64A.png" width="856" height="593" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If this is your first time enabling Git within Windows Azure, you will be prompted to enter the credentials you want to use to access the repository:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1503C499.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_07340F4F.png" width="414" height="413" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you configure this, you can switch to the configure tab of your Mobile Service and you will see a Git URL you can use to use your repository:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1D89B494.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_41456CDF.png" width="856" height="593" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use this URL to clone the repository locally from your favorite command line:&lt;/p&gt;  &lt;p&gt;&amp;gt; git clone &lt;a href="https://scottgutodo.scm.azure-mobile.net/ScottGuToDo.git"&gt;https://scottgutodo.scm.azure-mobile.net/ScottGuToDo.git&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7C2F3059.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_5FB4CF2A.png" width="846" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Below is the directory structure of the repository:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5AD4AC1F.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_65949425.png" width="742" height="356" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see, the repository contains a service folder with several subfolders. Custom API scripts and associated permissions appear under the api folder as .js and .json files respectively (the .json files persist a JSON representation of the security settings for your endpoints). Similarly, table scripts and table permissions appear as .js and .json files, but since table scripts are separate per CRUD operation, they follow the naming convention of &amp;lt;tablename&amp;gt;.&amp;lt;operationname&amp;gt;.js. Finally, scheduled job scripts appear in the scheduler folder, and the shared folder is provided as a convenient location for you to store code shared by multiple scripts and a few miscellaneous things such as the APNS feedback script.&lt;/p&gt;  &lt;p&gt;Lets modify the table script todos.js file so that we have slightly better error handling when an exception occurs when we query our Table service:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;todos.js&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: consolas"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;tableService.queryEntities(query, function(error, todoItems){     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (error) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#ff0000"&gt;console.error(&amp;quot;Error querying table: &amp;quot; + error);       &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; response.send(500);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } else {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; response.send(200, todoItems);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;});&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Save these changes, and now back in the command line prompt commit the changes and push them to the Mobile Services:&lt;/p&gt;  &lt;p&gt;&amp;gt; git add .&lt;/p&gt;  &lt;p&gt;&amp;gt; git commit –m &amp;quot;better error handling in todos.js&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;gt; git push&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_373D9F29.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_2A65D9BC.png" width="866" height="333" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once deployment of the changes is complete, they will take effect immediately, and you will also see the changes be reflected in the portal:&lt;/p&gt; &lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4704E640.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_06652A82.png" width="856" height="546" /&gt;&lt;/a&gt;   &lt;p&gt;With the new Source Control feature, we’re making it really easy for you to edit your mobile service locally and push changes in an atomic fashion without sacrificing ease of use in the Windows Azure Portal.&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Mobile Services: NPM Module Support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;The new Mobile Services source control support also allows you to add any Node.js module you need in the scripts beyond the fixed set provided by Mobile Services. For example, you can easily switch to use Mongo instead of Windows Azure table in our example above. Set up Mongo DB by either purchasing a &lt;a href="http://www.windowsazure.com/en-us/store/service/?id=527f070d-3339-43dd-9c54-d43f7befc2f9" target="_blank"&gt;MongoLab subscription&lt;/a&gt; (which provides MongoDB as a Service) via the Windows Azure Store or set it up yourself on a Virtual Machine (either Windows or Linux). Then go the service folder of your local git repository and run the following command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;gt; npm install mongoose&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This will add the Mongoose module to your Mobile Service scripts.&amp;#160; After that you can use and reference the Mongoose module in your custom API scripts to access your Mongo database:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;var&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; mongoose = require(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white"&gt;'mongoose'&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;var&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; schema = mongoose.Schema({ text: String, completed: Boolean });       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;       &lt;p&gt;&amp;#160;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;exports.get = &lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;function&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; (request, response) {       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;mongoose.connect(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white"&gt;'&amp;lt;your Mongo connection string&amp;gt; '&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;TodoItemModel = mongoose.model(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white"&gt;'todoitem'&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;, schema);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;TodoItemModel.find(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;function&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; (err, items) {       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white"&gt;if&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; (err) {       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&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;console.log(&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white"&gt;'error:'&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; + err);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&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;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white"&gt;return&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt; response.send(500);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;response.send(200, items);        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-autospace: ; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;});        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; background: white; color: black; line-height: 107%; mso-highlight: white"&gt;};&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Don’t forget to push your changes to your mobile service once you are done&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;&amp;gt; git add .&lt;/p&gt;    &lt;p&gt;&amp;gt; git commit –m &amp;quot;Switched to use Mongo Labs&amp;quot;&lt;/p&gt;    &lt;p&gt;&amp;gt; git push&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now our Mobile Service app is using Mongo DB!&lt;/p&gt;  &lt;p&gt;Note, with today’s update usage of custom Node.js modules is limited to Custom API scripts only. We will enable it in all scripts (including data and custom CRON tasks) shortly.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;New Mobile Services NuGet package, including .NET 4.5 support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;A few months ago we announced a new pre-release version of the Mobile Services client SDK based on portable class libraries (PCL). &lt;/p&gt;  &lt;p&gt;Today, we are excited to announce that this new library is now a stable .NET client SDK for mobile services and is no longer a pre-release package. Today’s update includes full support for Windows Store, Windows Phone 7.x, and .NET 4.5, which allows developers to use Mobile Services from ASP.NET or WPF applications.&lt;/p&gt;  &lt;p&gt;You can install and use this package today via NuGet.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Mobile Services and Web Sites: Free 20MB Database for Mobile Services and Web Sites&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Starting today, every customer of Windows Azure gets one Free 20MB database to use for 12 months free (for both dev/test and production) with Web Sites and Mobile Services. &lt;/p&gt;  &lt;p&gt;When creating a Mobile Service or a Web Site, simply chose the new “Create a new Free 20MB database” option to take advantage of it:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_60FDC7C4.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_24D48CCD.png" width="699" height="468" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use this free SQL Database together with the 10 free Web Sites and 10 free Mobile Services you get with your Windows Azure subscription, or from any other Windows Azure VM or Cloud Service.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Notification Hubs: Android Broadcast Push Notification Support &lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Earlier this year, we &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/01/22/broadcast-push-notifications-to-millions-of-mobile-devices-using-windows-azure-notification-hubs.aspx" target="_blank"&gt;introduced a new capability&lt;/a&gt; in Windows Azure for sending broadcast push notifications at high scale: &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/01/22/broadcast-push-notifications-to-millions-of-mobile-devices-using-windows-azure-notification-hubs.aspx" target="_blank"&gt;Notification Hubs&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;In the initial preview of Notification Hubs you could use this support with both iOS and Windows devices.&amp;#160; Today we’re excited to announce new Notification Hubs support for sending push notifications to Android devices as well. &lt;/p&gt;  &lt;p&gt;Push notifications are a vital component of mobile applications.&amp;#160; They are critical not only in consumer apps, where they are used to increase app engagement and usage, but also in enterprise apps where up-to-date information increases employee responsiveness to business events.&amp;#160; You can use Notification Hubs to send push notifications to devices from any type of app (a Mobile Service, Web Site, Cloud Service or Virtual Machine).&lt;/p&gt;  &lt;p&gt;Notification Hubs provide you with the following capabilities:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Cross-platform Push Notifications Support&lt;/b&gt;. Notification Hubs provide a common API to send push notifications to iOS, Android, or Windows Store at once.&amp;#160; Your app can send notifications in platform specific formats or in a platform-independent way.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Efficient Multicast&lt;/b&gt;. Notification Hubs are optimized to enable push notification broadcast to thousands or millions of devices with low latency.&amp;#160; Your server back-end can fire one message into a Notification Hub, and millions of push notifications can automatically be delivered to your users.&amp;#160; Devices and apps can specify a number of &lt;i&gt;per-user&lt;/i&gt; &lt;i&gt;tags&lt;/i&gt; when registering with a Notification Hub. These tags do not need to be pre-provisioned or disposed, and provide a very easy way to send filtered notifications to an infinite number of users/devices with a single API call.&amp;#160;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Extreme Scale&lt;/b&gt;. Notification Hubs enable you to reach millions of devices without you having to re-architect or shard your application.&amp;#160; The pub/sub routing mechanism allows you to broadcast notifications in a super-efficient way.&amp;#160; This makes it incredibly easy to route and deliver notification messages to millions of users without having to build your own routing infrastructure.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Usable from any Backend App&lt;/b&gt;. Notification Hubs can be easily integrated into any back-end server app, whether it is a Mobile Service, a Web Site, a Cloud Service or an IAAS VM. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It is easy to configure Notification Hubs to send push notifications to Android. Create a new Notification Hub within the Windows Azure Management Portal (New-&amp;gt;App Services-&amp;gt;Service Bus-&amp;gt;Notification Hub):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_294D9E45.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_31D0FD8F.png" width="861" height="284" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then register for Google Cloud Messaging using &lt;a href="https://code.google.com/apis/console"&gt;https://code.google.com/apis/console&lt;/a&gt; and obtain your API key, then simply paste that key on the Configure tab of your Notification Hub management page under the Google Cloud Messaging Settings:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_15C2CF55.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_357439CE.png" width="833" height="571" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then just add code to the OnCreate method of your Android app’s MainActivity class to register the device with Notification Hubs:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;gcm = GoogleCloudMessaging.getInstance(this);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;String connectionString = &amp;quot;&amp;lt;your listen access connection string&amp;gt;&amp;quot;;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; line-height: 107%; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;hub = new NotificationHub(&amp;quot;&amp;lt;your notification hub name&amp;gt;&amp;quot;, connectionString, this);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;String regid = gcm.register(SENDER_ID);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;hub.register(regid, &amp;quot;myTag&amp;quot;);       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now you can broadcast notification from your .NET backend (or Node, Java, or PHP) to any Windows Store, Android, or iOS device registered for “myTag” tag via a single API call (you can literally broadcast messages to millions of clients you have registered with just one API call):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal" style="tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; line-height: 107%; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;var hubClient = NotificationHubClient.CreateClientFromConnectionString(       &lt;br /&gt;&lt;span style="mso-spacerun: yes"&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;&amp;#160;&amp;#160; &lt;/span&gt;“&amp;lt;your connection string with full access&amp;gt;”,         &lt;br /&gt;&lt;span style="mso-spacerun: yes"&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;&amp;#160;&amp;#160; &lt;/span&gt;&amp;quot;&amp;lt;your notification hub name&amp;gt;&amp;quot;);        &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; color: #000066; line-height: 107%; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: &amp;#39;Times New Roman&amp;#39;; mso-fareast-theme-font: minor-fareast"&gt;hubClient.SendGcmNativeNotification(&amp;quot;{ 'data' : {'msg' : 'Hello from Windows Azure!' } }&amp;quot;, &amp;quot;myTag”);&lt;/span&gt;       &lt;p&gt;&lt;/p&gt;   &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notification Hubs provide an extremely scalable, cross-platform, push notification infrastructure that enables you to efficiently route push notification messages to millions of mobile users and devices.&amp;#160; It will make enabling your push notification logic significantly simpler and more scalable, and allow you to build even better apps with it.&lt;/p&gt;  &lt;p&gt;Learn more about Notification Hubs &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj891130.aspx"&gt;here on MSDN&lt;/a&gt; . &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;The above features are now live and 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=10378274" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: Announcing Major Improvements for Dev/Test in the Cloud</title><link>http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-major-improvements-for-dev-test-in-the-cloud.aspx</link><pubDate>Mon, 03 Jun 2013 14:43:42 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10373543</guid><dc:creator>ScottGu</dc:creator><slash:comments>55</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10373543</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10373543</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-major-improvements-for-dev-test-in-the-cloud.aspx#comments</comments><description>&lt;p&gt;Windows Azure provides a great environment for dev/test.&amp;#160; This is true both for scenarios where you want to &lt;strong&gt;dev/test in the cloud and then run the production app in the cloud&lt;/strong&gt;, as well as for scenarios where you want to &lt;strong&gt;dev/test in the cloud and then run the &lt;em&gt;production app &lt;/em&gt;using an &lt;em&gt;existing&lt;/em&gt; &lt;em&gt;on-premises&lt;/em&gt; &lt;em&gt;Windows&lt;/em&gt; &lt;em&gt;Server environment&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Windows Azure’s new &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx" target="_blank"&gt;IaaS&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/26/windows-azure-improvements-to-virtual-networks-virtual-machines-cloud-services-and-a-new-ruby-sdk.aspx" target="_blank"&gt;Virtual Networking&lt;/a&gt; capabilities make it really easy to enable enterprise development teams to use the cloud to do this.&amp;#160; Using the cloud for dev/test enables development teams to work in a flexible, agile, way &lt;strong&gt;without ever being bottlenecked waiting for resources from the IT department&lt;/strong&gt;.&amp;#160; Development teams can instead use the cloud in a self-service way to spin up or down resources in minutes.&amp;#160; And then when they are ready to deploy their apps they can choose to do so using their existing on-premises servers.&amp;#160; This makes it really easy to start leveraging the cloud even without having to fully bet on it yet for production scenarios.&lt;/p&gt;  &lt;p&gt;Today we are &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-new-dev-test-offering-biztalk-services-ssl-support-with-web-sites-ad-improvements-per-minute-billing.aspx" target="_blank"&gt;announcing a number of enhancements&lt;/a&gt; to Windows Azure that make it an even better environment in which to do dev/test:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;No Charge for Stopped VMs &lt;/li&gt;    &lt;li&gt;Pay by the Minute Billing &lt;/li&gt;    &lt;li&gt;MSDN Use Rights now supported on Windows Azure &lt;/li&gt;    &lt;li&gt;Heavily Discounted MSDN Dev/Test Rates &lt;/li&gt;    &lt;li&gt;MSDN Monetary Credits &lt;/li&gt;    &lt;li&gt;Portal Support for Better Tracking MSDN Monetary Credit Usage &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Below are details on each of the above improvements.&amp;#160; The combination enables an amazing Dev/Test cloud solution, and an &lt;strong&gt;unbeatable offer for all MSDN customers&lt;/strong&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;No Charge for Stopped VMs&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Prior to today, when you stopped a VM on Windows Azure we kept a reserved deployment spot for it inside one of our compute clusters, and continued to bill you for the VM compute unless you explicitly deleted the deployment.&amp;#160; Now, with today’s update, when you stop a VM we no longer charge you any compute time for it while it is stopped – yet we still preserve the deployment state and configuration.&amp;#160; This makes it incredibly easy to stop VMs when you aren’t actively using them to avoid billing charges, and then restart them when you want to use them again.&lt;/p&gt;  &lt;p&gt;This is great for a variety of scenarios (including production app scenarios).&amp;#160; It is especially useful for Dev/Test scenarios, though, where you often want to cycle down environments in the evenings or on weekends if they aren’t actively being used.&amp;#160; Now you can do so and not incur any hourly billing fees.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Pay by the Minute Billing&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Prior to today, our pricing model for compute resources on Windows Azure billed at the per-hour granularity.&amp;#160; This meant if you ran a VM for 6 minutes in an hour and then turned it off, we would still charge you for a full hour of usage.&amp;#160; Now, with today’s update, we are billing at a &lt;strong&gt;per-minute granularity&lt;/strong&gt;.&amp;#160; So if you run a VM (or Cloud Service, or Web Site, or Mobile Service) for only 6 minutes in an hour, we now only charge you for the actual 6 minutes of compute usage (we pro-rate the hourly price – so the billed price is num_minutes * (hr rate)/60).&amp;#160; &lt;/p&gt;  &lt;p&gt;This is great for a variety of scenarios (including production app scenarios).&amp;#160; It is especially useful for Dev/Test scenario where you are often cycling up/down resources in a very elastic way.&amp;#160; Now you can do so and save more money.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;MSDN Use Rights now Supported on Windows Azure&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Prior to today, it wasn’t (legally) possible to use the dev/test server licenses provided with MSDN subscriptions in a hosted cloud environment.&amp;#160; The product usage rights of the MSDN server licenses didn’t allow them to be used in either our cloud nor anyone else's cloud environment.&lt;/p&gt;  &lt;p&gt;Today we are announcing that we are changing the MSDN use-rights so that you can now use your MSDN dev/test software licenses on Windows Azure.&amp;#160; This allows you to install and use your MSDN dev/test server images for SQL Server, SharePoint, BizTalk, etc at no extra charge within Windows Azure VMs.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Heavily Discounted MSDN Dev/Test Rates&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;In addition to extending MSDN Use-Rights to Windows Azure, we are also today announcing a fantastic new billing rate for customers who have MSDN subscriptions.&amp;#160; &lt;strong&gt;You can now spin up &lt;u&gt;any number&lt;/u&gt; of Windows Server, SQL Server, SharePoint Server, and BizTalk Server VMs for Dev/Test scenarios using Windows Azure and pay only 6 cents/hr &lt;/strong&gt;when running them (or if you run them less than an hour the pro-rated per-minute equivalent). &lt;/p&gt;  &lt;p&gt;This enables you to yield massive cost savings for Dev/Test scenarios compared to any other cloud option in the market: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_02B835B7.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_4C936B0F.png" width="750" height="324" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above savings are available to all MSDN customers – and &lt;strong&gt;can applied to &lt;u&gt;any number&lt;/u&gt; of Windows Server VMs being used for Dev/Test purposes&lt;/strong&gt;.&amp;#160; We will automatically apply these savings when you create a VM using one of the standard VM images in the Windows Azure VM Gallery (either through the portal or command-line options like PowerShell) and run it using a new Windows Azure MSDN Subscription.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;MSDN Monthly Monetary Credits&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;We are making the above discounted rates even more compelling by also giving every MSDN subscriber &lt;strong&gt;up to $150 per month of monetary credits &lt;/strong&gt;that can be used to run any Windows Azure resource for Dev/Test purposes.&amp;#160; MSDN Professional Subscribers will be provided with $50/month, MSDN Premium Subscribers with $100/month, and MSDN Ultimate Subscribers with $150/month.&lt;/p&gt;  &lt;p&gt;These &lt;strong&gt;monetary credits can be applied towards any Windows Azure resource being used for Dev/Test purposes&lt;/strong&gt;.&amp;#160; This includes: Virtual Machines (both Windows and Linux), SQL Databases, Cloud Services, Web Sites, Mobile Services, Hadoop Clusters, BizTalk Services, Storage, Media and more.&amp;#160; The previous per-unit restrictions in place with the old MSDN offer are also being removed – instead you now have a &lt;strong&gt;monetary credit that can be applied and mixed/matched on resources however you want&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Below are just a few examples of how a MSDN Premium customer (who will now gets $100/month of credits with their MSDN subscription) could use the monetary credit:&lt;/p&gt;  &lt;p&gt;1) A MSDN Premium subscriber can now run 3 Windows Server VMs for 16 hours a day (at 6 cents/hr) every day of the month.&amp;#160; And he or she can run SQL Server Enterprise, BizTalk Server, or SharePoint Server in them using their MSDN use-rights at no additional charge.&amp;#160; And if they ran these 3 VMs for 16 hours a day for 31 days in the month they’d still have $10.32 in credit left over to spend on something else! :-)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2E48B419.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_49839DCB.png" width="745" height="271" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;2) Alternatively the $100/month credit could be applied towards spinning up 80 Windows Server VMs (with SQL, BizTalk, SharePoint, etc) to use in a load-test for 20 hours:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6F7BDED2.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_6EA60999.png" width="738" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3) Or the $100 credit could be used to spin up 50 Hadoop cluster nodes for 10 hours of a dev/test MapReduce run:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_59B717D7.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_29239A1F.png" width="759" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4) Or the $100 credit could be used to dev/test 100 web-sites with a SQL Database:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_23D4B36E.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_73AD68AA.png" width="755" height="178" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above examples provide just a flavor of the different options now available with this program.&amp;#160; The great thing about the monetary credits is that you can use them with any Windows Azure resource – so &lt;strong&gt;you have the flexibility to apply them in whatever combination you want&lt;/strong&gt;.&amp;#160; The credits themselves reset every month (meaning if you are a MSDN Premium customer the credits will reset to $100/month every month).&amp;#160; So every month you also have the opportunity to change how you allocate them however you want.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can optionally choose to pay additional money on top of the monetary credit (meaning if you need $200 of resources in a month, the MSDN Premium Monetary Credit will cover the first $100 of usage and then you can pay the rest).&amp;#160; Note that any overages will still take advantage of the MSDN Discount Rate (meaning the VMs will only be charged at 6 cents/hr) so you still benefit from a major price discount on that as well.&amp;#160; &lt;/p&gt;  &lt;p&gt;By default we enable a “spending limit of $0” on MSDN based subscriptions to ensure that customers are never accidentally billed for usage above their MSDN credits.&amp;#160; You can turn this of if you want to use more resources than the built-in credits support and pay for overages.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Portal Support for Better Tracking MSDN Monetary Credit Usage&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;One of the asks we’ve had in the past from Windows Azure Free Trial and MSDN customers has been for us to enable integrated UI support within the Windows Azure Management Portal that makes it easy for customers to better track where they are with their free credit usage.&lt;/p&gt;  &lt;p&gt;Today’s release now makes it easy for Windows Azure customers to track their monetary credit usage.&amp;#160; The top of the Windows Azure Management Portal now includes “Credit Status UI” that enables customers to quickly check their current status:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1A11DCA7.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_6507DE27.png" width="771" height="323" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the Credit Status UI will display a summary status within the portal that shows how much credit remains (and how many days until the credit will expire):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_193C076E.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_1DE0B4A7.png" width="771" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking the “View More Details” link in the UI above will then take you to a detailed usage page that shows the usage so far during the month, as well as estimated remaining credit based on current usage patterns:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2041E8B8.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_624857F9.png" width="771" height="781" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The above support is now available to both MSDN subscription customers as well as those signing up with our Free Trial, and should make it much easier to track free benefit resources.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;The above enhancements make Windows Azure a fantastic environment in which to do dev/test, and an unbeatable option for all MSDN customers.&amp;#160; All of these improvements are now available to start using immediately.&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/" target="_blank"&gt;free trial&lt;/a&gt; and start using all of the above features today.&amp;#160; If you are a MSDN subscriber make sure to sign-up using the same Microsoft ID (formerly LiveID) that is registered with your MSDN subscription.&amp;#160; The Windows Azure sign-up wizard will then detect that you are a MSDN subscriber and automatically setup a subscription with the above improvements for you to use.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you already have an existing MSDN Subscription on Windows Azure you will be automatically migrated to the new benefits above in August.&amp;#160; If you wish to opt-into using the new benefits before August you can visit the accounts center on the &lt;a href="http://www.windowsazure.com" target="_blank"&gt;www.windowsazure.com&lt;/a&gt; web-site, and next to your subscription you’ll find the option to transfer to it earlier.&amp;#160; If you’d prefer to continue using the existing MSDN benefits offer, you can also optionally opt-out of the automatic conversion and elect to continue to use that for the next 12 months.&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=10373543" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: Announcing New Dev/Test Offering, BizTalk Services, SSL Support with Web Sites, AD Improvements, Per Minute Billing</title><link>http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-new-dev-test-offering-biztalk-services-ssl-support-with-web-sites-ad-improvements-per-minute-billing.aspx</link><pubDate>Mon, 03 Jun 2013 14:41:04 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10373540</guid><dc:creator>ScottGu</dc:creator><slash:comments>57</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10373540</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10373540</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-new-dev-test-offering-biztalk-services-ssl-support-with-web-sites-ad-improvements-per-minute-billing.aspx#comments</comments><description>&lt;p&gt;This morning we released some fantastic enhancements to Windows Azure:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Dev/Test in the Cloud&lt;/strong&gt;: MSDN Use Rights, Unbeatable MSDN Discount Rates, MSDN Monetary Credits &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;BizTalk Services&lt;/strong&gt;: Great new service for Windows Azure that enables EDI and EAI integration in the cloud &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Per-Minute Billing and No Charge for Stopped VMs&lt;/strong&gt;: Now only get charged for the exact minutes of compute you use, no compute charges for stopped VMs &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SSL Support with Web Sites&lt;/strong&gt;: Support for both IP Address and SNI based SSL bindings on custom web-site domains &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Active Directory&lt;/strong&gt;: Updated directory sync utility, ability to manage Office 365 directory tenants from Windows Azure Management Portal &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Free Trial&lt;/strong&gt;: More flexible Free Trial offer &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There are so many improvements that I’m going to have to write multiple blog posts to cover all of them!&amp;#160; Below is a quick summary of today’s updates at a high-level:&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Dev/Test in the Cloud&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Windows Azure provides a great environment for dev/test.&amp;#160; This is true both for scenarios where you want to &lt;b&gt;dev/test in the cloud and then run the production app in the cloud&lt;/b&gt;, as well as for scenarios where you want to &lt;b&gt;dev/test in the cloud and then &lt;em&gt;run the&lt;/em&gt; &lt;em&gt;production app using an&lt;/em&gt; &lt;i&gt;existing&lt;/i&gt; &lt;i&gt;on-premises&lt;/i&gt; &lt;em&gt;server environment&lt;/em&gt;&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;Windows Azure’s 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&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/26/windows-azure-improvements-to-virtual-networks-virtual-machines-cloud-services-and-a-new-ruby-sdk.aspx"&gt;Virtual Networking&lt;/a&gt; capabilities make it really easy to enable enterprise development teams to use the cloud to do this.&amp;#160; Using the cloud for dev/test enables development teams to work in a flexible, agile, way &lt;b&gt;without ever being bottlenecked waiting for resources from their IT department&lt;/b&gt;.&amp;#160; Development teams can instead use Windows Azure in a self-service way to spin up or down resources in minutes.&amp;#160; And then when they are ready to deploy their apps they can choose to do so either in the cloud or using their existing on-premises servers.&amp;#160; This later option makes it really easy to start leveraging the cloud even without having to fully bet on it yet for production scenarios.&lt;/p&gt;  &lt;p&gt;Today we are announcing a number of enhancements to Windows Azure that make it an even better environment in which to do dev/test:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;No Charge for Stopped VMs &lt;/li&gt;    &lt;li&gt;Pay by the Minute Billing &lt;/li&gt;    &lt;li&gt;MSDN Use Rights now supported on Windows Azure &lt;/li&gt;    &lt;li&gt;Heavily Discounted MSDN Dev/Test Rates &lt;/li&gt;    &lt;li&gt;MSDN Monetary Credits &lt;/li&gt;    &lt;li&gt;Portal Support for Better Tracking MSDN Monetary Credit Usage &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The combination enables an amazing Dev/Test cloud solution, and an &lt;b&gt;unbeatable offer for all MSDN customers&lt;/b&gt;.&amp;#160; &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/06/03/windows-azure-announcing-major-improvements-for-dev-test-in-the-cloud.aspx" target="_blank"&gt;Read my detailed blog post on the new Dev/Test offering&lt;/a&gt; to learn more.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;BizTalk Services&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;I’m excited to announce a new Windows Azure service we are launching into preview today - Windows Azure BizTalk Services.&lt;/p&gt;  &lt;p&gt;Windows Azure BizTalk Services provides Business-to-Business (B2B) and Enterprise Application Integration (EAI) capabilities for cloud and hybrid integration solutions.&amp;#160; It includes built-in support for managing EDI relationships between partners, as well as EAI bridges with on-premises assets – including built-in support for integrating with on-premises SAP, SQL Server, Oracle and Siebel systems.&amp;#160; You can also optionally integrate Windows Azure BizTalk Services with on-premises BizTalk Server deployments – enabling powerful hybrid enterprise solutions.&lt;/p&gt;  &lt;p&gt;BizTalk Services runs on a secure, dedicated per tenant, environment that you can provision on demand in a matter of minutes.&amp;#160; It does not require any upfront license, and supports a pay only for what you use billing model.&amp;#160; &lt;a href="http://www.windowsazure.com/en-us/manage/services/biztalk-services/" target="_blank"&gt;Click here&lt;/a&gt; to learn more about how to setup and starting using the Windows Azure BizTalk Services preview today.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Per Minute Billing and No Charge for Stopped VMs&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Prior to today, when you stopped a VM on Windows Azure we kept a reserved deployment spot for it inside one of our compute clusters, and continued to bill you for the VM compute unless you explicitly deleted the deployment.&amp;#160; Now, with today’s update, when you stop a VM we no longer charge you any compute time for it while it is stopped – yet we still preserve the deployment state and configuration.&amp;#160; This makes it incredibly easy to stop VMs when you aren’t actively using them to avoid billing charges, and then restart them when you want to use them again. &lt;/p&gt;  &lt;p&gt;Prior to today, our pricing model for compute resources on Windows Azure billed at the per-hour granularity.&amp;#160; This meant if you ran a VM for 6 minutes in an hour and then turned it off, we would still charge you for a full hour of usage.&amp;#160; Now, with today’s update, we are billing at a &lt;b&gt;per-minute granularity&lt;/b&gt;.&amp;#160; So if you run a VM (or Cloud Service, or Web Site, or Mobile Service) for only 6 minutes in an hour, we now only charge you for the actual 6 minutes of compute usage (we pro-rate the hourly price – so the billed price is num_minutes * (hr rate)/60).&amp;#160; &lt;/p&gt;  &lt;p&gt;These two changes are great for a variety of scenarios.&amp;#160; They are especially useful for scenarios where you are often cycling up/down resources in a very elastic way (for example: Dev/Test or other elastic workloads).&amp;#160; Now you can do so and save more money.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;SSL Support with Web Sites&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s update, Windows Azure Web Sites now support Secure Sockets Layer (SSL) for custom domains. &lt;/p&gt;  &lt;p&gt;SSL encryption is the most commonly used method of securing data sent across the internet, and you can now upload your own SSL Certificate that you can use to enable with custom domains hosted via Windows Azure Web Sites.&amp;#160; With today’s release we now support the ability to setup both &lt;strong&gt;IP Address Based SSL Bindings&lt;/strong&gt; as well as &lt;strong&gt;SNI Based SSL Bindings&lt;/strong&gt;.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Active Directory: Directory Sync Tool, Manage existing Directories&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s update brings a number of improvements to Windows Azure Active Directory.&amp;#160; &lt;/p&gt;  &lt;p&gt;Among the more significant updates is a free new directory sync utility that you can download.&amp;#160; It makes it super easy to sync existing on-premises Active Directory deployments with Windows Azure Active Directory.&amp;#160; The directory sync tool works with Windows Server 2003 and above, and enables you to securely sync your directory without having to setup ADFS.&amp;#160; This dramatically simplifies the steps required to enable your directory in the cloud.&lt;/p&gt;  &lt;p&gt;Today’s update also includes support to manage an existing Windows Azure Active Directory (such as the one that your organization already uses with Office 365) with a Windows Azure account.&amp;#160; Included as part of this support is the ability to manage an existing Active Directory with a Windows Azure account that is setup using a Microsoft ID account (assuming you have also been made an admin of the active directory tenant).&amp;#160; This makes it even easier to integrate your Windows Azure and Office 365 resources together.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Free Trial&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s update we are also updating our Windows Azure Free Trial to provide an even simpler and more flexible free trial experience.&lt;/p&gt;  &lt;p&gt;Prior to today, our free trial used to include a fixed quantity of individual resources (for example: 750 compute hours).&amp;#160; We heard feedback from trial users that:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Trial users had to keep track of usage for each of these resources &lt;/li&gt;    &lt;li&gt;If they went over one of the resource quotas, their subscription was disabled &lt;/li&gt;    &lt;li&gt;Inadequate notifications were given when they were about to exceed their quotas &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With today’s release we are making substantial changes to how Windows Azure Free Trials are experienced by customers. &lt;strong&gt;With a free trial, you now get a monthly Windows Azure credit of $200.&lt;/strong&gt; This credit can be &lt;strong&gt;applied to any service of your choice.&lt;/strong&gt; This makes it much easier to try out the services of your choice – and means there are no individual resource quotas on what you can do.&amp;#160; You can instead spend the $200 however and on anything you want.&lt;/p&gt;  &lt;p&gt;Both the Windows Azure Management Portal as well as Accounts Center will also now provide built-in UI that lets you know the current status of your &lt;b&gt;remaining Windows Azure Credit balance&lt;/b&gt; and &lt;b&gt;the number of days remaining to use your free credit&lt;/b&gt;.&amp;#160; This makes it really easy to see what you’ve consumed so far, and how much you have to go before it is all used up.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;I am really excited about today’s release – there a ton of great new improvements for everyone to take advantage of.&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/" target="_blank"&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/" target="_blank"&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=10373540" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Announcing the release of AMQP support with Windows Azure Service Bus</title><link>http://weblogs.asp.net/scottgu/archive/2013/05/23/announcing-the-release-of-amqp-support-with-windows-azure-service-bus.aspx</link><pubDate>Thu, 23 May 2013 14:42:37 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10332912</guid><dc:creator>ScottGu</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10332912</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10332912</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/05/23/announcing-the-release-of-amqp-support-with-windows-azure-service-bus.aspx#comments</comments><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;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&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; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;lt;?&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white; mso-ansi-language: en-gb"&gt;xml&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;version&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;1.0&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;encoding&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;utf-8&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; ?&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white; mso-ansi-language: en-gb"&gt;configuration&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;startup&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;supportedRuntime&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;version&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;v4.0&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;sku&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; /&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;startup&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;appSettings&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;add&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;key&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;Microsoft.ServiceBus.ConnectionString&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: red; mso-highlight: white; mso-ansi-language: en-gb"&gt;value&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;=&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;quot;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt; /&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&lt;span style="mso-spacerun: yes"&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; mso-highlight: white; mso-ansi-language: en-gb"&gt;appSettings&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; text-autospace: ; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 28.0pt 1.0pt 4.0pt"&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: #a31515; mso-highlight: white; mso-ansi-language: en-gb"&gt;configuration&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: blue; mso-highlight: white; mso-ansi-language: en-gb"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-size: 9.5pt; font-family: consolas; background: white; color: black; mso-highlight: white; mso-ansi-language: en-gb"&gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;
&lt;/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; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;// ReceiveScottsMessages.java &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;import javax.jms.*; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;import javax.naming.Context; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;import javax.naming.InitialContext; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;import java.util.Hashtable; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;public class ReceiveScottsMessages implements MessageListener { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;public static void main(String[] args) { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;connection.close(); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;@Override &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;public void onMessage(Message message) { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;
&lt;/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; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;Shutting down. &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;
&lt;/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; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;import sys &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;from proton import Messenger, Message &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;messenger = Messenger() &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;messenger.start() &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;msg = Message() &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;while True: &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;messenger.recv(10) &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;while messenger.incoming: &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try: &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;messenger.get(msg) &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;except Exception, e: &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;print e &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;else: &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;messenger.stop() &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&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; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt"&gt;
  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&amp;lt;?php &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;$messenger = new Messenger(); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;$messenger-&amp;gt;start(); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;$msg = new Message(); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;while (true) { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;$messenger-&amp;gt;recv(10); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;while ($messenger-&amp;gt;incoming) { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;try { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;$messenger-&amp;gt;get($msg); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} catch (Exception $e) { &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;continue; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&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;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;} &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;&lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;$messenger-&amp;gt;stop(); &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p class="MsoNormal" 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; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"&gt;&lt;span style="font-size: 9.5pt; font-family: consolas; line-height: 115%"&gt;?&amp;gt; &lt;/span&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;

  &lt;p&gt;&lt;/p&gt;
&lt;/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'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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Announcing the Release of WebMatrix 3</title><link>http://weblogs.asp.net/scottgu/archive/2013/05/01/announcing-the-release-of-webmatrix-3.aspx</link><pubDate>Wed, 01 May 2013 19:53:06 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10237261</guid><dc:creator>ScottGu</dc:creator><slash:comments>26</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10237261</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10237261</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/05/01/announcing-the-release-of-webmatrix-3.aspx#comments</comments><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/" target="_blank"&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" target="_blank"&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/" target="_blank"&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/" target="_blank"&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" target="_blank"&gt;this video&lt;/a&gt; of Thao showing you how to &lt;a href="http://youtu.be/ioz6KJChXNc" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>Announcing the release of Windows Azure SDK 2.0 for .NET</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx</link><pubDate>Tue, 30 Apr 2013 17:37:03 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10233311</guid><dc:creator>ScottGu</dc:creator><slash:comments>32</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10233311</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10233311</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx#comments</comments><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" target="_blank"&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" target="_blank"&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-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_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-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_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-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_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-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_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-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_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-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_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-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_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-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_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-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_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-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_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-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_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" target="_blank"&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" target="_blank"&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-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_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-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_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-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_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-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_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/master/ChangeLog.txt" target="_blank"&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" target="_blank"&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" target="_blank"&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_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/" target="_blank"&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/" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: Improvements to Virtual Networks, Virtual Machines, Cloud Services and a new Ruby SDK</title><link>http://weblogs.asp.net/scottgu/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:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10215637</guid><dc:creator>ScottGu</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10215637</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10215637</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/26/windows-azure-improvements-to-virtual-networks-virtual-machines-cloud-services-and-a-new-ruby-sdk.aspx#comments</comments><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" target="_blank"&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-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_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-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_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" target="_blank"&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-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_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" target="_blank"&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 download and run a PowerShell script from the Windows Azure Management Portal 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; Sandrino Di Mattia has a step-by-step tutorial on how to do this &lt;a href="http://fabriccontroller.net/blog/posts/setting-up-software-based-site-to-site-vpn-for-windows-azure-with-windows-server-2012-routing-and-remote-access/" target="_blank"&gt;here&lt;/a&gt;.&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" target="_blank"&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-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_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-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_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-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_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-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_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-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_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" target="_blank"&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/" target="_blank"&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/" target="_blank"&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" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows AzureConf this Tuesday</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/21/windows-azureconf-this-tuesday.aspx</link><pubDate>Mon, 22 Apr 2013 04:59:11 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10194509</guid><dc:creator>ScottGu</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10194509</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10194509</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/21/windows-azureconf-this-tuesday.aspx#comments</comments><description>&lt;p&gt;This Tuesday, April 23, we’ll be hosting &lt;a href="http://www.windowsazureconf.net/" target="_blank"&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/" target="_blank"&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" target="_blank"&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/" target="_blank"&gt;schedule&lt;/a&gt;, &lt;a href="http://www.windowsazureconf.net/speakers/" target="_blank"&gt;speaker list&lt;/a&gt; or to &lt;a href="http://www.windowsazureconf.net/#register" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: General Availability of Infrastructure as a Service (IaaS)</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx</link><pubDate>Tue, 16 Apr 2013 13:01:44 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10167443</guid><dc:creator>ScottGu</dc:creator><slash:comments>38</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10167443</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10167443</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx#comments</comments><description>&lt;p&gt;This morning &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-power-of-and.aspx" target="_blank"&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/" target="_blank"&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" target="_blank"&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/" target="_blank"&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 &lt;strong&gt;utilize a network load-balancer (LB) at no extra charge&lt;/strong&gt; – 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/" target="_blank"&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" target="_blank"&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/" target="_blank"&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/jj823132.aspx" target="_blank"&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" target="_blank"&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/" target="_blank"&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/" target="_blank"&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/" target="_blank"&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" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure Global Bootcamp on April 27th – sign up now</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/12/windows-azure-global-bootcamp-on-april-27th-sign-up-now.aspx</link><pubDate>Sat, 13 Apr 2013 01:55:53 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10146539</guid><dc:creator>ScottGu</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10146539</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10146539</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/12/windows-azure-global-bootcamp-on-april-27th-sign-up-now.aspx#comments</comments><description>&lt;p&gt;On April 27, something very cool is happening. A bunch of Windows Azure MVP's and community activists are organizing a &lt;a href="http://globalwindowsazure.azurewebsites.net/" target="_blank"&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" target="_blank"&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" target="_blank"&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" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: Active Directory Release, New Backup Service + Web Site Monitoring and Log Improvements</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/08/windows-azure-active-directory-general-availability-new-backup-service-web-site-monitoring-and-diagnostic-improvements.aspx</link><pubDate>Mon, 08 Apr 2013 16:07:41 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10116596</guid><dc:creator>ScottGu</dc:creator><slash:comments>28</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10116596</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10116596</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/08/windows-azure-active-directory-general-availability-new-backup-service-web-site-monitoring-and-diagnostic-improvements.aspx#comments</comments><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" target="_blank"&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" target="_blank"&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" target="_blank"&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/" target="_blank"&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" target="_blank"&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"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Introducing the new class at the Microsoft Accelerator for Windows Azure</title><link>http://weblogs.asp.net/scottgu/archive/2013/04/01/introducing-the-new-class-at-the-microsoft-accelerator-for-windows-azure.aspx</link><pubDate>Mon, 01 Apr 2013 16:57:31 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10080386</guid><dc:creator>ScottGu</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10080386</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10080386</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/04/01/introducing-the-new-class-at-the-microsoft-accelerator-for-windows-azure.aspx#comments</comments><description>&lt;p&gt;We &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/10/01/finalists-for-the-microsoft-accelerator-for-windows-azure.aspx"&gt;launched&lt;/a&gt; the Microsoft Accelerator for Windows Azure, powered by &lt;a href="http://www.techstars.com/" target="_blank"&gt;TechStars&lt;/a&gt;, to give early stage startups full access to Windows Azure and to help them succeed by connecting each company to leading technical and business &lt;a href="http://www.microsoft.com/BizSpark/accelerator/azure/mentors.aspx"&gt;mentors&lt;/a&gt;. I’m happy to share that the new spring 2013 class features a healthy mix of exciting solutions and an impressive list of founders whose feedback will directly inform future Windows Azure releases.&lt;/p&gt;  &lt;p&gt;Today, the ten new teams in the &lt;a href="http://www.microsoft.com/BizSpark/accelerator/azure/"&gt;Microsoft Accelerator for Windows Azure&lt;/a&gt;, powered by &lt;a href="http://www.techstars.com/"&gt;TechStars&lt;/a&gt;, moved into their South Lake Union office space.&lt;/p&gt;  &lt;p&gt;This spring’s Windows Azure class includes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.1track.com/"&gt;1Track&lt;/a&gt;—&lt;i&gt;Bellevue, WA&lt;/i&gt;. 1Track enhances the consumer in-store shopping experience and drives sales for retailers.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.airpost.io"&gt;Airpost.io&lt;/a&gt;—&lt;i&gt;Toronto, CA&lt;/i&gt;. Airpost unifies cloud storage services to allow people to access files from anywhere.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.flo.azuqua.com"&gt;Azuqua&lt;/a&gt;—&lt;i&gt;Bellevue, WA&lt;/i&gt;. Azuqua helps companies build integrated cloud-based enterprise apps in ten minutes or less. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.beehivebiometrics.com"&gt;Beehive Biometrics&lt;/a&gt;—&lt;i&gt;Austin, TX&lt;/i&gt;. Beehive is a service that enables developers to incorporate biometric matching into apps with a single line of code.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.boxella.com"&gt;Boxella&lt;/a&gt;—&lt;i&gt;Redmond, WA&lt;/i&gt;. Boxella helps retailers sell add-on products through an app that tracks individual customer inventory.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.builderscloud.com"&gt;Builders Cloud&lt;/a&gt;—&lt;i&gt;Bellevue, WA.&lt;/i&gt; Builders Cloud is a file-sharing and mobile collaboration platform for the construction industry.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://factor.io/"&gt;Factor.io&lt;/a&gt;—&lt;i&gt;Portland, OR&lt;/i&gt;. Factor.io makes it easy for engineering teams to build their continuous integration and deployment pipeline.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.thegiftgiv.com/"&gt;GiftGiv&lt;/a&gt;—&lt;i&gt;Redmond, WA&lt;/i&gt;. GiftGiv makes business gifting simple while retaining the personal touch.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.numvc.com"&gt;nuMVC&lt;/a&gt;—&lt;i&gt;Denver, &lt;/i&gt;CO. nuMVC is a content distribution platform that automates delivery of relevant content anywhere on the web.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scanmylist.com"&gt;ScanMyList&lt;/a&gt;—&lt;i&gt;Everett, WA&lt;/i&gt;. ScanMyList is a mobile app empowering businesses to efficiently utilize BI from sales and order information. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Fall 2012 class has been busy since &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/01/29/startup-accelerator-for-windows-azure-demo-day.aspx"&gt;Demo Day&lt;/a&gt; and is leaving big shoes for the new class to fill.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/store/service/?id=d49ee998-dc44-4c7f-b94d-794e5ce10198"&gt;MetricsHub&lt;/a&gt;—the company behind Active Cloud Monitoring and automated cloud performance management—was recently &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2013/03/04/microsoft-acquires-metricshub.aspx"&gt;acquired by Microsoft&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://realtymogul.com/"&gt;Realty Mogul&lt;/a&gt;—crowdfunding for real estate—won the &lt;a href="http://www.siliconhillsnews.com/2013/03/10/realty-mogul-won-the-hatch-pitch-competition-at-sxsw/"&gt;HATCH Pitch Competition&lt;/a&gt; at SXSW, made its service &lt;a href="http://techcrunch.com/2013/03/20/realty-mogul-launch/"&gt;generally available&lt;/a&gt;, and just closed a $500,000 seed round of funding.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/store/service/?id=e28271f7-611a-45d6-95f8-810b5edcaf51"&gt;Staq&lt;/a&gt;—a real-time analytics engine for games—joined email engagement experts &lt;a href="http://www.windowsazure.com/en-us/store/service/?id=2294ce8b-ce14-4a88-a1b6-a0b28680a114"&gt;Embarke&lt;/a&gt; in the Windows Azure Store.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have high expectations for this class and look forward to the new and exciting ways these startups will use Windows Azure to iterate rapidly and deliver memorable customer experiences.&lt;/p&gt;  &lt;p&gt;Keep an eye out for periodic updates as the teams approach Demo Day on June 26&lt;sup&gt;th&lt;/sup&gt;.&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=10080386" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure: New Hadoop service + HTML5/JS (CORS), PhoneGap, Mercurial and Dropbox support</title><link>http://weblogs.asp.net/scottgu/archive/2013/03/18/windows-azure-new-hadoop-service-html5-js-cors-phonegap-mercurial-and-dropbox-support.aspx</link><pubDate>Mon, 18 Mar 2013 18:43:52 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:10010394</guid><dc:creator>ScottGu</dc:creator><slash:comments>29</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=10010394</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=10010394</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/03/18/windows-azure-new-hadoop-service-html5-js-cors-phonegap-mercurial-and-dropbox-support.aspx#comments</comments><description>&lt;p&gt;Today we released a number of great enhancements to Windows Azure. These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Mobile Services&lt;/strong&gt;: HTML5/JS (CORS) Client + PhoneGap + Windows Phone 7.5 + .NET Portable Library support &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web Sites&lt;/strong&gt;: Mercurial Source Control + Dropbox Deployment support &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;HDInsight&lt;/strong&gt;: New service that enables you to easily deploy and manage Hadoop Clusters on Azure &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;Mobile Services: HTML5/JS Client (CORS), PhoneGap, Windows Phone 7.5&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today we are adding support to enable pure HTML5/JS clients (and PhoneGap apps) as well as Windows Phone 7.5 clients to use Windows Azure Mobile Services as a backend.&amp;#160; This comes in addition to the new &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/03/04/windows-azure-updates-android-support-sql-reporting-services-active-directory-more.aspx" target="_blank"&gt;Android SDK for Windows Azure Mobile Services&lt;/a&gt; we released two weeks ago (as well as the Windows 8, Windows Phone 8 and iOS support we had earlier). &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;HTML5/JS Clients&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;You can now connect both HTML5 web client apps as well as Apache Cordova/PhoneGap apps to your Mobile Services, and use Windows Azure for both data storage and authentication.&amp;#160; We are delivering this via:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;New Mobile Services web client library&lt;/b&gt; that supports IE8+ browsers, current versions of Chrome, Firefox, and Safari, plus PhoneGap 2.3.0+. It offers the same data querying and storage APIs support we have in other native SDKs, and allows easy user authentication via any of the four identity providers supported by Mobile Services (Microsoft Account, Google, Facebook, and Twitter). Please use the &lt;a href="https://github.com/WindowsAzure/azure-mobile-services/issues"&gt;GitHub issue tracker&lt;/a&gt; to report any issues, and &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/azuremobile/"&gt;our forum&lt;/a&gt; to get help. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Cross Origin Resource Sharing (CORS) support&lt;/b&gt; to enable your Mobile Service to accept cross-domain Ajax requests. You can now configure a whitelist of allowed domains for your Mobile Service using the Windows Azure management portal. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To get started, create a mobile service in the &lt;a href="http://manage.windowsazure.com"&gt;Windows Azure Management Portal&lt;/a&gt; and open the Quickstart tab. You can now select “HTML” and find the steps to create a new HTML5/JS client or add a backend to an existing one: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_71F2F2B0.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_338D2EFD.png" width="624" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can then continue with &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-html/"&gt;this tutorial&lt;/a&gt; for the remaining steps and build a simple HTML5 todo list app (that runs entirely in a browser) in under 5 minutes. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_38064075.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_13087FFC.png" width="624" height="293" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When deploying the HTML5 front-end app to a production environment, make sure to add the host name of the website you use to host it to your Windows Azure Mobile Services’ Cross-Origin Resource Sharing (CORS) whitelist using the &lt;strong&gt;Configure&lt;/strong&gt; tab as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6E0ABF82.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_04CC97BD.png" width="624" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Visit the &lt;a href="http://www.windowsazure.com/mobile"&gt;Windows Azure Mobile dev center&lt;/a&gt; and read &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-data-html/"&gt;this tutorial&lt;/a&gt; to learn more about working with server-side data, or &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-html/"&gt;this one&lt;/a&gt; if you want to learn more about authenticating users.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Windows Phone 7.5 Support and a new C# Client Library on NuGet&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A few days ago we published a &lt;a href="http://nuget.org/packages/WindowsAzure.MobileServices/0.3.0-alpha"&gt;preview of our next version of the Mobile Services C# client library&lt;/a&gt; on NuGet.&amp;#160; The goal of this pre-release is to give Mobile Services developers an early look at the new features we are planning for our next C# SDK update and an opportunity to try them out ahead of time. Some of the great new features we have added include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Portable Library Support&lt;/b&gt;: We have consolidated our Windows 8 and Windows Phone 8 clients on top of a single codebase using Portable Libraries. This enables us to reach a variety of new client platforms, as well as enable you to call Mobile Services from your ASP.NET and .NET server backend. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Phone 7.5 support:&lt;/b&gt; With the move to Portable Libraries, we are also enabling support for Windows Phone 7.5&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Json.NET and HttpClient: &lt;/b&gt;We migrated our implementation to use the latest and most flexible HTTP components to enable maximum robustness and extensibility. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Note: Today’s drop is a pre-release. For production apps we recommend continuing to use the “stable” Mobile Service client libraries for .NET available for download &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/developer-tools/"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Keep Giving Us Feedback&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Please continue to visit our &lt;a href="https://mobileservices.uservoice.com/forums/182281-feature-requests/filters/top" target="_blank"&gt;uservoice&lt;/a&gt; page to let us know what you’d like to see added next (today’s release added 3 of the top 5 asks in uservoice!). &lt;a href="mailto:mobileservices@microsoft.com?subject=Windows%20Azure%20Mobile%20Services%20adds%20Android%20support,%20will%20deliver%20additional%20SDKs%20and%20extends%20availability%20to%20East%20Asia%20"&gt;Email us&lt;/a&gt; to show off your app, and ask questions in our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/azuremobile/threads"&gt;forum&lt;/a&gt; whenever you run into a problem.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Web Sites: Mercurial and Dropbox Deployment Support&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s release also includes a number of deployment/publishing enhancements to Windows Azure Web Sites:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Mercurial Source Control Support&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now use Mercurial (Hg) repositories when setting up continuous deployment of your Websites from your CodePlex or Bitbucket repositories.&amp;#160; This is in addition to the TFS, CodePlex, Git and GitHub source control provider support that we previously supported.&amp;#160; &lt;/p&gt;  &lt;p&gt;Today’s release also includes improved UI that makes it even easier to setup deployment from source-control.&amp;#160; Simply click the “Setup deployment from source control” link on your web-site dashboard, and a new wizard will appear that makes it trivial to walkthrough setting up publishing endpoints using a variety of source control providers and sites.&amp;#160; For example, below is how you could choose to enable source code deployment from a public or private Mercurial (Hg) repository you might have on Bitbucket:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_78CAA788.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_0F8C7FC3.png" width="688" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Dropbox Deployment Support&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure also now supports site/app deployment from Dropbox to Web sites, making website deployment as easy as copying files to a folder on your local computer.&amp;#160; To enable this from the Windows Azure management portal, click the “Set up deployment from source control” link on your Web site dashboard, choose Dropbox and authorize the connection, and then choose a Dropbox sub-folder to synchronize: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_38971EBF.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_4186B0FE.png" width="680" height="476" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can then simply copy your source files to the Dropbox sub-folder on your local computer and press the “Sync” button in the Windows Azure Portal to deploy the files.&amp;#160; Windows Azure will automatically build sources as needed, similar to Git or TFS based deployments.&amp;#160; Also, the deployment history tab in the portal will keep track of your deployments and enables you to re-deploy any previous deployment with the click of a button.&lt;/p&gt;  &lt;p&gt;Watch this &lt;a href="http://www.youtube.com/watch?v=hC1xAjz6jHI&amp;amp;hd=1" target="_blank"&gt;2 minute screencast&lt;/a&gt; to see how easy it now is to deploy web sites to Windows Azure using Dropbox.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Improved UI for Managing Source Control Deployments&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In addition to the new setup wizard for source control deployment, today’s Windows Azure release also includes some other nice enhancements to the source control UI.&amp;#160; Deployment history in the management portal now accurately reflects which source control provider is connected for continuous deployment, such as TFS, CodePlex, GitHub, or Bitbucket.&amp;#160; It is also now possible to disconnect from an already connected source provider on a web-site in order to set up a different one (previously you had to delete the site to do this).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;TFS Certificate Renewal&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It’s also now possible to renew the certificate used by Team Foundation Service for continuous deployment directly from the Windows Azure management portal. To do this, click the “Renew TFS certificate” link on either the Dashboard or Quick Start page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Support for Regenerating the Publish Profile&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Today you can download a publish profile from the Web Sites dashboard. Once that profile is downloaded, the credentials are basically good forever. We understand that this is not optimal. To address this, with today’s release we are introducing a new quick glance command in the dashboard called &lt;b&gt;Reset publish profile credentials&lt;/b&gt;. When clicked, you will get a confirmation for resetting the credentials and the credentials are regenerated.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;New HDInsight Server: Deploy and Manage Hadoop Clusters on Azure&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today we also &lt;a href="http://go.microsoft.com/fwlink/?LinkID=286692"&gt;released&lt;/a&gt; a public preview of the new HDInsight Service for Windows Azure. HDInsight provides everything you need to quickly deploy, manage and use Hadoop clusters running on Windows Azure. &lt;/p&gt;  &lt;p&gt;If you have a Windows Azure account you can &lt;a href="http://go.microsoft.com/fwlink/?LinkID=286685"&gt;request access&lt;/a&gt; to the HDInsight Preview and then easily create an HDInsight cluster within the &lt;a href="http://manage.windowsazure.com"&gt;Windows Azure Management Portal&lt;/a&gt;. Within the Windows Azure Management Portal click the New button and select the new HDInsight service to create a Hadoop cluster.&amp;#160; Specify a name for the cluster, a password for logging into the cluster and the size of cluster you need:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_75BADA44.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_69B8EA10.png" width="868" height="580" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: a storage account is required to create a cluster and in the current public preview the storage account must reside in the East US region. The Azure Storage account you associate with your cluster is where you will store the data that you will analyze in HDInsight.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;HDInsight Clusters&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A cluster will take a few minutes to create (as part of creating it will configure the necessary Virtual Machines that together make up your Hadoop cluster). The Hadoop components installed as part of an HDInsight cluster are outlined &lt;a href="http://go.microsoft.com/fwlink/?LinkID=286746"&gt;here&lt;/a&gt;. Once the cluster is created, you can drill into the dashboard view to see the cluster quick glance screen. This quick glance allows you to see the basic information about your cluster and gives you a simple method to connect to the cluster (just click the &lt;strong&gt;Manage&lt;/strong&gt; button at the bottom of the dashboard).&lt;/p&gt;  &lt;p&gt;When you connect to the cluster you’ll see a page that contains a number of tiles that provide information about the cluster and can be used to perform additional tasks:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_75513800.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_5B7D01D1.png" width="649" height="505" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The &lt;b&gt;Create Job&lt;/b&gt; tile opens a MapReduce job submission form that you can use to submit &lt;a href="http://go.microsoft.com/fwlink/?LinkID=287075" target="_blank"&gt;MapReduce&lt;/a&gt; jobs as JAR files. The &lt;b&gt;Interactive Console&lt;/b&gt; tile opens a console that lets you execute Javascript and &lt;a href="http://www.windowsazure.com/en-us/manage/services/hdinsight/using-hive-with-hdinsight/"&gt;Hive&lt;/a&gt; queries directly against your cluster.&amp;#160; The &lt;strong&gt;Samples&lt;/strong&gt; title includes samples that you can use to get started.&lt;/p&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=10010394" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Windows Azure Updates: Android Support, SQL Reporting Services, Active Directory, More…</title><link>http://weblogs.asp.net/scottgu/archive/2013/03/04/windows-azure-updates-android-support-sql-reporting-services-active-directory-more.aspx</link><pubDate>Tue, 05 Mar 2013 05:06:37 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9946098</guid><dc:creator>ScottGu</dc:creator><slash:comments>24</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=9946098</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=9946098</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/03/04/windows-azure-updates-android-support-sql-reporting-services-active-directory-more.aspx#comments</comments><description>&lt;p&gt;This past weekend we released a number of enhancements to Windows Azure. These new capabilities include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mobile Services: Android support, East Asia Region Support, iOS dev content&lt;/li&gt;    &lt;li&gt;SQL Reporting Services: Support in the management portal&lt;/li&gt;    &lt;li&gt;Active Directory: Support in the azure management portal, user and domain management&lt;/li&gt;    &lt;li&gt;Availability Monitoring for Cloud Services. Virtual Machines, Web Sites, and Mobile Services&lt;/li&gt;    &lt;li&gt;Service Bus: New configuration tab and metrics&lt;/li&gt;    &lt;li&gt;Storage: Ability to download blobs directly in management portal&lt;/li&gt;    &lt;li&gt;Media Services: New monitoring metrics and quickstart experience&lt;/li&gt;    &lt;li&gt;Cloud Services: Support for .cer certificate files upload&lt;/li&gt;    &lt;li&gt;Localization support for five new languages&lt;/li&gt;    &lt;li&gt;Windows Azure Store Support in 22 Additional Countries&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;Mobile Services: Android, East Asia Region, iOS Content&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With the &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx"&gt;initial public preview&lt;/a&gt; of Windows Azure Mobile Services, we promised that we would deliver first-class support for developers building Windows 8, Windows Phone 8, iOS and Android apps. We launched last year with Windows 8 support and shortly after added Windows Phone, and the iOS support.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Android Support&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Today I’m happy to announce &lt;a href="http://www.windowsazure.com/android/"&gt;Mobile Services support for the Android platform&lt;/a&gt;. The Android Client SDK is &lt;a href="https://github.com/WindowsAzure/azure-mobile-services"&gt;available on GitHub&lt;/a&gt; under the Apache 2.0 license and we welcome community contributions.&lt;/p&gt;  &lt;p&gt;To create a new Android app or connect an existing Android app to your Windows Azure Mobile Service, simply select the “Android” tab within the Quick Start view of a Mobile Service, and then follow either the “Create a new Android app” or “Connect to an existing Android app” link below it: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_19EA02AE.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_2B5CF437.png" width="784" height="570" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking either of these links will expand and display step-by-step instructions for how to build an Android application connected with your Windows Azure Mobile Service.&lt;/p&gt;  &lt;p&gt;Read this &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-android"&gt;getting started tutorial&lt;/a&gt; to walkthrough how you can build (in less than 5 minutes) a simple Android “Todo List” app that stores data in Windows Azure. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Android Push Notifications&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure Mobile Services makes it easy to add push notification support to your apps without headaches. To send push notifications to your Android device, register for Google Cloud Messaging using &lt;a href="https://code.google.com/apis/console"&gt;https://code.google.com/apis/console&lt;/a&gt; and obtain your API key, then simply paste that key on the Mobile Services ‘Push’ tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0254E5EC.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_7D72322F.png" width="784" height="570" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After you’ve entered your API key, you can then send a notification from any server script under the ‘Data’ tab using the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family: consolas; mso-no-proof: yes"&gt;push.gcm.send(registrationId, 'A new Mobile Services task', {       &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;success: function(response) {        &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;console.log('Push notification sent: ', response);        &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;},         &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;error: function(error) {        &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;console.log('Error sending push notification: ', error);        &lt;br /&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;}        &lt;br /&gt;});&lt;/span&gt;&lt;span style="mso-no-proof: yes"&gt;       &lt;p&gt;&lt;/p&gt;     &lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Visit the &lt;a href="http://www.windowsazure.com/mobile"&gt;Windows Azure Mobile dev center&lt;/a&gt; for the full Android tutorials that cover: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-data-android/"&gt;Getting started with data&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-android/"&gt;Authenticating users&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-push-android/"&gt;Sending push notifications&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After you get up to speed with Android on Mobile Services, I encourage you to take a look at two additional Android samples for Mobile Services: &lt;a href="https://github.com/WindowsAzure-Samples/Android-MobileServices-TicTacToeLeaderboard"&gt;TicTacToe Leaderboard&lt;/a&gt; and &lt;a href="https://github.com/WindowsAzure-Samples/Android-MobileServices-Feedback"&gt;Feedback&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Mobile Services Availability in the East Asia Region&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With this week’s release we also added the ability to deploy your Mobile Services to the East Asia region of Windows Azure in order to reduce latency for applications with customers in Asia.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_267CD12C.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_13C7D775.png" width="706" height="470" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As always, remember to deploy your Mobile Service and Windows Azure SQL database to the same data center in order to minimize latency.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Great iOS Developer Content&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Earlier in November we released Windows Azure Mobile Services support for iOS. We recently invited Brent Simmons, the well-known iOS developer and creator of NetNewsWire to give Mobile Services a try. &lt;/p&gt;  &lt;p&gt;If you haven’t tried Mobile Services yet, join Brent and follow his great &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/ios/"&gt;video series on building iOS applications with Mobile Services&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_361F6CEE.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_7ED8E5B2.png" width="754" height="570" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Keep the Feedback Coming&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;This week’s Mobile Services updates are the direct result of your feedback. Please visit our &lt;a href="http://mobileservices.uservoice.com"&gt;uservoice&lt;/a&gt; page to let us know what you’d like to see added next, &lt;a href="mailto:mobileservices@microsoft.com?subject=Windows%20Azure%20Mobile%20Services%20adds%20Android%20support,%20will%20deliver%20additional%20SDKs%20and%20extends%20availability%20to%20East%20Asia%20"&gt;email us&lt;/a&gt; to show off your app, and ask questions in our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/azuremobile/threads"&gt;forum&lt;/a&gt; whenever you run into a problem.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;SQL Reporting Services Management&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;You can now create and manage SQL Reporting Services from within the Windows Azure management portal (previously this was not supported in the new HTML portal).&amp;#160; The SQL Reporting Service lets you upload pre-created reports, view metrics over reports that you manage, manage permissions for users accessing reports, data sources and folders. To get started, create a SQL Reporting service by selecting &lt;b&gt;NEW -&amp;gt; SQL REPORTING -&amp;gt; QUICK CREATE&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7989FF01.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_7BC687BD.png" width="815" height="354" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once created, the &lt;b&gt;QUICK START&lt;/b&gt; tab provides useful information for you to get started including links to tools and helpful articles on MSDN: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_16FEE0BF.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_59055000.png" width="796" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can monitor the average and maximum number of reports processed in the dashboard view of your SQL reporting service.&amp;#160; You can add users and manage permissions using the Users and Items tabs.&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;h2&gt;&lt;u&gt;Active Directory Integration&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;We have made some great improvements with this week’s release in bringing enterprise level identity management to Windows Azure.&amp;#160; Companies who sign up for Windows Azure as organizations (by creating a new Windows Azure Active Directory or signing up for Windows Azure with their Office 365 identity) will now find several new capabilities in the Windows Azure Management Portal:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ability to create and manage user accounts in your Windows Azure Active Directory. &lt;/li&gt;    &lt;li&gt;Phone based two factor authentication for users who are Global Administrators in Windows Azure AD.&lt;/li&gt;    &lt;li&gt;Ability to sync users from an on-premise Active Directory.&amp;#160; &lt;/li&gt;    &lt;li&gt;Ability to establish single sign with Azure (and other Microsoft Services like Office 365) using Active Directory Federation Services.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Active Directory tab within the Windows Azure Management Portal now allows you to see all directories that your account is managing, as well as create and manage users, domains and directory integration settings:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_54229C44.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_1D4847FE.png" width="856" height="429" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For a more detailed discussion of the new Active Directory support, read Alex Simons’ post on the &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2013/02/26/more-identity-and-access-management-improvements-in-windows-azure.aspx"&gt;Azure Blog&lt;/a&gt;.&amp;#160; You’ll see this AD support get even better in the months ahead.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Availability Monitoring for Cloud Services, Websites, Mobile Services, and VMs&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With this week’s release we are enabling a new preview feature that will let you monitor the availability of your web applications. Web availability monitoring helps you understand the response time and availability of your web application from different locations around the world. This feature is available for Websites and Mobile Services in reserved mode, Cloud services in production environment, and for Virtual Machines.&lt;/p&gt;  &lt;p&gt;You can try the web endpoint monitoring support in Windows Azure and enable your http/https endpoints to be tested from different locations. For example, to monitor your Web Site, scale the Web Site to reserved mode and then navigate to the configure page for the Web Site. Within the configure page, navigate to the monitoring section:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6A784189.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_1AA21CFE.png" width="878" height="292" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The monitoring section allows you to add multiple URLs that you wish to monitor.&amp;#160; Add a friendly name for each URL and select the locations around the world that you wish to monitor it from. With this week’s preview you can monitor the Web URL from up to 3 test locations. After you have saved the configuration, the Web Site’s URL will be tested once every 5 minutes from each of the configured locations.&lt;/p&gt;  &lt;p&gt;The results of the tests can be viewed on the Web Site’s dashboard as well as from the monitoring tab:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_07ED2347.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_6A0E9F45.png" width="801" height="425" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Availability is monitored using HTTP response codes, and response time. The Web Site is considered down when the response time is greater than 30 seconds or the HTTP status code is greater than 400.&amp;#160; &lt;/p&gt;  &lt;p&gt;The same features are available for Virtual Machines, Mobile Services and Cloud Services (in Production slot).&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Service Bus Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With this release, we have added some nice new capabilities to the Service Bus experience. First, the new &lt;b&gt;CONFIGURATION&lt;/b&gt; tabs for Queues and Topics now enables you to edit runtime properties for these entities. We also allow you enable/disable Queues and Topics at the granularity of Send and Receive states:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_7A1D6DFC.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_1555C6FE.png" width="860" height="596" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We have also added more dashboard metrics for Queues, Topics and Subscriptions. These include additions to operation counts and error counts.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_4989F044.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_36D4F68D.png" width="819" height="288" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We have also significantly enhanced the content on the QUICK START page as well as provided the ability to download sample solutions that shows off how to build apps that use Service Bus Queues, Topics and Relays.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Storage Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;You can now download blob storage files (even private blobs in your account) directly from within the Windows Azure Management Portal.&amp;#160; From your storage account management page, go to the &lt;b&gt;CONTAINERS &lt;/b&gt;tab to list your containers.&amp;#160; Then click on the container name to go to the blob listing.&amp;#160; You can select any blob and click the &lt;b&gt;DOWNLOAD BLOB &lt;/b&gt;command on the command bar to download it directly from the browser:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_520D4F8E.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_6D45A88F.png" width="840" height="426" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking this button will generate a temporary URL using a shared access signature and will trigger a browser download in a new tab.&amp;#160; &lt;/p&gt;  &lt;p&gt;Another new enhancement is the ability to edit blob metadata and properties within the portal using the &lt;b&gt;EDIT BLOB&lt;/b&gt; command:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_366B5449.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_039B4DD5.png" width="838" height="610" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;From this dialog, you can see all of the relevant blob properties and user defined metadata.&amp;#160; You can also edit some properties such as the &lt;b&gt;Content Type&lt;/b&gt; as well as all of the metadata key value pairs.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Media Services Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;This week’s release includes several update to Windows Azure Media Services. &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Monitoring Metrics for on-demand streaming&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure Media Services enables you to easily stream video on-demand (and soon live) from Windows Azure – without having to setup your own streaming server.&amp;#160; With this week’s update the dashboard view of your media service now displays monitoring metrics for on-demand streaming:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_5A933F89.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_0EC768D0.png" width="859" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;Improved Content and Samples&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;With this week’s release we have also updated the Media Services quick start page and added some helpful links as well as some sample code snippets that you can easily copy and paste into your code to start integrating Windows Azure Media Service tasks (typically encoding and streaming video) into your existing solutions:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_70E8E4CE.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_6C063112.png" width="860" height="596" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For example, the “Upload a video programmatically” code snippet will show you how to programmatically upload a video file into your Windows Azure Media Services account (it even includes your account name + key in the snippet so that you can literally copy/paste to try it out):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_1510D00F.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_6240C99A.png" width="748" height="435" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Cloud Service Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;In previous versions of the Windows Azure Management Portal, you could only upload a certificate PFX file. We listened to you feedback – with this week’s release, the portal now also supports upload of just the public key of the certificate 9e.g. a *.cer certificate file).&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Localization in 5 Additional Languages&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With this week’s release, we have added additional localization support for &lt;b&gt;5 NEW LANGUAGES&lt;/b&gt;: Russian, Korean, Portuguese, Chinese Simplified, Chinese Traditional.&amp;#160; You can select the language you want to use from the globe icon on the top of the portal:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_44624599.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_587B6222.png" width="828" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure Store Support in 22 New Countries&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With this week’s release we have also expanded support for the Windows Azure Store to 33 countries (up from the previous 11 countries supported).&amp;#160; The &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/01/23/windows-azure-store-new-add-ons-and-expanded-availability.aspx" target="_blank"&gt;Windows Azure Store&lt;/a&gt; is an awesome feature of Windows Azure and enables you to consume services from a variety of Microsoft and non-Microsoft services.&lt;/p&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" target="_blank"&gt;twitter.com/scottgu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9946098" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Azure/default.aspx">Azure</category></item><item><title>Announcing release of ASP.NET and Web Tools 2012.2 Update</title><link>http://weblogs.asp.net/scottgu/archive/2013/02/18/announcing-release-of-asp-net-and-web-tools-2012-2-update.aspx</link><pubDate>Mon, 18 Feb 2013 18:17:29 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:9887152</guid><dc:creator>ScottGu</dc:creator><slash:comments>57</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=9887152</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/commentapi.aspx?PostID=9887152</wfw:comment><comments>http://weblogs.asp.net/scottgu/archive/2013/02/18/announcing-release-of-asp-net-and-web-tools-2012-2-update.aspx#comments</comments><description>&lt;p&gt;I’m excited to announce the final release of the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=282650" target="_blank"&gt;ASP.NET and Web Tools 2012.2 update&lt;/a&gt;.&amp;#160; This update is a free download for Visual Studio 2012 and .NET 4.5, and adds some great additional features to both ASP.NET and Visual Studio.&lt;/p&gt;  &lt;p&gt;Today’s update makes no changes to the existing ASP.NET runtime, and so it is fully compatible with your existing projects and development environment. Whether you use Web Forms, MVC, Web API, or any other ASP.NET technology, there is something in this update for you.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=282650" target="_blank"&gt;Click here&lt;/a&gt; to download and install it today! This ASP.NET and Web Tools update will also be included with the upcoming Visual Studio 2012 Update 2 (aka VS2012.2).&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Visual Studio Web Tooling Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s release, all of the ASP.NET templates have updated versions of jQuery, jQuery UI, jQuery Validation, Modernizr, Knockout, and other open source NuGet packages. Note: your existing projects will continue to use the older packages unless you update them. &lt;/p&gt;  &lt;p&gt;Web site projects now have the same publish experience as web application projects, including new support for publishing to Windows Azure Web Sites. You can selectively publish files, update local to remote files or vice versa, and see the differences between local and remote files. &lt;/p&gt;  &lt;p&gt;Visual Studio 2012 Page Inspector enhancements include JavaScript selection mapping and CSS live updates as you type. The JavaScript selection mapping enables Page Inspector to map items that were dynamically added to the page back to the corresponding JavaScript code. For more information, read &lt;a href="http://blogs.msdn.com/b/webdev/archive/2012/12/14/css-auto-sync-and-javascript-selection-mapping-in-page-inspector.aspx"&gt;CSS Auto-Sync and JavaScript Selection Mapping in Page Inspector&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The Visual Studio 2012 editor has several improvements. With today’s update VS now supports syntax highlighting for: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;CoffeeScript&lt;/li&gt;    &lt;li&gt;Mustache&lt;/li&gt;    &lt;li&gt;Handlebars&lt;/li&gt;    &lt;li&gt;JsRender&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The HTML editor provides Intellisense for Knockout bindings. There is even first-class support for editing LESS files, complete with syntax highlighting, Intellisense, and validation. The editor also supports pasting JSON as a .NET class. Copy any JSON data into the clipboard, use a Paste Special command to paste it into a C# or VB.NET code file, and Visual Studio will automatically generate .NET classes inferred from the JSON. &lt;/p&gt;  &lt;p&gt;Mobile Emulator support adds extensibility hooks so that third-party emulators can be installed as a VSIX. The installed emulators will show up in the F5 dropdown, so that developers can preview their websites on a variety of mobile devices. Read more about this feature in Scott Hanselman’s blog entry on &lt;a href="http://www.hanselman.com/blog/CrossBrowserDebuggingIntegratedIntoVisualStudioWithBrowserStack.aspx"&gt;the new BrowserStack integration with Visual Studio&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;ASP.NET Web API Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;With today’s release, ASP.NET Web API now provides support for OData endpoints that support both ATOM and JSON-light formats. With OData you get support for rich query semantics, paging, $metadata, CRUD operations, and custom actions over any data source. Read more about ASP.NET Web API OData support at &lt;a href="http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api"&gt;http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;New built-in tracing functionality now lets you easily diagnose problems with Web API whether you’re running in Visual Studio or on Windows Azure. Tracing output from Web API is automatically written to the Visual Studio output window, IntelliTrace, and any other trace listener that you would like, including Windows Azure Diagnostics. The output shows the full Web API pipeline for all requests, including any exceptions or errors that occur, what controller and action were selected, model binding, the format that was negotiated, and the response. &lt;/p&gt;  &lt;p&gt;Updated Web API projects now contain a link to an automatically generated help page that shows how to call your web API. The help page shows all of your API endpoints, the HTTP verbs they support, parameters, and sample request and response messages. You can customize the help page as you like, including adding &lt;a href="http://blogs.msdn.com/b/yaohuang1/archive/2012/12/10/asp-net-web-api-help-page-part-3-advanced-help-page-customizations.aspx"&gt;documentation&lt;/a&gt; and &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;test client functionality&lt;/a&gt;.&amp;#160; This makes it really easy to create documentation pages for developers calling your services.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_01225169.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_3C098432.png" width="476" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;ASP.NET SignalR&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;ASP.NET SignalR is a new library for ASP.NET developers that simplifies the process of adding real-time web functionality to your applications. Real-time web functionality is the ability to have server-side code push content to connected clients instantly as it becomes available.&lt;/p&gt;  &lt;p&gt;You may have heard of the HTML5 WebSocket API that enables efficient bidirectional communication between the browser and server. SignalR uses Websockets when it is supported by the browser and the server, and gracefully falls back to other techniques and technologies when it is not (best of all your application code can stay the same regardless of which is being used).&lt;/p&gt;  &lt;p&gt;SignalR provides a simple API for creating server-to-client remote procedure calls (RPC) that call JavaScript functions in client browsers from server-side .NET code. SignalR also includes API for connection management (for instance, connect and disconnect events), grouping connections, and authorization.&lt;/p&gt;  &lt;p&gt;Included in today’s release is Visual Studio 2012 template support for creating SignalR projects as well as adding SignalR support to existing Web Forms and MVC applications:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_76F0B6FB.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_6D978278.png" width="628" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Read more about SignalR at &lt;a href="http://www.asp.net/signalr"&gt;http://www.asp.net/signalr&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;ASP.NET Web Forms Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;ASP.NET Friendly URLs enable you to remove the .aspx extension from your Web Forms pages, making your sites’ URLs look cleaner. You can also pass parameters to pages as segments of the URL. For example, instead of ProductDetails.aspx?id=5 you can have ProductsDetails/5. With Friendly URLs you can also easily support mobile devices by creating mobile versions of pages:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;YourPage.aspx&lt;/strong&gt; – This is the page that will be rendered by default on a browser.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;YourPage.Mobile.aspx&lt;/strong&gt; – This is the version of the page that will be rendered by default on a mobile browser.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;YourPage.&lt;i&gt;Device&lt;/i&gt;.aspx&lt;/strong&gt; – You can write your own code to map a user-agent string to a specific device name. For example, you could have pages for Windows Phone, iPhone, and Android devices.&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;ASP.NET MVC Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;A new Facebook Application template makes writing Facebook Canvas applications using ASP.NET MVC really easy. In a few simple steps, you can create a Facebook application that gets data from a logged in user and integrates with their friends. The template includes a new library to take care of all the plumbing involved in building a Facebook app, including authentication, permissions, accessing Facebook data and more. This lets you focus on building the business logic in your app. The Facebook apps you can build with this new template are hosted on the web and displayed inside the Facebook chrome via an iframe. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_721093F0.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_2162097B.png" width="363" height="485" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Single Page Applications&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;A new Single Page Application template for ASP.NET MVC is also now included and allows developers to build interactive client-side web apps using HTML 5, CSS 3, and the popular Knockout and jQuery JavaScript libraries – all on on top of ASP.NET Web API. &lt;/p&gt;  &lt;p&gt;The default template creates a “todo” list application that demonstrates common practices for building a JavaScript HTML5 application that uses a RESTful server API. You can read more at &lt;a href="http://www.asp.net/single-page-application"&gt;http://www.asp.net/single-page-application&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you don’t want to use the new Knockout template there are 4 new community-created templates. These templates were built using the improved &lt;a href="http://www.asp.net/vnext/overview/fall-2012-update/custom-mvc-templates"&gt;Custom MVC Template&lt;/a&gt; support:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=282649" target="_blank"&gt;BreezeJS&lt;/a&gt; template that uses BreezeJS and Knockout for data binding and templating&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=282647" target="_blank"&gt;Ember&lt;/a&gt; template uses the latest version of Ember and Handlebars&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=282648" target="_blank"&gt;DurandalJS&lt;/a&gt; template is built using the new MVVM library DurandalJS as well as Knockout&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=282646" target="_blank"&gt;Hot Towel&lt;/a&gt; uses BreezeJS, DurandalJS, Knockout, require.js and Bootstrap&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You’ll see even more templates in the months ahead.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Windows Azure Authentication Enhancements&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;A new pre-release of Windows Azure Authentication is also now available for MVC, Web Pages, and Web Forms. This feature enables your application to authenticate Office 365 users from your organization, corporate accounts synced from your on-premise Active Directory, or users created in your own custom Windows Azure Active Directory domain. For more information, see the &lt;a href="http://www.asp.net/vnext/overview/fall-2012-update/windows-azure-authentication"&gt;Windows Azure Authentication tutorial&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Today’s ASP.NET and Web Tools 2012.2 update has a lot of useful features for all developers using ASP.NET.&amp;#160; Read the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=279941" target="_blank"&gt;release notes&lt;/a&gt; to learn even more, and &lt;a href="http://go.microsoft.com/fwlink/?LinkId=282650" target="_blank"&gt;install it&lt;/a&gt; today!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Important Installation Note&lt;/font&gt;&lt;/strong&gt;: If you have installed an earlier version of Mads Kristensen’s excellent (and free) &lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6" target="_blank"&gt;Web Essentials 2012 extension&lt;/a&gt;, you’ll want to update it to the latest version before installing today’s ASP.NET and Web Tools 2012.2 update.&amp;#160; The latest version of the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6" target="_blank"&gt;Web Essentials 2012 extension&lt;/a&gt; works well with today’s release – if you have an older version you will get a runtime error when you launch Visual Studio.&amp;#160; Updating to the latest version of the extension prior to installing the ASP.NET and Web Tools 2012.2 update will fix this.&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://twitter.com/scottgu"&gt;&lt;em&gt;twitter.com/scottgu&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=9887152" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item></channel></rss>