Changes between Version 1 and Version 2 of Software/ContextService


Ignore:
Timestamp:
16/09/09 11:51:21 (10 years ago)
Author:
spascoe
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Software/ContextService

    v1 v2  
    1919We need an ''NDG Context Service'' that provides a storage mechanism for web application state across multiple NDG service deployments. 
    2020 
    21  1. Each user (identified by an NDG OpenID) should have a single active context per distributed application. 
     21 1. Each user should have a single active context per distributed application. 
    2222 1. A context should store a collection of WMS services and selected layers as per the WMC standard. 
    2323 1. A context could also store more WMS client state like WMC: visible layers, viewport, styles. 
     
    2626 1. The context service API should be callable by either server-side or client-side code (AJAX).  It must be callable via: Python, JavaScript and PHP.  It must support all [http://en.wikipedia.org/wiki/Create,_read,_update_and_delete CRUD] operations through this API. 
    2727 1. The context service should be flexible enough to provide an ad-hoc session management function to aid application integration (e.g. simple key/value pair storage). 
     28 1. To support client-side calling it should support authn/authz via NdgSecurity.  This requirement is optional if we are comfortable that no private information is stored in the context.  However NdgSecurity should be used for finding the user's identity (e.g. a client application will need to get the users OpenID) 
     29 1. The context service, or a secondary service which is NdgSecurity, must provide a one-click method of adding a resource to the user's context.  This will allow MOLES catalogue records to have a "Add to Context" URL. 
     30 
     31== Proposed Implementation == 
     32 
     33The requirements suggest a data store service for XML documents with a RESTful HTTP interface supporting CRUD.  This is exactly what [http://exist-db.org/ eXist] does and therefore, given eXist is already part of our architecture, we should use that. 
     34 
     35Most, if not all, of this could be implemented in xquery and served directly by eXist.  We would need specific xqueries for updating the context.  The eXist documentation suggests an entire web application can be written in xquery so this should be possible. 
     36 
     37How NDG Security is supported is less clear.  We may need a gateway service in Python to do authn/authz.