Database Search Solution
(New Version) Search Control
Free ASP.NET Controls
ASP.NET Media Player Control
Flash Video Player Control
ASP.NET Telecommute Jobs
Free IP Location Lookup
Test .Net Regular Expressions
CSS/Table/DIV Page Layouts
Article Sites Master List
.NET Windows Forms
General .NET Framework
Accepting Credit Cards
Using XML RPC With VB.NET
What is XML RPC?
XML RPC is a standard for calling functions / passing parameters to these functions / retrieving return values from these functions. The caller program and the called function typically exist on separate machines. If a server is available and it provides some functions then a client anywhere can call these functions via a simple HTTP (or HTTPS) URL.
The parameters are sent from the client to the server in a form of XML text. The server then receives the parameters and carries out the actions required by the to be called function. The return value is then returned to the client in the form of XML text as well. All this communication is performed via the more than widely used HTTP (or HTTPS) protocol. It's obvious from the above calling structure that XML RPC is totally platform independent and that it can be employed in virtually any environment due to the simplicity / effectiveness of the calling structure.
This tutorial will teach the reader how to implement an XML RPC capable client from VB.NET application and what the external components that can be used to achieve this target.
XML RPC Server and Client
XML RPC Server
Any kind of web services those are located in a server machine.
XML RPC Client
Is the program located on your machine and sends a request to a web service located on XML RPC server.
In this tutorial we will build a client application and use a test server available for test operations.
XML RPC in Microsoft .NET Framework with VB.NET
Although widely used, there is no native support for XML
RPC in Microsoft .NET. Fortunately, there is a well established XML RPC library
written by Charles Cook specifically for this purpose and called XML-RPC.Net.
XML-RPC.Net is a .NET class library for implementing XML-RPC clients and
Inside the download you will find the 'CookComputing.XmlRpc.dll' which is the DLL / Assembly that represents the xml-rpc.net library. The responsibility of this library is to put your ordinal function call into a form suitable to the used transfer protocol (In other words forms it into a packet), open the connection; send a request to the server containing the requested web service. The server run the request (run the called method) then returns the result to the xml-rpc.net library. The xml-rpc.net library will parse the incoming package, extracts the result from it, and returns it as a normal type to the called method. All the transfers in the above scenario are done using the XML language.
How to setup the XML-RPC.Net library into your VB.NET project?
To make use of the xml-rpc.net library inside your .net project you have to do the followings:
- Put the 'CookComputing.XmlRpc.dll' library in the same
directory with the project's executable file (.EXE).
Now the XML-RPC.Net library is set-up into your project and you can write code to make use of it.
Writing source code that makes use of XML-RPC.Net
We will build a small program that makes a simple addition operation. We will use the test math service available at "http://www.cookcomputing.com/xmlrpcsamples/math.rem"
Open up your Visual Studio 2005 and create a new Visual Basic project. In the 'Solution Explorer' window, left click the project name and click 'Add Reference...' on the appeared pop up menu as shown below.
Figure 1 - The Add Reference dialog box
Click the 'Browse' tab of the 'Add Reference' dialog box. Browse to the project's 'Bin' directory where you put your 'CookComputing.XmlRpc.dll' file. Select it then click 'Ok'. The DLL is now added to the references section of your project.
Design a suitable graphical user interface as the following one.
Figure 2 - Graphical User Interface
From the properties window name the first text box "TB_Num1", name the second one "TB_Num2", name the button "Btn_Add", and finally name the label "Lbl_Result".
Double click the form body to activate the Form1's load event handler, and double click the button to activate its click event handler. Now view the source code file of 'Form1'. At the top of the code file add the following imports statement to removes the need to qualify names when you use any defined methods or types from the referenced DLL.
To be able to perform calls to the needed services you have to do the followings:
Define the following interface outside the "Form1" class scope. Just put it on top of the "Form1" class declaration.
The above lines of code define a new interface called "IMath". Inside the interface is a function called "Add" takes two integer parameters and returns an integer as a result. The purpose of the line above the function prototype is to provide the suitable association between the declared 'Add' function and its counterpart in the test math services. So, when you type "Add(a,b)" in your code the "math.Add" function (which is located at the XML RPC server) will be called instead.
In the "Form1" class define the following variables.
mathProxy As IMath
As you see the first line defines a variable of the type "IMath". The second one defines a "ClientProtocol" variable of type "XmlRpcClientProtocol" which is a predefined type in the "CookComputing.XmlRpc" namespace. The last line defines an ordinary string variable.
In the "Form1_Load" event handler add the following lines of code.
sender As System.Object, _
The first line of code in this function calls the static "Create" method of "XmlRpcProxyGen" to create an instance of a dynamically generated class which implements the interface and derives from "XmlRpcClientProtocol". The second line returns the result of explicitly converting the "mathProxy" into "XmlRpcClientProtocol" type. The third line just assigns the URL of the server providing the XML RPC service. Note that the same URL could be used for a set of services (functions) like 'Subtract', 'Multiply', or 'Divide'.
In the 'Btn_Add_Click' event handler add the following lines of code.
sender As System.Object, _
ClientProtocol.Url = TxtUrl assigns the URL of the test server to the 'ClientProtocol' URL property. In the 'Try' block we assign the two numbers written in text boxes to variables 'a' and 'b'. The mathProxy.Add(a, b) function of the defined 'mathproxy' is called and the result is assigned to the 'result' variable. Then the result is displayed in the label as shown below.
Figure 3 - This simple add operation is done in another server machine not on the current machine that runs the program.
You can download sample Using RPC With VB.NET sample Visual Studio project, used in this tutorial.
comments powered by Disqus