Answering the critical Web services questions

The IT industry is currently swept up in the latest buzzword -- Web services. The hoopla accompanying the emergence of this new technology darling has vendors scrambling to bring supporting products to market.

But it is time to move past the hype and uncover the truth about Web services. My goal is to set the record straight and answer three critical questions about Web services: What are Web services? Why are they important? And how can they help solve IT problems?

Armed with these answers you will be prepared to go into battle with Web services as a part of your IT solutions toolkit. And you will understand how Web services are enabling two important trends: enterprise portals and app integration.

Web services are evolutionary; they represent a progression of existing distributed computing models. And they are revolutionary; they will fundamentally change the way we build and deploy applications over a global network.

Web services' capabilities and features are not new. The idea of providing distributed software services has been around for more than a decade. Technologies like RPC, DCOM and CORBA were built from a client/server foundation focused on creating a standard technology platform on which to accomplish ''true'' app-to-app communication by providing access to remote methods. Messaging then came along and freed us from the shackles of synchronous communication, enabling point-to-point and Publish/Subscribe communication models utilizing messages as the ''exchange currency.''

Web services build on these technologies and simplify the development and deployment of distributed app systems. They do this by combining a standards-based approach to distributed computing with the availability and accessibility of the Internet. HTML and HTTP were two catalysts of the first Web revolution, providing standard technologies for creating webs of human-accessible content. But while HTML and HTTP opened up a web of related information, they did not simplify access to business systems and services. The missing ingredient was the ability to share processes and data across a global network: the Internet.

A Web services platform provides the foundation for the next generation of distributed computing, enabling the creation of a web of collaborative services that are machine-accessible and peer-to-peer in nature. Web services' value is that it enables pervasive machine-to-machine computing over the Internet. It is this platform of technologies that will enable us to achieve the true benefits of distributed computing that have historically eluded us.

The ticket to Web services' success is that it is based on fundamental standard technologies that everyone agrees on, including companies like IBM, BEA Systems and Microsoft. Using these standards, Web services provide ''between-the-boxes'' communication capability by specifying the semantics of information via standard message exchange technology protocols, as well as the format of these messages.

Web services will change the way we architect, build and deploy the next generation of distributed apps. This new breed of ''aggregate apps'' is built from a set of loosely coupled components with Web services providing the foundation ''glue,'' and loosely coupled connections to make these components interoperable.

The technologies that work together to provide this ubiquitous standard connectivity are XML, SOAP, WSDL and UDDI. These technologies work together to provide a Web services model with important functionality: a loosely coupled model for exchanging information; a standard format for packaging and sending data over the wire; the ability to make interface definitions available; the ability to locate and register interest in a service; and the ability to describe the capabilities of a service and information about how to access a service.

The Web services technology stack is penetrated through the use and leverage of XML. XML provides the lingua franca of Web services; every other Web services technology eats and breathes XML. I use the term ''informational middleware'' to describe XML's power, applicability and potential. Web services finally realize XML's promise by providing the standard format for specifying both application interfaces and application messages.

SOAP defines an XML-based message protocol that provides a standard way of passing XML-encoded data and remotely accessing services and objects in a platform-independent way. SOAP messages are packaged into HTTP messages, enabling message and method invocation over the Internet using existing communication technologies. And SOAP is firewall-friendly; it does not require changes to existing corporate Internet firewalls.

A SOAP message is wrapped within an HTTP message and consists of a mandatory SOAP envelope, an optional SOAP header and a mandatory SOAP body defined as an XML document. The HTTP header contains the traditional HTTP request and response information and wraps the SOAP machinery. It specifies the action of the SOAP message with the SOAPAction parameter, which typically indicates the target destination address as a URL for the message.

The technical end of the SOAP message is the SOAP envelope, which defines the framework for describing the contents and processing of the message. It can specify a set of encoding rules for serializing app-defined data over the wire. Both the provider and requester must agree on this ''language,'' usually by referring to the same schema that defines them. The envelope and the encoding rules are defined using different XML namespaces.

