Ez3950 SOAP & Z39.50 ZIG December 2000 at LC Poul Henrik Jørgensen, DBC mailto:phj@dbc.dk

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