Step 3: Create the WSDL and WSML Files and Expose Them to the Internet Once you've compiled this VB code into a DLL, you have a COM component that contains a method called QuoteServiceController. This method takes a ticker document as its input parameter and returns the quotes document. The next step is to enable the Web service on this COM component, and expose the QuoteServiceController method. To enable the Web service on the COM component, you must create aWSDL file to describe the service provided in this component, and a WSML file to map the service in WSDL to the component. Creating these two documents can be an extremely tedious task. However, it only takes few clicks to create them if you use the WSDL generator that comes with SOAP Toolkit 2.0. SOAP Toolkit is a separate product, and you can download it free from the Microsoft Web site. After you've installed SOAP Toolkit 2.0, open the WSDL generator by selecting Start . Programs . Microsoft SoapToolkit (see Figure 10-37). In the first SOAP Toolkit window, specify the name of the Web service and .dll file for which you'll be generating the WSDL file, and click Next to proceed. Figure 10-37. Defining the name and COM component for the Web service When you click the Next button, the wizard will examine and gather information about the interface and methods of the COM component. In the window shown in Figure 10-38, the SOAP Toolkit displays the possible interfaces and methods you can expose for clients to access. Click the QuoteServiceController method, and click Next to proceed. Figure 10-38. Selecting the method to expose through SOAP Toolkit In the next window, shown in Figure 10-39, you need to provide the Uniform Resource Identifier (URI) of the listener file and the type of the listener. The listener can be either an ASP file or ISAPI .dll, as these are the files responsible for accepting the HTTP requests from clients and returning the results of their requests back to clients. Figure 10-39. Configuring the SOAP listener for the service The URI information will be saved to the WSDL file so that clients know where the entry point for the service is. The SOAP Toolkit Wizard will automatically generate the ASP file or ISAPI .dll at the end. You must then copy the files to the location of the URI you specify in this window. Click Next to proceed. In the next window, specify the location where you want the SOAP Toolkit Wizard to save the generated file. Click Next until you finish. The SOAP Toolkit Wizard has just created three files: QuoteService.wsdl, QuoteService.wsml, and QuoteService.asp. The last thing you need to do before you can start testing is to copy these three files to the file directory that http://w2kserver/QuoteService references. Test the Web Service To test the integration between the Web service and BizTalk Orchestration, you can start the QuoteServiceClient.skx file (included as part of the source code, available on the Downloads section of the Apress Web site, at http://www.apress.com). The QuoteServiceClient schedule will call the QuoteServiceClient component, which will make a SOAP call to the QuoteServiceController method hosted as aWeb service under the http://w2kserver/QuoteService directory. QuoteServiceController will then start the QuoteService.skx file (included in the source code) to process the document and return the quotes back to the QuoteServiceController method, which in turn will pass the quotes back to the QuoteServiceClient component hosted inside the QuoteServiceClient XLANG Schedule. In my case, both the QuoteServiceClient schedule and the QuoteService schedule are on the same machine. However, the communication between them is through aWeb service. When I start the QuoteServiceClient schedule, my XLANG Event Monitor shows what you can see in Figure 10-40. Figure 10-40. QuoteServiceClient schedule is calling the QuoteService schedule through aWeb service. In this test, you learned that you can make an XLANG Schedule access aWeb service through a SOAP client component, and you can also turn an XLANG Schedule into aWeb service by exposing it through a COM component that controls it.