I. Introduction
Since it replaced distributed object computing as the leading paradigm for architecting enterprise computing systems, service-oriented software development has been enthusiastically embraced by academia and industry alike. Many companies are actively “re-architecting” their IT platforms using the principles of SOA, especially business software providers such as Oracle and SAP. Unfortunately, this enthusiasm for SOA is driven by the advantages that it offers for the implementation, integration and management of the “server-side” infrastructure of enterprise computing systems, rather than by any particular benefits that it provides for the “client-side”. While most platforms for implementing and maintaining services have matured significantly in recent years, and the server-side principles of service-oriented architectures have started to crystallize, the client-side platforms and languages used to build client applications or business processes using services remain immature and limited.