Part 1 - Intro

Part 2 (The Idea) >

Contents:

  1. What is Software + Services
  2. Azure Services Platform
  3. Live Mesh

1. What is Software + Services

Over the past decade, the world we live in has been transformed by the Web. More and more people gain Internet access, services become more accessible and the experience is improving. There are a lot of advantages of using Internet services:

  • Low hardware requirements: services use the resources provided by the vendor and not the local ones. We only need devices capable of displaying the information that the service is sending. Most of the time no processing is done locally.
  • Device independence: a service can be accessed from any device connected the Internet. It does not require special privileges on the local machine and no installation is required.
  • No maintenance: services are maintained and updated by the service provider, the client must do nothing to configure it. The service is an out of the box solution.
  • Flexibility: we can change the service provider whenever we want. This capability creates new opportunities for businesses that can dynamically swap services and choose the one that matches their needs.

However there are still some limitations for which running local software is preferred instead of a web application/service:

  • User experience: browsers are not yet capable of delivering the same user experience as a local running application.
  • Privacy: there are situations when a company chooses the keep all its data within its controlled/trusted borders. There are many privacy concerns when using 3rd party services because there is no control over the security and must rely on the provider's security. Some complex federation problems might occur.
  • Offline experience: even though the Internet is now available most of the time there are still situation when network access is not available (maybe some technical problems) and the service cannot be accessed.

What do we do when we want to power of local running applications and the flexibility and ease-of-use of the Internet services? Simple: we take the best part of each, create an architecture that combines them and use it for application that work both online and offline. Ray Ozzie (Microsoft Chief Software Architect) mentioned that "when you combine the ever-growing power of devices and the increasing ubiquity of the Web, you come up with a sum that is greater than its parts. ... Software-plus-Services is the next logical step in the evolution of computing. It represents an industry shift toward a design approach that is neither exclusively software-centric nor browser-centric" [1].

Software plus Services describes the idea of combining hosted services with capabilities that are best achieved with locally running software. It describes composite applications created by combining traditional software with remote services to provide consistent and seamlessly integrated user experience across devices and form factors. Software plus Services is a concept that Software as a Service (SaaS) complements the traditional packaged software running on both client or server by services adding value[2].

To get a better image of what Software + Services mean that a look at the video below created by CommonCraft. The video presents a generic situation about two people, one using services and the other an on premise solution, each needing a part of what the other has. The result is a combination of Software + Services:

2. Azure Services Platform

Azure Services Platform is Microsoft's cloud computing platform that provides a wide range of internet services that can be consumed from both on-premises environments or the Internet.

It allows the development of scalable services that can be hosted in Microsoft's data centers. The Azure Services Platform is a service, per se, that allows clients to buy and use compute and storage resources in order to provide other services. In other words is a service for services.

Services created on the Azure platform can be exposed through web interfaces and web services. If the functionality is exposed through a web service then it can be consumed by any client and can be easily integrated in some enterprise solutions. Hosting services in the cloud has many advantages like the elasticity of resources and costs, no worries about maintenance and insurance that no data is lost because of hardware problems.

The cloud platforms have some limitations but if they can be overcome this approach of building and hosting services can be a real benefit for businesses both in terms of expenses and availability.

For more information about the Azure Service Platform see my other posts about it:

3. Live Mesh

Live Mesh is a data synchronization service from Microsoft. It allows users to sync files and folders across devices and the Live Desktop. The information about devices and folders participating in a synchronization relationship is not stored locally but at the service-end. Live Mesh is an application that runs on the Azure platform and is a good example of Software plus Services.

There is the "live" part that runs in the cloud and offers a Live Desktop that displays the files/folders synchronized and the devices that take part in the synchronization. The client application is installed locally (on Windows, Windows Mobile or MacOS) and takes care of the local files, determines when files and/or devices changed and require a new sync.

At the time of writing there are two versions of Mesh (Mesh.com and Mesh-CTP.com) that will eventually be merged. Mesh.com is the version of Mesh that is available to everyone and allows sync of files across devices.

mesh meshctp

Apparently no difference between Mesh and MeshCTP (note the Apps button in the right image)

Mesh-CTP is the version for developers that is available only by invitation (you can apply for the CTP program in order to get one). The main difference between the two versions if that the CTP allows the development of applications for the Live Desktop.

As I told before Mesh allows files and folders to be synchronized across devices and Live Desktop. Mesh-CTP brings in a new concept: application synchronization. The applications created for Mesh will be synchronized across devices and will work offline (!) by connecting to a local version of Mesh. Once online the files that have changed on the local device or any other will sync again. To be more precise, when not connected to the Internet the application provides only the functionality that not requires Internet access.

The idea above is not new (see Outlook, IE, FeedDaemon etc. that have an offline mode) but the revolutionary thing is that the same (!) application can work both online and offline and can be deployed on the local computer or on the Live Desktop. Also the latest version of the application is always installed because once a new version is available it is synchronized with all devices.

The next two parts of this article will present a modern approach for constructing software (that works both online and offline) and services using the Live Mesh (CTP) and respectively Azure Services Platform.

Part 2 (The Idea) >

References:

[1] http://www.microsoft.com/softwareplusservices/software-plus-services-full-story.aspx

[2]http://en.wikipedia.org/wiki/Software_plus_services

Special thanks to Timotei Dolean, Ursul and Andrei Ignat for reviewing this post.