Windows Server 2003 ships with Enterprise UDDI Services, a dynamic and flexible infrastructure for discovering and integrating Web services within your application. Enterprise UDDI Services is a standards-based solution that can be used to run your own UDDI (Universal Description, Discovery, and Integration) directory for intranet or extranet use, making it easier to discover Web services and other programmatic resources. By providing a centralized repository of Web services, Enterprise UDDI Services makes it possible for the developers to easily and quickly find and reuse the Web services available within the organization, allowing them to build and deploy extensible and reliable applications. In this article, we will understand the features of this new capability and demonstrate how it can be used to register and discover Web services. Along the way, we will also see how Enterprise UDDI Services can be accessed from a Web user interface as well as programmatically through the UDDI API.
Enterprise UDDI Services helps companies organize and catalog Web services and other programmatic resources. By applying categorization schemes such as geography, Quality of Service (QoS), or organization in UDDI Services, companies can establish a structured and standardized way to describe and discover services. Enterprise UDDI Services in Windows Server 2003 is fully compliant with UDDI 2.0 specification. UDDI Services store both the technical information to build an application compatible with a Web services interface, as well as the information required to successfully connect to the Web service at run time.
The most common scenarios for Enterprise UDDI Services inside an organization are as follows:
- Developer Reuse—At design time, developers search UDDI Services for Web services and other programmatic resources to reuse in building new applications. UDDI Services exposes all of the information needed to invoke a service, making it easy for the developer to integrate the service into an application. UDDI Services provides developers with a central repository of service description and technical binding information, making it easier to reuse existing services and publish new services based on standard and custom categorization schemes. Because of the seamless integration with Visual Studio .NET and the Office Web Services Toolkit, UDDI Services enables developers to locate and reuse Web services directly from within their application development environment.
- Dynamic Application Configuration—It is also possible to use UDDI at runtime to get the binding information about a Web service and then connect to the service directly. An example of this is a stock broker application that queries UDDI Services first thing in the morning to get configuration information for the different services that are part of the application, such as a stock ticker, or customer service updates.
Installing UDDI Services
When you install Windows Server 2003, it does not install Enterprise UDDI Services by default. To install Enterprise UDDI Services, Select Start->Control Panel->Add Remove Programs. From the Add Remove Programs dialog box, when you click Add/Remove Windows Components, you will be provided with the following dialog box.
In the above dialog box, select UDDI Services from the list of options to install the Enterprise UDDI Services component in your server.
Enterprise UDDI Services Architecture
UDDI Services is a managed code service in Windows Server 2003, meaning that it is completely written using .NET managed code. Enterprise UDDI Services was built using the Microsoft .NET Framework 1.1 and was designed to be hosted in IIS 6.0. The following diagram shows the architecture of Enterprise UDDI Services.
As you can see from the above diagrams, you can leverage UDDI Services either through a Web-based user interface or programmatically through a SOAP interface. The important components of the UDDI Services are:
- Clients: There are two types of clients—Browser clients and Web service clients. The browser clients can navigate to the ASP.NET Web pages that are available once you install the Enterprise UDDI Services component in your machine. This Web-based interface provides capabilities for searching, publishing, and coordination features that are compatible with browser clients such as Internet Explorer 4.0, or later, and Netscape Navigator 4.5, or later. The Web service clients can directly invoke the Web services exposed by the Enterprise UDDI Services.
- UDDI Request Manager: UDDI request manager receives the incoming requests from the ASP.NET pages or the Web service classes and invokes the appropriate methods of the UDDI class library.
- UDDI Class Library: This class library is a core component that encapsulates all of the functionalities required for interacting with the database server.
- Database Server: As the above diagram shows, you can host the database either in MSDE or SQL Server depending on the scalability requirements for your enterprise. By default, UDDI Services uses MSDE as the data source.
Now that we have had an overview of the different components of Enterprise UDDI Services, let us consider an example in which we will publish a Web service with UDDI through the Web interface and then programmatically query the UDDI Services and get information about the registered Web service.
Web Services Publishing with UDDI
In this section, we will walk through the steps involved in publishing a Web service with the UDDI interface. Before we move on to look at that, let us outline the development steps one has to follow before publishing a Web service with UDDI.
- Developer creates the core functionality of the service.
- Writes a SOAP wrapper for the core functionality.
- Creates a WSDL service description. It is often possible to do this using an automated service.
- Install the Web service on a new or existing Web server.
- Publish the specifications of the Web service with Enterprise UDDI Services.
In this section, we will use the UDDI Web interface for publishing the Web service in the Enterprise UDDI Services. For the purposes of this example, we will publish a Web service named http://localhost/MyProjects/SimpleWebService/HelloService.asmx in the Enterprise UDDI Services using the Web-based user interface. Let us start by navigating to the Enterprise UDDI Services default Web site by typing in http://localhost/uddi in the Internet Explorer address bar. If you have enabled SSL when installing UDDI Services, this URL will obviously be https://localhost/uddi.
- Click the Publish hyperlink in the home page. In the resulting page, click on the Providers tab and add a new Provider by clicking on the Add Provider command button.
- Once you add a new provider, it should look like the following. In this example, we have added a new provider named MyProvider.
- If you click View in the above screen, you will be taken to the following screen where you can optionally specify information such as Contacts, Identifiers, Discovery URLs, Relationships, and so on. We will just add the Categories information for this provider to associate the provider with the specific category.
- In the above screen, click on the Categories tab and Select Categorization scheme by clicking on the Add Category command button. For this example, we will specify the categorization scheme as uddi-org:types and then select Categorization (taxonomy) as the subcategory.
- After adding the categories information, the output should look like the following.
- Now that we have associated the Categorization scheme for the provider, let us publish a Web service by clicking on the Services tab in the above screen.
- In the Services screen, click on the Add Service to publish our new Web service. When you do this, by default, it will create a service named (New Service Name). Click on the Edit command button to change the name of the service. For this example, we will call the name of the service Simple Service. After adding the service name, you can also optionally add a description for the service. After adding the above information, you should see the following screen.
- Now that we have defined the service, we can now go ahead and specify an access point (location of the Web service) or the binding information for the service. To do this, click on the Bindings tab in the above screenshot and then click on the Add Binding command button to specify the access point for the Web service. For this example, we will specify the access point as http://localhost/MyProjects/SimpleWebService/HelloService.asmx.
- After specifying the Web service access point, you can also optionally add a description about the Web service.
- The final step is to add the instance information or a tModel (that provides technical information, such as instance parameters, or links to programmatic descriptions) for the Web service. Before you can associate a tModel with the web service, you need to create the tModel. To create a new tModel, click on the tModels node in the treeview. In the displayed screen, click on the Add tModel command button, and then specify all the required information. For the purposes of this example, we will create a new tModel named Simple Service tModel. Once you create a new tModel, the output should look like the following.
- Now that we have created the tModel, we can associate the tModel with the access point of the Web service. To do this, click on the Instance Info tab and then click on the Add Instance Info command button to add the instance. When you do that, you will be provided with a screen wherein you can search for a tModel with the specific name. In the search textbox, enter "Simple" as the search string and click on the Search command button and you will get the following output.
- In the above screen, click on the Simple Service tModel hyperlink to associate the tModel with the access point.
That's all there is to publishing a Web service with the Enterprise UDDI Services.