<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Wade Wegner</title>
	
	<link>http://www.wadewegner.com</link>
	<description>From the whiteboard to the keyboard</description>
	<lastBuildDate>Mon, 26 Jul 2010 16:44:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WadeWegner" /><feedburner:info uri="wadewegner" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.610431</geo:lat><geo:long>-104.881399</geo:long><feedburner:emailServiceId>WadeWegner</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/WadeWegner" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FWadeWegner" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item>
		<title>Using the default SQL Server instance for Windows Azure development storage</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/jtk6BDLDOrE/</link>
		<comments>http://www.wadewegner.com/2010/07/using-the-default-sql-server-instance-for-windows-azure-development-storage/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 18:46:35 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/07/using-the-default-sql-server-instance-for-windows-azure-development-storage/</guid>
		<description><![CDATA[This tip isn’t new, but it’s still useful.&#160; I found myself building a new development box this week, and I didn’t want to use SQLExpress for the Windows Azure development storage.&#160; Instead, I wanted to use the default instance for SQL Server. It’s pretty simple to do this – after you install the Windows Azure [...]]]></description>
			<content:encoded><![CDATA[<p>This tip isn’t new, but it’s still useful.&#160; I found myself building a new development box this week, and I didn’t want to use SQLExpress for the Windows Azure development storage.&#160; Instead, I wanted to use the default instance for SQL Server.</p>
<p>It’s pretty simple to do this – after you install the Windows Azure SDK and Tools, go to a command prompt and browse to the following folder: <font face="Courier New">C:\Program Files\Windows Azure SDK\v1.2\bin\devstore </font>(or wherever you installed the SDK).&#160; From there, use the DSInit.exe tool:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 10px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; 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">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; 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">DSInit.exe /sqlInstance:.</pre>
</div>
</div>
<p>Remember that the . is a reference to the default instance.&#160; If you want to target an instance name, you can use:<br />
  </p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 10px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; 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">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; 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">DSInit.exe /sqlInstance:YourInstanceName</pre>
</div>
</div>
<p>Now you’ll see that</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DevelopmentStorageDb20090919" border="0" alt="DevelopmentStorageDb20090919" src="http://www.wadewegner.com/wp-content/uploads/2010/07/image2.png" width="273" height="192" /> </p>
<p>Note: this tip is also helpful for when you get the error message “Failed to create database ‘DevelopmentStorageDb20090919’” during the automatic configuration of Windows Azure development storage.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=jtk6BDLDOrE:dNBjuKf76P0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=jtk6BDLDOrE:dNBjuKf76P0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=jtk6BDLDOrE:dNBjuKf76P0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=jtk6BDLDOrE:dNBjuKf76P0:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/jtk6BDLDOrE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/07/using-the-default-sql-server-instance-for-windows-azure-development-storage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/07/using-the-default-sql-server-instance-for-windows-azure-development-storage/</feedburner:origLink></item>
		<item>
		<title>How would you describe the Windows Azure AppFabric?</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/8F1nhZKfHss/</link>
		<comments>http://www.wadewegner.com/2010/07/how-would-you-describe-the-windows-azure-appfabric/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 03:57:47 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Windows Azure AppFabric]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/07/how-would-you-describe-the-windows-azure-appfabric/</guid>
		<description><![CDATA[I was reading through the FAQ document for the Windows Azure platform this evening (what else is there to do on a Sunday night?), and I came across the following: What is the Windows Azure AppFabric? With AppFabric, Microsoft is delivering services that enable developers to build and manage composite applications more easily for both [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/windowsazure/appfabric/"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.wadewegner.com/wp-content/uploads/2010/07/image.png" width="240" height="68" /></a> I was reading through the <a href="http://www.microsoft.com/windowsazure/faq/" target="_blank">FAQ document for the Windows Azure platform</a> this evening (what else is there to do on a Sunday night?), and I came across the following:</p>
<blockquote><p><strong>What is the Windows Azure AppFabric?</strong></p>
<p>With AppFabric, Microsoft is delivering services that enable developers to build and manage composite applications more easily for both server and cloud environments. Windows Azure AppFabric, formerly called “.NET Services”, provides cloud-based services that help developers connect applications and services across Windows Azure, Windows Server and a number of other platforms. Today, it includes Service Bus and Access Control capabilities. Windows Server AppFabric includes caching capabilities and workflow and service management capabilities for applications that run on-premises.</p>
<p>Windows Azure AppFabric is built on Windows Azure, and provides secure connectivity and access control for customers with the need to integrate cloud services with on-premises systems, to perform business-to-business integration or to connect to remote devices.</p>
<p>The Service Bus enables secure connectivity between services and applications across firewall or network boundaries, using a variety of communication patterns. The Access Control Service provides federated, claims-based access control for REST web services. Developers can use these services to build distributed or composite applications and services.</p>
</blockquote>
<p>I’ve spent a lot of time with the AppFabric, and believe I understand the intent of the above description.&#160; But what about the rest of you?&#160; If you have, or even if you haven’t, spent time using the AppFabric, how does this description resonate?&#160; Does this help you understand the AppFabric, or are you left confused?&#160; Do you understand it’s place and value in the larger Windows Azure platform?</p>
<p>I implore you to leave some feedback and let me know what you think.&#160; Please, share your thoughts!&#160; How can this be improved?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=8F1nhZKfHss:gWCLoPvnNa8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=8F1nhZKfHss:gWCLoPvnNa8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=8F1nhZKfHss:gWCLoPvnNa8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=8F1nhZKfHss:gWCLoPvnNa8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/8F1nhZKfHss" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/07/how-would-you-describe-the-windows-azure-appfabric/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/07/how-would-you-describe-the-windows-azure-appfabric/</feedburner:origLink></item>
		<item>
		<title>My First Week as a Technical Evangelist</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/i3Kq8Gxb_mM/</link>
		<comments>http://www.wadewegner.com/2010/07/my-first-week-as-a-technical-evangelist/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 01:11:55 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[AppFabric]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/07/my-first-week-as-a-technical-evangelist/</guid>
		<description><![CDATA[I definitely luck out when it comes to the first day on the job.&#160; My first day as an Architect Evangelist was at a team offsite in Las Vegas.&#160; This time around, as a Technical Evangelist, my team hosted a Windows Azure platform Software Design Review (SDR) for customers up in Redmond.&#160; A SDR is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/07/deplogo2.png"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="Developer and Platform Evangelism" border="0" alt="Developer and Platform Evangelism" align="right" src="http://www.wadewegner.com/wp-content/uploads/2010/07/deplogo2_thumb.png" width="192" height="46" /></a> I definitely luck out when it comes to the first day on the job.&#160; My <a href="http://blog.wadewegner.com/2008/02/my-new-job-architect-evangelist-for-microsoft/" target="_blank">first day as an Architect Evangelist</a> was at a team offsite in Las Vegas.&#160; This time around, as a Technical Evangelist, my team hosted a <a href="http://www.microsoft.com/windowsazure/" target="_blank">Windows Azure platform</a> Software Design Review (SDR) for customers up in Redmond.&#160; A SDR is an opportunity for customers to join product teams and review current and future states of the technology.&#160; Lots of energy and great conversations.</p>
<p>In addition to the SDR, I was able to move into my new office and spend time meeting with folks from the <a href="http://www.microsoft.com/windowsazure/appfabric/" target="_blank">Windows Azure AppFabric</a> product team – very exciting!</p>
<p>I thought I might capture some thoughts and impressions from the week:</p>
<ul>
<li>I love riding my bicycle to the Microsoft campus.&#160; The <a href="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=NE+90th+St&amp;daddr=157th+Ave+NE&amp;hl=en&amp;geocode=FY6S1wIdAmi4-A%3BFbrx1gIdTm-4-A&amp;mra=ls&amp;dirflg=b&amp;sll=47.643244,-122.131877&amp;sspn=0.021541,0.043559&amp;ie=UTF8&amp;z=14&amp;lci=bike" target="_blank">Sammamish River Trail and 520 Trail</a> are wonderful for cycling.</li>
<li>There’s an energy on campus.&#160; I can feel it.&#160; It’s intoxicating.</li>
<li>SDRs are great.&#160; It’s awesome to listen to customers that are actively building solutions on the Windows Azure platform and providing feedback to make it even better. </li>
<li>I am super excited about new capabilities and features coming with the Windows Azure platform, especially the AppFabric.</li>
<li>It’s great to have guys like <a href="http://vasters.com/clemensv/" target="_blank">Clemens Vasters</a> and <a href="http://blogs.msdn.com/b/justinjsmith/" target="_blank">Justin Smith</a> just down the street.</li>
<li>I have amazing teammates, and I’m humbled to work with them: <a href="http://dunnry.com/blog/" target="_blank">Ryan Dunn</a>, <a href="http://blogs.msdn.com/b/vbertocci/" target="_blank">Vittorio Bertocci</a>, and <a href="http://english.zachskylesowens.net/" target="_blank">Zack Owens</a>.</li>
<li>The Technology Evangelist role is empowering.&#160; Lots of responsibilities and opportunities to execute.</li>
<li>I’m tickled to have an office for the first time in my career.</li>
</ul>
<p>While moving itself (including the sale of our house) isn’t the most fun, so far it’s been worth it.&#160; So much great stuff coming, and I get to be right on the edge.&#160; Be sure to follow all the announcements next week at the <a href="http://digitalwpc.com/" target="_blank">Worldwide Partner Conference</a>!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=i3Kq8Gxb_mM:vMRwBTTcRAI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=i3Kq8Gxb_mM:vMRwBTTcRAI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=i3Kq8Gxb_mM:vMRwBTTcRAI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=i3Kq8Gxb_mM:vMRwBTTcRAI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/i3Kq8Gxb_mM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/07/my-first-week-as-a-technical-evangelist/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/07/my-first-week-as-a-technical-evangelist/</feedburner:origLink></item>
		<item>
		<title>Real-World Patterns for Cloud Computing at TechEd NA 2010</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/lDKMKIkjzcY/</link>
		<comments>http://www.wadewegner.com/2010/06/real-world-patterns-for-cloud-computing-at-teched-na-2010/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 04:14:44 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/06/real-world-patterns-for-cloud-computing-at-teched-na-2010/</guid>
		<description><![CDATA[It was an amazing TechEd NA 2010, and I admit that it took me a few days to recover.&#160; Between the heat and humidity, great times with friends, and good food, I managed to spend a bit of time at the conference. I had the pleasure of co-presenting with Jerome Schulist, a solutions architect at [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://northamerica.msteched.com/" target="_blank"><img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://www.wadewegner.com/wp-content/uploads/2010/06/image.png" width="222" height="132" /></a> It was an amazing <a href="http://northamerica.msteched.com/" target="_blank">TechEd NA 2010</a>, and I admit that it took me a few days to recover.&#160; Between the heat and humidity, great times with friends, and good food, I managed to spend a bit of time at the conference.</p>
<p>I had the pleasure of co-presenting with Jerome Schulist, a solutions architect at the <a href="http://www.tribune.com/" target="_blank">Tribune Company</a>.&#160; Jerome is one of the architects that engineered the solution that has allowed the Tribune Company to store and process terabytes of data on the Windows Azure platform.&#160; This solution involves a number of really interesting scenarios, including:</p>
<ul>
<li>Parallelized upload of terabytes of digital content into Windows Azure blob storage using .NET Framework 4.0 </li>
<li>Best practices for uploading a massive amount of content </li>
<li>Scaling strategy for Windows Azure blob storage through multiple storage accounts and a “round robin” pattern </li>
<li>Content reprocessing with Windows Azure worker roles </li>
<li>Automatic scale-out and scale-back of worker roles through queue lengths </li>
</ul>
<p>For detailed information on this solution, you can take a look at the <a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000007519" target="_blank">Tribune Company’s Windows Azure case study</a> or you can watch our TechEd NA 2010 presentation here:</p>
<p><object style="border:1px solid" class="player" width="645" height="365" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"><param value="http://www.msteched.com/ClientBin/players/VideoPlayer2009_03_27.xap" name="source" /><param value="m=http://ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/wmv/ARC304.wmv,thumbnail=http://www.msteched.com/Skins/TechEdOnline/Styles/images/DefaultPlayerBackground.png,autohide=true,showembed=true" name="initParams" /><param value="#00000000" name="background" /><param name="minRuntimeVersion" value="3.0.50106.0" /><param name="windowless" value="true" /><param name="enableGPUAcceleration" value="true" /><param name="autoUpgrade" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=3.0.50106.0" style="text-decoration:none"> 	  <img src="http://www.msteched.com/Skins/TechEdOnline/Styles/images/NoSilverlight.jpg" alt="Get Microsoft Silverlight" style="border-style:none" />   </a> </object></p>
<p>As promised in the session, you can find the final code built during the session below.&#160; Just remember to update the config files with your own credentials.</p>
<p> <iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-952ba2b9cf071aa0.office.live.com/embedicon.aspx/.Public/TechEd2010Final.zip" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=lDKMKIkjzcY:qEg3-gp_sdQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=lDKMKIkjzcY:qEg3-gp_sdQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=lDKMKIkjzcY:qEg3-gp_sdQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=lDKMKIkjzcY:qEg3-gp_sdQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/lDKMKIkjzcY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/06/real-world-patterns-for-cloud-computing-at-teched-na-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>

		<feedburner:origLink>http://www.wadewegner.com/2010/06/real-world-patterns-for-cloud-computing-at-teched-na-2010/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/WadeWegner/~5/AMi6eKC62LE/ARC304.wmv" length="81779031" type="video/asf" /><feedburner:origEnclosureLink>http://ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/wmv/ARC304.wmv</feedburner:origEnclosureLink></item>
		<item>
		<title>Host WCF Services in IIS with Service Bus Endpoints</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/6tKyYsY3f1c/</link>
		<comments>http://www.wadewegner.com/2010/05/host-wcf-services-in-iis-with-service-bus-endpoints/#comments</comments>
		<pubDate>Wed, 12 May 2010 03:56:48 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Azure AppFabric]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Service Bus]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/05/host-wcf-services-in-iis-with-service-bus-endpoints/</guid>
		<description><![CDATA[Vishal Chowdhary, a Senior Test Lead on the Azure AppFabric team, recently posted a whitepaper on hosting WCF services with Service Bus endpoints from IIS.&#160; This whitepaper provides two solutions to a (previously) significant challenge in hosting WCF services in IIS that connect to the Azure AppFabric Service Bus. The primary challenge is activation. As [...]]]></description>
			<content:encoded><![CDATA[<p>Vishal Chowdhary, a Senior Test Lead on the Azure AppFabric team, recently posted a whitepaper on <a href="http://code.msdn.microsoft.com/ServiceBusDublinIIS" target="_blank">hosting WCF services with Service Bus endpoints from IIS</a>.&#160; This whitepaper provides two solutions to a (previously) significant challenge in hosting WCF services in IIS that connect to the Azure AppFabric Service Bus.</p>
<p>The primary challenge is activation. As Vishal writes, “For the on-premise WCF service to start receiving messages from the Service Bus in the cloud (aka Relay Service), the on-premises service opens an outbound port and creates a bidirectional socket for communication.&#160; It connects to the Service Bus, authenticates itself, and starts listening to calls from the relay service before the client sends its requests.”&#160; He goes on to say that “IIS/WAS relies on message-based activation &amp; will launch the host only after the first request comes in.”&#160; Consequently, <b>until the first message is received by IIS the service will never establish a connection to the Service Bus</b>; with no connection to the Service Bus, <b>it will never receive a message</b>.&#160; A bit of a dilemma.</p>
<p>In the whitepaper, Vishal points out two ways to resolve this challenge:</p>
<ul type="square">
<li>IIS Application Warm-Up </li>
<li>ASP.NET 4.0 Auto-Start </li>
</ul>
<p>In this post, I’m going to highlight exactly how to go about using <strong>IIS Application Warm-Up to get a WCF service hosted in IIS 7.5 to receive messages from the Service Bus</strong>.&#160; This post borrows heavily from Visha&#8217;s whitepaper; I strongly suggest you spend the time to read the entire paper.</p>
<ol>
<li>If you’re using .NET 4.0, you must <a href="http://blog.wadewegner.com/2010/05/net-framework-4-0-and-the-azure-appfabric-sdk/" target="_blank">setup .NET 4.0 to work with the Azure AppFabric SDK</a>. </li>
<li>Create a new ASP.NET Web Application project called <strong>EchoSample</strong> in Visual Studio 2010 using .NET 4.0. </li>
<li>To validate this approach, we want this project hosted in IIS.&#160; Right-click the project and choose Properties.&#160; Select the Web tab, and switch from <b>Use Visual Studio Development Server</b> to <b>Use Local IIS Web server</b> and click <b>Create Virtual Directory.</b></li>
<li>Add the Microsoft.ServiceBus reference from the “C:\%Program Files%\Windows Azure platform AppFabric SDK\V1.0\Assemblies\” folder. </li>
<li>You have to create a custom BehaviorExtensionElement for the ServiceRegistrySettings to make the discoverability policy ‘Public’ in the configuration file.&#160; Consequently, we need to create a class that we’ll call MyServiceRegistrySettingsElement that inherits the BehaviorExtensionElement. </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><spanstyle="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MyServiceRegistrySettingsElement : BehaviorExtensionElement
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">{
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> Type BehaviorType
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> <span style="color: #0000ff">typeof</span>(ServiceRegistrySettings); }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">protected</span> <span style="color: #0000ff">override</span> <span style="color: #0000ff">object</span> CreateBehavior()
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> ServiceRegistrySettings() {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">           DiscoveryMode = <span style="color: #0000ff">this</span>.DiscoveryMode,
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">           DisplayName = <span style="color: #0000ff">this</span>.DisplayName };
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    [ConfigurationProperty(&quot;<span style="color: #8b0000">discoveryMode</span>&quot;, DefaultValue = DiscoveryType.Private)]
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> DiscoveryType DiscoveryMode
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> (DiscoveryType)<span style="color: #0000ff">this</span>[&quot;<span style="color: #8b0000">discoveryMode</span>&quot;]; }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">set</span> { <span style="color: #0000ff">this</span>[&quot;<span style="color: #8b0000">discoveryMode</span>&quot;] = <span style="color: #0000ff">value</span>; }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    [ConfigurationProperty(&quot;<span style="color: #8b0000">displayName</span>&quot;)]
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> DisplayName
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> (<span style="color: #0000ff">string</span>)<span style="color: #0000ff">this</span>[&quot;<span style="color: #8b0000">displayName</span>&quot;]; }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">set</span> { <span style="color: #0000ff">this</span>[&quot;<span style="color: #8b0000">displayName</span>&quot;] = <span style="color: #0000ff">value</span>; }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">}</span></pre>
<ol start=6>
<li>Now, let’s add a new WCF Service called <strong>EchoService</strong> to the project.&#160; Remove the existing method in the ServiceContract and create the following GetData method in the IEchoService.cs file. </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><spanstyle="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">[OperationContract]
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">string</span> GetData(<span style="color: #0000ff">int</span> <span style="color: #0000ff">value</span>);</span></pre>
<ol start=7>
<li>Also, update the EchoService.svc.cs with the implementation of the GetData method. </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><spanstyle="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> GetData(<span style="color: #0000ff">int</span> <span style="color: #0000ff">value</span>)
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">{
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">value</span> &lt; 0)
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> ApplicationException(&quot;<span style="color: #8b0000">Negative values not allowed!!!</span>&quot;);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    Thread.Sleep(<span style="color: #0000ff">value</span>);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">return</span> <span style="color: #0000ff">string</span>.Format(&quot;<span style="color: #8b0000">You entered: {0}</span>&quot;, <span style="color: #0000ff">value</span>);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">}</span></pre>
<ol start=8>
<li>Now we need to update the web.config settings.&#160; This is fairly extensive. Be sure and replace YOUR_NAMESPACE, YOUR_ISSUER_NAME, and YOUR_ISSUER_SECRET with your own values.</li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><spanstyle="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">system.serviceModel</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">extensions</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">behaviorExtensions</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">add</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;ServiceRegistrySettings&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #ff0000">type</span>=<span style="color: #0000ff">&quot;EchoSample.MyServiceRegistrySettingsElement, EchoSample,
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">behaviorExtensions</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">extensions</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">services</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">clear</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">service</span> <span style="color: #ff0000">behaviorConfiguration</span>=<span style="color: #0000ff">&quot;MyServiceTypeBehavior&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">             <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;EchoSample.EchoService&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">endpoint</span> <span style="color: #ff0000">address</span>=<span style="color: #0000ff">&quot;http://localhost/EchoSample/EchoService.svc/LocalEchoService&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">binding</span>=<span style="color: #0000ff">&quot;basicHttpBinding&quot;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">bindingConfiguration</span>=<span style="color: #0000ff">&quot;BasicHttpConfig&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;Basic&quot;</span> <span style="color: #ff0000">contract</span>=<span style="color: #0000ff">&quot;EchoSample.IEchoService&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">endpoint</span> <span style="color: #ff0000">address</span>=<span style="color: #0000ff">&quot;https://YOUR_NAMESPACE.servicebus.windows.net/EchoServiceHttp/&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">behaviorConfiguration</span>=<span style="color: #0000ff">&quot;sharedSecretClientCredentials&quot;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">binding</span>=<span style="color: #0000ff">&quot;basicHttpRelayBinding&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">bindingConfiguration</span>=<span style="color: #0000ff">&quot;HttpRelayEndpointConfig&quot;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;RelayEndpoint&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">contract</span>=<span style="color: #0000ff">&quot;EchoSample.IEchoService&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">endpoint</span> <span style="color: #ff0000">address</span>=<span style="color: #0000ff">&quot;sb://YOUR_NAMESPACE.servicebus.windows.net/EchoServiceNetTcp/&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">behaviorConfiguration</span>=<span style="color: #0000ff">&quot;sharedSecretClientCredentials&quot;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">binding</span>=<span style="color: #0000ff">&quot;netTcpRelayBinding&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">bindingConfiguration</span>=<span style="color: #0000ff">&quot;NetTcpRelayEndpointConfig&quot;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;RelayEndpoint&quot;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #ff0000">contract</span>=<span style="color: #0000ff">&quot;EchoSample.IEchoService&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">service</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">services</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">bindings</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">basicHttpBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">binding</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;BasicHttpConfig&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">basicHttpBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #008000">&lt;!--service bus binding--&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">basicHttpRelayBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">binding</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;HttpRelayEndpointConfig&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">security</span> <span style="color: #ff0000">relayClientAuthenticationType</span>=<span style="color: #0000ff">&quot;RelayAccessToken&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">binding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">basicHttpRelayBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">netTcpRelayBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">binding</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;NetTcpRelayEndpointConfig&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">security</span> <span style="color: #ff0000">relayClientAuthenticationType</span>=<span style="color: #0000ff">&quot;RelayAccessToken&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">binding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">netTcpRelayBinding</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">bindings</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">behaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">endpointBehaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">behavior</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;sharedSecretClientCredentials&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">transportClientEndpointBehavior</span> <span style="color: #ff0000">credentialType</span>=<span style="color: #0000ff">&quot;SharedSecret&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">clientCredentials</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">&lt;</span><span style="color: #800000">sharedSecret</span> <span style="color: #ff0000">issuerName</span>=<span style="color: #0000ff">&quot;YOUR_ISSUER_NAME&quot;</span> <span style="color: #ff0000">issuerSecret</span>=<span style="color: #0000ff">&quot;YOUR_ISSUER_SECRET&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">          <span style="color: #0000ff">&lt;/</span><span style="color: #800000">clientCredentials</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;/</span><span style="color: #800000">transportClientEndpointBehavior</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">ServiceRegistrySettings</span> <span style="color: #ff0000">discoveryMode</span>=<span style="color: #0000ff">&quot;Public&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">behavior</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">endpointBehaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">serviceBehaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">behavior</span> <span style="color: #ff0000">name</span>=<span style="color: #0000ff">&quot;MyServiceTypeBehavior&quot;</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">serviceMetadata</span> <span style="color: #ff0000">httpGetEnabled</span>=<span style="color: #0000ff">&quot;true&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">serviceDebug</span> <span style="color: #ff0000">includeExceptionDetailInFaults</span>=<span style="color: #0000ff">&quot;true&quot;</span> <span style="color: #0000ff">/&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">behavior</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">serviceBehaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">behaviors</span><span style="color: #0000ff">&gt;</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">system.serviceModel</span><span style="color: #0000ff">&gt;</span></span></pre>
<p>At this point, once you compile and build the solution, the service will not automatically connect to the Service Bus; this is because IIS/WAS waits until the first service call to activate.&#160; Consequently, if you load the WCF service in the browser it will activate the service and establish a connection to the Service Bus (you can confirm by checking <a title="https://acsint.servicebus.windows.net/" href="https://YOUR_NAMESPACE.servicebus.windows.net/">https://YOUR_NAMESPACE.servicebus.windows.net/</a>).&#160; So, we’re close, but not yet there.</p>
<p>To get the service to automatically establish the connection to the Service Bus, we’ll use the <b>Application Warm-Up</b> extension for IIS 7.5.</p>
<ol>
<li>Download and install the <a href="http://www.iis.net/download/applicationwarmup" target="_blank">Application Warm-Up extension for IIS 7.5</a>.&#160; This gives us the ability to proactively load and initialize processes before the first request arrives.&#160; In addition to improving responsiveness it also gives us the ability to connect our WCF service to the Azure AppFabric Service Bus. </li>
<li>In IIS, select your virtual application EchoSample.&#160; Double-click the <strong>Application Warm-Up </strong>feature, and click <strong>Settings</strong>.&#160; Check the <strong>Start Application Pool ‘ASP.NET v4.0’ when service started</strong> checkbox. </li>
</ol>
<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/05/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Application Warm-Up settings" border="0" alt="Application Warm-Up settings" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image_thumb.png" width="350" height="317" /></a> </p>
<ol start=3>
<li>Add a new request to register EchoService.svc as a warm-up request for the application.&#160; Right-click and choose <strong>Add Request</strong>.&#160; Enter EchoService.svc, and click OK.&#160; You should now see it in the Request URL list. </li>
</ol>
<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/05/image3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Application Warm-Up add request" border="0" alt="Application Warm-Up add request" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image3_thumb.png" width="350" height="312" /></a> </p>
<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/05/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Application Warm-Up" border="0" alt="Application Warm-Up" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image6_thumb.png" width="457" height="133" /></a> </p>
<p>And that’s it!&#160; The service is now automatically started and “warmed up” by IIS.&#160; To test, recycle the Application Pool and restart the web site.&#160; Then, hit your Service Bus endpoint and confirm that you’re services are running.</p>
<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/05/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Publicly Listed Services" border="0" alt="Publicly Listed Services" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image_thumb1.png" width="640" height="409" /></a> </p>
<p>Now, even if we restart the computer, the WCF service will reestablish the connection to the Service Bus because IIS 7.5, through the Application Warm-Up Extensions, will automatically refresh.</p>
<p>Now, to complete the test, let’s build a quick Console application to connect to the WCF service via the Service Bus.</p>
<ol>
<li>Create a new Console Application project called Client. </li>
<li>Add a reference to the Microsoft.ServiceBus and System.ServiceModel. </li>
<li>Add a link to the IEchoService.cs file in the EchoSample project.&#160; Right-click the project, choose Add Existing, and change Add to Add as Link. </li>
</ol>
<p><a href="http://www.wadewegner.com/wp-content/uploads/2010/05/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Add Existing Item - Add As Link" border="0" alt="Add Existing Item - Add As Link" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image_thumb2.png" width="562" height="480" /></a>&#160;</p>
<ol start=4>
<li>Update the Program.cs file with the following code.&#160; Be sure and replace YOUR_NAMESPACE, YOUR_ISSUER_NAME, and YOUR_ISSUER_SECRET with your own values. </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><spanstyle="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">class</span> Program
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">{
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> Main(<span style="color: #0000ff">string</span>[] args)
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// Determine the system connectivity mode based on the command line</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// arguments: -http, -tcp or -auto  (defaults to auto)</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        ServiceBusEnvironment.SystemConnectivity.Mode = GetConnectivityMode(args);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> serviceNamespace = &quot;<span style="color: #8b0000">YOUR_NAMESPACE</span>&quot;;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> issuerName = &quot;<span style="color: #8b0000">YOUR_ISSUER_NAME</span>&quot;;
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> issuerSecret = &quot;<span style="color: #8b0000">YOUR_ISSUER_SECRET</span>&quot;;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// create the service URI based on the service namespace</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        Uri serviceUri = ServiceBusEnvironment.CreateServiceUri(&quot;<span style="color: #8b0000">sb</span>&quot;,
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            serviceNamespace, &quot;<span style="color: #8b0000">EchoServiceNetTcp</span>&quot;);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">//Uri serviceUri = ServiceBusEnvironment.CreateServiceUri(</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">//    &quot;https&quot;, serviceNamespace, &quot;EchoServiceHttp&quot;);</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// create the credentials object for the endpoint</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        TransportClientEndpointBehavior sharedSecretServiceBusCredential =
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">new</span> TransportClientEndpointBehavior();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        sharedSecretServiceBusCredential.CredentialType =
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            TransportClientCredentialType.SharedSecret;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerName =
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            issuerName;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        sharedSecretServiceBusCredential.Credentials.SharedSecret.IssuerSecret =
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            issuerSecret;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// create the channel factory loading the configuration</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">//BasicHttpRelayBinding myBinding = new BasicHttpRelayBinding();</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        NetTcpRelayBinding myBinding = <span style="color: #0000ff">new</span> NetTcpRelayBinding();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        EndpointAddress myEndpoint = <span style="color: #0000ff">new</span> EndpointAddress(serviceUri);
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        ChannelFactory&lt;IEchoService&gt; channelFactory =
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">new</span> ChannelFactory&lt;IEchoService&gt;(myBinding, myEndpoint);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// apply the Service Bus credentials</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        channelFactory.Endpoint.Behaviors.Add(sharedSecretServiceBusCredential);
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">// create and open the client channel</span>
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        IEchoService channel = channelFactory.CreateChannel();
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        Console.WriteLine(&quot;<span style="color: #8b0000">Enter text to echo (or [Enter] to exit):</span>&quot;);
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> input = Console.ReadLine();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">while</span> (input != String.Empty)
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">try</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                Console.WriteLine(&quot;<span style="color: #8b0000">Server echoed: {0}</span>&quot;,
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                    channel.GetData(Int32.Parse(input)));
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">catch</span> (Exception e)
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                Console.WriteLine(&quot;<span style="color: #8b0000">Error: </span>&quot; + e.Message);
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            input = Console.ReadLine();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">if</span> (((IClientChannel)channel).State != CommunicationState.Faulted)
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            ((IClientChannel)channel).Close();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">else</span>
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            ((IClientChannel)channel).Abort();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        channelFactory.Close();
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">static</span> ConnectivityMode GetConnectivityMode(<span style="color: #0000ff">string</span>[] args)
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">foreach</span> (<span style="color: #0000ff">string</span> arg <span style="color: #0000ff">in</span> args)
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">if</span> (arg.Equals(&quot;<span style="color: #8b0000">/auto</span>&quot;, StringComparison.InvariantCultureIgnoreCase) ||
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                    arg.Equals(&quot;<span style="color: #8b0000">-auto</span>&quot;, StringComparison.InvariantCultureIgnoreCase))
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #0000ff">return</span> ConnectivityMode.AutoDetect;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (arg.Equals(&quot;<span style="color: #8b0000">/tcp</span>&quot;, StringComparison.InvariantCultureIgnoreCase) ||
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                    arg.Equals(&quot;<span style="color: #8b0000">-tcp</span>&quot;, StringComparison.InvariantCultureIgnoreCase))
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            {
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #0000ff">return</span> ConnectivityMode.Tcp;
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span> (arg.Equals(&quot;<span style="color: #8b0000">/http</span>&quot;, StringComparison.InvariantCultureIgnoreCase) ||
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                    arg.Equals(&quot;<span style="color: #8b0000">-http</span>&quot;, StringComparison.InvariantCultureIgnoreCase))
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            {
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                <span style="color: #0000ff">return</span> ConnectivityMode.Http;
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            }
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">return</span> ConnectivityMode.AutoDetect;
</span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }
</span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">}</span></pre>
<p>When you run the console application, it will connect to your WCF service through the Service Bus.&#160; Run it to validate.  You can also uncomment some of the code to use BasicHttpRelayBinding instead of NetTcpRelayBinding to try out a different configuration.</p>
<p>The ability to host a WCF service in IIS that exposes itself on the Service Bus is a significant milestone.&#160; This opens up a number of fantastic opportunities and scenarios that otherwise would have been extremely difficult to accomplish.</p>
<p>I’ll show the second scenario – using ASP.NET 4.0 Auto-Start – in a future post.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=6tKyYsY3f1c:OBSJSkm-ljs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=6tKyYsY3f1c:OBSJSkm-ljs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=6tKyYsY3f1c:OBSJSkm-ljs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=6tKyYsY3f1c:OBSJSkm-ljs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/6tKyYsY3f1c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/host-wcf-services-in-iis-with-service-bus-endpoints/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/host-wcf-services-in-iis-with-service-bus-endpoints/</feedburner:origLink></item>
		<item>
		<title>Using the .NET Framework 4.0 with the Azure AppFabric SDK</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/DBRzdV1sX6M/</link>
		<comments>http://www.wadewegner.com/2010/05/net-framework-4-0-and-the-azure-appfabric-sdk/#comments</comments>
		<pubDate>Tue, 11 May 2010 21:01:41 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[Azure AppFabric]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/05/net-framework-4-0-and-the-azure-appfabric-sdk/</guid>
		<description><![CDATA[The other day I attempted to build a sample application that communicated with the Azure AppFabric Service Bus by creating a Console application targeting the .NET Framework 4.0.&#160; After adding a reference to Microsoft.ServiceBus I was bewildered to see that my Service Bus bindings in the system.ServiceModel section were not recognized. I soon realized that [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I attempted to build a sample application that communicated with the <a href="http://www.microsoft.com/windowsazure/appfabric/" target="_blank">Azure AppFabric</a> Service Bus by creating a Console application targeting the .NET Framework 4.0.&#160; After adding a reference to <font face="Courier New"><strong>Microsoft.ServiceBus</strong></font> I was bewildered to see that my Service Bus bindings in the <font face="Courier New"><strong>system.ServiceModel</strong></font> section were not recognized.</p>
<p>I soon realized that the issue was the machine.config file.&#160; When you install the Azure AppFabric SDK the relevant WCF extensions are added to the .NET Framework 2.0 machine.config file, which is shared by .NET Framework 3.0 and 3.5.&#160; However, .NET Framework 4.0 has its own machine.config file, and the SDK will not update the WCF extensions.</p>
<p>Fortunately, there’s an easy solution to this issue: use the CLR’s <font face="Courier New"><strong>requiredRuntime</strong></font> feature.</p>
<ol>
<li>Create a configuration file named <strong>RelayConfigurationInstaller.exe.config</strong> in the “C:\%Program Files%\Windows Azure platform AppFabric SDK\V1.0\Assemblies\” folder with the following code: </li>
</ol>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;?</span>xml version =&quot;1.0&quot;<span style="color: #0000ff">?&gt;</span></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">configuration</span><span style="color: #0000ff">&gt;</span></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">startup</span><span style="color: #0000ff">&gt;</span></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">requiredRuntime</span> <span style="color: #ff0000">safemode</span>=<span style="color: #0000ff">&quot;true&quot;</span></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">       <span style="color: #ff0000">imageVersion</span>=<span style="color: #0000ff">&quot;v4.0.30319&quot;</span></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">       <span style="color: #ff0000">version</span>=<span style="color: #0000ff">&quot;v4.0.30319&quot;</span><span style="color: #0000ff">/&gt;</span></span><span style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  <span style="color: #0000ff">&lt;/</span><span style="color: #800000">startup</span><span style="color: #0000ff">&gt;</span></span><span style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">configuration</span><span style="color: #0000ff">&gt;</span></span></pre>
<ol start="2">
<li>Open up an elevated Visual Studio 2010 Command Prompt, browse to the directory, and run: <font face="Courier New"><strong>RelayConfigurationInstaller.exe/ i</strong></font> </li>
</ol>
<p>Your .NET Framework 4.0 machine.config file will now have the required configuration settings for the Service Bus bindings.&#160; Thanks to Vishal Chowdhary for the insight!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=DBRzdV1sX6M:d5AVNxgpVMk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=DBRzdV1sX6M:d5AVNxgpVMk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=DBRzdV1sX6M:d5AVNxgpVMk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=DBRzdV1sX6M:d5AVNxgpVMk:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/DBRzdV1sX6M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/net-framework-4-0-and-the-azure-appfabric-sdk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/net-framework-4-0-and-the-azure-appfabric-sdk/</feedburner:origLink></item>
		<item>
		<title>Release the hounds – Multicasting with Azure AppFabric</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/aMGrdCorb4I/</link>
		<comments>http://www.wadewegner.com/2010/05/release-the-hounds-multicasting-with-azure-appfabric/#comments</comments>
		<pubDate>Fri, 07 May 2010 05:17:53 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure AppFabric]]></category>
		<category><![CDATA[NetEventRelayBinding]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/05/release-the-hounds-multicasting-with-azure-appfabric/</guid>
		<description><![CDATA[On an email thread today, someone was looking for suggestions on how to start a job simultaneously across multiple worker roles running in Windows Azure.&#160; For example, image you have ten worker roles already running and, through the command of an admin or user, you want to “release the hounds!” Definitely an interesting scenario, and [...]]]></description>
			<content:encoded><![CDATA[<p>On an email thread today, someone was looking for suggestions on how to start a job simultaneously across multiple worker roles running in Windows Azure.&#160; For example, image you have ten worker roles already running and, through the command of an admin or user, you want to “release the hounds!”</p>
<p>Definitely an interesting scenario, and many different ways to approach it.&#160; Initial ideas and thoughts centered around using Windows Azure storage tables or blobs – in fact, <a href="http://blog.smarx.com/" target="_blank">Steve Marx</a> quickly threw out some <strike>pseudo</strike> code highlighting a reasonable way to approach the problem:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 15px 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; 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">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; 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"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">while</span> (blob.DownloadText() != “RELEASE THE HOUNDS!”)</pre>
<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"><span style="color: #606060" id="lnum2">   2:</span>     Thread.Sleep(TimeSpan.FromSeconds(1));</pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; 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"><span style="color: #606060" id="lnum3">   3:</span> // do the actual work</pre>
</div>
</div>
<p>Then to release:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; background-color: #f4f4f4; margin: 15px 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; border-right-style: none; background-color: #f4f4f4; 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">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; border-right-style: none; background-color: white; 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"><span style="color: #606060" id="lnum1">   1:</span> blob.UploadText(“RELEASE THE HOUNDS!”);</pre>
</div>
</div>
<p>You could definitely take this approach and have success.</p>
<p>Of course, to me this scenario screamed multicasting with <a href="http://msdn.microsoft.com/en-us/library/microsoft.servicebus.neteventrelaybinding.aspx" target="_blank"><em>NetEventRelayBinding</em></a>.</p>
<p><em>NetEventRelayBinding</em> supports multiple listeners on the same URI, which means that you can have 1 or 1000 worker roles in Windows Azure all listening to the same URI – this gives you the ability to push out events to all listeners, as any message sent by a client gets distributed to all the listeners.</p>
<p>Clemens Vasters <a href="http://vasters.com/clemensv/PermaLink,guid,92d78bee-2cfd-4a29-95ab-c5abb9b905e7.aspx" target="_blank">sums <em>NetEventRelayBinding</em> it up nicely on his blog</a>:</p>
<blockquote>
<p>The <em>NetEventRelayBinding</em> doesn&#8217;t have an exact counterpart in the standard bindings. This binding provides access to the multicast publish/subscribe capability in the Relay. Using this binding, clients act as event publishers and listeners act as subscribers. An event-topic is represented by an agreed-upon name in the naming system. There can be any number of publishers and any number of subscribers that use the respective named rendezvous point in the Relay. Listeners can subscribe independent of whether a publisher currently maintains an open connection and publishers can publish messages irrespective of how many listeners are currently active – including zero. The result is a very easy to use lightweight one-way publish/subscribe event distribution mechanism that doesn&#8217;t require any particular setup or management.</p>
</blockquote>
<p>So, the architecture might look something like this:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Apologies for the crappy graphic" border="0" alt="Apologies for the crappy graphic" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image1.png" width="421" height="239" /> </p>
<p>In this scenario, an admin sitting on a laptop can send a message to the Service Bus, which in turn relays the message to all the listeners.&#160; When the worker roles receive the message they will “release the hounds” and process whatever it is they need to process.</p>
<blockquote>
<p>Note: this approach is just as valid for listeners that don’t reside in Windows Azure.&#160; For example, if you have an application that is distributed across PCs and you want to send every client a message (without implementing some form of polling) this is the perfect approach.</p>
</blockquote>
<p>So, without further ado, here’s the <a href="http://cid-952ba2b9cf071aa0.skydrive.live.com/self.aspx/.Public/ReleaseTheHounds.zip" target="_blank">code to release the hounds!</a></p>
<p>Now, a few comments on the code:</p>
<ul>
<li>I wrote this using Visual Studio 2010 RTM. Your mileage may vary. </li>
<li>Make sure you have the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=DBA6A576-468D-4EF6-877E-B14E3C865D3A&amp;displaylang=en" target="_blank">Windows Azure SDK</a> and the <a href="http://go.microsoft.com/fwlink/?LinkID=129448" target="_blank">Windows Azure AppFabric SDK</a>. </li>
<li>The first thing you’re going to want to do is search on <strong>YOURSERVICENAME</strong> and <strong>YOURISSUERSECRET</strong> and replace with your own values. </li>
<li>It’s initially configured to run locally.&#160; Just hit F5. </li>
<li>When you run locally, three things will launch:
<ol>
<li>The local development fabric, with two worker roles. </li>
<li>A Windows Forms application with a big button (hey, it’s better than a console window!). </li>
<li>A console window that displays traces from all your worker roles.&#160; This is especially useful for getting information from your worker roles once you’ve deployed to Windows Azure.&#160; I’ll blog on this another time. </li>
</ol>
</li>
<li>When you eventually deploy to Windows Azure, but sure to uncomment the <strong>&lt;extensions&gt;</strong> and <strong>&lt;bindingExtensions&gt;</strong> sections in the App.config, as the Windows Azure AppFabric SDK is not installed in Windows Azure, and it won’t understand <em><strong>NetEventRelayBinding</strong></em>. </li>
</ul>
<p>I personally think this is a pretty neat solution, and can enable a lot of advanced scenarios.&#160; I’d love to hear your feedback and comments.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=aMGrdCorb4I:LegXtqxGFxA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=aMGrdCorb4I:LegXtqxGFxA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=aMGrdCorb4I:LegXtqxGFxA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=aMGrdCorb4I:LegXtqxGFxA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/aMGrdCorb4I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/release-the-hounds-multicasting-with-azure-appfabric/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/release-the-hounds-multicasting-with-azure-appfabric/</feedburner:origLink></item>
		<item>
		<title>Jon Box on the Capabilities of Internet Explorer 8</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/Fxmw-yU4Lco/</link>
		<comments>http://www.wadewegner.com/2010/05/jon-box-on-the-capabilities-of-internet-explorer-8/#comments</comments>
		<pubDate>Wed, 05 May 2010 21:43:35 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[IE]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/05/jon-box-on-the-capabilities-of-internet-explorer-8/</guid>
		<description><![CDATA[At MIX10, Jon Box – a Senior Architect Evangelist with Microsoft – spoke with SocialWendy about Internet Explorer 8.&#160; In addition to highlighting the fact that IE8 makes the Internet easier, safer, and faster, Jon talks about three unique capabilities found in IE8: Accelerators Visual Search Web slices Furthermore, Jon highlighted how a web slice [...]]]></description>
			<content:encoded><![CDATA[<p>At MIX10, <a href="http://blogs.msdn.com/jonbox/">Jon Box</a> – a Senior Architect Evangelist with Microsoft – spoke with <a href="http://www.socialwendygroup.com/">SocialWendy</a> about Internet Explorer 8.&#160; In addition to highlighting the fact that IE8 makes the Internet easier, safer, and faster, Jon talks about three unique capabilities found in IE8:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/cc289775%28VS.85%29.aspx">Accelerators</a> </li>
<li><a href="http://blogs.msdn.com/ie/archive/2008/09/15/what-s-new-for-ie8-search.aspx">Visual Search</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc956158%28VS.85%29.aspx">Web slices</a> </li>
</ul>
<p>Furthermore, Jon highlighted how a web slice allows a user to subscribe to a piece of content on a web page, and also explain how a user can leverage an accelerator – such as <a href="http://ieaddons.com/en/details/shopping/Walmartcom_Accelerator/">Walmart’s accelerator</a> – to make it easier to search for information and goods on the Internet.</p>
<p><object width="400" height="265"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10460946&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10460946&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="265"></embed></object></p>
<p>If you’d like more information on how to do this yourself for your own web pages, take a look at the following resources:</p>
<ul>
<li>MSDN
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/cc956158(VS.85).aspx">Web slices overviews</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc196992.aspx">Subscribing to Content with Web Slices</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc289775.aspx">OpenService Accelerators Developer Guide</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc848862.aspx">Search Provider Extensibility in IE</a> </li>
<li><a href="http://webslicesandaccelphp.codeplex.com/">Web Slices and Accelerators in PHP</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd565670(VS.85).aspx">Authenticated Web Slices</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc848871(VS.85).aspx">IE8 Web Slice Style Guide</a> </li>
<li><a href="http://webslices.codeplex.com/">ASP.NET Web Slices</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc956159(VS.85).aspx">Web Slices Tutorials</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx">Web Slices Format Specification – Version 0.9</a> </li>
</ul>
</li>
<li>Excellent blog posts
<ul>
<li><a href="http://blogs.msdn.com/jonbox/archive/2010/02/20/ie8-building-a-web-slice-does-not-guarantee-lighting-up-the-button.aspx">Building a Web Slice Does Not Guarantee Lighting Up the Web</a> </li>
<li><a href="http://blogs.msdn.com/jonbox/archive/2009/10/25/ie8-web-slices-and-discoverability.aspx">IE8 Web Slices and Discoverability</a> </li>
<li><a href="http://blogs.msdn.com/jonbox/archive/2010/04/03/an-expanded-view-of-ie8-accelerators.aspx">An Expanded View of IE8 Accelerators</a> </li>
<li><a href="http://blogs.msdn.com/jonbox/archive/2010/02/28/ie8-fundamentals-of-visual-search-providers.aspx">IE8 Fundamentals of Visual Search Providers</a> </li>
<li><a href="http://blogs.msdn.com/jonbox/archive/2009/09/09/create-a-simple-ie8-search-provider.aspx">Simple approach to IE8 search providers</a> </li>
<li><a href="http://blogs.msdn.com/ie/archive/2009/03/03/create-a-dynamic-web-slice-in-5-minutes.aspx">Dynamic web slice in 5 minutes</a> </li>
<li><a href="http://blogs.msdn.com/ie/archive/2009/03/11/web-slice-and-feed-authentication-developer-guidelines.aspx">Web slice and feed authentication</a> </li>
<li><a href="http://blogs.msdn.com/ie/archive/2008/09/22/the-ie8-ieak.aspx">IEAK</a> </li>
</ul>
</li>
</ul>
<p>Also, if you want to take a look at some great web slices, try out the following:</p>
<ul>
<li>McDonald’s McNuggets &#8211; <a href="http://www.ieaddons.com/en/details/shopping/the_McNuggets_Village/">http://www.ieaddons.com/en/details/shopping/the_McNuggets_Village/</a> </li>
<li>Winchester &#8211; <a href="http://www.ieaddons.com/en/details/shopping/Winchester_Web_Slice/">http://www.ieaddons.com/en/details/shopping/Winchester_Web_Slice/</a> </li>
<li>Chicago Tribune &#8211; <a href="http://www.ieaddons.com/en/details/news/Chicago_Tribune_News_Headlines/">http://www.ieaddons.com/en/details/news/Chicago_Tribune_News_Headlines/</a> </li>
</ul>
<p>Happy web slicing!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=Fxmw-yU4Lco:TnQAUiP5Pqo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=Fxmw-yU4Lco:TnQAUiP5Pqo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=Fxmw-yU4Lco:TnQAUiP5Pqo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=Fxmw-yU4Lco:TnQAUiP5Pqo:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/Fxmw-yU4Lco" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/jon-box-on-the-capabilities-of-internet-explorer-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/jon-box-on-the-capabilities-of-internet-explorer-8/</feedburner:origLink></item>
		<item>
		<title>What is the Azure AppFabric?</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/ENPhHUze2QA/</link>
		<comments>http://www.wadewegner.com/2010/05/what-is-the-azure-appfabric/#comments</comments>
		<pubDate>Wed, 05 May 2010 16:19:44 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[AppFabric]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Azure AppFabric]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/?p=566</guid>
		<description><![CDATA[If you take a look at the official Windows Azure platform website, you’ll see two definitions for the Windows Azure platform AppFabric (hereafter referred to as the Azure AppFabric) prominently called out: “… connects cloud services and on-premises applications.” “… helps developers connect applications and services in the cloud or on-premises.” While the purpose of [...]]]></description>
			<content:encoded><![CDATA[<p>If you take a look at the official <a href="http://www.microsoft.com/windowsazure/">Windows Azure platform website</a>, you’ll see two definitions for the Windows Azure platform AppFabric (hereafter referred to as the Azure AppFabric) prominently called out:</p>
<ul>
<li>“… connects cloud services and on-premises applications.” </li>
<li>“… helps developers connect applications and services in the cloud or on-premises.” </li>
</ul>
<p>While the purpose of the Azure AppFabric seems clear to me – <strong><u>enable developers to connect applications and services</u></strong> – there are a couple things that generally cause confusion: execution and branding.&#160; I plan to talk about how to use the Azure AppFabric quite a bit in the future, but in this post I want to address the branding.</p>
<p>The Azure AppFabric has been rebranded numerous times.&#160; This isn’t surprising given that it has largely been a community technology preview, but it has lead to some confusion.</p>
<p>So, some brief history …</p>
<blockquote><p>Note: this is based entirely on my cyber-sleuthing and personal experience.&#160; I’m sure I have gaps and perhaps an inadvertent inaccuracy, so as I get corrected I’ll update.&#160; I didn’t join Microsoft until early 2008, so the early days of the Azure AppFabric precedes my Microsoft employment.</p>
</blockquote>
<p>In April 2007, the BizTalk Server team <a href="http://blogs.msdn.com/biztalk_server_team_blog/archive/2007/04/26/biztalk-services-are-live.aspx">announced</a> that the CTP release of <strong><em>BizTalk Services </em></strong>was live.&#160; They had created an Internet Services Bus (ISB) that allowed developers to create “Internet scale composite applications more rapidly.”&#160; Clemens Vasters described this <a href="http://blogs.msdn.com/clemensv/archive/2007/04/25/internet-service-bus.aspx">new ISB in a post</a>.&#160; Later, in July 2007, the BizTalk Server team talked about <a href="http://blogs.msdn.com/biztalk_server_team_blog/archive/2007/07/22/more-detail-on-biztalk-services-and-hosting-wf-workflows-in-biztalk.aspx">Hosted Workflows in BizTalk</a> – an exciting extension to the ISB announcement.&#160; Over time, Access Control was added into the mix as well.</p>
<p>Soon, word of <em><strong>Project Zurich</strong></em> started hitting the airways.&#160; Mary-Jo Foley wrote about <a href="http://www.zdnet.com/blog/microsoft/ozzie-foreshadows-zurich-microsofts-elastic-cloud/1503">“’Zurich,’ Microsoft’s elastic cloud”</a> back in July 2008, describing it as an initiative to “extend Microsoft’s .NET application development technologies to the Internet ‘cloud.’” Close, but not quite right.&#160; My first introduction to Project Zurich came while working on a project with <a href="http://www.microsoft.com/presspass/events/pdc/docs/RedPrarieParnerRelease.doc">RedPrairie on a supply chain proof-of-concept</a>, that ultimately culminated in a <a href="http://channel9.msdn.com/pdc2008/KYN01/">Bob Muglia keynote demonstration at PDC 2008</a> (around 59 minutes).</p>
<p>At the Professional Developers Conference (PDC) 2008 the platform was rebranded <strong><em>.NET Services</em></strong> and included as part of the <strong><em>Azure Services Platform</em></strong>.&#160; You can actually still see some of the <a href="http://www.microsoft.com/biztalk/en/us/netservices.aspx">.NET Services branding on this BizTalk Service page</a>.&#160; By the fall of 2008, .NET Services had emerged as a mature platform (even though still in CTP) consisting of an Internet Service Bus, an Access Control Service (ACS), and Workflow Service.&#160; In June 2009, the .NET Services team announced that they were <a href="http://blogs.msdn.com/netservicesannounce/archive/2009/06/12/upcoming-important-changes-to-net-workflow-service.aspx">pulling the Workflow Service</a>.&#160; As Windows Workflow Foundation in .NET 4.0 evolved, it was clear that most customers wanted Workflow Services to also follow to the .NET 4.0 model (not .NET 3.5), which it was not.&#160; Consequently, .NET Services team pulled workflow and focused on the ISB and ACS.</p>
<p>At PDC 2009, .NET Services went through it’s most recent branding change, and was eventually launched in 2010 as the <strong><em>Windows Azure platform AppFabric</em></strong>.&#160; Of course, this is a <u>really</u> long name, so most people just end up saying <strong><em>Windows Azure AppFabric</em></strong> or just <strong><em>Azure AppFabric</em></strong>.&#160; </p>
<p>The biggest challenge I see today with the name is that, at PDC 2009, we also rebranded “Dublin” and “Velocity” as the <a href="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx">Windows Server AppFabric</a> – almost too much name overloading, although there are some good reasons for it that will emerge over time.&#160; To make things clear, I’ll always say either <strong><em>Azure AppFabric</em></strong> or <strong><em>Server AppFabric</em></strong>.</p>
<p>If you really take a look at how this all has evolved, you can start to see how Microsoft’s cloud platform strategy has evolved over the last several years.</p>
<p>So, where does this leave us?</p>
<p>In my opinion, it leaves us with a technology that is a key differentiator in Microsoft’s cloud platform.&#160; I’m not just saying this – I really believe it, or I wouldn’t be <a href="http://blog.wadewegner.com/2010/05/new-role-technical-evangelist-for-azure-appfabric/">moving my family up to Redmond so that I can focus on it</a>.</p>
<p>In closing, let’s be clear on two things – in Azure AppFabric, there’s both a Service Bus and Access Control Service.</p>
<blockquote><p>The <strong>Service Bus </strong>is an Internet-scale enterprise service bus that makes it easy to connect applications over the Internet. Services that register on the Service Bus can easily be discovered and accessed across any network topology.</p>
</blockquote>
<blockquote><p>The <strong>Access Controls Service</strong> helps you build federated authorization into your applications and services, without the complicated programming that is normally required to secure applications that extend beyond organizational boundaries. </p>
</blockquote>
<p>Okay, now that I’ve spent a little time&#160; covering some history and the past, expect to see a major focus on what you can do today – and lots of code and examples.</p>
<p>Hope this helps.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=ENPhHUze2QA:y0WBwkEN5nc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=ENPhHUze2QA:y0WBwkEN5nc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=ENPhHUze2QA:y0WBwkEN5nc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=ENPhHUze2QA:y0WBwkEN5nc:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/ENPhHUze2QA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/what-is-the-azure-appfabric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/what-is-the-azure-appfabric/</feedburner:origLink></item>
		<item>
		<title>New Role: Technical Evangelist for Azure AppFabric</title>
		<link>http://feedproxy.google.com/~r/WadeWegner/~3/L1KlxbTm9k0/</link>
		<comments>http://www.wadewegner.com/2010/05/new-role-technical-evangelist-for-azure-appfabric/#comments</comments>
		<pubDate>Tue, 04 May 2010 00:55:55 +0000</pubDate>
		<dc:creator>Wade</dc:creator>
				<category><![CDATA[AppFabric]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Windows Azure]]></category>

		<guid isPermaLink="false">http://blog.wadewegner.com/2010/05/new-role-technical-evangelist-for-azure-appfabric/</guid>
		<description><![CDATA[I am excited to share that I’m taking the role of Technical Evangelist for the Windows Azure platform, focused on the Azure AppFabric.&#160; I’m joining James Conard’s team that focuses on Windows Azure platform evangelism, working with David Aiken, Ryan Dunn, Zach Owens, and Vittorio Bertocci – truly an all-star team!&#160; Oh, and I hope [...]]]></description>
			<content:encoded><![CDATA[<p>I am excited to share that I’m taking the role of Technical Evangelist for the <a href="http://www.azure.com/">Windows Azure platform</a>, focused on the <a href="http://www.microsoft.com/windowsazure/appfabric/">Azure AppFabric</a>.&#160; I’m joining <a href="http://blogs.msdn.com/jamescon/default.aspx">James Conard’s</a> team that focuses on Windows Azure platform evangelism, working with <a href="http://www.davidaiken.com/">David Aiken</a>, <a href="http://dunnry.com/blog/">Ryan Dunn</a>, <a href="http://english.zachskylesowens.net/">Zach Owens</a>, and <a href="http://blogs.msdn.com/vbertocci/">Vittorio Bertocci</a> – truly an all-star team!&#160; Oh, and I hope to spend a lot more time with <a href="http://blogs.msdn.com/jackgr/">Jack Greenfield</a>, <a href="http://blogs.msdn.com/clemensv/">Clemens Vasters</a>, <a href="http://blogs.msdn.com/justinjsmith/">Justin Smith</a>, and everyone else on the AppFabric team!</p>
<p>So, <a href="http://www.microsoft.com/windowsazure/videoPlayerPopup.aspx?w=720&amp;h=480&amp;vid=NetServices_720x480_FINAL_101609.wmv">what is the Windows Azure platform AppFabric</a> (other than a mouthful)?</p>
<p><a href="http://www.microsoft.com/windowsazure/videoPlayerPopup.aspx?w=720&amp;h=480&amp;vid=NetServices_720x480_FINAL_101609.wmv" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="What is the Windows Azure platform AppFabric?" border="0" alt="What is the Windows Azure platform AppFabric?" src="http://www.wadewegner.com/wp-content/uploads/2010/05/image.png" width="386" height="219" /></a></p>
<p>That’s one of the things I hope to de-mystify in my new role.&#160; Expect to see me talking a lot about it in the future.</p>
<p>The best part about focusing on the Azure AppFabric is that it doesn’t restrict me to just one technology – because the Azure AppFabric is the glue that integrates and secures applications across the Internet, I’ll get to leverage the entire Windows Azure platform, various mobile platforms, web technologies, and almost everything else in our technology stack – not to mention interoperability with other platforms!</p>
<p>So, what does taking this role mean?</p>
<ul>
<li>I’m moving the entire family to Redmond, WA. Incidentally, want to <a href="http://bit.ly/bBD7fB">buy a house in Glen Ellyn, IL</a>? </li>
<li>I hope to spend more time in Visual Studio than in Outlook. </li>
<li>I’m going to spend a lot more time writing blog posts and recording screen casts.&#160; Lots of really neat things to share. </li>
<li>I’ll continue speaking at events like PDC, TechEd, and MIX, and hope to hit even more online and local events. </li>
<li>I want to work with <u>all of you</u> to find new and interesting ways to leverage the Azure AppFabric. </li>
</ul>
<p>I am leaving an amazing group of people here in Central Region DPE.&#160; I want to thank everyone on my team – both local and extended – for making my time as an Architect Evangelist enjoyable and fulfilling.</p>
<p>See you soon in Redmond!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=L1KlxbTm9k0:hvA5YWdmKoU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=L1KlxbTm9k0:hvA5YWdmKoU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/WadeWegner?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/WadeWegner?a=L1KlxbTm9k0:hvA5YWdmKoU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/WadeWegner?i=L1KlxbTm9k0:hvA5YWdmKoU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/WadeWegner/~4/L1KlxbTm9k0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wadewegner.com/2010/05/new-role-technical-evangelist-for-azure-appfabric/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.wadewegner.com/2010/05/new-role-technical-evangelist-for-azure-appfabric/</feedburner:origLink></item>
	</channel>
</rss>
