ACS F2F 1st/2nd Aug, 2005 ACS Data Transport Sachiko Wada ASCADE, Inc.
Requirements To make use of the efficient transport technologies available, the third party transports must be allowed in the repository interface. ACS should allow ARI implementers to select a communication protocol for transport. (from skeleton draft) The repository service exposes a list of protocols supported The client chooses a preferred one from the list and specify it as a request parameter In order to realize this capability...
Possible Uploading / Downloading Pattern uploaddownload SwA http/ftp/etc.. (server runs on ACS side) http/ftp/etc.. (server runs on user side) ACS 1.request ACS 1.request ACS 1.1 request ACS 1.request ACS 1.request ACS 1.1 request server base64 URI 1.2 GET Binary 2.POST/PUT 2.GET 1.2POST/PUT (A) (B) (C) (D) (E) (F) We have already discussed pattern D & E. How should pattern A & B be? Should ACS support pattern C & F ? 3. ack response EPR 3. ack EPR
Client AARepository GetResourceProperty(supported_protocols) supported_protocols = SwA, http, ftp, gridftp,... Regsiter/Create(protocol = 'SwA', AA = (base64 encoded data) ) The real data is attached using SwA. Pattern A (Uploading data with SwA) AAEntry create AA EPR
Client AARepository GetResourceProperty(supported_protocols) supported_protocols = SwA, http, ftp, gridftp,... Regsiter/Create(protocol = ‘http‘, notify_recipient=‘client EPR’) Pattern B (Uploading data with http, PUSH) http server URI = ‘xxxxx’, Method = ‘POST’ http request (POST) 200 OK any interaction ? AAEntry create Notify (AA EPR) AA Binary Data
Client AARepository GetResourceProperty(supported_protocols) supported_protocols = SwA, http, ftp, gridftp,... Regsiter/Create(protocol = ‘http‘, URI=‘xxxx’) Pattern C (Uploading data with http, PULL) http server http request (GET) AA Binary Data AAEntry create AA EPR Upload AA Binary Data
Appendix Pattern D & E (from previous discussion)
SwA*, file, http, https, ftp, gridftp,... Application Repository.... http ari:DD (1) The repository should expose a list of protocols supported (2) the client chooses a preferred one from the list and specify it as a parameter in GetContents Client (3) Repository returns a uri that fits to the specified protocol. (4) client should resolve the reference (i.e. get actual contents) from the uri. NOTE: The message schema is tentative. * SwA = Soap with Attachment
Client Archive Repository Http Server GetResourceProperty(supported_protocols) supported_protocols = SwA, http, ftp, gridftp,... GetContents(protocol = 'http', key = 'DD') url = security token = ???? http request (GET /XXX/DD HTTP/1.1) DD file any interaction ? NOTE: Archive Repository and Http Server may run either on the same node or separate nodes. In case of using HTTP as transport protocol... NOTE: The first step (inquiry for supported protocols) may be performed just once.
Client Archive Repository GetResourceProperty(supported_protocols) protocols = SwA, http, ftp, gridftp,... GetContents(protocol = 'SwA', key = 'DD') base64 encoded data In case of using SwA as transport protocol... The real data is included in the response message.