| The
world of web services has taken applications by storm.
From an era where applications were tightly bound
to one another, we have reached a time wherein applications
are delivered as a "service". This concept
of sharing application logic over the internet promotes
a new kind of application development wherein applications
are built as "building blocks" with each
block capable of performing its work in isolation.
This new notion of programming is what is termed as
web services, wherein a piece of
application logic is exposed as a programming element
for others to consume. The concept of web services
is still evolving with Microsoft and a host of other
companies proposing various standards for managing
security, transactions etc.
What is interesting though is that web services need
not mean "external" communication. If you
develop enterprise scale applications made of multiple
modules, you can leverage web services within your
application itself to improve reusability and data
sharing.
Till date, the concept of web services has been centric
around the usage of the same with the .NET Framework.
In this article, I will explain about how to develop
web services using the SOAP Toolkit 3.0
from Microsoft and to also consume the same web service
from a .NET application. I'm assuming that you are
familiar with the various terms associated with web
services like SOAP, WSDL, XML and also VB and VB.NET.
What is the SOAP Toolkit?
The SOAP Toolkit is a component from Microsoft
that enables you to convert existing COM components
into web services and to also communicate with
external service providers using the SOAP protocol.
The SOAP Toolkit consists of the following components:
| 1. |
A client-side component
that allows an application to invoke XML
Web service operations described by a Web
Services Description Language (WSDL) file.
This WSDL file describes the service(s)
and operations of the service offered by
the server. |
| 2. |
A server-side component
that maps invoked XML Web service operations
to COM object method calls as described
by the WSDL and Web Services Meta Language
(WSML) files. The WSML file is necessary
for the implementation of the Microsoft
SOAP Toolkit. |
| 3. |
The components needed
to construct, transmit, read, and process
SOAP messages. These processes are collectively
referred to as marshalling and un-marshalling. |
In addition, the SOAP Toolkit provides a
WSDL/WSML Generator tool that generates
the WSDL and WSML files for you, relieving
you of the tedious process of manually creating
such files.
The SOAP Toolkit is available free of cost
and can be downloaded from the following
site: http://www.microsoft.com/downloads/details.aspx?FamilyID=c943c0dd-ceec-4088-9753-86f052ec8450&DisplayLang=en |
|
Quick Introduction to WSDL
The Web Services Description Language
(WSDL) is an XML-based language for describing
the network services offered by the server. You
use WSDL to create a file that identifies the
services provided by the server and the set of
operations within each service that the server
supports. For each of the operations, the WSDL
file also describes the message format that the
client must follow in requesting an operation.
Quick Introduction to WSML
In addition to creating a Web Services Description
Language (WSDL) file describing the services and
operations on the server, you need to create a
Web Services Meta Language (WSML) file on the
server. A WSML file provides information that
maps the operations of a service (as described
in the WSDL file) to specific methods in the COM
object. The WSML file determines which COM object
to load in order to service the request for each
operation. The use of a WSML file is specific
to the SOAP Toolkit.
Developing a Web Service
To develop a web service using the SOAP Toolkit
that is to be consumed by other applications,
the following steps have to be followed:
| 1. |
Develop a COM component
that contains the necessary code that you
want to be exposed as a web service. |
| 2. |
Generate a WSDL/WSML file
for the COM component. |
| 3. |
Register a IIS virtual
folder to point to the location where the
WSDL/WSML and COM files are present. |
| 4. |
Access the web service
to test out the operations. |
And that's it!! You have a web service that anyone
can consume from any platform as long as they
talk SOAP. In the following sections, we will
outline the details of each of the steps above
and develop a simple web service that can be consumed
by any client.
Before we get down to the details of how to develop
a web service, let's first describe the service.
The service that I'm going to show is a simple
calculator that has two operations called Add
and Subtract. The Add
operation adds two numbers and the Subtract
operation subtracts two numbers. Very obvious,
but I've stated it for completion. Step
– 1: Create a COM Component
The first step is to create a VB COM component
that encapsulates the above two operations. To
do this, follow these steps:
| 1. |
Open Visual Basic 6.0
and create an ActiveX DLL project. |
| 2. |
Change the project name
to MyService and the class
name to Adder. |
| 3. |
Type in the following
code in the code editor. |
Public Function Add(ByVal
Number1 As Integer, ByVal Number2 As Integer)
As Integer
Add
= Number1 + Number2
End Function
Public
Function Subtract(ByVal Number1 As Integer,
ByVal Number2 As Integer) As Integer
Subtract
= Number1 + Number2
End Function
|
| 4. |
Compile the code to a DLL
and store it in a directory. Let's call
this directory as MyService. |
Step – 2: Generate WSDL/WSML
Files
To generate the necessary web service
files for the COM component created in the earlier
step, open the WSDL generator that comes with
the SOAP Toolkit (this step assumes that you have
installed the toolkit). You are now presented
with the following UI.
Click [Next] followed by [Next] (2 times). You
will then see the following interface:
Here, type a name to identify your service (I've
called it MyService) and use
the [Select COM Object] button to locate the DLL
created in the earlier step. Your interface will
now look like this:
Click [Next]. In the next screen, you will see
all the Public Functions exposed
by the COM component. Here, you can select what
functions will have to be exposed for clients
to consume. Since we users to access both the
operations, click on the check-box next to the
MyService node and all the interfaces
will be selected. Your interface will now look
like this:
Click [Next]. In the next interface, you are presented
with the following options:
| 1. |
Listener URI.
Here type in a virtual folder
path that you want clients to use to access
the web site (e.g., MyService). Note that
we have not yet created the virtual folder
in IIS, but you can specify the name here. |
| 2. |
Listener Type.
There are two options (ASP or ISAPI).
Select ISAPI. This will
ensure that any request coming to the URL
with a WSDL extension will be routed to
the SOAP Toolkit and processed. If you select
ASP, the toolkit will auto-generate an ASP
file which makes calls to the web service.
Your interface will now look like this: |
Click [Next]. In this interface, you are given
an option to specify the values for various namespaces.
For this example, ignore this UI and click on
[Next] again. You will be shown a UI where you
can specify the path for the WSDL/WSML files.
By default the directory selected for the COM
component is shown. Accept all the defaults shown
in this interface. Your interface will look like
the following (the directory drive might be different).
Click [Next]. The toolkit will generate the necessary
files into the folder specified above. Click [Finish].
The directory will now contain the following files:
|
Step – 3: Register a Virtual
Folder
To register a virtual folder, open the
Internet Services Manager MMC snap-in and create
a new virtual folder to point to the MyService
folder created earlier (I'm going to call this
virtual folder as MyServices).
Accept all the defaults that IIS presents to you
in the virtual folder creation interface.
Open a command prompt window. Change directory
to the C:\Program Files\MSSOAP\Binaries
directory (the drive may be different
in your machine), and enter the following statement:
soapvdir.cmd
UPDATE Soap3DocSamples
The above command will register the ISAPI DLL
that will handle requests for the web service.
|
Step – 4: Test the Web Service
Now we are ready to
test the web service. Testing can be done by using
a small VBS script. Type in the following code
using any text editor (you need to substitute
the machine name with your machine name in http://pc-srinivas/...).
Dim
oSoapClient
Dim nResult
Set oSoapClient = CreateObject
("MSSOAP.SoapClient30")
If (Err <> 0) Then
MSgBox
"Initialization of the SOAP Toolkit
failed."
Return
End If
Call oSoapClient.MsSoapInit
("http://pc-srinivas/MyServices/MyService.WSDL",
"MyService", "")
If (Err <> 0) Then
MSgBox
"Error initializing the WSDL file."
Return
End If
nResult = oSoapClient.Add
(3, 4)
MsgBox "Result of 3+4 = " &
CStr(nResult)
Set
oSoapClient = Nothing
|
On running this
VBS, you should see a message-box which shows
the result of the addition. In case you encounter
any errors, verify the virtual folder name in
the VBS file and whether all the necessary files
are present in the virtual folder.
Consuming In .NET
Consuming the above service is very easy in .NET.
All you have to do is, create web-reference and
point it to the WSDL file and you can access all
the methods in the service through the intellisense
feature.
Conclusion
In this article, we have seen how to expose COM
objects as web service components for others to
access. The SOAP Toolkit has many more features
that enable applications to provide very robust
interfaces for application integration and you
are encouraged to try them out. We have just seen
only the basics. The .NET Framework provides lots
more features for web services, but for starters,
the SOAP Toolkit enables applications to interoperate
very easily and communicate with external services,
without resorting to .NET. In subsequent articles,
I will cover more on web-services in the .NET
world.
For comments and suggestions on this article and
on articles that you might want me to explore,
mail me at: srisamp@hotmail.com. |
|