The optional SOAP header contains service- and request-specific information, and is the ''extensibility'' point for the SOAP message. It provides the mechanism for extending SOAP in place to include additional capabilities such as security, transactions and quality-of-service features for the request.

The business end of the SOAP message is the SOAP body, which contains the app-defined data being exchanged. The data is specified using XML and can be expressed as a single self-describing structure or as an RPC-style interface that includes method name and typed parameters. The latter is remote method invocation that uses XML to describe the complete request.

The SOAP communication model exchanges messages between a requester and a provider. To invoke a remote method, the requester sends a SOAP request message to the provider indicating the action to be performed and passing the required parameters in the SOAP body. The provider replies by sending a response message with the requested data in the SOAP body. If an error occurs, a detailed error message is sent back to the requester describing the fault.

SOAP's power is its simplicity. The specification is aimed at specifying a basic mechanism for routing a request to its target by providing the required information to enable the invocation. Those who criticize SOAP as slow and see it as a performance bottleneck in app-to-app communication are missing the point, and are overlooking SOAP's value and merit.

One cannot deny that CORBA and DCOM have better performance by the numbers. After all, DCOM and IIOP provide ''on-the-wire'' interoperability and perform better because they are not required to propagate any meta-information between partners. This comes from their connection-oriented nature; components participating in an exchange have a persistent and transactional connection between them.

The connectionless nature of the Internet and its supporting technologies do not provide this capability. To enable effective communication over the Internet, SOAP provides an ''over-the-wire'' protocol that specifies a standard way to package requests based on XML that can be sent wrapped in HTML over commodity connectivity technologies like HTTP.

SOAP provides leverage in helping us overcome the challenges of component model and platform integration. The IT industry has been playing the component and platform integration game for a while, and my article, ''Renew, don't rewrite, legacy systems'' in ADT's December 2001 issue detailed some recent advances in the field. However, these solutions still fall short and it is still not easy to get CORBA objects to interoperate effectively with DCOM objects. SOAP provides the answer to this dilemma with its ability to express methods and parameters as XML -- SOAP provides the basis for component model integration without bridges.

SOAP ''cleans up'' the interoperability issues and challenges that have plagued business-to-business and app-to-app initiatives by providing the universal messaging currency. In the case of Web services, when you think of SOAP, think of pervasive and large-scale interoperability and not performance. After all, when you use the Internet as a communication medium, all bets are off on predicting performance. SOAP also provides the messaging to support the other two key Web services technologies, WSDL and UDDI.

WSDL provides the ''datasheet'' for Web services, but instead of rendering the information in .pdf, it renders it in XML. WSDL provides the complete interface for a Web service and is the IDL for a Web service. The XML grammar for WSDL is rich and provides everything a service requester needs to know to bind to a Web service and utilize its methods, including:

* A definition of the message format the Web service accepts and sends using the and elements, as well as appropriate schema definitions;

* The methods of the service using ;

* The semantics of the service that define how the methods of a service are called, such as synchronous request/reply, asynchronous and so on;

* The end point and transport of the service using the element; and

* The specific protocol used to bind to the service, including HTTP, HTTPS and JMS. WSDL provides both static and dynamic binding. Static binding uses a development tool to generate code to invoke the methods on a Web service. Dynamic binding is provided via the automatic creation of the appropriate access code at runtime. This 'tooling' makes it easier to write code that accesses Web services. WSDL must be located in a public repository to allow service requesters to look up binding information for Web service providers.

UDDI provides a standard interface to WSDL repositories and defines several lookup services that allow requesters to locate and retrieve the WSDL for Web service providers. A UDDI repository is a broker of information about the Web services that have been registered with it, and is similar to a CORBA interface repository.

UDDI provides three ways to look up a Web service: white pages, which locates a Web service by name; yellow pages, which locates a Web service by type of offering or topic; and green pages, which locates a Web service by its characteristics.

Adopting and applying Web services to real solutions
Web services can revolutionize the way we build and deploy B2B and B2C functionality. Pulling these technologies together provides the foundation for an extensible and flexible computing platform that provides access to small granular services and opens the door for large-scale services access and app integration.

