Draft of prototype architecture for new project
1. Main Frame
2. Requirements
Get data from CIMA instruments/CIMA web services, and show them on an Ajax-based browser.
(Difference between this with Atom Feed for IUMS? any special requirements or restrictions for that?)
3. Work Flow
(1) Users send HTTP requests to register a variable(Bay1Temp, for example) to be shown in the browser(for example, http://shim.addr/register?Name=[cima_service]%Source=[variable_name])
(2) Users get a reply with the user ID(for example, http://shim.addr/UUID). This UUID will be used to identify different users and get data from the web service;
(3) Web service interface will create a thread for that request/user;
(4) Web service interface(or The thread?) then send the register request to CIMA web service (with UUID?)(Socket);
(5) CIMA web service will return stream data() back(Socket);
(6) The parcel will be stored in a ring buffer in SVC(???);
(7) Users send Poll URL to Web service interface(or The thread?) (when will it happen?);
(8) Web service interface(or The thread?) sends the data back to the browser.
4. Problems
(1) It is supposed to be used by multiple users, so is there any limitation for the number of users because we cannot assume the data column is small enough for server to process( The user might request some ccd image and the transfer rate is in the range of 4K to 8M/sec);
(2) Compare the following two cases in how to distinguish clients:
(a) Create one thread for every registration;
(b) One service with IDs to distinguish clients;
- Distinguish which parcel goes to which client
- Overhead matching IDs to parcels(?)
(3) Data format:
The format of return data should be XML or JSON or both. Ajax-based client application can accept JSON much easier then XML.
Discussion
In “Problems” section