source: TI03-DataExtractor/branches/old_stuff/dx-webservice/HOW_TO_DO_WEB_SERVICE.txt @ 793

Subversion URL:
Revision 793, 2.0 KB checked in by astephen, 14 years ago (diff)

Put all the old code in the old_stuff branch.

[793]1How will I implement the dx as a web service - considerations
4Persistence - CGI allows the silent passing of the req_id [seesion ID] between
5calls and this preserves state. I no longer have this functionality
6with a WS implementation. So, the user session should hold this info
7but wrap it up.
9Use Case 1:
111. User calls the dx WS.
12  <-- dx returns a list of available datasets and web-like info, AND
13      a req_id, these need to be returned in a python object that includes
14      the req_id.
152. User calls the dx WS to get a number of variables, sending the req_id.
16  <-- dx returns a list of available variables, other info and req_id.
17etc etc etc.
19So, that requires maintaining state which requires a session, which requires
20a python prompt session. So you go in to an application on your machine that
21interacts with the dx via the callControlExtractClass() function but can
22grab the responses and displays them in a useful way. It displays results
23and offers options, tells you how to send them....Sounds like the CGI version
24that is there now.
26More thinking...
28What I want to be able to do is work out what is available and get to it.
29dx can work out what else I need and give me lists of options and a req_id.
30I can send it chosen options. But the problem is STATE. Maybe you have to
31have an application wrapping this functionality rather than allowing users
32to talk directly to the dx via a Web Service.     
34What does the NDG think?
36More web service version thoughts:
37** client needs following methods (can optionHandler providethem all?):
38*** getDatasetGroupOptions()
39*** getDatasetOptions()
40*** getVariablesOptions()
41*** getVertical/HorizontalDomainOptions()
42*** getOperationOptions()
43*** etc
44*** setVariables(var)
45*** setDatasetGroups(dsg)
46*** setDatasets(det)
47*** setVertical/HorizontalDomain()
48*** setTemporalDomain()
49*** setOperation()
50*** setMultipleOutputFiles(on|off)
51*** viewCurrentRequest()
52*** processRequest()
Note: See TracBrowser for help on using the repository browser.