Web Services Overview (Part One): Democratizing Distributed Computing
Popularized on UNIX systems over a decade ago, the remote procedure call (RPC) has long been an important tool for cross-platform, distributed applications. Technologies such as Microsoft’s DCOM and the Object Management Group’s CORBA were designed to extend the RPC mechanism to object-based computing as well, ushering in the n-tier model of software development and deployment. Unfortunately, if you’ve ever worked with a distributed object technology such as DCOM or CORBA, you know that with these technologies’ power comes increased limitations. Application developers working with these technologies must make use of proprietary tools and adjust for steep learning curves. On top of those issues, the usual industry posturing makes it difficult to build an application that interoperates across multiple technologies.
While a goal of reusable, programmable objects was certainly commendable, the barriers to entry (in terms of proprietary tools and protocols and heavyweight RPC mechanisms) were just too great for any one technology to gain widespread traction. As I’ll discuss in this article, the advent of web services rose from the ashes of the "object wars" to shatter many preconceived notions about distributed computing. Web service technologies are intriguing to many because of their reliance on open industry standards and a KISS ("Keep It Simple, Stupid") philosophy. Instead of reinventing protocols for the sake of better technology, web services technologies seek to make use of such stalwarts as XML, HTTP, and SSL to build a next-generation web. Because of their reliance on open standards and their agnostic stance toward client or server platforms, it’s my belief that web services will also be of great importance in the wireless world. Mobile users will be able to make use of a host of web services (such as credit card authentication or ERP functionality) from their small, underpowered mobile devices, allowing them to gain the benefits of distributed computing without the need for a powerful client.