We are currently in the early adopter phase, and many firms are trying to fight the hype and use Web services to deploy simple service-based functionality over the Internet. Much of this hype is about deploying simple Web services front ends over isolated code and functionality, making it available to the ''masses.'' Some examples are the credit card authorization, shipment tracking, currency conversion and simple calculation Web services that can be invoked from ''Web services sites.'' While providing functionality such as credit card authorization via a Web service is valuable, this adoption of Web services ''in the small'' only offers an incremental benefit over existing mechanisms.

Web services' true value will emerge when business functions and services are wrapped and made available on demand to a larger audience, including business partners and corporate users. The second generation of Web services implementations will be focused on wrapping business assets to provide the foundation for the adoption of Web services ''in the large.''

Web-based access to integrated information has been the focus of app portals. Current portal solutions provide simple, customizable content integration within HTML, offering single-point access to key and related information both within an enterprise and between an organization and its customers. However valuable these portals are for providing one-stop shopping for information content, the true value of a portal as a ''view'' into an organization's business environment will not be realized until it is integrated with business IT assets, including corporate business functions, services and processes. The next generation of portals, the Enterprise Information Portal (EIP), will be a full-featured environment that provides true portals into the business of the enterprise.

Enterprise portals will require integration of enterprise apps that execute across a heterogeneous set of apps. Web services provides the ''plugs'' that connect the source back-end systems to user interface components, called portlets, that provide a focused view into a business service. A portal can provide a dashboard of services to the user, in our case a customer service representative who needs access to legacy processing systems and databases. This dashboard is easily built by deploying the appropriate portlets into the enterprise portal.

With Web services-based components, firms can begin to architect and deploy this new generation of portals that are aggregate apps whose constituent services can execute anywhere on the 'Net. These portals provide access to the business IT infrastructure of a company, allowing customers, employees and business partners to be ''integrated'' with the business.

A snapshot of the Web services industry shows that a large contingent of early adopters are firms seeking both cost- and time-effective approaches and technologies for implementing their demand-chain and supply-chain solutions. A few years ago, some of these same companies were looking to EAI to create these solutions. Many experts expected EAI would be an integral part of the standardization of interfaces and messages that would enable these firms to communicate with their partners more effectively.

But recently, firms have shied away from EAI implementations that require significant up-front investment of resources and financial commitment with no measurable short- or medium-term ROI. The business case for creating these integration points still exists; but with shrinking IT budgets and the market demand for rapid deployment of solutions, the model has shifted to building app integration solutions in an incremental way using more ''commodity'' technologies.

From a technical perspective, Web services fills in what EAI lacked -- a standard, on-the-wire format to enable app components to exchange messages in an implementation-independent way. Web services, through SOAP and XML, provides this format and ''XML-itizes'' app integration. Combining its loosely coupled nature with standard-driven technologies that are ''toolable,'' Web services is a good approach to app integration in the small.

The sweet spot for Web services is sharing business logic in a non-intrusive way. Existing interfaces can be ''e-nabled'' for integration within the enterprise and between partners and customers. Web services provide an ''inside out'' approach to app integration where existing interfaces are wrapped as components with interfaces specified in XML in WSDL files.

To move from packaging and making functionality available via Web services to using Web services effectively, we must create an architecture that enables large-scale and pervasive use of Web services assets. Web services' benefits do not come from the mechanisms of the technologies that support it, but from the architecture and implementation that uses the technologies to expose useful, discrete components of the corporate IT infrastructure in a secure, reliable and scalable way.

Combining Web service app integration points with a service-oriented architecture provides the foundation for a Web service-oriented app integration platform, which enables integration solutions to be deployed in an incremental way. The Service Information Bus provides the universal circuit board for collaborative distributed computing by extending the Web service communication model from simple point-to-point message exchange to more complex many-to-many exchanges where multiple providers and requesters participate transparently.

Web services provides the plugs for connecting service requesters and providers to the bus, while the bus provides the intelligence for routing service requests to the target providers. The bus provides the information current and the ability to harmonize information and services across the enterprise, creating logical circuits between requesters and providers. This leads to the creation of a true web of services that supports the ability to create aggregate apps.

