Oracle Dynamic Services: Oracle’s Web Services Framework
Alok Srivastava, Oracle Corporation (Alok.Z.Srivastava@Oracle.com)
Oracle Dynamic Services provides a single programmatic framework for accessing, aggregating, managing, and delivering Internet services. This insulates developers from the complexity of interacting with multiple information sources, access protocols, and delivery channels, thus improving developer productivity and reducing administrative costs.
Oracle Dynamic Services is the first Web Services framework released for the developers and customers to start developing web services based application. Oracle Dynamic Services has followed a number of existing standards and open XML approach to develop and deliver a framework that is easy to adapt to evolving standards. In order to fully utilize the web services capabilities, it is necessary that web services be discovered dynamically and then the programs can bind to these services automatically. In order to achieve the inter-operability and automated discovery of services, it is important that the software industry follows a standard based approach of defining, deploying and discovering web services.
For the past two and a half years, Oracle Engineering teams have worked on developing a comprehensive platform for Oracle customers and partners to build and deploy their enterprise applications with web services framework. By working with W3C in the area of web services, Oracle can help as well as lead in many areas defined by the W3C workshop on web services. Oracle is already a major participant in UDDI as well as SOAP efforts. Oracle’s vast experience and knowledge in the area of developing scaleable, fast and secure web services framework can be of significant value to W3C’s efforts in coming up with standards in the same area.
In this paper, a number of important factors relevant to Service Provider as well as Service Consumer have been discussed. Many of these issues were faced while Oracle Dynamic Services was being designed. We hope that a discussion of these requirements will benefit the workshop in defining important guidelines for setting standards for web services area.
A Web Service is defined as software functionality exposed through an Internet connection so that other businesses can leverage it in their own applications. In a common Web Services use case, Service Providers are identified as those businesses, which own that functionality and want to publish it on the Intranet/Internet. Publishing a Web Service implies the registration of the Web Service definition into a Web Service Registry. The Web Service definition includes at least the definition of the service interface, the service invocation protocol, and the protocol binding information. Service Consumers, or Invokers, will discover the service from the registry and can then invoke it by following the instructions defined in the service definition.
The use case described above is generally not sufficient to describe the requirements of Web Services deployed in a real-world business scenario. Business oriented Web Services pose a set of new challenges that have to be met before they can be accepted by Service Providers and Service Consumers. The use cases presented below should be taken in consideration when defining requirements for Web Services. They are important to better understand the Web Services space and it’s standardization.
The next sections will describe Oracle’s position regarding Web Services. In particular, we will highlight the major concerns that Service Providers and Service Consumers have to face when deploying Web Services in business environments. We will then introduce Oracle 9i Dynamic Services, Oracle’s offering for Web Services released in December 2000. We will also describe how Dynamic Services addresses the business needs here presented. We will finally summarize some suggestions regarding the standardization efforts for Web Services.
The goal of Service Providers is to easily define new services, publish them, and manage them. The following are some of the most important requirements from a Service Provider prospective.
Service Providers should be allowed to create services out of their exiting software infrastructure re-using existing applications.
This requirement has implications in the Web Service description and model. The model should provide an extensible binding so that existing sources can be exposed as services with minimal or no additional code.
Service Consumers should authenticate with the Service Provider before they are allowed to access and execute the service. The service provider should be able to further control the access of the services based upon the credentials of a service consumer.
This requirement has implications in the Service Registry, the Service Discovery Process, security, and the privacy of business data.
Service Provider may offer a set of web services that requires keeping a state (e.g shopping cart). For example, consumers should be able to execute an ‘add to shopping cart service’ multiple times and finally execute a ‘buy’ service which buys everything that has been added.
This requirement has implication in the Transaction area, and the Message and Protocol semantics.
Service Providers should be able to customize the execution of a service based on parameters associated to the service consumer requesting it. This option can be used to provide different quality of services to different users.
This requirement has implications in the web service description, as the context under which the service is being executed will become part of the service inputs available to the execution engine.
Service Providers needs to be able to offer a logging and auditing data for service tracking, management and billing purposes.
Service Providers (intermediaries) can publish added-value services built using third-party services. In this use case, Service Providers are also acting as Service Consumers and they are therefore sharing the same concerns.
Service consumers are the actual application developers who are building these new-age applications using web services. Service Consumers usually have the most stringent requirements from the web services environment because they need to support and manage business applications. Some of the most common requirements posed by Service Consumers are listed below:
Service Consumers are bound to a Service Provider by a business agreement. Change from one Service Provider to another or the terms and conditions of service usage should not require any modifications in the consumer application.
Web Services need to be able to isolate the technical details of the service binding and the communication with the Service Provider in order to minimize any impact of business relationship changes on web services based applications (this is the problem, web services are designed to solve to begin with)
In an effort of to maintain 24x& availability of their applications, developers can decide to define some fail over plan when a service fails. This fail over plan may include hardware failure, software failure as well as service failure. In the context of web services, it is the service failure that needs the attention of the service execution framework.
The Service definition should then allow expressing such fail over plans similar to managing business relationships.
Multiple services can be combined together to define a new value-added service. This becomes desirable as the applications built using web services start to expose their own features as web services.
The Web Service definition should allow specifying such aggregations in an extensible manner.
There are many other concepts applicable to service consumers, within their web services execution environment. W3C needs to consider these seriously while defining the standards in the area of web services.
Service execution environment needs to consider caching due to network overheads and slow server responses.
This is really important. Although many security mechanisms existing today may be sufficient to provide some form of authentication. The distributed nature of web services usually demands something similar to a single sign-on solution for security and authentication.
This is a requirement for most of the applications. If web services need to work with existing applications, they need to support an abstract notion of session that can be mapped onto several different implementations.
Quality of service requirements on an application may force them to require asynchronous execution of the services. Since most of the Internet applications have this requirement, asynchronous execution environments need to be supported. Indirectly this has an impact on how the services are defined and interpreted by the execution environments.
It may not be obvious to many readers why web services should be concerned with the channel they are being accessed from. In real life applications, when multiple channel access the same service, they require vastly different behavior. It may be necessary to consider some of the requirements while defining web services, so that the needs of these applications may be satisfied easily.
This is a clear requirement from all the application developers who wish to use web services in their application environments.
Any advanced application of web services, especially when it needs to execute multiple web services and additional business logic, and wishes to expose them as an advanced service, will require workflow and business processes to be available as a part of the service execution environment. Such applications also require a mechanism with which they can expose a process within a service concept.
Oracle Dynamic Services is the Oracle framework for web services. This product addresses many of the requirements presented above by offering a framework for service definition, registration, management, and execution. In Dynamic Services environment, Service Consumers contact the Dynamic Services Registry to identify the services to be executed; they will then submit service execution requests to the Dynamic Services execution engine. Dynamic Services provides an LDAP-based Service Registry to assist service consumers in the discovery process. The Dynamic Services execution engine abstracts the access of different resources, thereby shielding application developers from the overhead of dealing directly with the Service Provider. The Service model of the framework allows for extensible execution flow and customizable input and output transformations. Service aggregation, fail-over plans, auditing, session management, and caching are available within the Dynamic Service framework.
Given the experience that Oracle has gained while delivering Oracle Dynamic Services to its customers, Oracle can be make significant contributions to the development of the web services area. Oracle’s main interest in the workshop is to participate in, as well as help the standardization efforts on web service in order to achieve interoperability of web services across different corporations working in this area.