Web Services Example:
Based on the Web Service
Architecture we will create following two components as a part of Web Services
implementation
- Service
provider or publisher:
This is
the provider of the web service. The service provider implements the service
and makes it available on the Internet or intranet.
We will
write and publish a simple web Service using .NET SDK.
- Service
requestor or consumer
This is
any consumer of the web service. The requestor utilizes an existing web service
by opening a network connection and sending an XML request.
We will
also write two Web Service requestors: one Web-based consumer (ASP.NET
application) and another Windows application-based consumer.
Following
is our First Web Service example which works as a service provider and exposes
two methods (add and SayHello) as Web Services to be used by applications. This
is a standard template for a Web Service. .NET Web Services use the .asmx
extension. Note that a method exposed as a Web Service has the WebMethod
attribute. Save this file as FirstService.asmx in the IIS virtual directory (as
explained in configuring IIS; for example, c:\MyWebSerces).
FirstService.asmx <%@ WebService language="C" class="FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace="http://localhost/MyWebServices/")]
public class FirstService : WebService
{
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
[WebMethod]
public String SayHello()
{
return "Hello World";
}
}
|
To test a Web Service, it must
be published. A Web Service can be published either on an intranet or the
Internet. We will publish this Web Service on IIS running on a local machine.
Let's start with configuring the IIS.
- Open
Start->Settings->Control Panel->Administrative tools->Internet
Services Manager.
- Expand
and right-click on [Default Web Site]; select New ->Virtual Directory.
- The
Virtual Directory Creation Wizard opens. Click Next.
- The
"Virtual Directory Alias" screen opens. Type the virtual
directory name—for example, MyWebServices—and click Next.
- The
"Web Site Content Directory" screen opens. Here, enter the
directory path name for the virtual directory—for example,
c:\MyWebServices—and click Next.
- The
"Access Permission" screen opens. Change the settings as per
your requirements. Let's keep the default settings for this exercise.
Click the Next button. It completes the IIS configuration. Click Finish to
complete the configuration.
To test that IIS has been
configured properly, copy an HTML file (for example, x.html) in the virtual
directory (C:\MyWebServices) created above. Now, open Internet Explorer and
type http://localhost/MyWebServices/x.html. It should open the x.html file. If
it does not work, try replacing localhost with the IP address of your machine.
If it still does not work, check whether IIS is running; you may need to
reconfigure IIS and Virtual Directory.
To test our Web Service, copy
FirstService.asmx in the IIS virtual directory created above
(C:\MyWebServices). Open the Web Service in Internet Explorer
(http://localhost/MyWebServices/FirstService.asmx). It should open your Web
Service page. The page should have links to two methods exposed as Web Services
by our application. Congratulations; you have written your first Web Service!!!
Testing the Web Service
As we have just seen, writing
Web Services is easy in the .NET Framework. Writing Web Service consumers is
also easy in the .NET framework; however, it is a bit more involved. As said
earlier, we will write two types of service consumers, one Web- and another
Windows application-based consumer. Let's write our first Web Service consumer.
Web-Based Service Consumer
Write a Web-based consumer as
given below. Call it WebApp.aspx. Note that it is an ASP.NET application. Save this
in the virtual directory of the Web Service (c:\MyWebServices\WebApp.axpx).
This application has two text
fields that are used to get numbers from the user to be added. It has one
button, Execute, that, when clicked, gets the Add and SayHello Web Services.
WebApp.axpx <%@ Page Language="C#" %>
<script runat="server">
void runSrvice_Click(Object sender, EventArgs e)
{
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text),
Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id="txtNum1" runat="server"
Width="43px">4</asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id="txtNum2" runat="server"
Width="44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id="Label1" runat="server"
Font-Underline="True">Label</asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id="Label2" runat="server"
Font-Underline="True">Label</asp:Label>
</p>
<p align="left">
<asp:Button id="runSrvice" onclick="runSrvice_Click"
runat="server" Text="Execute"></asp:Button>
</p>
</form>
</body>
</html>
|
After the consumer is created,
we need to create a proxy for the Web Service to be consumed. This work is done
automatically by Visual Studio .NET for us when referencing a Web Service that
has been added. Here are the steps to be followed:
- Create
a proxy for the Web Service to be consumed. The proxy is created using the
wsdl utility supplied with the .NET SDK. This utility extracts information
from the Web Service and creates a proxy. Thus, the proxy created is valid
only for a particular Web Service. If you need to consume other Web
Services, you need to create a proxy for this service as well. VS .NET
creates a proxy automatically for you when the reference for the Web
Service is added. Create a proxy for the Web Service using the wsdl
utility supplied with the .NET SDK. It will create FirstSevice.cs in the
current directory. We need to compile it to create FirstService.dll
(proxy) for the Web Service.
c:> WSDL http://localhost/MyWebServices/
FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
|
- Put
the compiled proxy in the bin directory of the virtual directory of the
Web Service (c:\MyWebServices\bin). IIS looks for the proxy in this
directory.
- Create
the service consumer, which we have already done. Note that I have
instantiated an object of the Web Service proxy in the consumer. This
proxy takes care of interacting with the service.
- Type
the URL of the consumer in IE to test it (for example,
http://localhost/MyWebServices/WebApp.aspx).
Windows Application-Based Web Service
Consumer
Writing a Windows
application-based Web Service consumer is the same as writing any other Windows
application. The only work to be done is to create the proxy (which we have
already done) and reference this proxy when compiling the application.
Following is our Windows application that uses the Web Service. This
application creates a Web Service object (of course, proxy) and calls the
SayHello and Add methods on it.
WinApp.cs using System;
using System.IO;
namespace SvcConsumer{
class SvcEater
{
public static void Main(String[] args)
{
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " +
mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " +
mySvc.Add(2, 3).ToString());
}
}
}
|
Compile it using c:>csc
/r:FirstService.dll WinApp.cs. It will create WinApp.exe. Run it to test the
application and the Web Service.
No comments:
Post a Comment