View
214
Download
2
Category
Preview:
Citation preview
ez3950ez3950SOAP & Z39.50 SOAP & Z39.50
ZIG December 2000 at LC
Poul Henrik Jørgensen, DBC
mailto:phj@dbc.dk
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 2
Background & ObjectivesBackground & 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
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 3
Communication ModelsCommunication 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)
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 4
RPC StandardsRPC 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
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 5
Object RPC ElementsObject RPC Elements
Request Object Id Interface Id Method Id Extension Headers Parameter Data
ResponseStatus codeExtension HeadersParameter Data
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 6
SOAP OverviewSOAP 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)
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 7
SOAP ElementsSOAP 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
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 8
SOAP SOAP HTTP HTTP RequestRequest
POST /ZServ/Danbib HTTP/1.1Host: zoap.dbc.dkContent-Type: text/xml; charset="utf-8"Content-Length: 1234
SOAPAction: ="urn:ez3950:api" <soap:Envelope
...request parameters..</soap:Envelope>
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 9
SOAPSOAP HTTP Response HTTP Response
200 OK
Content-Type: text/xml
Content-Length: 123
<Envelope
...response data & error reports...
</Envelope>
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 10
eeZ3950Z3950: Z39.50: Z39.50 over SOAP over SOAP
Specification of e-Z39.50 APIComplete Z39.50 Protocol over SOAPASN.1 encoded by XERGeneral IR API (GIR:API) featuresAsyncronous Services excluded
– triggerResourceControlRequest– segmentRequest
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 11
eZ3950 MethodseZ3950 Methods
Init search present deleteResultSet accessControl resourceControl
resourceReportscansortextendedServicesclose
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 12
<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>
eZ3950 Init RequesteZ3950 Init Request
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 13
<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>
eZ3950 Init ResponseeZ3950 Init Response
eZ3950 / Dec. 2000 Poul Henrik Jørgensen, DBC 14
Benefits of eZ3950Benefits 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
Recommended