<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Simon Davies' Blog</title><link>http://blogs.msdn.com/simondavies/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Integration Via the Cloud Revisited</title><link>http://blogs.msdn.com/simondavies/archive/2009/12/04/integration-via-the-cloud-revisited.aspx</link><pubDate>Fri, 04 Dec 2009 15:39:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9932560</guid><dc:creator>simondavies</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9932560.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9932560</wfw:commentRss><description>&lt;p&gt;Earlier this year I &lt;a href="http://blogs.msdn.com/simondavies/archive/2009/05/27/integration-via-the-cloud.aspx"&gt;posted&lt;/a&gt; about a demo I put together that showed messages flowing between applications on Windows Azure, Google App Engine and an on premise service.&lt;/p&gt;  &lt;p&gt;Recently &lt;a href="http://simonguest.com/"&gt;Simon Guest&lt;/a&gt; produced a demo which he used at Tech Ed Berlin and QCon San Francisco that shows application integration between services running on&amp;#160; Windows Azure, Google App Engine and Amazon EC2.&lt;/p&gt;  &lt;p&gt;Whilst we both based our demos around features provided by the &lt;a href="http://www.microsoft.com/windowsazure/dotnetservices/"&gt;Service Bus&lt;/a&gt; Simon’s demo is totally cloud based and used includes a php application as well as .Net and Java.&lt;/p&gt;  &lt;p&gt;For more information check out the blog post &lt;a href="http://simonguest.com/blogs/smguest/archive/2009/11/20/Cloud-Computing-Interoperability.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9932560" width="1" height="1"&gt;</description></item><item><title>Running Ruby on Rails on Windows Azure</title><link>http://blogs.msdn.com/simondavies/archive/2009/11/25/running-ruby-on-rails-on-windows-azure.aspx</link><pubDate>Wed, 25 Nov 2009 12:27:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9928513</guid><dc:creator>simondavies</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9928513.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9928513</wfw:commentRss><description>&lt;p&gt;Last week we announced the availability of some great new Windows Azure features in the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=772990DA-8926-4DB0-958F-95C1DA572C84&amp;amp;displaylang=en"&gt;November Windows Azure SDK&lt;/a&gt;. One of these features enables Worker Roles to receive network traffic from&amp;#160; both external and internal endpoints using HTTP, HTTPS and TCP. This new feature enables many new scenarios, one of then is the ability to run existing applications that receive traffic over sockets in Windows Azure.&lt;/p&gt;  &lt;p&gt;Using these capabilities as a foundation we have shown the ability to run various applications and technologies such as MySQL, Mediawiki, Memcached and Tomcat.&amp;#160; We have also provided a number of solution accelerators – which you can find links to &lt;a href="http://www.microsoft.com/windowsazure/interop/"&gt;here&lt;/a&gt; – in order to make it more more straightforward to get up and running. There are a couple of great PDC sessions &lt;a href="http://microsoftpdc.com/Sessions/SVC50"&gt;here&lt;/a&gt; and &lt;a href="http://microsoftpdc.com/Sessions/SVC51"&gt;here&lt;/a&gt; that demonstrate and explain how to get going with these technologies.&lt;/p&gt;  &lt;p&gt;One of the questions I’ve heard from a number of customers and partners over the last few months has been “Is it possible to run Ruby on Rails on Windows Azure”. Well the answer is now yes. Using these new features and the approach used in the solution accelerators I have Ruby on Rails running at &lt;a href="http://rubyonrails.cloudapp.net"&gt;http://rubyonrails.cloudapp.net&lt;/a&gt;. There is also an incredibly simple test application running with a SQLite database at &lt;a title="http://rubyonrails.cloudapp.net/posts" href="http://rubyonrails.cloudapp.net/posts"&gt;http://rubyonrails.cloudapp.net/posts&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;in my next post I will walk through the steps I took to get this working.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9928513" width="1" height="1"&gt;</description></item><item><title>Windows Azure SDK July SDK Powershell Role Sample</title><link>http://blogs.msdn.com/simondavies/archive/2009/07/21/windows-azure-sdk-july-sdk-powershell-role-sample.aspx</link><pubDate>Tue, 21 Jul 2009 16:55:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9843379</guid><dc:creator>simondavies</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9843379.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9843379</wfw:commentRss><description>&lt;p&gt;The July CTP release of the Windows Azure SDK and tools is now &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8d75d4f7-77a4-4adf-bce8-1b10608574bb&amp;amp;displaylang=en"&gt;available&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;There are a few new features in the release including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The ability to have more than one web and worker role type defined in a service, as was the case previously a service must have at least one role of one type defined but can now have multiple roles of the same type: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/WindowsAzureSDKJulySDKPowershellRoleSamp_CA14/2009-07-21_1409_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="2009-07-21_1409" border="0" alt="2009-07-21_1409" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/WindowsAzureSDKJulySDKPowershellRoleSamp_CA14/2009-07-21_1409_thumb.png" width="341" height="313" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note that each role is instanced (and deployed) independently. Jim Nakashima has a more details and a walkthrough of creating a service with multiple roles of the same type on his &lt;a href="http://blogs.msdn.com/jnak/archive/2009/07/20/working-with-multiple-web-and-worker-roles.aspx"&gt;blog.&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;The ability to associate any Asp.Net Web Application with a Service as a Web Role, again Jim has details &lt;a href="http://blogs.msdn.com/jnak/archive/2009/07/20/associating-an-asp-net-web-application-including-mvc-as-a-web-role.aspx"&gt;here&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of things that caught my eye is the inclusion of a new sample project in the SDK called PowerShellRole , this sample highlights the fact that Powershell is available - and usable – from Windows Azure. There is a sample web role that enables Powershell commands to be&amp;#160; executed, the following screenshot shows using the Clouddrive Powershell provider to list the contents of a blob store:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/WindowsAzureSDKJulySDKPowershellRoleSamp_CA14/2009-07-21_1452_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2009-07-21_1452" border="0" alt="2009-07-21_1452" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/WindowsAzureSDKJulySDKPowershellRoleSamp_CA14/2009-07-21_1452_thumb.png" width="538" height="393" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;There is also a worker role that executes powershell script. I am anticipating that this ability to run Powershell scripts will also make it easier (and quicker) to run other scripting runtimes on Windows Azure as it will make it possible to write a script and quickly deploy and run it.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9843379" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>SocketShifter - using the Service Bus to remote TCP Ports</title><link>http://blogs.msdn.com/simondavies/archive/2009/07/06/socketshifter-using-the-service-bus-to-remote-tcp-ports.aspx</link><pubDate>Mon, 06 Jul 2009 16:33:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9819771</guid><dc:creator>simondavies</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9819771.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9819771</wfw:commentRss><description>&lt;p&gt;Richard Prodger and &lt;a href="http://www.robblackwell.org.uk/"&gt;Rob Blackwell&lt;/a&gt; from &lt;a href="http://aws.net/"&gt;Active Web Solutions&lt;/a&gt; have just posted about an interesting application that enables the .Net Services Service Bus to used to remotely listen for traffic on any TCP port. &lt;/p&gt;  &lt;p&gt;This application enables traffic for specified ports to flow via the service bus even in face of network infrastructure that would otherwise prevent it.&lt;/p&gt;  &lt;p&gt;You can find more details about this application &lt;a href="http://blogs.aws.net/atc/post/SocketShifter-Warping-the-Internet-Space-Time-Continuum-with-the-Azure-NET-Service-Bus.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The application is available on &lt;a href="http://socketshifter.codeplex.com/"&gt;codeplex.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9819771" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/.NetServices+ServiceBus/default.aspx">.NetServices ServiceBus</category></item><item><title>Updated Windows Azure Table and Blob Storage Whitepapers</title><link>http://blogs.msdn.com/simondavies/archive/2009/06/12/updated-windows-azure-table-and-blob-storage-whitepapers.aspx</link><pubDate>Fri, 12 Jun 2009 15:50:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9734129</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9734129.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9734129</wfw:commentRss><description>&lt;p&gt;A couple of weeks ago I &lt;a href="http://blogs.msdn.com/simondavies/archive/2009/05/29/windows-azure-storage-service-new-features.aspx"&gt;posted&lt;/a&gt; about some new features that have been made available in the storage service. Steve Marx has a couple of &lt;a href="http://blog.smarx.com/posts/sample-code-for-batch-transactions-in-windows-azure-tables"&gt;posts&lt;/a&gt; about how to use some of these features.&lt;/p&gt;  &lt;p&gt;I also noticed that the updated whitepapers on &lt;a href="http://go.microsoft.com/fwlink/?LinkId=153401"&gt;table&lt;/a&gt; and &lt;a href="http://go.microsoft.com/fwlink/?LinkId=153400"&gt;blob&lt;/a&gt; storage have been published, one thing in particular caught my eye in the table paper:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;By PDC 2009, we plan to require the x-ms-version to be specified by all non-anonymous commands. Until then, if no version specified for a given request, we assume that the version of the command the request wants to execute is the CTP version of the Windows Azure Storage APIs from PDC 2008. If a request comes in an invalid x-ms-version, it will be rejected.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So it seems that any existing code that makes authenticated calls to storage will require a header by PDC 2009.&lt;/p&gt;  &lt;p&gt;The table paper also has some useful tips on performance if you are using .Net as your client framework.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9734129" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Bing Maps updates on Windows Azure</title><link>http://blogs.msdn.com/simondavies/archive/2009/06/05/bing-maps-updates-on-windows-azure.aspx</link><pubDate>Fri, 05 Jun 2009 19:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9701587</guid><dc:creator>simondavies</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9701587.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9701587</wfw:commentRss><description>&lt;P&gt;The Bing maps team have put together a nice application running on Windows Azure&amp;nbsp;that lets you explore the terabytes of updated data they publish each month.&lt;/P&gt;
&lt;P&gt;You can take a tour of the new hotspots or explore for yourself &lt;A href="http://bingmapsupdates.cloudapp.net/" mce_href="http://bingmapsupdates.cloudapp.net/"&gt;here&lt;/A&gt;. There’s also a short video intro to it &lt;A href="http://www.youtube.com/watch?v=hXbWtzNa66g" mce_href="http://www.youtube.com/watch?v=hXbWtzNa66g"&gt;here&lt;/A&gt; and more info on Chris Pendleton’s &lt;A href="http://www.bing.com/community/blogs/maps/default.aspx" mce_href="http://www.bing.com/community/blogs/maps/default.aspx"&gt;blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you want to see another interesting Bing maps application on Windows Azure take a look at &lt;A href="http://www.earthware.co.uk/blog/index.php/2009/03/virtual-earth-silverlight-control-ctp-available-friday-weve-been-playing-already/" mce_href="http://www.earthware.co.uk/blog/index.php/2009/03/virtual-earth-silverlight-control-ctp-available-friday-weve-been-playing-already/"&gt;Earthware’s&lt;/A&gt; twitter &lt;A href="http://earthware.cloudapp.net/demos/sltwittermap.aspx" mce_href="http://earthware.cloudapp.net/demos/sltwittermap.aspx"&gt;mash up&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Both these applications require &lt;A href="http://silverlight.net/" mce_href="http://silverlight.net/"&gt;Silverlight&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9701587" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Windows Azure Storage Service – New Features</title><link>http://blogs.msdn.com/simondavies/archive/2009/05/29/windows-azure-storage-service-new-features.aspx</link><pubDate>Fri, 29 May 2009 18:34:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9653417</guid><dc:creator>simondavies</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9653417.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9653417</wfw:commentRss><description>&lt;p&gt;Hot on the heels of the updated &lt;a href="http://blogs.msdn.com/simondavies/archive/2009/05/28/windows-azure-may-tools-and-sdk-update.aspx"&gt;Windows Azure May SDK and Tools CTP release&lt;/a&gt; the Windows Azure Storage Team have released some new features.&lt;/p&gt;  &lt;p&gt;Highlights include:&lt;/p&gt;  &lt;p&gt;Entity Group Transactions for Table Storage – operations can be batched together so that operations are performed atomically where those operations are performed on entities from the same table with the same partition key. Besides the atomic nature of updates this change also enables multiple changes to be requested in one roundtrip to the server.&lt;/p&gt;  &lt;p&gt;Copy Blob – a blob can be copied in its entirety to another blob in the same account, this change enables backup, versioning and renaming of blobs.&lt;/p&gt;  &lt;p&gt;API Versioning – a new header has been introduced to enable versioning of APIs, all new features\APIs require the presence of this header to work.&lt;/p&gt;  &lt;p&gt;One thing to note is that whilst the service has been updated the SDK has not been revised to reflect these changes at this time, the upshot of this is that in order to use these features you need to either the REST interface or the ADO.Net Client Library and not the Sample Library from the SDK.&lt;/p&gt;  &lt;p&gt;More details can be found &lt;a href="http://blogs.msdn.com/windowsazure/archive/2009/05/28/new-windows-azure-storage-features-may-2009.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9653417" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Securing Microsoft’s Cloud Infrastructure</title><link>http://blogs.msdn.com/simondavies/archive/2009/05/29/securing-microsoft-s-cloud-infrastructure.aspx</link><pubDate>Fri, 29 May 2009 13:23:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9652537</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9652537.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9652537</wfw:commentRss><description>&lt;p&gt;One of the many important questions that arises when talking to customers and partners about cloud computing is about security, privacy and reliability of systems when hosted in the cloud.&lt;/p&gt;  &lt;p&gt;The infrastructure that Microsoft runs to support both our services is provided and managed by a part of the organisation called Global Foundation Services. They have just launched a blog at &lt;a title="http://blogs.technet.com/gfs" href="http://blogs.technet.com/gfs"&gt;http://blogs.technet.com/gfs&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The &lt;a href="http://blogs.technet.com/gfs/archive/2009/05/27/securing-microsoft-s-cloud-infrastructure.aspx"&gt;first post&lt;/a&gt; on that blog addresses the subject of how we approach the the task of securing the infrastructure that run our services, there is also a &lt;a href="http://www.globalfoundationservices.com/security/documents/SecuringtheMSCloudMay09.pdf"&gt;white paper&lt;/a&gt; with much more detail.&lt;/p&gt;  &lt;p&gt;One of the areas discussed in the paper is certification, ISO/IEC 27001:2005 certification is a common request, you can see details of Microsoft ISO/IEC 27001:2005 certificates &lt;a href="http://www.bsi-global.com/en/Assessment-and-certification-services/Client-directory/CertificateClient-Directory-Search-Results/?pg=1&amp;amp;licencenumber=IS+533913&amp;amp;searchkey=companyXeqXmicrosoft"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Alongside publication of the white paper on infrastructure another white paper that discusses security and reliability as it relates to &lt;a href="http://www.microsoft.com/online"&gt;Microsoft Online Services&lt;/a&gt; has been published &lt;a href="http://www.microsoft.com/online"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9652537" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Cloud+Security/default.aspx">Cloud Security</category></item><item><title>Windows Azure May Tools And SDK Update</title><link>http://blogs.msdn.com/simondavies/archive/2009/05/28/windows-azure-may-tools-and-sdk-update.aspx</link><pubDate>Thu, 28 May 2009 20:58:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9648261</guid><dc:creator>simondavies</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9648261.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9648261</wfw:commentRss><description>&lt;p&gt;Windows Azure tools team have just released an update to the SDK and Tools, along with some general improvements in robustness and bug fixing the major feature is support for Visual Studio 2010 Beta full details at &lt;a title="http://blogs.msdn.com/jnak/archive/2009/05/28/may-ctp-of-the-windows-azure-tools-and-sdk-now-supports-visual-studio-2010-beta-1.aspx" href="http://blogs.msdn.com/jnak/archive/2009/05/28/may-ctp-of-the-windows-azure-tools-and-sdk-now-supports-visual-studio-2010-beta-1.aspx"&gt;http://blogs.msdn.com/jnak/archive/2009/05/28/may-ctp-of-the-windows-azure-tools-and-sdk-now-supports-visual-studio-2010-beta-1.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9648261" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>.Net Services Whitepapers</title><link>http://blogs.msdn.com/simondavies/archive/2009/05/28/net-services-whitepapers.aspx</link><pubDate>Thu, 28 May 2009 15:25:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9647026</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9647026.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9647026</wfw:commentRss><description>&lt;p&gt;Following on from yesterdays post on integration via the cloud using .Net Services and the .Net Service Bus I just noticed that there are a great set of White Papers for developers written by &lt;a href="http://www.pluralsight.com/main/"&gt;Pluralsight&lt;/a&gt; covering .Net Services and each of the three constituent pieces, Service Bus, Access Control and Worklow.&lt;/p&gt;  &lt;p&gt;You can download each of the papers from the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5057e2b3-c8e5-4b26-a601-ff9621589ce3&amp;amp;DisplayLang=en"&gt;Microsoft Download Site&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9647026" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/.Net+Services/default.aspx">.Net Services</category></item><item><title>Integration via the Cloud</title><link>http://blogs.msdn.com/simondavies/archive/2009/05/27/integration-via-the-cloud.aspx</link><pubDate>Wed, 27 May 2009 23:36:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9644920</guid><dc:creator>simondavies</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9644920.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9644920</wfw:commentRss><description>&lt;p&gt;A few weeks ago at the &lt;a href="http://msdn.microsoft.com/en-gb/architecture/dd135209.aspx"&gt;Architect Insight Conference&lt;/a&gt; I showed a very simple demonstration that highlights some of the building block services Microsoft is delivering in the cloud as part of the Azure Services Platform. &lt;/p&gt;  &lt;p&gt;My intention was to show off a couple of aspects of Azure. Firstly the emergence of cloud computing not only creates an opportunity for the use of&amp;#160; the cloud as a place to execute applications – in our case Windows Azure - but in addition provides the opportunity to provide services that developers can take advantage of in their applications, regardless of where those applications are running. Second I wanted to show off the fact that these services are – and need to be - interoperable with services and applications on other platforms.&lt;/p&gt;  &lt;p&gt;One of the building block services that we are making available as part of Azure is .Net Services, in a nutshell this service is aimed at making it easier to integrate applications together. One of the core components of&amp;#160; .Net Services is the Service Bus which “provides the familiar Enterprise Service Bus application pattern, while helping to solve some of the hard issues that arise when implementing this pattern across network, security, and organizational boundaries, at Internet-scale.”&lt;/p&gt;  &lt;p&gt;I therefore chose to build a very simple application that showed how the Service Bus could be used to integrate an application running in Windows Azure , an application running in Google App Engine and an application running behind the firewall.&lt;/p&gt;  &lt;p&gt;I followed the tutorial in Google App Engine to build the guestbook application in Java. This application provides a form which allows a user to leave a message which is persisted to storage. The application then renders the stored message back to the user. After building this application I added two pieces of functionality:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;When a message is posted as well as saving it I also POST it to the service bus. &lt;/li&gt;      &lt;li&gt;A REST style web service that accepts messages and persists them to the local store &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;The completed application looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_thumb.png" width="534" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I then implemented the exact same functionality in Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_thumb_1.png" width="534" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finally I created a console application that does two things. First it exposes a REST style web service through WCF, this service accepts messages sent to it and displays them in its console window. Second it creates a number of objects in the service bus that connect the three different services together:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It creates a service endpoint in the service bus so the web service running in the console application is reachable. One of the features of the Service Bus is to provide a relay in the cloud to enable a service to be reachable even if that service is running on a machine behind a NAT device or firewall with a dynamic\private IP address. Rather than opening a port and listening locally the service in the console application then makes an outbound connection to the service bus and messages for it are forwarded.&lt;/li&gt;    &lt;li&gt;It creates a router object in the service bus at the URI that the application in Google App Engine POSTs to, it then subscribes the web service in the console application and the web service in windows Azure to the that router. This service bus router enables both the forwarding of all messages it receives to all of its subscribers and the ability to queue messages the event of one of the subscribers being unable to process messages.&lt;/li&gt;    &lt;li&gt;It creates a second router object in the service bus at the URI that the application in Windows Azure POSTs to, it then subscribes the web service in the console application and the web service in Google App Engine to the that router.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The end result of this is that whenever a message is posted to either of the web applications that message is forwarded to the other web application and the console application. The following diagram shows a view of the whole system.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/image_thumb_2.png" width="530" height="331" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This demonstration shows a number of benefits of using the service bus to integrate applications together:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Each of the web applications is decoupled from the services that receive its messages, the message can be sent once and forwarded to any interested receiver (that has permission to receive the message)&lt;/li&gt;    &lt;li&gt;This message integration is asynchronous, in addition the messages can be transparently queued in the service bus providing protection against the receiving service being unavailable, unreachable or busy.&lt;/li&gt;    &lt;li&gt;Services running on devices that are not reachable from the Internet because of being on a private network behind a NAT or firewall device can be made discoverable and callable.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The following video is a screen capture of the demonstration running, to learn more about .Net Services and the Service Bus visit the &lt;a href="http://msdn.microsoft.com/en-us/azure/netservices.aspx"&gt;Azure Services Platform Developer Centre&lt;/a&gt; on MSDN.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b6fb95af-ffaa-42f4-a506-b126f54f1be4" class="wlWriterEditableSmartContent"&gt;&lt;div id="3dd64cd0-632d-4635-85bd-e6b35e22f6e9" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=4f0d32ca-29ae-4ae9-800c-5e4a0b8cd3a3&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/IntegrationviatheCloud_10483/video09b7053d1b8c.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('3dd64cd0-632d-4635-85bd-e6b35e22f6e9'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;432\&amp;quot; height=\&amp;quot;364\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=4f0d32ca-29ae-4ae9-800c-5e4a0b8cd3a3&amp;amp;from=writer&amp;amp;mkt=en-US\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9644920" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/.NetServices+ServiceBus/default.aspx">.NetServices ServiceBus</category></item><item><title>How I got php running in Windows Azure</title><link>http://blogs.msdn.com/simondavies/archive/2009/03/20/how-i-got-php-running-in-windows-azure.aspx</link><pubDate>Fri, 20 Mar 2009 18:49:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9492694</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9492694.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9492694</wfw:commentRss><description>&lt;p&gt;The March CTP &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af10-3d2839a5a362&amp;amp;displaylang=en"&gt;release&lt;/a&gt; of the Windows Azure SDK includes support for the IIS 7 FastCGI module which means that php applications can now be run in Windows Azure. I thought I’d take a look at how to set it up, I’ve not set up FastCGI on IIS7 on Windows Server before and I don't know anything about php, this is how I got it going.&lt;/p&gt;  &lt;p&gt;I didn’t have php installed on my system so I installed it via the &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Microsoft Web Platform Installer 2.0 Beta&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First I created a solution with no roles in using the Blank Cloud Service project in Visual Studio&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_thumb_1.png" width="538" height="331" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next I added a new web role to it by selecting the role folder in the cloud project, right clicking and then selecting add new web role project, I then selected the Cgi Web Role template&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_thumb_2.png" width="543" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I then created a new php folder in my web role project and added the files from the c:\program files\PHP folder. In order to get the php runtime files part of my deployment I also selected all the files and changed their build action to content and set them to be copied to the output directory if they changed&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowtoenablephpinWindowsAzure_12C9A/image_thumb.png" width="181" height="518" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next I edited the Web.roleconfig file like so:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.webServer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fastCgi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;application&lt;/span&gt; &lt;span class="attr"&gt;fullPath&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;%RoleRoot%\php\php-cgi.exe&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fastCgi&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.webServer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;I also needed to enable Full trust code by editing the cloud projects ServiceDefinition.csdef file, adding the attribute enableNativeCodeExecution:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WebRole&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WebRole&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;enableNativeCodeExecution&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Finally in order to route requests for php files to the php interpreter I added the following to the handlers section in the&amp;#160; of the web.config file i my web role.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;PHP FastGGI Handler&amp;quot;&lt;/span&gt;
             &lt;span class="attr"&gt;verb&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt;
             &lt;span class="attr"&gt;path&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;*.php&amp;quot;&lt;/span&gt;
             &lt;span class="attr"&gt;scriptProcessor&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;%RoleRoot%\php\php-cgi.exe&amp;quot;&lt;/span&gt;
             &lt;span class="attr"&gt;modules&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;FastCgiModule&amp;quot;&lt;/span&gt;
             &lt;span class="attr"&gt;resourceType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Unspecified&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;At this point I was ready to try and run a php script, so created a new text file in my web role called hello.php and then added the following content:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
  &amp;lt;title&amp;gt;PHP Test&amp;lt;/title&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
 &amp;lt;?php echo &lt;span class="str"&gt;'&amp;lt;p&amp;gt;Hello World&amp;lt;/p&amp;gt;'&lt;/span&gt;; ?&amp;gt; 
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt; &lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now I was ready to run my “app” so I hit F5 in visual studio, unfortunately I then received an error from php-cgi.exe saying that the application had failed to start because it could not find ntwdblib.dll, a few searches later and I found out the attempt to load this dll was because of a configuration entry in php.ini. (There is some guidance about how to configure php.ini on windows &lt;a href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#InstallPHP"&gt;here&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;I edited php.ini and commented out the SQL Server extension and the error was gone.&lt;/p&gt;

&lt;p&gt;[PHP_MSSQL]
  &lt;br /&gt;;extension=php_mssql.dll&lt;/p&gt;

&lt;p&gt;I also created a second php script that called the php phpinfo() function, you can see that &lt;a href="http://sdaviesdemo.cloudapp.net/phpinfo.php"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After I completed this I realised that a lot of php developers would not use Visual Studio, Ryan Dunn has a post explaining how get php going with only the Windows Azure SDK &lt;a href="http://dunnry.com/blog/QuicklyPutPHPOnWindowsAzureWithoutVisualStudio.aspx"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d5bf07fd-fe10-4daa-a4e3-59ed122fe0b0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/php" rel="tag"&gt;php&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9492694" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/php/default.aspx">php</category></item><item><title>Changing the local SQL Server instance in Windows Azure – March CTP Update</title><link>http://blogs.msdn.com/simondavies/archive/2009/03/18/changing-the-local-sql-server-instance-in-windows-azure-march-ctp-update.aspx</link><pubDate>Wed, 18 Mar 2009 20:02:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9487332</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9487332.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9487332</wfw:commentRss><description>&lt;p&gt;The blog entry &lt;a href="http://blogs.msdn.com/simondavies/archive/2009/02/17/changing-the-default-sql-server-instance-for-windows-azure-development-storage.aspx"&gt;here&lt;/a&gt; talks about how to use a non default SQL Server instance as the store for the developer storage fabric in the Windows Azure SDK. The good news is that the March CTP fixes this issue. In order to specify a different SQL Server instance simply issue the command &lt;strong&gt;dsint /sqlinstance:&amp;lt;your instance name&amp;gt;&lt;/strong&gt; from the bin folder in the SDK. &lt;/p&gt;  &lt;p&gt;Note that you cannot specify a server name, the instance is assumed to be on your local development machine.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9487332" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/SQL/default.aspx">SQL</category></item><item><title>How To Run Full Trust Applications in Windows Azure</title><link>http://blogs.msdn.com/simondavies/archive/2009/03/18/how-to-run-full-trust-applications-in-windows-azure.aspx</link><pubDate>Wed, 18 Mar 2009 19:59:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9487326</guid><dc:creator>simondavies</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9487326.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9487326</wfw:commentRss><description>&lt;p&gt;The March CTP release of Windows Azure has a number of interesting new features amongst them is the ability to run applications in full trust mode.&lt;/p&gt;  &lt;p&gt;Full trust mode in Windows Azure enables a number of scenarios not previously available, amongst these are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Executing code in assemblies that require Full Trust callers. &lt;/li&gt;    &lt;li&gt;Executing native code via P/Invoke. &lt;/li&gt;    &lt;li&gt;Spawning new processes. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Note that the account that your code will run with is a standard user account NOT one with administrative privileges'.&lt;/p&gt;  &lt;p&gt;This post covers a quick walkthrough of the first scenario using Visual Studio, producing a simple web page that uses classes from the System.Management namespace to display information about the processes running on the host machine our service is running on.&lt;/p&gt;  &lt;p&gt;1.Create a new Web Cloud Service in Visual Studio.&lt;/p&gt;  &lt;p&gt;Rather than just let any application run as full trust in Windows Azure you have to configure your service roles to allow native code execution.&lt;/p&gt;  &lt;p&gt;2. Alter your web role ServiceDefinition.csdef file &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&amp;lt;WebRole name=&lt;span class="str"&gt;&amp;quot;WebRole&amp;quot;&lt;/span&gt; enableNativeCodeExecution=&lt;span class="str"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;
  &lt;/pre&gt;
&lt;style type="text/css"&gt;










.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;3. Next, add a reference to the System.Management assembly in your web role project&lt;/p&gt;

&lt;p&gt;4. To display the list of processes that are running on our host we use an ASP.Net gridview control, add the following to the default.aspx page&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ProcessView&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot; &lt;/span&gt;&lt;span class="attr"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;False&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ProcessName&amp;quot; &lt;/span&gt;&lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Process Name&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ProcessStarted&amp;quot;&lt;/span&gt; 
       &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Date and Time Process Started&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:BoundField&lt;/span&gt; &lt;span class="attr"&gt;DataField&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MaxWorkingSet&amp;quot;&lt;/span&gt; 
      &lt;span class="attr"&gt;HeaderText&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Maximum Working Set Size&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:GridView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;







.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;










.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;5. Lastly, add the code to default.aspx.cs Page_Load method&lt;/p&gt;

&lt;pre class="csharpcode"&gt;ManagementClass Processes = &lt;span class="kwrd"&gt;new&lt;/span&gt; ManagementClass(&lt;span class="str"&gt;&amp;quot;Win32_process&amp;quot;&lt;/span&gt;);
ProcessView.DataSource = 
                    from ManagementObject process &lt;span class="kwrd"&gt;in&lt;/span&gt; Processes.GetInstances() 
                    select &lt;span class="kwrd"&gt;new&lt;/span&gt; 
                    { 
                      ProcessName = process[&lt;span class="str"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;], 
                      ProcessStarted=process.GetPropertyValue(&lt;span class="str"&gt;&amp;quot;CreationDate&amp;quot;&lt;/span&gt;),
                      MaxWorkingSet = process[&lt;span class="str"&gt;&amp;quot;PeakWorkingSetSize&amp;quot;&lt;/span&gt;] 
                    };
ProcessView.DataBind();&lt;/pre&gt;
&lt;style type="text/css"&gt;




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;





.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;










.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;










.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;That’s it, if you compile and run this code then you should see a list of processes running on your development machine along with their creation time and peak working set size.&lt;/p&gt;

&lt;p&gt;If you go back to the ServiceDefinition.csdef and alter the value for the attribute enableNativeCodeExecution to false (or remove it) then you will see output similar to this when you attempt to run your code.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowToRunFullTrustApplicationsinWindowsAz_8AF6/clip_image00211.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002[11]" border="0" alt="clip_image002[11]" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowToRunFullTrustApplicationsinWindowsAz_8AF6/clip_image00211_thumb.jpg" width="529" height="293" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For completeness this is the output I see when I run my code in the Windows Azure cloud rather than on my dev machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowToRunFullTrustApplicationsinWindowsAz_8AF6/clip_image00410_1.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004[10]" border="0" alt="clip_image004[10]" src="http://blogs.msdn.com/blogfiles/simondavies/WindowsLiveWriter/HowToRunFullTrustApplicationsinWindowsAz_8AF6/clip_image00410_thumb_1.jpg" width="532" height="441" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve put a copy of the page &lt;a href="http://sdaviesdemo.cloudapp.net/management.aspx"&gt;here&lt;/a&gt; so you can see the output live.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4ba38bf2-674b-465e-a94e-c8f674804f35" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9487326" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/Full+Trust/default.aspx">Full Trust</category></item><item><title>Dynamic Languages and Windows Azure</title><link>http://blogs.msdn.com/simondavies/archive/2009/02/17/dynamic-languages-and-windows-azure.aspx</link><pubDate>Wed, 18 Feb 2009 01:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9428780</guid><dc:creator>simondavies</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/simondavies/comments/9428780.aspx</comments><wfw:commentRss>http://blogs.msdn.com/simondavies/commentrss.aspx?PostID=9428780</wfw:commentRss><description>&lt;P&gt;I’ve had a couple of conversations about Windows Azure over the past couple of weeks where the subject of Reflection has come up. As Windows Azure comes with its own Code Access Security policy many people are immediately jumping to the conclusion that this must mean that Reflection is not allowed, this is not true (you can find a table showing what Windows Azures Code Access Policy constrains&amp;nbsp;&lt;A href="http://msdn.microsoft.com/en-us/library/dd179369.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd179369.aspx"&gt;here&lt;/A&gt;&amp;nbsp;).&lt;/P&gt;
&lt;P&gt;This leads on to two further assumptions, first dynamically loading assemblies is not allowed (it is and I’ll post a demo of this in the future), second there is no way that dynamic languages will run, this is not true either.&lt;/P&gt;
&lt;P&gt;There are a couple of examples of dynamic languages in Windows Azure that you can experiment with. The first one is an implementation of Lisp called L Sharp create by &lt;A href="http://www.robblackwell.org.uk/" mce_href="http://www.robblackwell.org.uk/"&gt;Rob Blackwell&lt;/A&gt; at &lt;A href="http://www.aws.net/" mce_href="http://www.aws.net"&gt;Active Web Solutions&lt;/A&gt;, you can read about it on his blog &lt;A href="http://www.robblackwell.org.uk/?p=150" mce_href="http://www.robblackwell.org.uk/?p=150"&gt;here&lt;/A&gt; and try it out at &lt;A title=http://lsharp.cloudapp.net/default.aspx href="http://lsharp.cloudapp.net/default.aspx" mce_href="http://lsharp.cloudapp.net/default.aspx"&gt;http://lsharp.cloudapp.net/default.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;When Rob told me what he had done it got me wondering if it was possible to host the &lt;A href="http://www.codeplex.com/dlr" mce_href="http://www.codeplex.com/dlr"&gt;DLR&lt;/A&gt; in Windows Azure (L Sharp is based on LINQ Expression trees rather than the DLR) and that led me to create the second example. You can find that demo &lt;A href="http://sdaviesdemo.cloudapp.net/dlr.aspx" mce_href="http://sdaviesdemo.cloudapp.net/dlr.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The demo and level of integration is pretty crude but it was very straightforward to do, I intend to add a few more features to this demo and I’ll cover how its done and share the code in a future post.&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:06622232-f9f4-4812-b21d-9e0d69e0ba6d class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Azure" rel=tag mce_href="http://technorati.com/tags/Azure"&gt;Azure&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Windows+Azure" rel=tag mce_href="http://technorati.com/tags/Windows+Azure"&gt;Windows Azure&lt;/A&gt;,&lt;A href="http://technorati.com/tags/DLR" rel=tag mce_href="http://technorati.com/tags/DLR"&gt;DLR&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9428780" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/simondavies/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/simondavies/archive/tags/DLR/default.aspx">DLR</category></item></channel></rss>