Calling a Web Service from an Asp.Net Web Page

15
Calling a Web Service from an ASP.NET Web Page

description

Ideally the developer calling a Web service from an ASP.NET Web page should be able to work with the Web service using the same syntax as if she was working with a component local to the Web server. http://www.apextgi.in

Transcript of Calling a Web Service from an Asp.Net Web Page

Page 1: Calling a Web Service from an Asp.Net Web Page

Calling a Web Service from an ASP.NET Web Page

Page 2: Calling a Web Service from an Asp.Net Web Page

Tasks for this Module

• How we’d ideally call a Web service from an ASP.NET Web page

• Creating a Proxy class with wsdl.exe– Using the Proxy class– Examining the Proxy class– Examining wsdl.exe

Time allotment for this module and questions: 75 minutes

Page 3: Calling a Web Service from an Asp.Net Web Page

Calling a Web Service from an ASP.NET Web Page

• Ideally the developer calling a Web service from an ASP.NET Web page should be able to work with the Web service using the same syntax as if she was working with a component local to the Web server.

• Since calling a Web service involves marshalling the ingoing parameters properly and being able to marshal the return parameters properly, obviously performing such actions in an ASP.NET Web page would make the syntax differ wildly from using a local component, where such explicit marshalling was not needed.

Page 4: Calling a Web Service from an Asp.Net Web Page

Enter the Proxy Class

• In order to achieve the end goal of treating a Web service call just like a call to a local component, the .NET framework contains a command-line program called wsdl.exe (Web Service Description Language), which creates a proxy class for a specific Web service.

• This proxy class serves as an intermediate between the ASP.NET Web page and the Web service. (The diagram on the next slide should help clarify this…)

Page 5: Calling a Web Service from an Asp.Net Web Page

WEB SERVER #2

Web service

WEB SERVER #1

SomePage.aspxan ASP.NET Web page

PROXY CLASS

The Role of the Proxy Class

STEP 1:

The ASP.NET Web page Some Page.aspx instantiates an instance of the Proxy class:

Dim objClass = New ProxyClassName

And calls one of the Web service methods:

objClass.MethodName(paramList)

Page 6: Calling a Web Service from an Asp.Net Web Page

Creating a Proxy Class• Creating a Proxy class involves three steps:

– Create the source code for the class, which depends upon the WSDL of the Web service.

– Compile the class into a DLL– Copy the DLL to the \bin directory

• Once these three steps are complete we can use our Proxy class to access Web service methods as if they were methods of a local component!

Visual Studio.NET can perform all of these tasks with the click of a button. We will examine how to do it via the command-line for

those who don’t have VS.NET installed.

Page 7: Calling a Web Service from an Asp.Net Web Page

Creating a Proxy Class(Continued…)

• When creating a proxy class, you must specify the WSDL for the Web service. This XML-formatted file contains information on the incoming and outgoing parameters. See http://localhost/UCSDTeaching/Session6/SimpleWebService.asmx?WSDL

• Create the proxy class by simply calling wsdl.exe with the full URL of the WSDL as the parameter:

Wsdl http://localhost/UCSDTeaching/Session6/SimpleWebService.asmx?WSDL

Page 8: Calling a Web Service from an Asp.Net Web Page

Creating a Proxy Class(Continued…)

• Once we have the source code we need to compile this code into a DLL.

• Finally, once we have the Proxy class compiled into a DLL, we need to move it to the \bin directory, since that is the location where our DLLs need to reside to be picked up automatically by ASP.NET.

Run cl.demo1.txt demo

Page 9: Calling a Web Service from an Asp.Net Web Page

Using the Proxy Class

• Once we have the Proxy class compiled and the DLL in the \bin directory, we can use it through an ASP.NET Web page.

Show CallSimpleWS.aspx Demo

• Note how, when examining the syntax, it is impossible to tell if the instantiation of the ucsd.Math class is referring to a local or remote component. Mission accomplished!

Page 10: Calling a Web Service from an Asp.Net Web Page

Examining the Proxy Class

• Let’s take a moment and examine Math.cs, the source code for the Proxy class created by wsdl.exe

Examine Math.cs

• Note that the Proxy class is in C# - wsdl.exe provides a command-line switch to specify what language to use.

• Note that a class is created with the same name as the Web service class (Math, in this example). Also, for each public Web method there is a public method in the Proxy class with the correct input and output parameters.

Page 11: Calling a Web Service from an Asp.Net Web Page

Examining the Proxy Class(Continued…)

• Note that in this Proxy class the Web service is being called using the SOAP request/response payloads.

• All of the complex behavior in hidden in macros or through methods defined in base classes from which our custom Math class inherits from.

Page 12: Calling a Web Service from an Asp.Net Web Page

Examining wsdl.exe• Wsdl.exe contains only one required parameter,

a URL or path to the WSDL for the Web service. The following optional parameters can be specified:– /language:language – specifies what language the

Proxy class should be created in (vb/cs/js).– /protocol:protocol – specifies the payload protocol

to be used (SOAP, HttpGet, HttpPost)– /namespace:namespace – the namespace of the

generated Proxy class.– /out:filename – the filename of the Proxy class.

Page 13: Calling a Web Service from an Asp.Net Web Page

Module 2 in Conclusion• Ideally, we’d like to be able to call Web services from an

ASP.NET Web page in an identical fashion to which we call local components.

• Creating a Proxy class allows us to call a Web service’s methods as if the Web service resided locally. The Proxy class handles the actual HTTP request as well as the marshalling of the input and output parameters.

• The command-line program wsdl.exe can create the source code of the Proxy class for us based upon a Web service’s WSDL. Once this class is compiled and placed in the \bin directory, it can be used through an ASP.NET Web page.

Page 14: Calling a Web Service from an Asp.Net Web Page

Questions???

Now would be a great time to ask questions! Don’t you

think? So ask away!

Page 15: Calling a Web Service from an Asp.Net Web Page