Web services have been chosen for in-depth discussion because they are a well known and extremely important example of an SOA implementation. Many enterprises have already started to implement Web services, and most others have plans to implement them in the future. Web services are an example of an SOA. One very important thing that Web services have over most other SOA implementations is that they adhere to open standards. The open standards that form the basis of Web services theoretically allow any Web service to interact with any other Web service. Proprietary protocols, data translation, and vendor lock-in become a thing of the past. The menu of solutions for your IT problems grows enormously. The open standards behind Web services have gained allegiance from all the big players IBM, Microsoft, Sun, BEA, and Oracle to name a few. These normally warring entities are in bed together on open standards because they realize it is vital for the future of their respective businesses that they be able to talk to anyone via Web services. Following are the open standards utilized by Web services:
Let's examine how Web services implements an SOA. One of the SOA principles is that services should be independent of the means of transport. Currently, all Web services communicate using a single transport: HTTP. FTP and SMTP are listed as alternate Web services transport modalities, but they are not particularly popular because they preclude carrying on a conversation between applications. However, HTTP will continue to be the most popular transport for Web services messages for some time to come. HTTP is popular for Web services because HTTP messages can pass readily through firewalls. When you are contemplating connecting to a service physically located in a different enterprise, or even in a different location within the same enterprise, firewall transparency is attractive. Difficulties in traversing firewalls are one of the reasons that Java applets and CORBA are not popular in Internet scenarios. Web services notwithstanding, it remains our recommendation that, when building internal SOA environments, time and attention be devoted to making the service transport independent.
Web services utilize the SOAP messaging protocol to transmit data. This protocol is central to Web services. The SOAP protocol, among other uses, defines how to represent a message in a standard manner. In addition, it defines data types to be used when using remote procedure calls (RPC) via Web services. XML is the language used to compose SOAP messages. A SOAP message consists of three parts:
The SOAP protocol also demonstrates the difficulties of producing a completely unambiguous data communications vehicle. The original SOAP protocol left many key areas undefined or poorly defined. As a result, interoperability between Web services proved difficult to obtain. SOAP v1.2 has addressed some of those issues, but interoperability is still an elusive goal. Interoperability is discussed in detail later in this chapter. Handling of the SOA contract requirements by Web services is very well developed and deserves detailed study by any organization implementing an SOA. As stated previously, the SOA contract must clearly state the service that is provided and what is required of the Web service consumer. This contract is in the form of WSDL. WSDL has been developed for the purpose of discovering Web services that suit the consumer's criteria. Using WSDL, the provider of the service describes that service. That description consists of the following:
In conjunction with the WSDL contract specified by the service, Web services provide a mechanism to dynamically build the proxy that allows connection to the service using WSDL.
The future world of Web services is certain to contain many different registries, each with its own API. Small consumer-oriented Web services will probably be concentrated in one or a few registries. However, the location of business services will most likely be much more diffuse. Many enterprises may choose to implement their own registry. Having a registry of their own provides corporations the level of control and security that most of them need to feel comfortable with Web services. Having a plethora of Web services registries is not a problem. Having a plethora of APIs to interact with a plethora of registries is a problem. Standardization on a small set of Web service registry APIs is important for the widespread adoption of Web services. Having to change the registry access code when changing a Web service from one provider to the other greatly reduces the agility that Web services offer. Web services actually are beginning to deliver on the promise of a simple, universal, effective method to allow application-to-application communication between disparate entities. This versatility is achieved by the universal nature of the HTTP transport mechanism and the universal nature of the XML message format. We believe that an effective Web services strategy should be a part of every business's enterprise architecture. Web Services IssuesWeb services have some serious flaws, some temporary and some fundamental. One concern is Web services are typically slower when compared to many proprietary approaches. XML is verbose and hence tends to produce messages that are larger than more optimized approaches. XML parsing tends to be a slow process. Asynchronous communication is sufficient in some circumstances, but sometimes the speed of RPC operations is necessary. Specifications for passing binary data in SOAP messages, reliable Web services, nailing down the SOAP specification to enhance interoperability, and more are still in flux.
|