Like this article? We recommend

Like this article? We recommend

Introduction

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.