CellML Discussion List

Text archives Help


[cellml-discussion] ABI CellML Meeting Minutes, 22nd June 2011


Chronological Thread 
  • From: alan.garny at dpag.ox.ac.uk (Alan Garny)
  • Subject: [cellml-discussion] ABI CellML Meeting Minutes, 22nd June 2011
  • Date: Fri, 24 Jun 2011 10:52:12 +0100

> > Having just read the minutes, I was wondering whether you guys could
> > clarify the situation with regards to web service support for PMR2?
> > Tommy said that "REST support is iffy" and that's also what I
> > understood from the email he sent around earlier this week. However,
> > the minutes read that the "general upshot is that REST is likely to be
> > the technology of choice"...?! I can't see the rationale here. So, would
it be
> possible to have some explanations?
> > Also, in Tommy's email, he mentioned JSON (in addition to SOAP and
REST).
> > So, what about JSON?
>
> REST support is iffy is in relation to standards/libraries that
provide/support
> within the standard Zope/Plone environment. What this means is I will
have
> to implement anything that isn't there natively. However, REST really is
a
> methodology for transferring of states, and in PMR2's case there isn't
really
> that much to add.
>
> As for how these states are transfered, there are many ways to do so,
either
> via XML, JSON or other formats. Since JSON is the preferred encoding
> method for values this is why we tentatively decide to do so. JSON and
REST
> are two complete independent entities and are completely different types
of
> concepts that gets used together a lot.
>
> SOAP on the other hand is a design-by-committee standard that ends up
> being excessively verbose for what we are trying to do, which is to
provide a
> lightweight method to retrieve values from PMR2. I did start off doing
this in
> SOAP with a library that the Zope community provided. It was easy to get
> going because SOAP is an established standard, but under the hood it was
> anything but simple. This is the request body to get the title of an
object
> generated by the SOAPpy library:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
> >
> <SOAP-ENV:Body>
> <get_title SOAP-ENC:root="1">
> </get_title>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> This is the response by the Zope SOAP library I added:
>
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:ZSI="http://www.zolera.com/schemas/ZSI/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> <SOAP-ENV:Header>
> </SOAP-ENV:Header>
> <SOAP-ENV:Body>
> <get_titleResponse
> SOAP-ENC:arrayType="xsd:anyType[1]" xsi:type="SOAP-ENC:Array">
> <element id="ob2d7f20" xsi:type="xsd:string">Workspaces</element>
> </get_titleResponse>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> Whereas with JSON it's more of a simple standard HTTP GET to a specific
> URL (which we will have to define) and response body would look something
> like
>
> {
> "title": "Workspace"
> }
>
> An order of magnitude of reduction in bytes.
>
> A response for a list of workspace with its URL looks something like this
per
> entry:
>
> {
> ...
> "Per Pixel Lighting":
> "http://localhost:8380/pmr/workspace/per_pixel_lighting";,
> ...
> }
>
> Rather than this
>
> <SOAP-ENV:Envelope ...>
> ...
> <Eoceb8bec>
> <Eoced4c60 id="oced4c60" xsi:type="xsd:string">
> Per Pixel Lighting
> </Eoced4c60>
> <Eocedc260 id="ocedc260" xsi:type="xsd:string">
> http://localhost:8380/pmr/workspace/per_pixel_lighting
> </Eocedc260>
> </Eoceb8bec>
> ...
> </SOAP-ENV:Envelope>
>
> For JSON, all you need is to use a standard JSON library, load the string,
and
> you have the values you need. Ditto for SOAP, but the transport body is
just
> excessively verbose - added bytes for no added benefits in our case.
>
> To submit changes in the REST protocol I plan to implement for PMR2, you
> should be able to construct a standard POST request to one of our standard
> forms and things will be done. While some people would argue we should
> allow users to PUT stuff, we don't actually support that with our current
web
> front-end anyway because PMR2 generates the content (i.e. exposures and
> their associated pages/views) based on commands user sends via standard
> http POST forms.
>
> If you want to know more as to why REST is displacing SOAP, search 'REST
vs.
> SOAP' in your favorite search engine - evidence for why is too numerous to
> list here.
>
> Okay, I will try anyway:
>
> Popularity between REST and SOAP
> http://royal.pingdom.com/2010/10/15/rest-in-peace-soap/
>
> Google deprecated SOAP API two years ago (their encoding is in atom and
> json):
> http://googlecode.blogspot.com/2009/03/introducing-labs-for-google-
> code.html
>
> BioModels are moving to a REST API, not sure what their encoding will be
but
> I heard it will be json.
>
> So yeah, these are the justifications.

Thanks a lot, Tommy. I am clearly not a web service expert and therefore
assumed that the choice was between SOAP, REST and JSON. From what I now
understand (which may still not be right!), it would seem that the choice is
between SOAP and REST while regarding JSON it would, if anything, be a
choice between XML and JSON. So, in the end, it would seem that it might be
a choice between say SOAP+XML and REST+JSON. If that is the case, then
REST+JSON seems like a better choice for PMR2 indeed. Please feel free to
correct me if I am still missing something...

Alan





Archive powered by MHonArc 2.6.18.

Top of page