[Note: This is an excerpt (Sections 22.1–22.4) of Chapter 22, Web Services, from our textbook Visual C# 2005 How to Program, 2/e. These articles may refer to other chapters or sections of the book that are not included here. Permission Information: Deitel, Harvey M. and Paul J., VISUAL C# 2005 HOW TO PROGRAM, 2/E, ©2005, pp.1164–1190. Electronically reproduced by permission of Pearson Education, Inc., Upper Saddle River, New Jersey.]
Creating a Client to Consume the HugeInteger Web Service
Now that we have defined and deployed our Web service, we demonstrate how to consume it from a client application. In this section, you will create a Windows application as the client using Visual C# 2005. After creating the client application, you will add a proxy class to the project that allows the client to access the Web service. Recall that the proxy class (or proxy) is generated from the Web service's WSDL file and enables the client to call Web methods over the Internet. The proxy class handles all the details of communicating with the Web service. The proxy class is hidden from you by default-you can view it in the Solution Explorer
by clicking the Show All Files
button. The proxy class's purpose is to make clients think that they are calling the Web methods directly.
This example demonstrates how to create a Web service client and generate a proxy class that allows the client to access the HugeInteger
Web service. You will begin by creating a project and adding a Web reference to it. When you add the Web reference, Visual C# 2005 will generate the appropriate proxy class. You will then create an instance of the proxy class and use it to call the Web service's methods. First, create a Windows application in Visual C# 2005, then perform the following steps:
Step 1: Opening the Add Web Reference Dialog
Right click the project name in the Solution Explorer
and select Add Web Reference...
Step 2: Locating Web Services on Your Computer
In the Add Web Reference
dialog that appears (Fig. 22.13), click Web services on the local machine
to locate Web references stored on the IIS Web server on your local computer (http://localhost
). This server's files are located at C:\Inetpub\wwwroot
by default. Note that the Add Web Reference
dialog allows you to search for Web services in several different locations. Many companies that provide Web services simply distribute the exact URLs at which their Web services can be accessed. For this reason, the Add Web Reference
dialog also allows you to enter the specific URL of a Web service in the URL
Step 3: Choosing the Web Service to Reference
Select the HugeInteger
Web service from the list of available Web services (Fig. 22.14).
Step 4: Adding the Web Reference
Add the Web reference by clicking the Add Reference
button (Fig. 22.15).
Step 5: Viewing the Web Reference in the Solution Explorer
The Solution Explorer
(Fig. 22.16) should now contain a Web References
folder with a node named after the domain name where the Web service is located. In this case, the name is localhost
because we are using the local Web server. When we reference class HugeInteger
in the client application, we will do so through the localhost
Adding a Web service reference to a project.
Add Web Reference dialog.
Web services located on localhost.
Notes on Creating a Client to Consume a Web Service
The steps we just presented also apply to adding Web references to Web applications created in Visual Web Developer. We present a Web application that consumes a Web service in Section 22.6.
Web reference selection and description.
Solution Explorer after adding a Web reference to a project.
When creating a client to consume a Web service, add the Web reference first so that Visual C# 2005 (or Visual Web Developer) can recognize an object of the Web service proxy class. Once you add the Web reference to the client, it can access the Web service through an object of the proxy class. The proxy class (named HugeInteger
) is located in namespace localhost
, so you must use localhost.HugeInteger
to reference this class. Although you must create an object of the proxy class to access the Web service, you do not need access to the proxy class's code. As we show in Section 22.4.5, you can invoke the proxy object's methods as if it were an object of the Web service class.
The steps that we described in this section work well if you know the appropriate Web service reference. However, what if you are trying to locate a new Web service? Two common technologies facilitate this process-Universal Description, Discovery and Integration
) and Discovery of Web services (DISCO). We discussed DISCO in Section 22.2. UDDI is an ongoing project for developing a set of specifications that define how Web services should be published so that programmers searching for Web services can find them. Microsoft and its partners are working on this project to help programmers locate Web services that conform to certain specifications, allowing developers to find Web services through search engines similar to Yahoo!®
and Google. You can learn more about UDDI and view a demonstration by visiting www.uddi.org
. These sites contain search tools that make finding Web services convenient.