[API] [Standards] Proposed XMPP Extension: IO DATA
Pedro Melo
melo at simplicidade.org
Mon Mar 31 04:57:41 CDT 2008
Hi,
On Mar 30, 2008, at 9:04 PM, Fabio Forno wrote:
> On Sun, Mar 30, 2008 at 8:38 PM, Egon Willighagen
> <egon.willighagen at gmail.com> wrote:
>
>> BTW, let me say that asynchronous RPC support in XMPP is very
>> interesting for scientific workflow environments. This proposal
>> addresses two problems which are important limitations of current
>> approaches like SOAP over HTTP.
>
> Indeed, it's interesting in general ;)
>
>> 1. many different data types. This is particularly a problem in
> [...]
>> 2. asynchronise calls. This is also a big limitation of our current
>> tools. Call-by-reference does solve the problem of HTTP time
>> outs on
> [...]
>> These two items combined, make this proposal an excellent candidate
>> for running webservices in sciences like chemistry and biology.
>
> I understand the scenario, as I've written it's more general than
> scientific or biological computations (e.g send the input events from
> a UI widget placed somewhere to a remote service). Basically you'd
> like to do something like this:
> - retrieve a data scheme from an end point
> - send data to that end point
> - receive (also asynchronously) data from that end point
>
> Let's try to RESTify it in order to have a more general solution:
> - retrieving the data scheme is an operation on a particular node (a
> GET), so we don't need a particular action, just get it from the
> correct node, e.g. GET /nodename/schemata
>
> <iq from="..." to="..." id="..." type="set">
> <rest node="/nodename/schemata" action="get" xmlns="api:rest"/>
> </iq>
I would use type='get' here.
REST allows you to tunnel the PUT/DELETE verbs over POST in case your
transport is "verb-limited" like XMPP (only has get-set mapping to
GET-POST on the HTTP side). So I would use the type attribute for the
action, overloading the set to do DELETE/PUT when the need arises.
Also, not quite sure why you need xmlns='api:rest'. Why not xmlns='/
nodename/schemata' ? You already have the 'to' attribute on the top
level iq stanza to send this to the proper destination.
> - sending data is another operation on the node (the semantics of the
> operation on the data is given by the combination of the data and the
> node): POST /nodename payload
>
> <iq from="..." to="..." id="..." type="set">
> <rest node="/nodename" action="post" xmlns="api:rest">
> <header><!-- optional --></header>
> <body><!-- optional xml payload--></body>
> <rest/>
> </iq>
Same comments above apply here.
Best regards,
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: melo at simplicidade.org
Use XMPP!
More information about the API
mailing list