What are Web services? A Web service is a program that can be remotely invoked by another program means of an Internet protocol, such as HTTP. The term is unfortunately ambiguous, because the word "Web" does not refer to "Web sites" but to the Web transport protocol (HTTP) that is typically used by Web services to communicate with each other. Hence, Web services are a way of implementing a distributed computing model across heterogeneous computing platforms. If you've ever visited Amazon's Web site and entered a FedEx tracking number to retrieve delivery status, you've seen a Web service in operation. In this case, the Web service is provided by FedEx, which the Amazon's Web site invokes to retrieve your package tracking information. Another live example you can play with is Microsoft's MapPoint
, which is actually Microsoft's first commercial Web service. If you have a Web site or other application that needs mapping information, you can sign up for MapPoint and pay Microsoft by the transaction. In both examples, you've got information delivered from remote systems on demand by means of Web services.
Web services are an innovation around which fierce competitors (e.g. IBM, Microsoft, Sun, H-P, Oracle) are cooperating to develop open standards for the common good. Some key standards include XML (Extensible Markup Language), SOAP (Simple Object Access Protocol), UDDI (Universal Discovery and Description Initiative), and WSDL (Web Services Description Language). Application development frameworks for Web services fall into two main categories: those that are based on the Microsoft .NET Framework, and those that are based on Java 2 Enterprise Edition (J2EE). Nevertheless, because Web services are standards-based, those developed under Microsoft .NET should have no problem interoperating with those developed under J2EE.
Many enterprise system vendors (e.g. SAP, Siebel, Oracle, Peoplesoft, J.D. Edwards, Microsoft Business Solutions, Frontstep), are working to allow parts of their systems to operate as Web services, to some extent or another. For the enterprise system vendors, the big hope is that Web services will greatly reduce the difficulty of integrating systems internally and between trading partners. Integration in the past has been accomplished either by writing custom interfaces, implementing complex and costly enterprise application integration (EAI) software, or by setting up EDI or XML links. As Rodger Beard wrote me recently,
I view the emerging Web service application architecture as a paradigm shift within the IT industry, and a shift that ultimately will impact basic general business processes in a most fundamental way. I feel Web services is very significant, analogous and maybe even more significant than the movement from mainframes to client server computing in the late 80's....All hype aside, this new architecture permits, and indeed readily facilitates the inexpensive, incremental automation and integration of inter-company, cooperative business processes. The practical possibilities for further process automation, leveraging the cheap hardware now available, is truly mind boggling to me. Not only are Web services applications (and applets) quick to develop, a piece at a time, but they inherently incorporate Internet based data communication protocols--sort of like "EDI on steroids," and without all that startup baggage that EDI has always featured.
It remains to be seen whether Web services will live up to these expectations. Thus far, most development of Web services has been taking place behind firewalls, as some IT departments are experimenting with the technology to build simple interfaces between internal systems. There is a general consensus that the standards are not yet fully developed to the extent needed to handle complex integration logic between business partners, specifically in providing security and multi-step transactional workflow.
For a more detailed discussion on the status of Web services adoption, see Ed Yourdan's article
on the Cutter Consortium site.