[MOBY-l] service = method ?
Mark Wilkinson
mwilkinson at gene.pbi.nrc.ca
Fri Oct 25 20:28:22 UTC 2002
Lukas Mueller wrote:
>
> On Friday, October 25, 2002, at 01:22 , Martin Senger wrote:
>> Could they really? Only if the operations return a handler to an
>> object
>> which must be used in the next operation call. Which means that the
>> operations are *not* independent - but at the moment they are still
>> registered as individual services.
>
>
> Couldn't this be handled on the object level instead of moby central (if
> I understand the problem correctly)? Instead of a real moby object, the
> service would return a moby object (of the appropriate type -- such as
> Sequence etc.) that contains a pointer to the object that can then be
> fetched with a defined moby service.
> I'm not sure if the discussed scenarios wouldn't make service discovery
> more complex?
I tend to agree... but being more complex is not necessarily bad if it
solves a problem that we feel it is within the scope of this project to
solve.
Similar issues have come up a couple of times on the list in the past
few months - e.g. Paul G. wanting MOBY Services that do simple
registration of information with no 'real' output (other than, perhaps,
an "OK"). I'm not sure that this scenario is what we had in mind when
we planned MOBY, but that doesn't make it an invalid request if we can
find a simple way to accomodate these things.
In my opinion, we can approach such requests from several different
perspectives:
(1) These services are not "unusual", and that the MOBY paradigm of
Object_In -> transform -> Object_Out is just too simplistic to
accomodate the wide variety of services that are out there, and hence we
need to re-think it entirely from scratch... perhaps there is another
way to achieve the "awesome power of MOBY" using a more inclusive
architecture
(2) The MOBY paradigm is sufficient to accomodate these "unusual"
services, as long as the service provider uses their imagination and
finds a way to fit their service provision into our model
(3) The number of "unusual" services is insufficient for us to break our
heads worrying about them
(4) The "unusual" cases are providing services, or providing them in
ways, that are beyond the scope of what the project is trying to
accomplish (here I am thinking of the conspicuous and perfectly valid
link on the Gene Ontology page to "What GO is *not*")
I think that all four of these persepctives are valid in one way or
another. MOBY, similar to GO and DAS, must be aware of, and focus on,
the problem it is trying to solve, and more importantly understand what
problem it is NOT trying to solve - otherwise we will end up paralyzed
in the planning stages as we try to accomodate everyone and their dog.
Similarly, service providers have to accept that their "status quo",
while efficient and perfectly designed for their particular purpose, may
have to be re-thought if they want to play the MOBY game - a little
inconvenience on their part, with the reward of greater interoperability
and service provision for their end-user community. At the same time,
we MOBY developers have to not be so rigid in our own "status quo" that
we can't accomodate reasonable and non-destructive changes if they seem
appropriate and within the scope of what we are trying to accomplish...
and finally we have to be willing to say "hey... we can't please all the
people all the time" and simply accept that there will be some services
that we can not MOBYcize.
But for the moment let's aim high :-)
I think the situation that Martin is describing is one that we will face
frequently - services which take a long time to execute are
problematic... even Blast is a pain in the butt! Of course, on the web
this is solved by giving you a temporary URL that you can periodically
check to see if your job is done. Should we try to deal with this
situation at all? I think it is going to be common enough that MOBY
will be a complete failure without having some way to deal with it!
So...how do we accomplish this? I can think of three solutions:
(1) We try to mimik this CGI/Web behaviour by having some sort of
"bookmark" object returned in these special cases where a job must be
started and left running. If so, do we
(1a) make this bookmark object-type a special case, where the registry
itself interprets the object to get you back to the correct service for
result retrieval, or...
(1b) do we have each such service register their own unique bookmark
object-type so that their particular job-retrieval service can be
discovered (i.e. RE-discovered) through a normal MOBY Central
locateServiceByInput() call?
(2) Alternately, we could make *all* services behave this way
: object_in -> job start -> bookmark out
: bookmark_in -> result_retrieve -> result_returned
there are probably many other MOBY-ish solutions to the problem as well...
I'm going in circles in my mind about what I think is the best
solution... can everyone weigh in with their opinions because I think
this is a "biggie" and will be difficult to change if we don't get it
right the fist time...
M
--
--------------------------------
"Speed is subsittute fo accurancy."
________________________________
Dr. Mark Wilkinson, RA Bioinformatics
National Research Council, Plant Biotechnology Institute
110 Gymnasium Place, Saskatoon, SK, Canada
phone : (306) 975 5279
pager : (306) 934 2322
mobile: markw_mobile at illuminae dot com
More information about the moby-l
mailing list