There are two main kinds of web services

REST: URL -> XML
Doc:  XML -> XML

URL can be encoded as a string.

The key problem is how to encode XML. We propose to use records.

One problem is that there are at least two different ways to interpret XML.

Markup#

Must preserve order, allow arbitrary interleaving of strings and tags. Does not normally need to support direct/indexed access to sub-tags.

One good way to do this is: XML(tag, attributes, content)

- tag is a string - attributes is a record - content is a list of anything (strings or XML)

Database style#

This should provide access to the attributes or indexed names.

Question: what should it do if there is a conflict between named sub-tags and an attribute. Proposal: give the sub-tag. To get the attribute it should require explicit access to the attribute record.

Access to web services#

We need two web service creation applications.

Calendar = REST.create("http://calendar.calendar.com")

Calendar = WebService.create("http://calendar.calendar.com/cal.wsdl")

Normal web services need a WSDL which is interpreted on the fly.

Example#

Here is a made-up example.

Calendar = REST.create("http://calendar.calendar.com")

Items = Calendar.get("/user/wcook/main/today") -- just made up URL

Each(Items) >item> 
    print(item.Date) >> print(item.Subject)

Orc Web Services Enhancement Activities#

Goal of Subproject#

To enhance Orc to treat arbitrary Web services as ordinary Orc sites.

Open Activities#

  • Update REST site to operate asynchronously
  • Re-write all existing Orc demos to run without using Java helper classes to invoke Web services
  • Enhance Orc (engine or library) so that Orc programs can provide REST-style Web services
  • Add capability to easily request and provide Web services using SOAP messages

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-5) was last changed on 19-Nov-2010 19:37 by JohnThywissen