in an ideal world I would use remoting, but unfortunately the compact
framework does not support remoting, so I am stuck with web services.
Ive managed to get it to work, although I have had to implement the same
thing using arrays.  I could always use a web service which uses
remoting to communicate with my server but I do not wish to enforce IIS
be running and a web service installed.

There is an article on MSDN which is doing a similar thing to what I am
doing using the same approach.   Pure coincidence!

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncodef
un/html/code4fun06272003.asp


thanks

simon


-----Original Message-----
From: Moderated discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Mike Woodring
(DevelopMentor)
Sent: Friday, 18 July 2003 11:40 PM
To: [EMAIL PROTECTED]
Subject: Re: SOAP Remoting, WSDL and [NonSerialized] attribute problem

> The 'add web reference' wizard works in this case when the objects do
> not contain complex data types.  I have tested with success this
> approach, my understanding is that it is simply a remoted
> object using a
> SOAP formatter, which is essentially what a web service is, RMI calls
> returning SOAP.

My point was that the add web reference wizard is not intended to be
used with
remoting endpoints.  So any success you have with it is just a case of
you
getting lucky.  And by extension, and problems you have when you attempt
to use
the tool in a manner it's not designed to support, you're going to be on
your
own.

> As for SoapSuds.exe, I have no idea
> what that is so ill do some reading :)
>
> Oh, on a side note.  I am not using wsdl.exe to generate the
> wsdl.  The
> wsdl is found in client projects WebReferences sub folder.  I assumed
> the remoted object is returning the wsdl when I specify the wsdl query
> string attribute on the link below.
> http://<your_ip_address>:1234/GreetingManager.soap?wsdl
>

When you use the add web reference wizard, you are indirectly using
wsdl.exe.
You can use it from the command line as well.  It's a program that's
designed to
take either a dll name or endpoint url as input *that refers to an xml
web
service* and produce client-side proxying code and/or wsdl as output.
Think of
the add web reference wizard as just being a fancy way to run wsdl.exe
w/o using
the command line yourself.

Soapsuds.exe is the counterpart to wsdl.exe for the remoting world.  It
takes an
assembly name or endpoint url as input and also generates client-side
proxying
code as output; but it assumes it's talking to a remoting endpoint.

The 10k summary is that xml web services and remoting take different
approaches
to soap (document/literal for web services, rpc/encoded for remoting)
and which
type system governs their operations & parameters (xml schema for web
services,
clr type system for remoting).  Each client-side tool (wsdl.exe and
soapsuds.exe) are then built to recognizing & deal with the types of
wsdl being
returned by their corresponding servers.

So when you point wsdl.exe (add web reference) to a remoting endpoint,
things
don't work very well due to the giant mismatched understanding each side
is
operating on (wsdl.exe thinks its talking to a document/literal, schema
driven
web service, but in fact is talking to an rpc/encoded, clr type system
driven
remoting endpoint).  And it just won't work for anything other than the
most
trivial (i.e., useless) scenario.

You can do what you want with remoting, there's just no wizard you can
use in
VS.NET to get the job done.  Start with reading up on soapsuds.exe, but
there
are a number of other approaches possible as well when it comes to
generating
client-side metadata.  A book like "Advanced .NET Remoting" by Ingo
Rammer would
enumerate those approaches for you.

-Mike
DevelopMentor
http://staff.develop.com/woodring

Reply via email to