This architecture integrates heterogeneous information sources and consumers over a scalable and extensible infrastructure. The information current can be extended to partners and other business units. Using Web services, B2B Information Plugs are created that enable the bus to extend logical circuits to partners, trading exchanges and marketplaces. EAI plugs extend the information current to other business units, enabling standard cross-division integration points. If these all speak Web services, it is plug and play.

The good news is that building this architecture does not require a significant amount of effort and cost up front. For example, if your organization uses the J2EE platform for app development, the solutions you are building and deploying are easy to extend to Web services if they are architected and designed properly. J2EE-based service providers and requesters can be plugged into the service bus by creating adapters that ''Web servicize'' existing J2EE components. These adapters, which wrap the methods on the remote interfaces of Session or Entity beans, can be created using either the Java Web Services Development Kit or commercially available products. For the Service Information Bus, combining a UDDI-based repository with a Java Messaging Service Provider is all you need to get started. If your organization already has investments in EAI technology, those products can be used as the foundation for implementing the bus.

In my December 2001 article, I discussed how to integrate legacy assets into an architected component-based framework. This approach is based on the well-known Model-View-Controller pattern. It uses J2EE technology to enable legacy assets to be re-factored into reusable components called eaiComponents.

Existing legacy data assets are re-faced as Entity Bean model components that can be used in multiple transactions and business processes using controller eaiComponents deployed as Session Beans. Session Bean view eaiComponents wrap this functionality as a set of related business service methods, making it simple to invoke an operation such as AddCustomer. Under the covers, the framework of model and controller beans executes the supporting processes to support the business service request.

This model's power is its simple extensibility to Web services. Wrapping the View eaiComponents with Web services is straightforward, requiring the creation of a simple adaptation layer. The Customer Management eaiComponent's three service methods are provided as Web services to the bus via a Web service adapter. Now the functionality represented by these three business services is available to all requesters connected to the bus. Enterprise portals can also be plugged into the bus, allowing the rich array of business services and functions to be readily available to portal users. Web services become basically 'in-place' solutions, extending existing models with new and expanded connectivity.

I envision Web services adoption occurring in four phases. We are currently moving from a simple wrapped Web services model to the first generation of app integration solutions. These second-generation solutions will evolve from providing efficient access to services, to providing effective use of business services within the enterprise and with partners and customers. The third generation requires a service-oriented infrastructure that provides pervasive service access. This universal availability of information, functionality and services provides the foundation for fourth-generation solutions -- business process integration.

Web services gives us a cornerstone for B2B process integration by allowing new and existing functionality to be plugged into the information circuit of the service information bus, creating integrated business process circuits that execute within the enterprise and to ''connected'' partners. Programming complex business processes that span the enterprise and partner networks creates a ''process network'' enabling services to be integrated and new business processes to be created using existing assets to ''connect the dots.''

A work in progress
Firms should not delay in adopting Web services as an integral component of their IT toolkits. Despite the fact that interfaces like UDDI are still maturing, and security is still a work in progress, the foundation technologies of XML, SOAP and WSDL are mature and well formed.

For firms looking for a way to take services and offerings to market quickly, Web services is a great place to start because it can define and enable standard access. For enterprises still confronted with an app integration problem and paralyzed by the cost and fear of adopting ''heavy'' EAI platform solutions, Web services provides a fast path by wrapping existing processing assets using standard technologies. This will allow the infrastructure to grow on demand while meeting the short-term business needs of the company. The attraction for Web services is enabling organizations to make the transition from efficiency gains in providing Web-based access to simple functionality, to business effectiveness that enables organizations to create new business value through the unique combination of their existing IT infrastructure and business processes.

While Web services cannot end world hunger, I believe they provide the answer to app integration's Holy Grail -- a non-intrusive integration solution that uses standard and commodity technologies. The cost model, rapid time to market and standards-based nature of the platform is a hard-to-beat combination.

Web services have promise and a bright future. Stay tuned -- we have only begun this wild yet rewarding ride.

Upcoming Events