<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PeterKellner.net &#187; Azure</title>
	<atom:link href="http://peterkellner.net/category/azure/feed/" rel="self" type="application/rss+xml" />
	<link>http://peterkellner.net</link>
	<description>Microsoft Focussed, JavaScript (ExtJS, SenchaTouch &#38; Windows 8 Metro)</description>
	<lastBuildDate>Tue, 07 Feb 2012 21:14:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Presenting Tonight In San Francisco on Windows Azure Development Real World Experiences</title>
		<link>http://peterkellner.net/2011/06/29/presenting-tonight-at-the-san-francisco-on-windows-azure-development/</link>
		<comments>http://peterkellner.net/2011/06/29/presenting-tonight-at-the-san-francisco-on-windows-azure-development/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 18:35:26 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[Azure Deployment]]></category>
		<category><![CDATA[Azure Table Storage]]></category>
		<category><![CDATA[Azure Web Role]]></category>
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/06/29/presenting-tonight-at-the-san-francisco-on-windows-azure-development/</guid>
		<description><![CDATA[Tonight, at the Microsoft office (see this announcement for more details: http://www.meetup.com/The-San-Francisco-NET-User-Group/events/21982451/?a=cr1p_grp&#38;rv=cr1p ) I’m going to be talking about what it is really like to build a full service application using Microsoft’s Windows Azure Cloud Computing Platform.  For those that don’t know what I’m going to talk about, here is a prelude.  First, [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight, at the Microsoft office (see this announcement for more details: <a title="http://www.meetup.com/The-San-Francisco-NET-User-Group/events/21982451/?a=cr1p_grp&amp;rv=cr1p" href="http://www.meetup.com/The-San-Francisco-NET-User-Group/events/21982451/?a=cr1p_grp&amp;rv=cr1p">http://www.meetup.com/The-San-Francisco-NET-User-Group/events/21982451/?a=cr1p_grp&amp;rv=cr1p</a> ) I’m going to be talking about what it is really like to build a full service application using <a href="http://www.microsoft.com/windowsazure/">Microsoft’s Windows Azure Cloud Computing Platform</a>.</p>  <p>For those that don’t know what I’m going to talk about, here is a prelude.</p>  <p>First, I’m going to go through about 10 slides talking briefly about what is azure.&#160; That is, Azure is basically a family of hosted services that Microsoft provides in the cloud.&#160; I’m going to talk about:</p>  <ul>   <li><a href="http://www.microsoft.com/windowsazure/compute/">Compute</a></li>    <li><a href="http://www.microsoft.com/windowsazure/storage/">Storage</a></li>    <li><a href="http://www.microsoft.com/windowsazure/appfabric/caching/">Cache</a></li>    <li><a href="http://www.microsoft.com/windowsazure/appfabric/servicebus/">Service Bus</a></li>    <li><a href="http://www.microsoft.com/windowsazure/sqlazure/database/">SqlAzure</a></li> </ul>  <p>Then, I’m going to got through and actually show all the things I do on a daily basis while I’m doing my development work.&#160; That includes using their development environment (called the dev fabric) as well as how I deploy and test.&#160; The product I developed can be found at <a href="http://connectionroad.com">http://connectionroad.com</a> if you are interested.&#160; It’s basically <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=15155">Microsoft SyncToy</a> to Cloud Storage.</p>  <p>Bring your questions!&#160; This could be very fun.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image_thumb8.png" width="330" height="272" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/06/29/presenting-tonight-at-the-san-francisco-on-windows-azure-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>With VS2010 Debugger, Step Into, From a Windows .Net App Directly into a Windows Azure Web Role Hosting a WCF Service In The Developer Fabric</title>
		<link>http://peterkellner.net/2011/06/07/with-vs2010-debugger-step-into-from-a-windows-net-app-directly-into-a-windows-azure-web-role-hosting-a-wcf-service-in-the-developer-fabric/</link>
		<comments>http://peterkellner.net/2011/06/07/with-vs2010-debugger-step-into-from-a-windows-net-app-directly-into-a-windows-azure-web-role-hosting-a-wcf-service-in-the-developer-fabric/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 21:52:09 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[Azure Deployment]]></category>
		<category><![CDATA[Azure Web Role]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/06/07/with-vs2010-debugger-step-into-from-a-windows-net-app-directly-into-a-windows-azure-web-role-hosting-a-wcf-service-in-the-developer-fabric/</guid>
		<description><![CDATA[&#160;  OK, I think this is the longest post title I’ve ever made, but if you understand it, you’ll know why it needs to be so long.&#160; I discovered this totally by accident.&#160; I would never ever have pressed F11 (step into) from a client side proxy and expect to get into anything but [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p>OK, I think this is the longest post title I’ve ever made, but if you understand it, you’ll know why it needs to be so long.&#160; I discovered this totally by accident.&#160; I would never ever have pressed F11 (step into) from a client side proxy and expect to get into anything but a bunch of ugly machine generated proxy code (especially with <a href="http://www.microsoft.com/windowsazure/">Azure</a>).&#160; To my total surprise, I landed right inside my <a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx">WCF</a> service as if I had started the <a href="http://www.microsoft.com/en-us/cloud/developer/resource.aspx?resourceId=what-is-windows-azure&amp;fbid=flWeS4xmu1C&amp;WT.srch=1&amp;WT.mc_id=85C588D4-A353-4E3D-8824-823A9551AA51&amp;CR_SCC=200028978">Windows Azure Developer fabric</a> in debug mode and set a break point.</p>  <p>So, I’ll step through the process an show screen shots on the outside chance I was dreaming and can’t reproduce it. If I can, now I will have proof so I can do it again.&#160; Sorry for the work in progress code you will see.&#160; The point here is really the debugger and not the code I’m showing so try and ignore that.</p>  <p>OK, here we go.</p>  <p>Let’s assume you have a completely configured azure web role that is hosting a simple <a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation">WCF</a> service.&#160; When you start that web role and point at the service, you’ll get something like this: (just a note that I started the app fabric by deploying directly from <a href="http://www.microsoft.com/en-us/default.aspx">Microsoft</a> <a href="http://www.microsoft.com/visualstudio/en-us">Visual Studio 2010</a> with the start/run.&#160; I am using a debug profile but am <strong>NOT </strong>running in debug mode.&#160; If I do run the app fabric in debug mode, this does not work.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image_thumb4.png" width="480" height="366" /></a></p>  <span id="more-1508"></span>  <p>&#160;</p>  <p>OK, now let’s run my app that has a <a href="http://visualstudiomagazine.com/articles/2011/06/01/pcnet_wcf-and-soa.aspx">WCF</a> client configured to connect to this service.&#160; The configuration is the normal “Add Service Reference” you would expect but I’m showing it any how just to be clear.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image_thumb5.png" width="485" height="473" /></a></p>  <p>&#160;</p>  <p>Next, we simply Launch <a href="http://www.microsoft.com/visualstudio/en-us">Visual Studio 2010</a> in <a href="http://msdn.microsoft.com/en-us/library/sc65sadd.aspx">debug</a> mode and put a break point just before we cross over into the WCF service by calling the above proxy code.&#160; Here is what that screen looks like after the break point is hit and I’m about to step INTO.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image_thumb6.png" width="616" height="198" /></a></p>    <p><font size="6">F11</font></p>  <p>&#160;</p>  <p>and…..</p>  <p><a href="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/wp/wp/wp-content/uploads/2011/06/image_thumb7.png" width="657" height="265" /></a></p>  <p><font size="2"></font></p>  <p>There we are!!! right inside the source code that is my WCF service with everything working as if I had launched the site on it’s own, set a break point and waited.</p>  <p>&#160;</p>  <p>Truly amazing!!!&#160; I have nothing more to say.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/06/07/with-vs2010-debugger-step-into-from-a-windows-net-app-directly-into-a-windows-azure-web-role-hosting-a-wcf-service-in-the-developer-fabric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IT SURE WOULD BE NICE IF There was a 1-click Deploy for a Windows Azure Web Sites</title>
		<link>http://peterkellner.net/2011/05/15/it-sure-would-be-nice-if-there-was-a-1-click-deploy-for-a-windows-azure-web-sites/</link>
		<comments>http://peterkellner.net/2011/05/15/it-sure-would-be-nice-if-there-was-a-1-click-deploy-for-a-windows-azure-web-sites/#comments</comments>
		<pubDate>Sun, 15 May 2011 22:00:45 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[IT SURE WOULD BE NICE IF]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/05/15/it-sure-would-be-nice-if-there-was-a-1-click-deploy-for-a-windows-azure-web-sites/</guid>
		<description><![CDATA[Microsoft’s Windows Azure is truly a revolutionary way to have web sites hosted.&#160; The beauty of it is practically all the IT type stuff is just taken care of for you.&#160; The kind of thing you do not have to worry about are   Security patches to the operating system     [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/windowsazure/">Microsoft’s Windows Azure</a> is truly a revolutionary way to have web sites hosted.&#160; The beauty of it is practically all the IT type stuff is just taken care of for you.&#160; The kind of thing you do not have to worry about are </p>  <p>Security patches to the operating system</p>  <ol>   <li>Worrying about what happens if the server goes down and you are not around </li>    <li>Database backups if your system crashes unexpectedly </li>    <li>Scaling servers to meet high demands </li>    <li>Other platform provided features such as Cache </li> </ol>  <p>The penalty for this unfortunately is that you have to spend more time up front specifying your configuration exactly so that Azure knows how to exactly boot and provision your web site in the cloud.</p>  <p>The Windows Azure I imagine is one where, from <a href="http://www.microsoft.com/visualstudio/en-us/home">Visual Studio</a>, I simply could say <strong>“Publish To Azure”</strong> , and as long as I have a Microsoft Live sign on, it would basically publish my web site to the Azure Cloud.&#160; Seems to me that as long as the web site can run in my local development environment with either the built in visual studio web server (aka <a href="http://en.wikipedia.org/wiki/Cassini_Web_Server">Cassini</a>) or <a href="http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx">IIS Express</a>, Azure should be able to make this into a cloud web site with no other steps.&#160; I’m not saying don’t offer all the other configuration options, just give me a choice to make it easy and let me go with the defaults.</p>  <p>Am I wrong?&#160; I totally get that there are a ton of configuration options that can be specified, but it seems to be they should not have to be.&#160; If you feel the same or different, let me know your opinion, <strong>post your comment below</strong> and let the discussion begin now.</p>  <p>Again, I can’t express how much I like having Azure as a destination for deploying web sites.&#160; Even with the current extra work to deploy, it is a huge benefit and worth it.&#160; I strongly recommend taking a serious look at Azure for your web site if you have not already.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/05/15/it-sure-would-be-nice-if-there-was-a-1-click-deploy-for-a-windows-azure-web-sites/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Steve Marx Of The Windows Azure Team Announces Massive IPad Cluster At MIX11 In Las Vegas</title>
		<link>http://peterkellner.net/2011/04/13/steve-marx-of-the-windows-azure-team-announces-massive-ipad-cluster-at-mix11-in-las-vegas/</link>
		<comments>http://peterkellner.net/2011/04/13/steve-marx-of-the-windows-azure-team-announces-massive-ipad-cluster-at-mix11-in-las-vegas/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 05:46:08 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[MIX11]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/04/13/steve-marx-of-the-windows-azure-team-announces-massive-ipad-cluster-at-mix11-in-las-vegas/</guid>
		<description><![CDATA[&#160;  MIX11 In Las Vegas has been a really fun and exciting couple of days.&#160; For me, the sessions are interesting, but my feeling is I can always go back and see them on the internet.&#160; The most interesting things happen during the side conversations with Microsoft Team members and friends I don’t see [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>  <p><a href="http://live.visitmix.com/">MIX11</a> In Las Vegas has been a really fun and exciting couple of days.&#160; For me, the sessions are interesting, but my feeling is I can always go back and see them on the internet.&#160; The most interesting things happen during the side conversations with Microsoft Team members and friends I don’t see often.</p>  <p>In this video, I’m having a little Fun with <a href="http://twitter.com/smarx">Steve Marx</a> and <a href="http://twitter.com/say_wht">Tina Dawson</a> of the <a href="http://www.microsoft.com/windowsazure/">Windows Azure Team</a>.&#160; I’m not sure of Tina’s role, but Steve is undoubtedly my best advocate on the Windows Azure team.&#160; Over the past 6 months or so, since I’ve been working building my first major Azure product (Soon to be found at <a href="http://connectionroad.com">http://connectionroad.com</a>), Steve has been an immense help in sorting out tough issues.&#160; Patiently explaining concepts as well as taking my “constructive” feedback to the team for further analysis.</p>  <p>&#160;</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f127d1f8-b665-4bea-9189-2d7ceed36877" class="wlWriterSmartContent"><embed height="252" type="application/x-shockwave-flash" width="448" src="http://www.youtube.com/v/kbF5lwqaLNI?hd=1" wmode="transparent" /></div>  <p>&#160;</p>  <p>or:&#160;&#160; <a href="http://www.youtube.com/watch?v=kbF5lwqaLNI">http://www.youtube.com/watch?v=kbF5lwqaLNI</a> </p>  <p>&#160;</p>  <p>&#160;</p>  <p>(BTW, just a little background on the wardrobe consulting comment at the beginning.&#160; About a year ago, I discovered, well, maybe someone mentioned to me, that wearing white socks with my dark running shoes and long pants was not exactly a fashion statement.&#160; Noticing Steve in the same condition, obviously landing there as I did, we asked Tina for a consult.&#160; Steve asked Tina if white socks with dark shoes and dark pants were reasonable.&#160; Tina’s response was “Only if you are Michael Jackon”.&#160; Later, she tried to mellow her response however by that point every had heard it her hopes of what is said in Las Vegas stays in Las Vegas were totally dashed.)</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/04/13/steve-marx-of-the-windows-azure-team-announces-massive-ipad-cluster-at-mix11-in-las-vegas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My Windows Azure Web Deploy Stopped Working Because My Certificate Expired</title>
		<link>http://peterkellner.net/2011/03/19/my-windows-azure-web-deploy-stopped-working-because-my-certificate-expired/</link>
		<comments>http://peterkellner.net/2011/03/19/my-windows-azure-web-deploy-stopped-working-because-my-certificate-expired/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 22:47:48 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/03/19/my-windows-azure-web-deploy-stopped-working-because-my-certificate-expired/</guid>
		<description><![CDATA[This is one of those things that you do once every year or so and it is very easy to forget how to do it the next time. I’d almost prefer my Cert’s to expire every week so I get in the swing of fixing it (just kidding).  So, I tried do a web [...]]]></description>
			<content:encoded><![CDATA[<p>This is one of those things that you do once every year or so and it is very easy to forget how to do it the next time. I’d almost prefer my Cert’s to expire every week so I get in the swing of fixing it (just kidding).</p>  <p>So, I tried do a web deploy to my <a href="http://www.microsoft.com/windowsazure/">Windows Azure</a> Instance this morning and I got a cryptic error that I blogged about here:&#160; <a title="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/3b1b6204-2a5f-4fe0-aebc-5245edf46c82" href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/3b1b6204-2a5f-4fe0-aebc-5245edf46c82">http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/3b1b6204-2a5f-4fe0-aebc-5245edf46c82</a></p>  <p>It looks something like this:</p>  <p>&#160;</p>  <div id="codeSnippetWrapper">   <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">Error 1 Web deployment task failed.(Remote agent <br />(URL https://xxx.cloudapp.net:8172/MsDeploy.axd?site=Web_IN_0_Web) could not be <br />contacted.  Make sure the remote agent service is installed and started on the target computer.)<br />Make sure the site name, user name, and password are correct. <span style="color: #0000ff">If</span> the issue is not resolved, <br />please contact your <span style="color: #0000ff">local</span> or server administrator.<br />Error details:<br />Remote agent (URL https://xxx.cloudapp.net:8172/MsDeploy.axd?site=Web_IN_0_Web)<br /> could not be contacted.  Make sure the remote agent service is <br />installed and started on the target computer.<br />An unsupported response was received. The response header 'MSDeploy.Response' was <br />'' but 'v1' was expected.<br />The remote server returned an error: (401) Unauthorized. <br />C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets 3847 5 Web<br /></pre>
</div>

<div>They key is really one word.&#160; (401) Unauthorized.&#160; The rest is just confusing.&#160; What tipped me off is that I tried to remote into the session with RDP and I got an error that says “username password expired”.</div>

<div>&#160;</div>

<div>So, here are the steps to re-up your password expiration.&#160; I got this from the post here:&#160; </div>

<div>&#160;</div>

<div><a title="http://msdn.microsoft.com/en-us/library/gg443832.aspx" href="http://msdn.microsoft.com/en-us/library/gg443832.aspx">http://msdn.microsoft.com/en-us/library/gg443832.aspx</a></div>

<div>&#160;</div>

<span id="more-1445"></span>

<div>&#160;</div>

<div>Here we go.</div>

<div>&#160;</div>

<div>First, right click on your azure project and choose publish.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb.png" width="380" height="96" /></a></div>

<div>&#160;</div>

<div>Then, choose “Configure Remote Desktop connections”.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_3.png" width="312" height="328" /></a></div>

<div>&#160;</div>

<div>From there, make sure “Enable connections for all roles” is checked, then choose the bottom choice “Create”.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_4.png" width="199" height="353" /></a></div>

<div>&#160;</div>

<div>Give your cert a new name.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_5.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_5.png" width="244" height="105" /></a></div>

<div>&#160;</div>

<div>&#160;</div>

<div>Make sure you set the expiration date far in the future.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_6.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_6.png" width="244" height="234" /></a></div>

<div>&#160;</div>

<div>Don’t press OK!!! instead, click on the “View button next to your new cert in the dialog above</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_7.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_7.png" width="196" height="244" /></a></div>

<div>&#160;</div>

<div>Select the button “CopyToFile”</div>

<div>&#160;</div>

<div>Make sure you say “Yes, export the private key in the next dialog”.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_8.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_8.png" width="244" height="162" /></a></div>

<div>&#160;</div>

<div>Take the default for the next choice.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_9.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_9.png" width="244" height="216" /></a></div>

<div>&#160;</div>

<div>Retype in your password from the dialog 4 back.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_10.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_10.png" width="244" height="214" /></a></div>

<div>&#160;</div>

<div>Finally, give it a filename where you want to export your cert.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_11.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_11.png" width="244" height="95" /></a></div>

<div>&#160;</div>

<div>Press Finish.</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_12.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_12.png" width="244" height="155" /></a></div>

<div>&#160;</div>

<div>You get rewared wih…</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_13.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_13.png" width="211" height="157" /></a></div>

<div>&#160;</div>

<div>Press OK to the next message</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_14.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_14.png" width="244" height="238" /></a></div>

<div>&#160;</div>

<div>And now, you can deploy your package!!!</div>

<div>&#160;</div>

<div>(and, don’t forget to update your certificate into your windows azure portal and delete the old one)</div>

<div>&#160;</div>

<div><a href="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_15.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/My-Windows-Azure-Web-Deploy-Stopped-Work_DA16/image_thumb_15.png" width="379" height="138" /></a></div>

<div>&#160;</div>

<div>Clear as mud, right?</div>

<div>&#160;</div>

<div>I wonder if this is so hard on mac’s.?</div>

<div>&#160;</div>

<div>&#160;</div>

<div>&#160;</div>

<div>&#160;</div>

<div></div>

<div></div>

<div></div>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/03/19/my-windows-azure-web-deploy-stopped-working-because-my-certificate-expired/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Gracefully Stop and Windows Azure Deployment From Visual Studio 2010</title>
		<link>http://peterkellner.net/2011/03/09/how-to-gracefully-stop-and-windows-azure-deployment-from-visual-studio-2010/</link>
		<comments>http://peterkellner.net/2011/03/09/how-to-gracefully-stop-and-windows-azure-deployment-from-visual-studio-2010/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 17:00:16 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Web Role]]></category>
		<category><![CDATA[VS2010]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/03/09/how-to-gracefully-stop-and-windows-azure-deployment-from-visual-studio-2010/</guid>
		<description><![CDATA[The way I do Windows Azure development is that I have OneClick Deployment setup on my Azure host.&#160; This means I can simply and quickly update what I have on my Azure WebRole and test it without going through the 10 to 20 minute deployment process.&#160; Sometimes, when I’m tired, I accidentally press the “Debug” [...]]]></description>
			<content:encoded><![CDATA[<p>The way I do <a href="http://www.microsoft.com/windowsazure/">Windows Azure</a> development is that I have <a href="http://social.technet.microsoft.com/Forums/en/windowsazuredata/thread/aedbfdd4-0092-4b10-a84f-ba816438ed54">OneClick Deployment</a> setup on my Azure host.&#160; This means I can simply and quickly update what I have on my Azure WebRole and test it without going through the 10 to 20 minute deployment process.&#160; Sometimes, when I’m tired, I accidentally press the “Debug” or “Run” button on my <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions">Visual Studio 2010</a> cloud project.&#160; This launches a 2 or 3 minute process that I have trouble killing.</p>  <p>Today, I accidentally figured out a way to stop it.&#160; Simply go to the web project and right mouse button on your project and say “Publish”. You will be immediately presented with an option to stop the deployment!</p>  <p>That’s it.&#160; Simple, but pretty undiscoverable IMHO.</p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/How-To-Gracefully-Stop-and-Windows-Azure_7C9D/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/How-To-Gracefully-Stop-and-Windows-Azure_7C9D/image_thumb.png" width="244" height="95" /></a></p>  <p>&#160;</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/How-To-Gracefully-Stop-and-Windows-Azure_7C9D/SNAGHTMLc6db08a.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLc6db08a" border="0" alt="SNAGHTMLc6db08a" src="http://peterkellner.net/FilesForWebDownload/How-To-Gracefully-Stop-and-Windows-Azure_7C9D/SNAGHTMLc6db08a_thumb.png" width="287" height="369" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/03/09/how-to-gracefully-stop-and-windows-azure-deployment-from-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting The Same Windows Azure Web Project With Two Different Configurations</title>
		<link>http://peterkellner.net/2011/03/05/hosting-the-same-windows-azure-web-project-with-two-different-configurations/</link>
		<comments>http://peterkellner.net/2011/03/05/hosting-the-same-windows-azure-web-project-with-two-different-configurations/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 18:50:22 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Deployment]]></category>
		<category><![CDATA[Azure Web Role]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/03/05/hosting-the-same-windows-azure-web-project-with-two-different-configurations/</guid>
		<description><![CDATA[The Problem  In my scenario, I have the same web project that I want to host in two different Windows Azure Data Centers (BTW, Steve Marx let me know it’s “Windows Azure” and not “Azure” at MVP Summit so I’ll try and keep my terminology right as much as I can).&#160; Each Windows Azure [...]]]></description>
			<content:encoded><![CDATA[<h2>The Problem</h2>  <p>In my scenario, I have the same web project that I want to host in two different <a href="http://www.microsoft.com/windowsazure/">Windows Azure</a> Data Centers (BTW, <a href="http://blog.smarx.com/">Steve Marx</a> let me know it’s “Windows Azure” and not “Azure” at MVP Summit so I’ll try and keep my terminology right as much as I can).&#160; Each <a href="http://www.computerworld.com/s/article/9118207/Microsoft_to_support_Windows_Azure_with_massive_data_center_investments">Windows Azure Data Center</a> has it’s own azure account (Azure Credential).&#160; It resolves to a different domain name and as part of that scenario, has different properties in the ServiceConfiguration.csfg file.</p>  <p>&#160;</p>  <span id="more-1437"></span>  <p>&#160;</p>  <h2>What Happens By Default</h2>  <p>When you create a new Azure WebRole, the wizard automatically creates a web project for you.&#160; In my case, that is fine for the first datacenter deployment, but what about the second?&#160; In this post (hopefully, as I’m blogging as I’m doing it), I will show you how to create multiple deployments of the same <a href="http://www.microsoft.com/windowsazure/compute/default.aspx">web project</a>.&#160; Below is a screen shot of what my project looks like out of the box.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb.png" width="339" height="206" /></a></p>  <p>&#160;</p>  <h2>Adding Another Web Role Pointing At Same Web Project</h2>  <p>So, here we go.</p>  <p>First, add a new cloud project / web role as follows:</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_3.png" width="340" height="155" /></a></p>  <p>&#160;</p>  <p>Add the project:</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_4.png" width="349" height="284" /></a></p>  <p>Add the Web Role</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_5.png" width="346" height="226" /></a></p>  <p>Now, associate this role with the original web project “Web” and notice that a new web site has been created by the previous step. Our plan will be to delete the one that just go created.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_6.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_6.png" width="415" height="271" /></a></p>  <p>That seems to have worked, so now let’s remove the WebRole1 project and then delete it from the directory.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_7.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_7.png" width="265" height="561" /></a></p>  <p>Now, I believe we have what we want as shown below.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Hosting-The-Same-Azure-Web-Project-With-_9409/image_thumb_8.png" width="303" height="248" /></a></p>  <p>The final thing I need to do is simply update my ServiceConfiguration and ServiceDefinition files with what I want that is specific to AzureWebRoleConnectionRoadCom.</p>  <p>My plan is to do this for all my different deployments of the same project.&#160; If things don’t continue to go swimmingly, I’ll add some notes to this post to indicate that maybe this wasn’t the best possible plan, but for now, I’m keeping my fingers crossed that this will work.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/03/05/hosting-the-same-windows-azure-web-project-with-two-different-configurations/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Another Fun Bruno Azure Meetup In San Francisco (The Windows Azure AppFabric)</title>
		<link>http://peterkellner.net/2011/01/31/bruno-azure-meetup-in-san-francisco/</link>
		<comments>http://peterkellner.net/2011/01/31/bruno-azure-meetup-in-san-francisco/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 01:49:49 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/01/31/bruno-azure-meetup-in-san-francisco/</guid>
		<description><![CDATA[Bruno Terkaly, the meeting organizer and local Microsoft Evangelist, did a great job of organizing as well as presenting.&#160; Over the holidays, Bruno built a really cool end to end lab on how to build an app (both client and server) that takes advantage of Azure’s AppFabric (the service bus).&#160; Basically, he showed the steps [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.brunoterkaly.com/">Bruno Terkaly</a>, the <a href="http://www.meetup.com/Cloud-Computing-Developers-Group/events/survey/?eventId=15909571&amp;a=cp1_l1">meeting</a> organizer and local <a href="http://www.microsoft.com/en/us/default.aspx">Microsoft</a> Evangelist, did a great job of organizing as well as presenting.&#160; Over the holidays, Bruno built a really cool end to end lab on how to build an app (both client and server) that takes advantage of Azure’s <a href="http://www.microsoft.com/windowsazure/AppFabric/Overview/default.aspx">AppFabric</a> (the service bus).&#160; Basically, he showed the steps (and demonstrated) what it takes to have to windows PC’s talk to each other over the service bus.&#160; One acts like a server to lots of clients. No firewalls, just communication!</p>  <p>As part of the meetup, <a href="http://robindotnet.wordpress.com/">Robin</a> (@robindotnet) and I both did short presentations on how to&#160; work <a href="http://www.microsoft.com/en-us/sqlazure/default.aspx">SqlAzure</a>, basically based around the problem of Azure (by design) dropping connections.&#160; Robin talked about her real world experiences, and I talked about a method for how to deal with the problem elegantly in ado.net.&#160; I did a blog post explaining what I presented here:&#160; <a title="http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/" href="http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/">http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/</a></p>  <p>Of course ,what would a meet up be without pictures.&#160; Feel free to add comments to the post about <a href="http://neverindoubtnet.blogspot.com/">Ward Bell</a> and the others.</p>  <p>&#160;</p> <a href="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0838.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DSC_0838" border="0" alt="DSC_0838" src="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0838_thumb.jpg" width="244" height="163" /></a><a href="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0839.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DSC_0839" border="0" alt="DSC_0839" src="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0839_thumb.jpg" width="244" height="163" /></a><a href="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0836.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DSC_0836" border="0" alt="DSC_0836" src="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0836_thumb.jpg" width="244" height="163" /></a><a href="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0837.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DSC_0837" border="0" alt="DSC_0837" src="http://peterkellner.net/FilesForWebDownload/Another-Fun-Bruno-Azure-Meetup-In-San-Fr_F881/DSC_0837_thumb.jpg" width="244" height="163" /></a>  <p>That’s it for now!&#160; Looking forward to the next Bruno Meetup</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/01/31/bruno-azure-meetup-in-san-francisco/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SqlAzure and a Best Practices way to deal with the Required Retries on Connections</title>
		<link>http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/</link>
		<comments>http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 22:24:44 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[ASP.NET 4.0]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Connection]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[SqlAzure]]></category>
		<category><![CDATA[Web.Config]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/</guid>
		<description><![CDATA[Introduction  If you’ve started using SqlAzure for your SqlServer with your Azure application, you’ve probably discovered that you get a reasonable number of connection failures.&#160; The advice from the Azure team is add retry logic to all your connections to SqlAzure. There is a long discussion posted by the Azure team here.  The [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>  <p>If you’ve started using <a href="http://msdn.microsoft.com/en-us/library/ee336279.aspx">SqlAzure</a> for your <a href="http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx">SqlServer</a> with your Azure application, you’ve probably discovered that you get a reasonable number of <a href="http://msdn.microsoft.com/en-us/library/aa175395(v=sql.80).aspx">connection</a> failures.&#160; The advice from the Azure team is add retry logic to all your connections to SqlAzure. There is a long discussion posted by the Azure team <a href="http://blogs.msdn.com/b/bartr/archive/2010/06/18/sql-azure-connection-retry.aspx?utm_source=feedburner&amp;utm_medium=twitter&amp;utm_campaign=Feed%3A+Microsoft%2FMSDN-Blogs+(MSDN+Blogs)">here</a>.</p>  <p>The key paragraph states the problem as follows:</p>  <blockquote>   <p><strong>The Problem       <br /></strong>One of the things that SQL Azure does to deliver high availability is it sometimes closes <a href="http://msdn.microsoft.com/en-us/library/ee336245.aspx">connections</a>. SQL Azure does some pretty cool stuff under the covers to minimize the impact, but this is a key difference in SQL Azure development vs. SQL Server development.</p> </blockquote>  <p>Basically, what this means is that you must be able to deal with connections failing when you call SqlAzure.&#160; Something that all of probably should have been doing forever, but because most of the time SqlServer is running on your local LAN and the likelihood if a connection failing was next to zero unless something else was going terribly wrong.&#160; Certainly not something we had to do on regular basis.&#160; To emphasize that even more, most of the controls built into asp.net that open connections to sqlserver don’t even do this and that’s from Microsoft itself.</p>  <p>The solution proposed in the thread mentioned above basically has you add tons of code to everyplace you access a connection object.&#160; Personally, I don’t like that because I have hundreds if not thousands of places I open connections and inserting tens of thousands of lines of extra new untested code is a little scary.</p>  <p>So, what to do?</p>  <p>Fortunately, another team at Microsoft, known as the <a href="http://blogs.msdn.com/b/appfabriccat">Windows Server AppFabric Customer Advisory Team</a> published a general purpose solution using Extension Methods and some darn clever coding wrote a <a href="http://blogs.msdn.com/b/appfabriccat/archive/2010/12/11/sql-azure-and-entity-framework-connection-fault-handling.aspx">great article and published code</a> including <a href="http://blogs.msdn.com/b/appfabriccat/archive/2010/10/28/best-practices-for-handling-transient-conditions-in-sql-azure-client-applications.aspx">azure examples</a> that solves this problem very elegantly without requiring a lot of changes to your existing code base.</p>  <p>In this article I plan on giving an example and publishing a sample project that uses this code with SqlAzure to solve the connection retry problem.&#160; My goal here is not to simply restate what they published but to simply have a very simple concrete example of using their library.</p>  <span id="more-1429"></span>  <h2>Design Goal</h2>  <p>We have two goals.</p>  <ol>   <li>     <div align="left">Change as little code as possible</div>   </li>    <li>     <div align="left">Log Connection Errors when they happen With Locations</div>   </li>    <li>     <div align="left">Make sure not to trap errors that are NOT connection related such as bad column names</div>   </li> </ol>  <p align="left">&#160;</p>  <h2 align="left">Incorrect Code</h2>  <p align="left">So, this is what the original code looks like that will fail because it does not have connection retry logic:</p>  <p align="left">&#160;</p>  <div id="codeSnippetWrapper">   <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> UsersIdFromUserNameNoConnectionRetry(<span style="color: #0000ff">string</span> userName)<br />{<br />    var retUsersId = 0;<br />    <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> sql =<br />        <span style="color: #006080">@&quot;SELECT Id FROM Users<br />            WHERE Username = @Username&quot;</span>;<br /><br />    <span style="color: #0000ff">using</span> (var sqlConnection = <span style="color: #0000ff">new</span> SqlConnection(<br />            ConfigurationManager.ConnectionStrings[<span style="color: #006080">&quot;CRStorageWebConnectionString&quot;</span>].<br />            ConnectionString))<br />    {<br />        sqlConnection.Open();<br />        <span style="color: #0000ff">using</span> (var sqlCommand = <span style="color: #0000ff">new</span> SqlCommand(sql, sqlConnection))<br />        {<br />            sqlCommand.Parameters.Add(<span style="color: #006080">&quot;@Username&quot;</span>, SqlDbType.NVarChar).Value = userName;<br />            <span style="color: #0000ff">using</span> (var reader = sqlCommand.ExecuteReader())<br />            {<br />                <span style="color: #0000ff">while</span> (reader.Read())<br />                {<br />                    retUsersId = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);<br />                }<br />            }<br />        }<br />    }<br />    <span style="color: #0000ff">return</span> retUsersId;<br />}</pre>

  <br /></div>

<p align="left">So, if there is a connection, an exception will get thrown and will need to be caught, but then the method will not have done it’s job.</p>

<p align="left">&#160;</p>

<h2 align="left">Correct Code With Retries</h2>

<p align="left">So, now take a look at the revised code after the library is setup and used.&#160; The setup is non-trivial, but you just have to do that once and then you can simply fix all your other code with very few changes.&#160; Below is the new code with connection retry logic built in.</p>

<p align="left">&#160;</p>

<div id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> UsersIdFromUserName(<span style="color: #0000ff">string</span> userName)<br />{<br />    var retUsersId = 0;<br />    <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> sql =<br />        <span style="color: #006080">@&quot;SELECT Id FROM Users<br />            WHERE Username = @Username&quot;</span>;<br /><br />    <span style="color: #0000ff">using</span> (var sqlConnection =<br />        <span style="color: #0000ff">new</span> ReliableSqlConnection(<br />            ConfigurationManager.ConnectionStrings[<span style="color: #006080">&quot;CRStorageWebConnectionString&quot;</span>].<br />            ConnectionString,<br />            <span style="color: #0000ff">new</span> RetryUtils(<span style="color: #006080">&quot;&quot;</span>, <span style="color: #006080">&quot;UsersIdFromUserName&quot;</span>).GetRetryPolicy()))<br />    {<br />        sqlConnection.Open();<br />        <span style="color: #0000ff">using</span> (var sqlCommand = <span style="color: #0000ff">new</span> SqlCommand(sql, sqlConnection.Current))<br />        {<br />            sqlCommand.Parameters.Add(<span style="color: #006080">&quot;@Username&quot;</span>, SqlDbType.NVarChar).Value = userName;<br />            <span style="color: #0000ff">using</span> (var reader = sqlCommand.ExecuteReader())<br />            {<br />                <span style="color: #0000ff">while</span> (reader.Read())<br />                {<br />                    retUsersId = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);<br />                }<br />            }<br />        }<br />    }<br />    <span style="color: #0000ff">return</span> retUsersId;<br />}</pre>
</div>

<div>&#160;</div>

<div>There are basically two changes.&#160; </div>

<div>&#160;</div>

<ol>
  <li>The first is instead of create an SqlConnection(…) we are creating a ReliableSqlConnection(…).&#160; The ReliableSqlConnection takes an extra parameter which basically wraps the retry logic used, as well as labelling this connection so when it fails, it gets logged.&#160; In the log, there will be the comment “UsersIdFromUserName” so we know what method threw the retry.</li>

  <li>The second is slight change we when we create the SqlCommand, we have to add the property .Current to it so we know we are talking about the currently executing connection.&#160; There may be a default way to handle this but I could not figure it out.</li>
</ol>

<div>That’s it!&#160; you are new connection safe for retrying failed connections.</div>

<div>&#160;</div>

<h2>The Setup Pieces</h2>

<div>&#160;</div>

<div>First, download the library from the article mention above which can be found here in <a href="http://code.msdn.microsoft.com/">Microsoft’s Code Gallery</a></div>

<div>&#160;</div>

<div><a title="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=appfabriccat&amp;DownloadId=14007" href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=appfabriccat&amp;DownloadId=14007">http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=appfabriccat&amp;DownloadId=14007</a></div>

<div>&#160;</div>

<p>The project has all kinds of stuff in it that build quite nicely, run and test under vs2010.&#160; All I’m interested in is the ado.net piece and the retry logic around that.&#160; I actually used the 1.2 version, however I now see there is a 1.3 version with some improvements.&#160; I would post my project but I don’t want to post it with old code so I’ll just tell you the steps I went through so you can do the same.</p>

<h3>Build the class library</h3>

<p>Compile the project and make sure you have the dll from the library lincluded in your actual visual studio project.&#160; The library you want is Microsoft.AppFabricCAT.Samples.Azure.TransientFaultHandling.</p>

<p>&#160;</p>

<p><a href="http://peterkellner.net/FilesForWebDownload/SqlAzure-and-a-Best-Practices-way-to-dea_E1CC/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/SqlAzure-and-a-Best-Practices-way-to-dea_E1CC/image_thumb.png" width="347" height="243" /></a></p>

<p>&#160;</p>

<h3>Update Your Web.config</h3>

<p>Add the config section below to your web.config file.</p>

<div id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">&lt;</span><span style="color: #800000">configSections</span><span style="color: #0000ff">&gt;</span><br />    <span style="color: #0000ff">&lt;</span><span style="color: #800000">section</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;RetryPolicyConfiguration&quot;</span> <br />         <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;Microsoft.AppFabricCAT.Samples.Azure.TransientFaultHandling.Configuration.RetryPolicyConfigurationSettings,<br />            Microsoft.AppFabricCAT.Samples.Azure.TransientFaultHandling&quot;</span> <span style="color: #0000ff">/&gt;</span><br /><span style="color: #0000ff">&lt;/</span><span style="color: #800000">configSections</span><span style="color: #0000ff">&gt;</span><br /><br /><span style="color: #0000ff">&lt;</span><span style="color: #800000">RetryPolicyConfiguration</span> <span style="color: #ff0000">defaultPolicy</span><span style="color: #0000ff">=&quot;FixedIntervalDefault&quot;</span> <span style="color: #ff0000">defaultSqlConnectionPolicy</span><span style="color: #0000ff">=&quot;FixedIntervalDefault&quot;</span> <br />         <span style="color: #ff0000">defaultSqlCommandPolicy</span><span style="color: #0000ff">=&quot;FixedIntervalDefault&quot;</span> <span style="color: #ff0000">defaultStoragePolicy</span><span style="color: #0000ff">=&quot;IncrementalIntervalDefault&quot;</span> <br />         <span style="color: #ff0000">defaultCommunicationPolicy</span><span style="color: #0000ff">=&quot;IncrementalIntervalDefault&quot;</span><span style="color: #0000ff">&gt;</span><br />    <span style="color: #0000ff">&lt;</span><span style="color: #800000">add</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;FixedIntervalDefault&quot;</span> <span style="color: #ff0000">maxRetryCount</span><span style="color: #0000ff">=&quot;10&quot;</span> <span style="color: #ff0000">retryInterval</span><span style="color: #0000ff">=&quot;100&quot;</span> <span style="color: #0000ff">/&gt;</span><br />    <span style="color: #0000ff">&lt;</span><span style="color: #800000">add</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;IncrementalIntervalDefault&quot;</span> <span style="color: #ff0000">maxRetryCount</span><span style="color: #0000ff">=&quot;10&quot;</span> <span style="color: #ff0000">retryInterval</span><span style="color: #0000ff">=&quot;100&quot;</span> <span style="color: #ff0000">retryIncrement</span><span style="color: #0000ff">=&quot;50&quot;</span> <span style="color: #0000ff">/&gt;</span><br />    <span style="color: #0000ff">&lt;</span><span style="color: #800000">add</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;ExponentialIntervalDefault&quot;</span> <span style="color: #ff0000">maxRetryCount</span><span style="color: #0000ff">=&quot;10&quot;</span> <span style="color: #ff0000">minBackoff</span><span style="color: #0000ff">=&quot;100&quot;</span> <span style="color: #ff0000">maxBackoff</span><span style="color: #0000ff">=&quot;1000&quot;</span> <span style="color: #ff0000">deltaBackoff</span><span style="color: #0000ff">=&quot;100&quot;</span> <span style="color: #0000ff">/&gt;</span><br /><span style="color: #0000ff">&lt;/</span><span style="color: #800000">RetryPolicyConfiguration</span><span style="color: #0000ff">&gt;</span></pre>

  <br /></div>

<p>This defines a new section in your web.config, then implements it with several different retry policies include a default one which seems quite reasonable to me.</p>

<p>If you remember, in the implementation section above, we used a public class called RetryUtils.&#160; This class is actually one I invented as a convenience class to minimize the code I have to update on each use of the ReliableConnection Object.&#160; Just to refresh your memory, the implementation is this:</p>

<div id="codeSnippetWrapper">
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">using</span> (var sqlConnection =<br />                <span style="color: #0000ff">new</span> ReliableSqlConnection(<br />                    ConfigurationManager.ConnectionStrings[<span style="color: #006080">&quot;CRStorageWebConnectionString&quot;</span>].<br />                    ConnectionString,<br />                    <span style="color: #0000ff">new</span> RetryUtils(<span style="color: #006080">&quot;&quot;</span>, <span style="color: #006080">&quot;UsersIdFromUserName&quot;</span>).GetRetryPolicy()))</pre>

  <br /></div>

<p>The actual code fo rthe class RetryUtils is below here.&#160; You’ll have to stick this someplace in your project.</p>

<div>
  <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">namespace</span> Utils<br />{<br />   <br />    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> RetryUtils<br />    {<br />        <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> Username { get; set; }<br />        <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> CallersName { get; set; }<br /><br />        <span style="color: #0000ff">public</span> RetryUtils(<span style="color: #0000ff">string</span> username, <span style="color: #0000ff">string</span> callersName)<br />        {<br />            Username = username;<br />            CallersName = callersName;<br />        }<br /><br />        <span style="color: #0000ff">public</span> RetryUtils()<br />        {<br />            Username = <span style="color: #0000ff">string</span>.Empty;<br />            CallersName = <span style="color: #0000ff">string</span>.Empty;<br />        }<br /><br />        <span style="color: #0000ff">public</span> RetryPolicy&lt;SqlAzureTransientErrorDetectionStrategy&gt; GetRetryPolicy()<br />        {<br />            var retryPolicy = <span style="color: #0000ff">new</span> RetryPolicy&lt;SqlAzureTransientErrorDetectionStrategy&gt;<br />                 (RetryPolicy.DefaultClientRetryCount, RetryPolicy.DefaultMinBackoff,<br />                  RetryPolicy.DefaultMaxBackoff,<br />                  RetryPolicy.DefaultClientBackoff);<br /><br />            retryPolicy.RetryOccurred += RetryPolicyRetryOccurred;<br /><br />            <span style="color: #0000ff">return</span> retryPolicy;<br />        }<br /><br />        <span style="color: #0000ff">void</span> RetryPolicyRetryOccurred(<span style="color: #0000ff">int</span> currentRetryCount, Exception lastException, TimeSpan delay)<br />        {<br />            GeneralUtils.GetLog4NetAllDataContext().AddLog4NetAll(<span style="color: #0000ff">new</span> Log4NetAll<br />                                                    {<br />                                                        Date = DateTime.UtcNow,<br />                                                        EllapsedTime = 0,<br />                                                        ExceptionStackTrace = lastException.StackTrace,<br />                                                        Message = <span style="color: #006080">&quot;RetryCount: &quot;</span> + currentRetryCount + <span style="color: #006080">&quot; delay: &quot;</span> + delay.Seconds,<br />                                                        ExceptionMessage = lastException.Message,<br />                                                        Logger = <span style="color: #006080">&quot;&quot;</span>,<br />                                                        Level = <span style="color: #006080">&quot;Error&quot;</span>,<br />                                                        UserName = Username,<br />                                                        PartitionKey = Username,<br />                                                        RowKey = Guid.NewGuid().ToString()<br />                                                    });<br />        }       <br />    }<br />}<br /></pre>
</div>

<div>This code actually has the nice callback delegate that does the logging when a retry actually occurs.&#160; I’m not including my implementation of GeneralUtils.GetLog4NetAllDataContext().AddLog4NetAll, but you can pretty much guess what it does.&#160; It simply logs the retry with all the details of what happened.&#160; My implementation sticks this in an Azure Table, but that’s really for another post.</div>

<div>&#160;</div>

<h2>Non Connection Related Errors</h2>

<div>&#160;</div>

<div>Remember, our second design criteria is that we should only fail on errors that are connection related and not things like data column not found.&#160; With no additional work, this library takes care of this for us.&#160; Actually, in the release notes for the 1.3 release (which I have not used yet) say they have improved that feature by adding additional codes not to fail on.&#160; That is, the last thing you want is your code spending 5 minutes retrying on a problem you’d just like reported immediately. </div>

<div>&#160;</div>

<div>Keep in mind that the library we are using here is a general purpose retry library not designed just for use with ado.net.&#160; The team has provided us with examples using LINQ2SQL, EntityFramework and other technologies.&#160; I spent&#160; a little time reading about using those other technologies but did not get far enough to blog about it.&#160; My current SqlAzure implementation uses 100% ado.net because performance is critical to me and neither EF or LINQ2SQL are quite up to my task yet.</div>

<div>&#160;</div>

<h2>Conclusions</h2>

<div>&#160;</div>

<div>So basically, that’s it!&#160; You know have the tools to implement very nice retry logic in your ado.net code so Azure will not fail on “normal” connection failures.&#160; I suggest that if you are using SqlAzure, you implement this as soon as possible so your code will be solid going forward.</div>

<div>&#160;</div>

<div>Thanks for reading!</div>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2011/01/21/sqlazure-connection-retry-problem-using-best-practices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;Programming Windows Azure&#8221; By Sriram Krishnan / O&#8217;Reilly Book Review</title>
		<link>http://peterkellner.net/2010/12/21/programming-windows-azure-by-sriram-krishnan-book-review/</link>
		<comments>http://peterkellner.net/2010/12/21/programming-windows-azure-by-sriram-krishnan-book-review/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 17:43:20 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[Azure Table Storage]]></category>
		<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/12/21/programming-windows-azure-by-sriram-krishnan-book-review/</guid>
		<description><![CDATA[I’ve been slowly building up my Azure experience over the past few months and actually plan to release a product using Azure during the next month or two.&#160; Programming Windows Azure has been a huge value to me in learning both the basics of the Azure platform as well as the details.&#160; It has a [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been slowly building up my <a href="http://www.microsoft.com/windowsazure/">Azure</a> experience over the past few months and actually plan to release a product using Azure during the next month or two.&#160; Programming Windows Azure has been a huge value to me in learning both the basics of the <a href="http://www.microsoft.com/windowsazure/">Azure</a> platform as well as the details.&#160; It has a great balance of theory verses practice.&#160; I strongly recommend this book if you are new to Azure or even if you have experience with Azure.&#160; I often find myself going back and re-reading sections to better understand things.</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:7dc1bd33-94bd-46fd-a20b-0131235bcd47:ec3f43d6-d26f-4aaa-8d47-6c2f98ce99fc" class="wlWriterEditableSmartContent"><table cellspacing="0" cellpadding="2" width="400" border="0" unselectable="on">
<tbody><tr>
<td valign="top" width="400">
<p><a title="Programming Windows Azure eBook: Sriram Krishnan: Kindle Store" href="http://www.amazon.com/exec/obidos/ASIN/B0043M58U8/petkelsblo-20"><img src="http://images.amazon.com/images/P/B0043M58U8.01.MZZZZZZZ.jpg" border="0" align="left" style="float:left">Programming Windows Azure eBook: Sriram Krishnan: Kindle Store</a><br /><br /></p>
</td></tr></tbody></table></div>  <p>&#160;</p>  <p>Two of the sections I feel are particularly well written or the ones that talk about <a href="http://msdn.microsoft.com/en-us/library/dd179355.aspx">Storage and Tables</a> (chapters 7 and 8).&#160; The application I’ve been working on heavily uses blob storage and I spend lots of times re-reading those sections.&#160; Azure tables is a hard topic to get a <a href="http://www.microsoft.com/sqlserver/en/us/default.aspx">sql server</a> programmer like me to get my head wrapped around.&#160; Sriram does a great job of talking directly to someone like me to help me understand how and when to use tables.</p>  <p>Again, I whole heartedly recommend this book.</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/12/21/programming-windows-azure-by-sriram-krishnan-book-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using Cloud Storage Studio From Cerebrata Software For Azure Storage Viewing</title>
		<link>http://peterkellner.net/2010/11/21/using-cloud-storage-studio-from-cerebrata-software-for-azure-storage-viewing/</link>
		<comments>http://peterkellner.net/2010/11/21/using-cloud-storage-studio-from-cerebrata-software-for-azure-storage-viewing/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 18:13:44 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[Cerebrata]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/11/21/using-cloud-storage-studio-from-cerebrata-software-for-azure-storage-viewing/</guid>
		<description><![CDATA[Just a quick shout out to the makers of Cloud Storage Studio Cerebrate Software.&#160;&#160; Thanks for a great product offering!&#160; I’ve been doing quite a bit of work recently with Microsoft Windows Azure Blob Storage and have really appreciated the insight into that storage Cloud Studio gives me.&#160; I had been using another product to [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick shout out to the makers of <a href="http://www.cerebrata.com/?r=CSSV2010.11.09.00">Cloud Storage Studio Cerebrate Software</a>.&#160;&#160; Thanks for a great product offering!&#160; I’ve been doing quite a bit of work recently with <a href="http://www.microsoft.com/windowsazure/windowsazure/">Microsoft Windows Azure</a> <a href="http://msdn.microsoft.com/en-us/library/dd135733.aspx">Blob Storage</a> and have really appreciated the insight into that storage Cloud Studio gives me.&#160; I had been using another product to do the same thing which I had though was easier and faster, but after just a couple hours of working with Cloud Studio, I’m finding I’ve really been missing out.&#160; </p>  <p>I’m attaching a screen shot below which shows viewing what is actually in the storage (not a hierarchical false view) as well as a display of all the meta data.&#160; Either of those two features are show starters for me and enough to switch.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Using-Cloud-Storage-Studio-From-Cerebrat_8E98/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Using-Cloud-Storage-Studio-From-Cerebrat_8E98/image_thumb.png" width="493" height="464" /></a></p>  <p>If you have not used it, give it&#160; try (and have some patience, it takes a little bit of practice to find the true value).</p>  <p>Good luck!</p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/11/21/using-cloud-storage-studio-from-cerebrata-software-for-azure-storage-viewing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Simple Azure Blob Tree Viewer With Azure StorageClient API</title>
		<link>http://peterkellner.net/2010/11/12/azure-storage-treeviewer-directory-browser/</link>
		<comments>http://peterkellner.net/2010/11/12/azure-storage-treeviewer-directory-browser/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 01:36:30 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[StorageClient]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/11/12/azure-storage-treeviewer-directory-browser/</guid>
		<description><![CDATA[Understanding how Azure Blob Storage can be used to simulate directory structures is a little tricky to say the least.&#160; I’ve got a long forum thread on the Windows Azure Community site&#160; now discussing the details.&#160; As always, Steve Marx has been a big help here with a bunch of code. Steve’s got a great [...]]]></description>
			<content:encoded><![CDATA[<p>Understanding how <a href="http://msdn.microsoft.com/en-us/windowsazure/cc974146.aspx">Azure</a> <a href="http://www.microsoft.com/windowsazure/storage/default.aspx">Blob Storage</a> can be used to simulate directory structures is a little tricky to say the least.&#160; I’ve got a long <a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/256cfc0f-bccc-4bf7-b7eb-cb7c7aca0c8a">forum thread</a> on the Windows Azure Community site&#160; now discussing the details.&#160; As always, <a href="http://blog.smarx.com/">Steve Marx</a> has been a big help here with a bunch of code. Steve’s got a great blog where he provides lots of examples and insights.&#160; Neil Mackenzie has also contributed here to getting to the answer.</p>  <p>Just so we now have an example, I’ve put together a simple windows form app that let’s you set a few variables in your app.config to point at your azure storage and container, let you view your app as a tree as well as see the code how it can be done.&#160; I have not commented the code much, just thought it would be good to get it out there.&#160; The running application shows you the data as follows.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/image_thumb.png" width="341" height="254" /></a></p>  <span id="more-1410"></span>  <p>So, for the details, I’m pasting below the meet of the code.&#160; Basically, it does what you would expect in terms of iterating through the directories recursively to build the list.&#160; Again, just set your parameters in your app.config as follows:</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/image_3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/image_thumb_3.png" width="281" height="115" /></a></p>  <p>and you can run it for yourself and see how it goes.</p>  <p>I’m pasting some code below, as well as including the project source code.&#160; The main reason I’m pasting the code is so that the search engines can find it better.&#160; It’s really just easier to download the project and load it into <a href="http://www.microsoft.com/visualstudio/en-us/visual-studio-2010-launch?WT.mc_id=SEARCH&amp;WT.srch=1">Visual Studio 2010</a> and run it yourself.</p>  <p>&#160;</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:40251c5f-e5d4-447d-80ca-5c6ba51b4cef" class="wlWriterEditableSmartContent"><p><div>Visual Studio 2010   <a href="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/AzureBlobTreeViewer_3.zip" target="_self">AzureBlobTreeViewer.zip</a></div></p></div>  <p>&#160;</p>  <p>Good Luck, and hope this helps!</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:6a0a0214-7d94-482e-9b3f-436063c63866" class="wlWriterEditableSmartContent"><p><div>Visual Studio 2010   <a href="http://peterkellner.net/FilesForWebDownload/Building-a-Simple-Azure-Blob-Tree-Viewer_F37A/AzureBlobTreeViewer.zip" target="_self">AzureBlobTreeViewer.zip</a></div></p></div>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/11/12/azure-storage-treeviewer-directory-browser/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Is My Azure Blob Storage Container Name Valid?</title>
		<link>http://peterkellner.net/2010/10/15/is-my-azure-blog-storage-container-name-valid/</link>
		<comments>http://peterkellner.net/2010/10/15/is-my-azure-blog-storage-container-name-valid/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 00:09:56 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/10/15/is-my-azure-blog-storage-container-name-valid/</guid>
		<description><![CDATA[I just spend about 2 hours wrestling with what turned out to be an invalid blob storage container name.&#160; I named a container “MyTest1” which did not meet the criteria.&#160; For your information, the criteria is as follows:     3 to 63 Characters    Starts With Letter or Number  [...]]]></description>
			<content:encoded><![CDATA[<p>I just spend about 2 hours wrestling with what turned out to be an invalid blob storage container name.&#160; I named a container “MyTest1” which did not meet the criteria.&#160; For your information, the criteria is as follows:</p>  <ol>   <li>3 to 63 Characters<b></b></li>    <li>Starts With Letter or Number<b></b></li>    <li>Letters, Numbers, and Dash (-)<b></b></li>    <li>Every Dash (-) Must Be Immediately Preceded and Followed by a Letter or Number</li> </ol>  <p>So, I decided to hunt for a regular expression to do this and I found one on the web. I’m not sure if it’s correct, but here is what I found at <a title="http://social.msdn.microsoft.com/Forums/en-GB/windowsazuredata/thread/d364761b-6d9d-4c15-8353-46c6719a3392" href="http://social.msdn.microsoft.com/Forums/en-GB/windowsazuredata/thread/d364761b-6d9d-4c15-8353-46c6719a3392">http://social.msdn.microsoft.com/Forums/en-GB/windowsazuredata/thread/d364761b-6d9d-4c15-8353-46c6719a3392</a> from Gaurav Mantri (method that includes the regex).</p>  <p>&#160;</p>  <div id="codeSnippetWrapper">   <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><span style="color: #0000ff">internal</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">bool</span> IsBlobContainerNameValid(<span style="color: #0000ff">string</span> name)<br />    {<br />      <span style="color: #0000ff">if</span> (name.Equals(<span style="color: #006080">&quot;$root&quot;</span>))<br />      { <br />        <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span>; <br />      }<br />      <span style="color: #0000ff">string</span> validBlobContainerNameRegex = <span style="color: #006080">@&quot;^([a-z]|\d){1}([a-z]|-|\d){1,61}([a-z]|\d){1}$&quot;</span>;<br />      Regex reg = <span style="color: #0000ff">new</span> Regex(validBlobContainerNameRegex);<br />      <span style="color: #0000ff">if</span> (reg.IsMatch(name))<br />      {<br />        <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span>;<br />      }<br />      <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;<br />    }<br /></pre>

  <br /></div>
Hope this helps!

]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/10/15/is-my-azure-blog-storage-container-name-valid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To View Your Blob Storage in Windows Azure</title>
		<link>http://peterkellner.net/2010/09/02/viewing-azure-blog-storage-in-visual-studio-2010/</link>
		<comments>http://peterkellner.net/2010/09/02/viewing-azure-blog-storage-in-visual-studio-2010/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 13:20:35 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure Blob Storage]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/09/02/viewing-azure-blog-storage-in-visual-studio-2010/</guid>
		<description><![CDATA[I’m just starting to use Windows Azure for a project and plan on using the Azure Blob Storage part.&#160; I won’t go into the details here, but let’s say I figured it out far enough so that I have pushed some piles of data into the blog storage.&#160;&#160; Now, I want to see them.&#160; I [...]]]></description>
			<content:encoded><![CDATA[<p>I’m just starting to use Windows Azure for a project and plan on using the <a href="http://msdn.microsoft.com/en-us/library/dd135733.aspx">Azure Blob Storage</a> part.&#160; I won’t go into the details here, but let’s say I figured it out far enough so that I have pushed some piles of data into the blog storage.&#160;&#160; Now, I want to see them.&#160; I assumed that from the Azure portal, there would be some interface where I could see what I actual did and am being billed from.&#160; I posted to the forums and basically was told that’s not really the case.&#160; Here is the post with the answer saying you need some other software to do it (details below).</p>  <p>My friend <a href="http://robindotnet.wordpress.com/">RobinDotNet</a> suggested I look at his <a href="http://blogs.msdn.com/b/jnak/archive/2010/06/10/windows-azure-storage-browser-in-the-visual-studio-server-explorer.aspx">article</a> about how to use Visual Studio 2010 to view the blob storage.&#160; Sure enough, in VS, I can set my account and key in server explorer and see the blob storage!&#160; Thanks Robin.</p>  <p><a href="http://peterkellner.net/FilesForWebDownload/HowToViewYourBlobStorageinWindowsAzure_5925/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://peterkellner.net/FilesForWebDownload/HowToViewYourBlobStorageinWindowsAzure_5925/image_thumb.png" width="283" height="232" /></a> </p> <span id="more-1360"></span>  <p>&#160;</p>  <p><a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/eb624e14-9f89-4846-89d5-d17d78c6c87f/">Link to Thread with details below:</a></p>  <p><em>Reply:</em></p>  <p><em>The billing portal will give you a fairly detailed report on your storage consumption (it&#8217;s about 4 hours behind realtime). You can get to this from the Azure portal (should be near the upper-right by your Live ID). This won&#8217;t give you per-container breakdowns or anything that detailed though.</em></p>  <p><em>This Azure Storage Team </em><a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx"><em>blog post</em></a><em> gives a fairly detailed breakdown of how consumption is computed. Knowing this, you could create a more detailed storage consumption report than the billing report by enumerating your containers, then enumerating each blob within the containers and reading each blob&#8217;s size (via CloudBlob.Properties.Length).</em></p>  <p><em>There&#8217;s nothing I know of that will give you a bandwidth breakdown for each container. For that, you&#8217;d need to create some sort of service tier, where you could then retrieve the blob in question and accumulate your own stats within that service tier.</em></p>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/09/02/viewing-azure-blog-storage-in-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft Windows Azure Platform Book Review, Now Available! (Windows Azure Platform by Tejaswi Redkar)</title>
		<link>http://peterkellner.net/2010/01/11/azure-book-review-redkar/</link>
		<comments>http://peterkellner.net/2010/01/11/azure-book-review-redkar/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 16:09:57 +0000</pubDate>
		<dc:creator>Peter Kellner</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[Cloud Computing]]></category>

		<guid isPermaLink="false">http://peterkellner.net/2010/01/11/azure-book-review-redkar/</guid>
		<description><![CDATA[For those of you that have been sleeping for the past year, Cloud computing is Hot!&#160; Amazon more or less lead the way with their cloud computing platforms for the longest time with new comers like GoGrid, Google and Microsoft coming along with their own offerings more recently.&#160; The offerings are quite complex, both licensing, [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you that have been sleeping for the past year, Cloud computing is Hot!&#160; Amazon more or less lead the way with their cloud computing platforms for the longest time with new comers like GoGrid, Google and Microsoft coming along with their own offerings more recently.&#160; The offerings are quite complex, both licensing, capabilities, costs etc.&#160; One of the nice things about this book (among others) is it gives detailed discussions in the beginning of several different offerings as well as their licensing models (which do change often so check directly with the companies).</p>  <p>On to the review..</p> <span id="more-401"></span>  <p>As I mentioned above, The book starts out with a very general discussion of what is cloud computing.&#160; Currently, the cloud is a pretty over used word and it’s important to understand what is meant by it.&#160; Things like “Application as Service”, “Cloud Storage”, etc. are all important to understand when talking about the cloud.</p>  <p>Following that, the book dives into the details of Azure (and there are a lot of details).&#160; It goes into great details (and specifics) on Azure Blob Storage, Azure Queues, Azure Tables, AppFabric (formerly Velocity), Azure Service Bus, and also discusses deployment issues.</p>  <p>I do recommend this book.&#160; I believe it will help if you want to get into the cloud using Microsoft’s offerings.</p>  <p>&#160;</p>  <table border="0" cellspacing="0" cellpadding="0"><tbody>     <tr>       <td><img src="http://ecx.images-amazon.com/images/I/51Ho%2B3C8X1L._SL75_.jpg" /> </td>        <td valign="top"><a href="http://www.amazon.com/Windows-Azure-Platform-Tejaswi-Redkar/dp/1430224797%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Dpetkelsblo-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1430224797">Windows Azure Platform (Pro)</a> </td>     </tr>   </tbody></table>]]></content:encoded>
			<wfw:commentRss>http://peterkellner.net/2010/01/11/azure-book-review-redkar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 4/11 queries in 0.002 seconds using disk

Served from: peterkellner.net @ 2012-02-08 20:11:25 -->
