140 likes | 168 Views
ez3950 SOAP & Z39.50. ZIG December 2000 at LC Poul Henrik Jørgensen, DBC mailto:phj@dbc.dk. Background & Objectives. Z39.50 Difficult to understand and debug Use human-readable encoding Technology seems obscure to implementors Adopt emerging XML standards
E N D
ez3950SOAP & Z39.50 ZIG December 2000 at LC Poul Henrik Jørgensen, DBC mailto:phj@dbc.dk
Background & Objectives • Z39.50 Difficult to understand and debug • Use human-readable encoding • Technology seems obscure to implementors • Adopt emerging XML standards • Ignored by mainstream development tools • Use widespread XML tools • Object Oriented development paradigma • Specify Object RPC API Poul Henrik Jørgensen, DBC
Communication Models • Message-passing with optional queuing • E.g. ISO ILL (almost) • Applications must handle asynchronous messages from concurrent external processes • Request/Response • E.g. Z39.50 (almost) • Client initiates request and waits for matching response from remote process • Resembles Remote Procedure Calls (RPC) Poul Henrik Jørgensen, DBC
RPC Standards • RPC Standards • SUN RPC, e.g. Network File System NFS • DCE RPC, e.g. Windows NT • HTTP • Object RPC Standards • CORBA Internet Inter-Orb Protocol, IIOP • MS Distributed COM, DCOM Poul Henrik Jørgensen, DBC
Request Object Id Interface Id Method Id Extension Headers Parameter Data Response Status code Extension Headers Parameter Data Object RPC Elements Poul Henrik Jørgensen, DBC
SOAP Overview • HTTP supports most of the same functions as IIOP and DCOM (framing, connection management, object references) • XLM is well suited to represent to represent parameter data (cf. NDR and • SOAP = HTTP (transport) + XML (parameter encoding) Poul Henrik Jørgensen, DBC
SOAP Elements • HTTP Header • Request URI: SOAP ClassId and ObjectId • SOAPAction: InterfaceId and Method • SOAP Envelope (XML Structure) • Header (Optional protocol data) • Body • RPC Parameters • Error Reports Poul Henrik Jørgensen, DBC
SOAP HTTP Request POST /ZServ/Danbib HTTP/1.1 Host: zoap.dbc.dk Content-Type: text/xml; charset="utf-8" Content-Length: 1234 SOAPAction: ="urn:ez3950:api" <soap:Envelope ...request parameters.. </soap:Envelope> Poul Henrik Jørgensen, DBC
SOAP HTTP Response 200 OK Content-Type: text/xml Content-Length: 123 <Envelope ...response data & error reports... </Envelope> Poul Henrik Jørgensen, DBC
eZ3950: Z39.50 over SOAP • Specification of e-Z39.50 API • Complete Z39.50 Protocol over SOAP • ASN.1 encoded by XER • General IR API (GIR:API) features • Asyncronous Services excluded • triggerResourceControlRequest • segmentRequest Poul Henrik Jørgensen, DBC
Init search present deleteResultSet accessControl resourceControl resourceReport scan sort extendedServices close eZ3950 Methods Poul Henrik Jørgensen, DBC
eZ3950 Init Request <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP:Body> <ez:init xmlns:ez="urn:ez3950:api" version="1.0"> <ez:protocolVersion xsi:type="xsd:string"> version-1 version-2</ez:protocolVersion> <ez:options xsi:type="xsd:string">search present scan</ez:options> <ez:preferredMessageSiz xsi:type="xsd:int">16384</ez:preferredMessageSize> <ez:exceptionalRecordSize xsi:type="xsd:int">500000</ez:exceptionalRecordSize> <ez:implementationId xsi:type="xsd:string">1995</ez:implementationId> <ez:implementationName xsi:type="xsd:string"> OCLC z39.50 API</ez:implementationName> <ez:implementationVersion xsi:type="xsd:string">3.0</ez:implementationVersion> </ez:init> </SOAP:Body> </SOAP:Envelope> Poul Henrik Jørgensen, DBC
eZ3950 Init Response <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:initResponse xmlns:ns1="urn:ez3950:api" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return xsi:type="ns1:parm"> <implementationId xsi:type="xsd:string">"JAFER"</implementationId> <idAuthentication xsi:type="ns1:idAuthentication" xsi:null="true"/> <exceptionalRecordSize xsi:type="xsd:int">500000</exceptionalRecordSize> <preferredMessageSize xsi:type="xsd:int">16384</preferredMessageSize> <implementationVersion xsi:type="xsd:string">"JAFER"</implementationVersion> <result xsi:type="xsd:boolean">true</result> <options xsi:type="xsd:string">search present</options> </return> </ns1:initResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Poul Henrik Jørgensen, DBC
Benefits of eZ3950 • Supports entire Z90.50 protocol • XER standard with tools to encode ASN.1 • Readable XML encoding of Z39.50 • Object RPC model of Z39.50 services • Platform independent API for e-Z39.50 • Tools from major vendors • Acceptance among developers and executives Poul Henrik Jørgensen, DBC