Microsoft tells us that the notion of "software as a service" is fundamental to .NET. Yet what does this often-repeated phrase really mean? Consider some possibilities.
One potential meaning, the one that's probably most often assumed, is that software as a service refers to exposing software's functionality via Web services. This might take several forms. For example, software as a service could expand on the existing application service provider (ASP) model, providing a new form of outsourcing. Rather than accessing software through a browser or some other human-focused interface, software running inside an organization might make SOAP calls to outsourced functions provided by an ASP across the Internet. Yet because Microsoft doesn't provide ASP-style services in any serious way today, can this be what the company has in mind when it talks about software as a service in .NET? It seems unlikely. Even the recent refocusing of Microsoft's ambitious .NET My Services project seems to suggest that this isn't what the people in Redmond have in mind when they use this phrase.
Alternatively, using Web services for business-to-business integration on the Internet (another possible meaning of the phrase) might make possible a world of rapidly reconfiguring business connections, a dynamic environment unlike anything we've seen. Yet as I argued in my last column ("Who Cares About UDDI?"), this seems unlikely to appear anytime soon. What kind of charging mechanism exists for customers to use newly chosen Web services across the Internet? And how likely is it that a business will allow its software to select business partners? Although this might be a useful idea at some point, it's at best a long way off. So is this what Microsoft means by software as a service? I doubt it.
Or how about this: Maybe software as a service refers to the possibility of using Web services to expose business functionality for other applications to use across an intranet. Yet if exposing functionality on intranets is such a great idea, how come it isn't commonly done today? Technologies such as Microsoft DCOM and CORBA IIOP can be used quite effectively for this, yet not many organizations provide software as a service on their internal networks. Given this, it's hard to believe that this is the main thing Microsoft means by software as a service, either.
What else might the phrase mean, though, if not something involving Web services? One possible candidate is a change that strikes fear into the hearts of some Microsoft customers: the company's shift to subscription-based pricing for software rather than outright sales. In this model, software is a service in the sense that you pay for it on a regular basis rather than buying a single product to use as long as you like. There are some advantages to this approach for customersupgrades are generally included, for exampleand Microsoft unsurprisingly likes the idea of steady, predictable revenue. But what exactly does this have to do with .NET? Microsoft Office is the first major application of this pricing model; and for now, anyway, Office has nothing to do with the rest of .NET.
So what does the phrase "software as a service" really refer to? Ultimately, I don't believe there is a clear answer. Although we may see some well-defined concept become an important part of .NET in the future, today both the idea itself and its connection to the .NET initiative remain murky. Given all of the money that Microsoft spends marketing .NET, it's a little surprising that the company hasn't made clear what this often repeatedand potentially revolutionaryphrase really means.