|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TODAY'S TOP SOA & WEBSERVICES LINKS Web Services Introduction To UDDI
Introduction To UDDI
By: Simeon Simeonov
Nov. 1, 2001 12:00 AM
As we look at the evolution of both object and component programming models it's clear that the concept of an object or component registry is an essential element that facilitates the discovery and use of components. Imagine trying to write Java code without access to a browsable set of JavaDocs. If we consider the Web services concept as an evolution of component programming, then for the purpose of service discovery it's necessary to have access to registries of business and service descriptions that can be browsed and queried. Previous XML in Transit columns discussed the role of Web service discovery from the point of view of both basic and sophisticated Web service usage. Now it's time to look at Universal Description, Discovery, and Integration (UDDI), the specification that governs Web service discovery and the behavior of service registries. In a marked departure from previous columns that have been a product of my own effort, this and my next few columns will be based on the UDDI chapter in a book I'm writing, Building Web Services, with a great team of Web services experts: Doug Davis, Steve Graham, Yuichi Nakamura, and Ryo Neyama from IBM; Toufic Boubez from Saffron Technology; and Glen Daniels from Macromedia. In a service-oriented architecture (see Figure 1) the service registries are operated by brokers. Service providers publish service descriptions to the registries; service requesters query service registries to retrieve one or more service descriptions that meet certain criteria. Service descriptions contain sufficient information to allow service requesters to bind to and invoke Web services.
Service Discovery at Design Time and Runtime
In many cases the service interface definition is used to build a proxy that the application logic uses to invoke the Web service and consume its response. The actual service implementation, including network location and other properties such as which network protocol to use, is left unbound at design time to be determined at runtime. At runtime, then, the application issues a query operation against the service registry to locate one or more service implementation definitions that match the service interface definition used by the application. Based on application logic, such as best price or best terms, the application chooses which Web service to invoke, extracts network location and other information from the service implementation definition, and invokes the Web service. The preferred approach to Web service registries is UDDI (www.uddi.org). It provides sophisticated publish-and-find capabilities and includes much more information than just the service description, including business metadata and taxonomies of businesses and services.
Intoduction to UDDI
Support for UDDI has expanded beyond the original three companies. Currently, the UDDI project (www.uddi.org) involves a community of over 280 companies as of this writing. Version 2.0 of the UDDI specification was released on June 18, 2001. The purpose of UDDI is to facilitate service discovery both at design time and dynamically at runtime. Consequently, the UDDI project runs a public online business (and corresponding services) registry, which first went live on May 2, 2001. This registry is referred to as the UDDI Business Registry. It consists of three replicated registries currently hosted by three companies, Hewlett-Packard, IBM, and Microsoft, called the UDDI Operators. More registry Operators are expected to join the Operators group. Becoming a UDDI Registry Operator involves some strict agreements on data replication, data privacy, and policies. From both a registered business and a user perspective, the requirement is that different Operator registries should be theoretically indistinguishable. Businesses can register with any UDDI Operator, and their information will get replicated to the other Operators' registries. As a result users can search any Operator site and find businesses regardless of which Operator these businesses used to register. There are, however, some subtle issues involved when deciding which Operator to register your business with. For example, some Operators might ask for additional information not required by UDDI (e.g., surveys or marketing). This information is not replicated to other Operators. Also once you register with an Operator, all updates to your information have to be performed through that Operator. The reason is that since different Operators implement different security and authentication policies, authentication information can't be easily replicated. UDDI is more than a business and services registry, however. It also defines a set of data structures and an API specification for programmatically registering and finding businesses, services, bindings, and service types. In typical Web services scenarios, Web service providers will want to publish their business and service descriptions to a registry; and service requesters, whether at design time or runtime, will want to query the registry for service descriptions. The UDDI API specification provides a set of Publication APIs to register services and Inquiry APIs to find services. In addition to providing a programmatic API, UDDI Registry Operators provide a Web-based user interface for registering, managing, and finding businesses and services in the registry. As of this writing, IBM had their UDDI Web site at www.ibm.com/services/uddi and Microsoft at http://uddi.microsoft.com. Of course, all the Operator nodes are accessible from www.uddi.org.
The UDDI Registry Requirements
Common registry requirements for the metadata are:
UDDI Data Structures
Business entity information is conceptually divided into what's commonly known as White, Yellow, and Green Pages. White Pages contain general contact information about the entity. An entry would contain a business name, address, and contact information such as phone, fax, and e-mail. Yellow Pages contain classification information about the types and location of the services the entity offers. A fictitious SkatesTown company could be classified as a sports equipment manufacturer and retailer, and as a skateboard manufacturer and retailer. Green Pages contain information about how to invoke the offered services. If SkatesTown were to offer their catalog online, their Green Pages entry would have a reference to their catalog URL. It's important to note that this is a conceptual model only, and that UDDI doesn't specify any particular storage model for implementing relationships. Conceptually, however, an entity's White Pages entry will contain classification information that points to its place in the various Yellow Pages, and an entity's business service entries will contain implementation information that points to entries in the Green Pages. This is reflected in the details of the UDDI data structures (see Figure 2). The root structure - businessEntity - is used to represent information about an entity or a business. It's also used as a container for business services and, indirectly, for the corresponding implementation and binding details of all the services that an entity provides. The businessService structure describes a logical business service, such as a stock quote service or a securities buying service. Different implementation details and bindings for the same logical service, if offered, are grouped under the same businessService element as a collection of binding templates. In a certain sense, the bindingTemplate structure is the end goal of UDDI. Other structures allow us to get information about businesses, their descriptions, contact information, categorization and taxonomy information, and what kind of services they offer. After a decision is made about using a particular service from a particular provider, however, the bindingTemplate subtree holds the necessary technical information for the service to be invoked. The same logical service can have more than one binding (e.g., SOAP-based, HTTP browser-based, and e-mail SMTP). Each of these bindings is described in its own bindingTemplate structure. This is generally a combination of access-point information and references to predefined technical models. Entries in the Green Pages, where invocation details are described, are actually business-specific binding details for service types and other abstractions defined elsewhere. These reusable abstractions are referred to as technical models and their corresponding UDDI data structure is the tModel. This structure allows industry groups, standards bodies, and individual businesses to specify reusable abstract definitions of service types that others can use and combine, creating in effect a signature for a service. Let's look at the structure of these in a little more detail. Business Entity
UDDI APIs
The Publication API is an authenticated set of operations that allows organizations to publish information, whether business, service, implementation, or service-type specification, to the UDDI registry. Aside from requiring an authentication token and the use of the HTTPS protocol in the authenticated operations, UDDI does not specify an authentication method. Each Operator must provide a mechanism. The Inquiry API is a nonauthenticated public set of operations that allows users to extract information out of the UDDI registry. Inquiries can follow two different patterns: a browsing pattern to find general information (the find operations) usually followed by a drilldown pattern to find specific detail information (the get_Detail operations). Corresponding to the four structure types (businessEntity, businessService, bindingTemplate, and tModel), UDDI provides four save operations (save_business, save_service, save_binding, and save_tModel), four delete operations (delete_business, delete_service, delete_binding, and delete_tModel), four find operations (find_business, find_service, find_binding, and find_tModel) and four get_Detail operations (get_businessDetail, get_serviceDetail, get_bindingDetail, and get_tModelDetail) as shown in Table 1. The save operations can be used to create a new entry or to update an existing one. To create a new entry, the entry identification key parameter is not supplied in the call, but is assigned by the Operator and returned in the Operator's response. To update an existing entry this Operator-assigned key is supplied in the call. The delete operations take the Operator-assigned keys as parameters and remove the corresponding entries from the registry. The find operations are passed a set of search criteria and generally return a (possibly empty) list structure containing information about entries that match the search criteria. The get_detail operations are passed a list of identifiers and return detailed information about the entries referred to by the supplied keys. The API provides one additional get_detail operation, get_businessDetailExt, to allow the retrieval of extended business information from non-Operator nodes that implement these extensions. In addition, since the Publication API is a set of authenticated operations, where authentication is token-based, the API provides two authentication operations, get_authToken and discard_authToken. Finally, the getRegisteredInfo is an authenticated operation that returns all the businessEntity and tModel keys registered by an accredited user. Note that it's possible to perform most of the Publication and Inquiry API functions (some find and get_Details operations) through the individual Operator's Web sites. In addition to being more complete and powerful than what's available through browsers, the API is intended to allow businesses to perform all the operations programmatically to facilitate dynamic (runtime) service discovery.
Authentication
Before being allowed to publish information to an Operator node, a prospective user will need to establish some credentials through an initial preregistration step, which is Operator-dependent. As a result of this initial step, each registering entity is either issued an authentication token (e.g., a certificate) or a user ID and password. To establish appropriate security context to access a registry, a preregistered user has to issue the following message over SOAP to a UDDI Operator:
<get_authToken generic="1.0" xmlns="urn:uddi-org:api" The result of the get_authToken operation is an authToken structure identifying the Operator and providing a token, usually in the form of a UUID, for example,
<authToken generic="1.0" All authenticated operations must include the authInfo element as part of their message over SOAP. For example, a save_business operation for the SkatesTown company might look something like Listing 1. Finally, the discard_authToken operation is used to inform the token issuer that the token is no longer valid and can be discarded. Subsequent Publishing API calls using the same token should be rejected. The token received in the get_authToken operation is passed as a parameter.
<discard_authToken generic="1.0" This has been a whirlwind introduction to the core data structures and APIs of UDDI. The next XML in Transit will look in detail at the magic of tModels and the mechanisms for classification and categorization in UDDI. This is where the true power of service registries lies. XML JOURNAL LATEST STORIES . . .
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK BREAKING XML NEWS |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||