SOAP::Lite for COM interface
============================
SOAP::Lite for COM interface gives you ability to access SOAP services
from your COM applications. Examples in Visual Basic, Excel/VBA, Perl,
JavaScript and ASP are provided.
Interface comes in two versions: standalone and minimal.
Both versions were tested on Windows 2K and XP, but should work on
Windows 9x/Me/NT/2K/XP.
Minimal version requires Perl installation, but comes in a small size.
Standalone version doesn't require ANYTHING (including Perl), but comes
as one big dll. Both libraries are compiled using the latest version of
ActivePerl available (5.8.6 build 811).
Standalone: http://www.soaplite.com/download/SOAP-Lite-COM-standalone-latest.zip
Minimal (Perl required): http://www.soaplite.com/download/SOAP-Lite-COM-minimal-latest.zip
You may create your own version (all source code and batch files are provided),
but it'll require PerlCtrl utility that comes with Perl Development Kit
from ActiveState (http://activestate.com/). Batch files are written for the
latest PDK version (v6). The library can ONLY be created on Windows NT, 2K, or
XP, but will work on any Windows platform.
INSTALLATION
To register library:
regsvr32 Lite.dll
You can now try out the example programs.
To unregister library:
regsvr32 /u Lite.dll
VISUAL BASIC EXAMPLES
remote.vbs and temper.vbs connect to remote services, delayed stock
quotes and temperature conversion.
local.vbs connects to local ASP server.
VISUAL BASIC, PERL AND JAVASCRIPT EXAMPLE
These examples (states.vbs, states.pl, states.html) connect to the local
SOAP server and call service that will return name of the state.
C# EXAMPLE
remote.cs example connects to remote service (XMethod.com) which echoes
back string 'Hello'.
MICROSOFT EXCEL EXAMPLE
Open the Excel (states.xls) document. Be warned, this document contains
macroses, so you can get the warning.
If you want to run examples you need to enable macroses. For those who
don't trust anybody code of macroses is provided in states.vba file, so
they can disable macroses and add them from this file.
By default this example will connect to local SOAP server
(see VISUAL BASIC SERVER EXAMPLE). You may alter the address by
changing parameter for proxy() method.
Supply a number of state and click 'Get State Name' button.
VISUAL BASIC SERVER EXAMPLE
You may start local SOAP server by running soap.vbs script. By default
server will accept requests on 'http://localhost/', but you can modify
this URL. Probably you'll also need to modify dispatch_to() parameters
where you can specify path to your Perl modules.
ASP SERVER EXAMPLE (VBScript and PerlScript)
Example of ASP SOAP server is provided. This implementation doesn't
require ROPE or MSXML dlls, so all that you need is register Lite.dll
and put soap.asp and/or soap_perl.asp in appropriate place (for example,
c:\inetpub\wwwroot\).
Now you can direct your SOAP requests to http://localhost/soap.asp
(VBScript) or http://localhost/soap_perl.asp (PerlScript).
XML-RPC examples (VBScript)
Example of XML-PRC client is provided. You can use XML-RPC in a way you
use SOAP protocol, only instead of new() method xmlrpc() method should
be called to create an object. For example:
MsgBox CreateObject("SOAP.Lite").xmlrpc( _
"proxy", "http://betty.userland.com/RPC2" _
).call("examples.getStateName", 25).result
ISSUES AND LIMITATIONS
HASHES
Since not all languages have primitive data type that is equivalent to Perl's
hashes, hashes don't map neatly between Perl and languages like Visual Basic
and Visual C++. However, SOAP::Lite derived a way to move hashes around.
hash() method allow you create hash and manipulate it.
If your Perl program returns a hash reference, it'll be wrapped in object
around it. This wrapper object allows you to manipulate the hash in the
host language.
Set hash = CreateObject("SOAP.Lite").hash("a", 1, "b", 2)
hash.c = 3
See hash.vbs for example that moves hashes around.
See hashecho.cvs for hash of hash example.
ARRAYS
COM interface provides a simple way of returning arrays to the host language.
Instead of returning an array, return an array reference (such as \@myarray
instead of @myarray). when you return an array reference from a subroutine,
it is automatically converted into an array in the host language.
Although an array can be passed to a SOAP::Lite COM interface, a reference to
the array can not be passed. Therefore any manipulation of the array elements
must be returned to the caller.
REFERENCES
When you pass a reference (to an array, scalar, or hash) to, or return a
reference from a COM interface, a copy of your data is passed, not a true
reference to your data. Thus, when you manipulate the data from within a
COM interface, you are not manipulating the calling script's data.
The ability to use references in a traditional manner will be addressed
in a future versions.
CONTEXT
How do I call a method in a list/array context?
You can coerce any method call into a list context. Instead of invoking:
Dim arrayFoo
arrayFoo = myPerlObj.some_method()
Use the List property to invoke the method:
Dim arrayFoo
arrayFoo = myPerlObj.List.some_method()
How do I call a method in a scalar context?
By default, methods are invoked in a scalar context. If, for some reason,
you find that you need to explicitly invoke a method in a scalar context,
you can invoke the method on the Scalar property of the object. Instead of:
cntFoo = myPerlObj.some_method()
Use the Scalar property to invoke the method:
cntFoo = myPerlObj.Scalar.some_method()
MORE INFORMATION
For more information, see http://aspn.activestate.com/ASPN/docs/PDK/6.0/PerlCtrl_overview.html