Learning to build on Azure: One ISV's Experience
While at PDC back in October, Ryan Dunn and I had a chance to sit down with Shan McArthur from gold ISV partner ADXSTUDIO to discuss what he'd learned from his experiences with the Azure Services Platform.
Shan is a serial early adopter and Ryan and I (and a few other Technical Evangelists) have been working with him and his team for some time to help them along the way.
In this video Shan discusses some of the things he's done that helped him get there faster. Amazingly the team was able to get the ADXStudio Content Management System (CMS) ported to Windows Azure in a lightning fast 3 weeks.
He ported ADXSTUDIO CMS and their CRM Developer Toolkit so that they are now able to run in either on-premises, partner-hosted or Windows Azure. He also took advantage of Microsoft SQL Data Services (which is Ryan's favorite technology :) ) to store the content for the CMS.
Shan had a lot so say about what he learned when build his cloud-capable and scalable app. His app originally had a dependency on numerous Microsoft technologies including IIS, ASP.NET, SQL Server, Active Directory.
He’s now betting of both worlds. He knows many of his customers will continue to use traditional deployment methods but for many more Windows Azure will be a great fit.
Some of his comments:
- Hosting in Azure is different. You can’t always do the things you expect from ASP.NET since you're now in a sandbox
- The first thing to learn is code access security code since Windows Azure doesn't run apps in full trust
- A great way to learn code access security is to move into medium trust immediately (even while on IIS) to see the exceptions right away
- Get your developers to Vista and IIS7 and use the integrated pipeline
- He talks about how to build applications that will run in either IIS or Windows Azure.
- Shan’s team were able to get all of this cool stuff ported and working in just a few weeks.
- Shan shows us a project built on the ADXSTUDIO CMS running on Windows Azure and in the Windows Azure dev fabric.
SQL Data Services
Shan’s team went with SQL Data Services (SDS) for data storage. He notes that Windows Azure also has some storage capabilities. Shan discusses why he made the choice he did to use SDS:
- much richer query capability
- easier to use for composition of multiple web sites
- soon will have the additional security access control
- will take on more and more relational capabilities
Since SDS is not full-fledged SQL Server there is a certain amount of re-architecting that Shan needed to do to ensure that his app was portable. He made some design decisions very early on in development that made this easier:
- used a provider model to separate the data from the logic in the application
- moved away from deep dependency on SQL Server (e.g. stored procs)
- used guids/ unique ids (as opposed to using auto-numbered ints) for unique keys
Shan goes quite deep into the code showing how he takes full advantage of the provider model.
He also spends some time talking about how he tackles identity. Again because he uses the membership provider model he can switch identity based on the need of the application (Active Directory, Live Id, Forms Auth, etc).
Shan’s team does a lot of work with Dynamics CRM as well. Shan’s team put together a very cool conference self-service registration demo application that uses Azure on the front end with the site content stored in SDS and the dynamic content coming directly via web services from Dynamics CRM. So, in the same way that Dynamics CRM can be used to build line-of-business apps that run on-premises, partner-hosted or in Microsoft data-centers with CRM Online, they can build customer facing self-service web sites that run in any of the 3 hosting models (on-prem, partner-hosted, Windows Azure). For Shan’s code it’s just a change in a web.config file.
I even managed to get Ryan on film paying off Shan for all the kind words he has for the evangelists that have helped him out. Gosh, I hope Legal doesn't see this. :) Seriously though, Shan has certainly done a great job of taking advantage of all the resources we provide to ISVs building on our platform. Thanks for the kind words and great product, Shan.
Full video with download links on channel 9: