[MOBY-dev] Reminder: Vote async proposal

Pieter Neerincx Pieter.Neerincx at wur.nl
Mon Oct 2 23:14:15 UTC 2006


Hi Johan,

On  02 Oct 2006, at 21:36, Johan Karlsson wrote:

> Hi Pieter,
>
> Sorry to hear that you have a negative opinion of the proposal.

It's not that dramatic. Like I said I'm very happy the people at the  
INB took the effort to write a proposal (twice!) for asynchronous  
service behaviour. I also think using WS Adressing and the WSRF  
standards is a good idea and the big picture of how to implement this  
for BioMOBY looks good! But you have called a vote on the current  
version of the proposal and I can not vote yes for 97%. It's either a  
yes or a no.

> From our point of view, the details you are mentioning are minor (in
> the sense that they are simply choices where to place the  
> information).

Correct.

> The same information is sent, the number of SOAP calls are the same.

Indeed.

> It is not more (or less) optimal to send the queryIDs in the SOAP  
> header
> than it is to send it in the SOAP body, so we do not understand  
> what you
> mean with "sub-optimal".

Ok, let my try to explain with another example then. One of the  
strengths of BioMOBY is the Object ontology which greatly improves  
interoperability. The objects in this ontology are described using  
"self-describing" XML. It is possible though to send for example  
"lagacy" tab delimited data inside a String object. We do have such  
objects for backwards copatibility, but it's not an elegant way to  
send data around. Using tab delimited data defeats the purpose of the  
object ontology as a client can not figure out the relationships  
between the data within the tab delimited text block. A client has no  
way to figure what is in column 1,2,3, etc. and the data from column  
2 can not easily be parsed using an XML parser to send it as input to  
another service. Surely you can write a rather simple piece of code  
that uses a regular expression to fetch the values from column 2 wrap  
it in new XML tags and send it to the next service and although this  
is not rocket science it's not elegant and it hampers interoperability.

In the current proposal the queryIDs jump around the XMl as part of  
an element name, as an attribute and as part of raw text. Especially  
the resource properties are problematic in my point of view. You are  
doing something similar to wrapping tab delimited data when you combine:
* the kind of resource property you want to request (status or result)
* with the ID of an individual job of a batch (queryID) and send  
these merged as a text string like in:
<GetResourceProperty>status_queryID01</GetResourceProperty>,
<GetResourceProperty>status_queryID02</GetResourceProperty>,
<GetResourceProperty>status_queryID03</GetResourceProperty>, etc.
and
<GetResourceProperty>result_queryID01</GetResourceProperty>,
<GetResourceProperty>result_queryID02</GetResourceProperty>,
<GetResourceProperty>result_queryID03</GetResourceProperty>, etc.

Surely you can write code to fetch the raw text from a node and use a  
regular expression to split on "_" and hence seperate the kind of  
resource property requested from the job ID, but just like with tab  
delimited data it's an ugly approach to put different types of data  
inside raw text. You lose the semantics and it's not necessary! Some  
time ago I send some XML examples to show that with some minor tweaks  
to the XML passed around we can still use WS addressing and WSRF and  
make sure the queryIDs remain attributes like with the current  
synchronous services. It makes the XML more consequent and less  
confusing.

> As we wrote before, it is possible (you agreed with this also earlier)
> to implement a getResourcePropertyDocument operation in the future  
> with
> the approach in the proposal.

True, but with the current proposal you would have to generate a  
ResourcePropertyDocument dynamically for each service invocation,  
whereas with a few minor tweaks you can have a static  
ResourcePropertyDocument for a service which is the same for each  
invocation. It's not rocket science to create a  
ResourcePropertyDocument for each service request, but it is simply  
unnecessary overhead.

> With only two properties named "status"
> and "result", the structure would be more "fixed", but the values must
> still be put there by the service, so the document is not "static" but
> must be dynamically generated.

No, the ResourcePropertyDocument would be static if the queryIDs move  
to the EPR. Making the actual request to get resource properties  
would be a dynamic thing as the queryIDs have to be there somewhere  
in the data structure, but if they are part of the EPR a client can  
simply take them from the successful service invocation and echo them  
back. This would simply require less logic.

Finally I feel the current proposal is sub-optimal because, the  
result XML from an asynchronous service is slightly different from  
the XML produced by a synchronous service. For an asynchronous  
service result there are extra and redundant tags. Having a few more  
tags makes life not impossible - the prototype surely works - but  
again I think it's ugly and most of all not necessary. With a few  
minor tweaks the results of asynchronous and synchronous services can  
be exactly the same which is more transparent in my point of view.

Since it requires only minor tweaks to the XML that is send around to  
make the asynchronous service behavior more transparent, I assume it  
won't be a big deal to change the proposal and the prototype, but  
please correct me if I overlooked something here...

Hope it's more clear now and with kind regards,

Pi


> With dynamic property-names the client
> must construct these names by appending the queryID to status or  
> result
> but this is really, as you put it, far from "rocket-science".
>
> All these details are hidden by API functions (that we are providing),
> so it is not critical to change in the future if necessary.



> Kind regards,
> Johan
>
>
> Pieter Neerincx wrote:
>> Hi,
>>
>> Well, I read the proposal and the involved standards. I think it's
>> very important to have a standard for asynchronous services and the
>> process of getting there already took a lot of time. I also think
>> that such a standard should be very robust and ready for the future.
>> Adding things shouldn't be too much of a hassle, but once we
>> implement this it will be a pain if we have to modify it in such a
>> way that all asynchronous services "break". So I think this standard
>> should be damned good from the start :).
>>
>> As mentioned before I feel the way the queryIDs are passed around in
>> the XMl is sub-optimal, making asynchronous service behaviour
>> unnecessarily complicated. More explicitly with what I understand
>> from the WSRF standard I'm not comfortable with "dynamic" resource
>> properties (individual resource properties for status / fetching
>> results for each individual queryID). Therefore - although I like the
>> big picture - I vote NO on the current proposal.
>>
>> I will support any proposal that gets accepted for the sake of
>> interoperability as this is paramount for BioMOBY, but I would prefer
>> a more elegant solution.
>>
>> Cheers,
>>
>> Pi
>>
>> On 2-Oct-2006, at 3:14 PM, Martin Senger wrote:
>>
>>
>>> Well, I am still not sure that I understand the proposal fully (not
>>> because
>>> it is a bad proposal but because I have  not spent enough time on
>>> it). But I
>>> believe fully in the wisdom of our Spanish colleagues, the wisdom I
>>> hope to
>>> learn when I will be implementing the async behaviour in Moses) -  
>>> and
>>> therefore I vote YES.
>>>
>>> Martin
>>>
>>> -- 
>>> Martin Senger
>>>    email: martin.senger at gmail.com
>>>    skype: martinsenger
>>> _______________________________________________
>>> MOBY-dev mailing list
>>> MOBY-dev at lists.open-bio.org
>>> http://lists.open-bio.org/mailman/listinfo/moby-dev
>>>
>>
>>
>> Wageningen University and Research centre (WUR)
>> Laboratory of Bioinformatics
>> Transitorium (building 312) room 1034
>> Dreijenlaan 3
>> 6703 HA Wageningen
>> The Netherlands
>> phone: 0317-483 060
>> fax: 0317-483 584
>> mobile: 06-143 66 783
>> pieter.neerincx at wur.nl
>>
>>
>>
>> _______________________________________________
>> MOBY-dev mailing list
>> MOBY-dev at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/moby-dev
>>
>
> _______________________________________________
> MOBY-dev mailing list
> MOBY-dev at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/moby-dev

Wageningen University and Research centre (WUR)
Laboratory of Bioinformatics
Transitorium (building 312) room 1038
Dreijenlaan 3
6703 HA Wageningen
phone: 0317-484 706
fax: 0317-483 584
mobile: 06-143 66 783
pieter.neerincx at wur.nl




More information about the MOBY-dev mailing list