A key point of the Software + Services model is to characterize the gray area between traditional apps and SaaS apps as either "building block services" or "attached services," with the additional term "finished services" to describe software as a service. But I haven't yet grasped why the distinction is helpful.
Attached services provide a higher level of functionality compared with building block services. Applications leverage attached services to add functionality.
Sanjay demonstrated Microsoft Dynamics CRM 4.0 as an example of a finished service. Surprise, surprise, the extensibility features map on to what I already know from Salesforce.com. I smiled to myself at the naive remark that the features would allow a salesperson to enhance the system "without any programming." (Didn't someone once say that about COBOL?) Last time I checked, there were Dynamics CRM and Salesforce.com consultants making a tidy living.
We moved on to Azure, an "OS for the cloud," and the supporting suite of services on top of it:
- Live Services: ID and directory
- .NET Services: service discovery and the "service bus," workflow, access control
- SQL Services
- SharePoint Services
- Dynamics CRM Services
SQL Services is kinda important, because the persistent storage features offered by bare Azure will be hard for the garden variety developer to assimilate: blobs, tables, queues, and locks are all you get. Also rudimentary are the facilities for session management.
And Zhiming noted that e-commerce features like a shopping cart and credit card processing are not there yet, although Microsoft Office Live Small Business can provide them.
He closed with a quick demo of Wikipedia Explorer, one of a handful of apps linked to from the Azure Gallery. The Explorer is actually pretty slick: give it a search term and it produces a network of related Wikipedia articles, rooted on the original term. Also found in the gallery is Steve Marx's blog, which has helpful posts like this one that explain how to go about writing an app for the cloud.