Session 6
Module 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
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.
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…)
The Role of the Proxy Class
STEP
STEP
STEP3: The Web serviceunmarshals
unmarshalsthethe
STEP4:
1:
2:The
The
Theproxy
ASP.NET
proxyclass
classWeb page the
marshals
incoming
return parameters,
SomePage.aspx
parameters runs the
instantiates
and passes method, and
parameter list and makes an back
an instance
HTTP therequest
result
of to
tomarshals
the
the Web
the
theProxy
ASP.NET output
class:
service Web parameters.
page.
sitting
These are
Transaction
on Web Server #2
sent back in an HTTP response.
complete!
Dim objClass = New ProxyClassName
WEB SERVER #1 And calls one of the Web service methods:
objClass.MethodName(paramList)
SomePage.aspx
an ASP.NET Web page
WEB
SERVER #2
PROXY CLASS Web service
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.
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
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
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!
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.
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.
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.
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.
Questions???
Now would be a great time
to ask questions! Don’t you
think? So ask away!