dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DotGNU]Message passing between webservices


From: Chris Smith
Subject: Re: [DotGNU]Message passing between webservices
Date: Mon, 13 Jan 2003 19:00:11 +0000

You're pretty much hitting all the good bits about webservices here Peter, 
and I think we're just crossing terminology a bit :o) 
I like the property exposure thing if we can make it automatic.

Let's see ...

On Sunday 12 January 2003 16:53, Peter Minten wrote:
> I've looked into the DGEE code, DGEE uses the following 2 attributes:
>
> WebMethod with arg Description.
> WebService with args Description and Namespace.
>
> The WebMethod attribute seems to be a bit like the PublishedMember
> attribute I use (the one with description="foo", :-), but PublishedMember
> is meant for variables too.

Ok.  Think we're almost talking about the same things really, except that 
you've the idea of exposing properties too.... could be good, but we'll need 
some trickery.

This email has just got quite long.  Sorry.  Lots of things to put on the 
table!

> * Webservices are not defined by putting [Webservice] above a class but by
> creating an webservice object.

You need to put the attribute in so you've something to reflect over.

> * A class becomes accessible as part of a webservice when you put
> [PublishedClass(ws="webservicename")] above it. The description can also be
> set in the PublishedClass attribute.

The WebService attr currently defined is there to expose the class, and to 
give it a more appropriate name (the existing class name may be very 
inappropriate). ie to publish it.

WebService <=> PublishedClass.  No difference (apart from spelling :o) )

The WebMethod attr is there to expose methods of published classes.

> * A member of a published class becomes automatically part of a webservice
> unless [UnpublishedMember] is put above it. The description of a published
> member can be set using [PublishedMember(description="foo")]

You can't just let the method be exposed by default because the name of it 
will probably not be appropriate for a webservice method.  Also when you 
write a class it generally has a lot of methods in it, but only a handful are 
publishable.  You should force the author to explictly publish what they 
intend to publish.

To be truthful, WebService and WebMethod have been leeched from .net because 
I wanted the API to resemble all the documentation and books out there.
Their webservice API (attributes etc) has been very well thought out and is 
pretty much generic - though it does contain much that is SOAP specific, 
granted.  If there is no reason to discard their naming conventions then I 
strongly suggest that we don't, otherwise webservices for .net will not run 
under DotGNU.

I'm thinking that we basically want to derive from MS's attributes as much as 
we can, and then add our own functionality etc on top.  Thus .net services 
have a chance of running under DotGNU, but not the other way round, which was 
our baseline anyway.

So is the following not true?

> PublishedClassAttribute

= WebService

> PublishedMethodAttribute

= WebMethod

> UnpublishedMethodAttribute

Not required.  If you don't explicitly expose a method - it won't be seen.


Now the interesting bit!

> > Except for one major difference ... XmlRpc does not allow you to call
> > instance methods that well ... So the get_Property,set_Property does
> > not work very well ...

XmlRpc was only used 'cos it was quick to implement.  It got us going and 
started this discussion :o)
However, as the protocol stuff is (or will be....) handled by the inherited 
interface classes. we can provide whatever transport protocol we like as the 
above (attributes) will sit on top.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]