Arrival of Web Services and SOA
Earlier in this chapter we highlighted the Remote Procedure Call and its influence in the distributed communication technologies such as CORBA, DCOM, and J2EE. The protocols used in these technologies, IIOP, ORPC, and RMI/IIOP, respectively, are the binary protocols used for communication between remote objects over the corporate networks. This laid the foundations for a radically new protocol and resulted in the development of extensible vocabularies such as SOAP, WSDL, and UDDI. These extensible languages are referred to as First Generation Web Services. These languages provide fundamental level support for enterprise applications and enable them to be web service-oriented at the functional level. However, for enterprises, nonfunctional requirements take priority over functional requirements. The web services extensions that attempt to meet the nonfunctional aspects of enterprise requirements are referred to as the Second Generation Web Services extensions, and we explore them briefly in the following sections.
First Generation Web Services
As you may recall from Chapter 1, the three pillars of web services are SOAP, WSDL, and UDDI. These technologies are advanced vocabularies of the XML and use other supportive XML vocabularies such as Namespace and XML Schema Definition (XSD). Each of these web services vocabularies address different aspects of enterprise information interchange in an interoperable manner.
This new text-based messaging technology enables applications to exchange information in the form of messages. The messages can be interchanged in a synchronous or asynchronous manner. The design of SOAP message structure is such that the messages can be interchanged between applications through RPC invocation or through MOM technologies.
WSDL enables description of the service through the use of a set of specialized XML elements. The service description includes the data types interchanged (this is programming language-independent), name of the service, parameters passed, transport protocol used, and so on. WSDL also enables several related services to aggregate into a service suite.
UDDI is a specification and service that helps businesses provide a platform in such a way that the service requesters can discover service providers, zero in on appropriate partners, and enable an agreed-upon business automation. UDDI, like WSDL, uses advanced XML vocabularies to define the business and service information in an elaborate manner. As a service, UDDI registries enable the service requester to store all necessary information regarding business and service information that is suitably categorized as per industry standards.
The Second Generation Web Services
Enterprise solution requirements might be categorized into functional requirements and nonfunctional requirements. Nonfunctional requirements govern the architectural and design aspects of any enterprise solution. There are many nonfunctional requirements, and one enterprise's nonfunctional requirements list and priorities would be different from another. Some of the nonfunctional requirements that are common to most of the enterprises are
- Quality of service
- Business process
Several web services extensions and frameworks have been proposed by various industry consortia, and there is more than one web service extension proposed by competing industry consortia. These extensions and frameworks address one or more nonfunctional enterprise requirements Although there is a general consensus among the industry consortia on some of the web service extensions, this is not the case for all web service extensions.
Some of the important web services extensions are
- WS-Security Specifications and Frameworks
- WS-Addressing Specification
- WS-Reliable Messaging Specifications
- WS-Business Process Execution Language
- WS-Choreography Definition Language
- WS-Metadata Exchange Specifications
SOA Using Web Services
We have already discussed how the arrival of XML and related technologies brought in a paradigm shift for enterprise solutions. The core web services technologies provided a sound foundation for the functional aspects of the services, its description, and invocation. The second generation web services extensions, on the other hand, brought the nonfunctional requirements into the web services fold. Together, web services technologies provide several key features and advantages that the earlier technological solutions could not. Interoperability, for example, enables a clear separation of the service interface from the execution environment. Therefore, SOA implemented using web services technologies is likely to provide a leading edge over any other technological implementation.
Using web services, it is easier to change service compositions of the enterprise application and implement the changes at a lower cost. These features help the enterprise project developers to quickly respond to the dynamic requirements of the enterprise business needs.
Benefits and Challenges with SOA
SOA with web services as an implementation route brings a host of advantages to the enterprises. This doesn't necessarily mean that service orientation of the enterprise architecture is void of any disadvantages. Some of the significant pros and cons associated with SOA are as follows:
- Rapid integration of enterprise applications—departments and partners
- Efficient business automation
- Enhanced corporate agility
- Faster time to market for new products and services
- Reduced IT costs for the corporate long-term investment
- Improved operational efficiency of the business processes
- Better ROI
- Identifying the need for SOA
- Significant investment in resources on rearchitecting the core IT assets
- Identifying the right kind of governance model for the enterprise
- Mind share for the right kind of professionals and stake holders
- Legacy system issues—some legacy applications cannot be service oriented
Notice here that the issues and challenges for SOA relate more to the cultural aspect of the problem than the technological or business aspects. Of course, issues such as integration of unsupported legacy systems to service orientation remain as bottlenecks to the implementation of SOA.