web service example(addition)
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:
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.
Now, the question arises: How can I be sure that my application is
actually calling the Web Service? It is simple to test. Stop your Web
server so that the Web Service cannot be contacted. Now, run the WinApp
application. It will fire a run-time exception. Now, start the Web
server again. It should work.
No comments:
Post a Comment