PDC 2008, Day #3, Session #5, 1 hr 15 mins
Throughout the conference, I bounced back and forth between Azure and Live Mesh sessions. I was trying to make sense of the difference between them and understand when you might use one vs. the other.
I understand that Azure Services is the underlying platform that Live Services, and Live Mesh, are built on. But at the outset, it still wasn’t quite clear what class of applications Live Services were targeted at. Which apps would want to use Live Services and which would need to drop down and use Azure?
I think that after Arash’s talk, I have a working stab at answering this question. This is sort of my current understanding, that I’ll update as things become more clear.
Question: When should I use Live Services / Live Mesh ?
- Create a Live Mesh application (Mesh-enabled) if your customers are currently, or will become, live.com customers.
- Otherwise, use Azure cloud-based services outside of Live, or the other services built on top of Azure:
- Azure storage services
- Sync Framework
- Service Bus
- SQL Data Services
Unless I’m missing something, you can’t make use of features of the Live Operating Environment, either as a web application or a local desktop client, unless your application is registered with Live.com, and your user has added your application to his account.
The one possible loophole that I can see is that you might just have your app always authorize, for all users, using a central account. That account could be pre-created and pre-configured. Your application would then use the same account for all users, enabling some of the synchronization and other options. But even this approach might not work—it’s possible that any device where local Mesh data is to be stored needs to be registered with that Live account and so your users wouldn’t normally have the authorization to join their devices to your central mesh.
Arash listed three main takeaways from this talk:
- Live Services add value to different types of applications
- Mesh-enabled web apps extend web sites to the desktop
- The Live Framework is a standards-based API, available to all types of apps
How It All Works
The basic idea is to start with a “Mesh-enabled” web site. This is a web site that delivers content from the user’s Mesh, including things like contacts and files. Additionally, the web application could store all of its data in the Mesh, rather than on the web server where it is hosted.
Once a web application is Mesh-enabled, you have the ability to run it on various devices. You basically create a local client, targeted at a particular platform, and have it work with data through the Live Framework API. It typically ends up working with a cached local copy of the data, and the data is automatically synchronized to the cloud and then to other devices that are running the same application.
This basically implements the Mesh vision that Ray Ozzie presented first at Mix 2008 in Las Vegas and then again at PDC 2008 in Los Angeles. The idea is that we move a user’s data into the cloud and then the data follows them around, no matter what device they’re currently working on. The Mesh knows about a user’s:
- Data, including special data like Contacts
- Social graph (friends)
The User’s Perspective
The user must do a few things to get your application or web site pointing at his data. As a developer, you send him a link that lets him go sign up for a Live.com account and then register your application in his Mesh. Registration, from the user’s perspective, is a way for him to authorize your application to access his Mesh-based data.
Again, it’s required that the user has, or get, a Live.com account. That’s sort of the whole idea—we’re talking about developing applications that run on the Live platform.
There is still work to be done, on the part of the developer, to be able to run the application on various devices, but the basic choices are:
- Locally, on a client PC or Mac
- In a web browser, anywhere
- From the Live Desktop itself, which is hosted in a browser
(In the future, with Silverlight adding support for running Silverlight-sandboxed apps outside of the browser, we can imagine that as a fourth option for Mesh-enabled applications).
The Developer’s Perspective
In addition to building the mesh application, the developer must also register his application, using the Azure Services Portal. Under the covers, the application is just an Azure-based service. And so you can leverage the Azure standard goodies, like running your service in a test mode and then deploying/publishing it.
One other feature that is made available to Mesh application authors is the ability to view basic Analytics data for your application. Because the underlying Mesh service is aware of your application, wherever it is running, it can collect data about usage. The data is “anonymized”, so you can’t see data about individual users, but can view general metrics.
Arash talked in some detail about the underlying security model, showing how a token is granted to the user/application.
Mesh obviously seems a good fit for some applications. You can basically run on a platform that gives you a lot of services, as well as access to useful data that may already exist in a particular user’s Mesh environment. There is also some potential for cross-application sharing of data, once common data models are agreed upon.
But the choice to develop on the Mesh platform implies a decision to sign your users up as part of the Mesh ecosystem. While the programming APIs are entirely open, using basic HTTP/REST protocols, the platform itself is owned/hosted/run exclusively by Microsoft.
Not all of your users will want to go through the hassle of setting up a Live account in order to use your application. What makes it a little worse is that the process for them is far from seamless. It would be easier if you could hide the Live branding and automate some of the configuration. But the user must actually log into Live.com and authorize your application. This is a pretty high barrier, in terms of usability, for some users.
This also means that your app is betting on the success of the Live.com platform itself. If the platform doesn’t become widely adopted, few users will live (pardon the pun) in that environment. And the value of hosting your application in that ecosystem becomes less clear.
It remains to be seen where Live as a platform will go. The tools and the programming models are rich and compelling. But whether the platform will live up to Ozzie’s vision is still unclear.