Publishing and transporting Web Services over XMPP Johannes Wagener.

36
Publishing and transporting Web Services over XMPP Johannes Wagener

Transcript of Publishing and transporting Web Services over XMPP Johannes Wagener.

Page 1: Publishing and transporting Web Services over XMPP Johannes Wagener.

Publishing and transporting Web Services over XMPP

Johannes Wagener

Page 2: Publishing and transporting Web Services over XMPP Johannes Wagener.

Web Services – State of the Art

(from Wikipedia)

WSDL:Web Services Description Language

SOAP:Simple Object Access Protocol

UDDI:Universal Description,Discovery and Integration

Page 3: Publishing and transporting Web Services over XMPP Johannes Wagener.

http is a pull protocol!

Client ServerdoBLAST()

Client(waiting)

Server(working)

doBLAST()

Client(waiting)

Server(working)

doBLAST()

Firewall http timeout

Page 4: Publishing and transporting Web Services over XMPP Johannes Wagener.

Workaround

Client ServerdoBLAST()

Client(loop)

Server(working)

checkResult(ID)

ClientServer

(finished)

checkResult(ID)

RESULT

“please wait”

(…)

ID

Page 5: Publishing and transporting Web Services over XMPP Johannes Wagener.

Next generation of Web Services

should ...• be a properly and strictly defined standard• allow stateful job management• allow asynchronous client notification• be discoverable• have big user community with a lot of software

Page 6: Publishing and transporting Web Services over XMPP Johannes Wagener.

About XMPP

• The Extended Messaging and Presence Protocol

• Formerly known as Jabber

• Invented by Jeremie Miller in 1998

• Formalized by the Internet Engineering Task Force since 2004

• RFC 3920 – 3923, 4622

• XMPP Standards Foundation continues to define various XMPP Extensions

• “…a protocol for streaming XML elements in order to exchange structured information in close to real time between any two network endpoints.

While XMPP provides a generalized, extensible framework for exchanging XML data, it is used mainly for the purpose of building instant messaging and presence applications.” (from RFC 3920)

Page 7: Publishing and transporting Web Services over XMPP Johannes Wagener.

(from Wikipedia)

Page 8: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Architecturesimilar to Email …

[email protected]

server2.org

server1.com

server3.net

[email protected]

[email protected]

Page 9: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Architectureone user can connect with different resources

server2.org

server1.com

server3.net

[email protected]/[email protected]/home

User ID Server Resource

Page 10: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP ArchitectureServer Components

server3.net

[email protected]

Page 11: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP ArchitectureUse cases of Server Components

server3.net

[email protected]

msn.server3.netconference.server3.net

Page 12: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Architecturepresent

jabber.org

Page 13: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Architecturepresent

jabber.org

googlemail.com

Page 14: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Architecturepresent

jabber.org

googlemail.comgmx.net

Page 15: Publishing and transporting Web Services over XMPP Johannes Wagener.

… but many unofficial servers, too.

Page 16: Publishing and transporting Web Services over XMPP Johannes Wagener.

Clients

Page 17: Publishing and transporting Web Services over XMPP Johannes Wagener.

Servers

Page 18: Publishing and transporting Web Services over XMPP Johannes Wagener.

ServersClusterable

Page 19: Publishing and transporting Web Services over XMPP Johannes Wagener.

Libraries

• 3 x .NET• 3 x C• 2 x C#• 7 x C++• 3 x COM• 2 x Delphi• 1 x Flash• 9 x Java• 1 x Java Script

• 1 x Lisp• 1 x Mono• 5 x Perl• 2 x PHP• 4 x Python• 2 x Ruby• 1 x TCL• 1 x XPCom

Page 20: Publishing and transporting Web Services over XMPP Johannes Wagener.

The Protocol

• An inbound and outbound “XML Stream”

• Client connections are usually done with TCP. However there are no restrictions; i.e. many server allow polling over HTTP

• Streams may be encrypted in various formats

• Packets are sent as “stanzas”

• There are three top level stanzas:

<message/> … to submit messages

<presence/> … to submit presence information

<iq/> … for everything else – and that’s a lot

Page 21: Publishing and transporting Web Services over XMPP Johannes Wagener.

Simplified Stream Example...with two <message/> stanzas

(from RFC 3920)

Page 22: Publishing and transporting Web Services over XMPP Johannes Wagener.

C: <iq from='[email protected]/balcony' to='server.org' type='get' id='request_1'> <query xmlns='jabber:iq:version'/> </iq>

S: <iq type='result' from='server.org' to='[email protected]/balcony' id='request_1'> <query xmlns='jabber:iq:version'> <name>ejabberd</name> <version>1.1.2</version> <os>win32/nt5.1.2600</os> </query> </iq>

Information Query: <iq/>

Page 23: Publishing and transporting Web Services over XMPP Johannes Wagener.

XMPP Extensions Protocol (XEPs)

(…)

http://www.xmpp.org/extensions

Page 24: Publishing and transporting Web Services over XMPP Johannes Wagener.

(Web) Service Discovery

There are three kinds of information that needto be discovered about an entity

• its basic identity (type and/or category)• the features it offers and protocols it supports • any additional items associated with the entity,

whether or not they are addressable as JIDs

Page 25: Publishing and transporting Web Services over XMPP Johannes Wagener.

Web Service related XEPs

} Asynchronous +Stateful -Discoverable -

Asynchronous +Stateful +Discoverable +

Page 26: Publishing and transporting Web Services over XMPP Johannes Wagener.

Ad-Hoc CommandsC: <iq type='set' from='[email protected]' to='service.server.org' id='iq_127'> <command xmlns='http://jabber.org/protocol/commands' node='function_name' action='complete'/>

<THE RPC INPUT/OUTPUT DATA/> </command> </iq>

S: <iq type='result' from='service.server.org' to='[email protected]' id='iq_127'> <command xmlns='http://jabber.org/protocol/commands' sessionid='RPC-SESSION-1' node='function_name' status='completed'>

<THE RPC OUTPUT/OUTPUT DATA/> </command> </iq>

Page 27: Publishing and transporting Web Services over XMPP Johannes Wagener.

Use Case: Disco and Ad-Hoc CommandsRendering a GUI around a service with the XEP-0004 X-Data envelope

XEP-0004 X-Data Formsoptimized for GUI

Page 28: Publishing and transporting Web Services over XMPP Johannes Wagener.

Ad-Hoc CommandsC: <iq type='set' from='[email protected]' to='service.server.org' id='iq_127'> <command xmlns='http://jabber.org/protocol/commands' node='function_name' action='complete'/>

<THE RPC INPUT DATA/> </command> </iq>

S: <iq type='result' from='service.server.org' to='[email protected]' id='iq_127'> <command xmlns='http://jabber.org/protocol/commands' sessionid='RPC-SESSION-1' node='function_name' status='completed'>

<THE RPC OUTPUT DATA/> </command> </iq>

X-Data Forms (XEP-0004)GUI

X-Data Forms (XEP-0004)GUI

Page 29: Publishing and transporting Web Services over XMPP Johannes Wagener.

Web Service related XEPs

} Asynchronous +Stateful -Discoverable -

Asynchronous +Stateful +Discoverable +

Yet another XEP?

SOAP ? something else?WSDL ?

Page 30: Publishing and transporting Web Services over XMPP Johannes Wagener.

Test Case: Web ServiceServer Component

gandhi

SOAPWSDbfetch

wsdbfetch.gandhi

Page 31: Publishing and transporting Web Services over XMPP Johannes Wagener.

gandhi

chat-client@gandhi

SOAPWSDbfetch

bioclipse@gandhi

wsdbfetch.gandhi

Test Case: ClientGUI (chat-client), Scripting Environment (Bioclipse)

Page 32: Publishing and transporting Web Services over XMPP Johannes Wagener.

XEP-0050 Ad-Hoc CommandsTransporting EMBL-EBI’s WSDbfetch Web Service over XMPP

Page 33: Publishing and transporting Web Services over XMPP Johannes Wagener.

Summary:XMPP is• a well established and widely used XML routing

technology• a server-client oriented architecture• working with unique entity identifiers• offering a discoverable network• an asynchronous protocol (the server can push data to

the client)

Client Serverfunction(data)

“function started”

“result is available”

Page 34: Publishing and transporting Web Services over XMPP Johannes Wagener.

Andreas Heusler

Egon Willighagen

Ola Spjuth

Page 35: Publishing and transporting Web Services over XMPP Johannes Wagener.
Page 36: Publishing and transporting Web Services over XMPP Johannes Wagener.

XEP-0096: File Transfer

Requirements• Enable seamless file transfer, including fall-back

mechanisms as appropriate. • Ensure that the profile will work even when one or both

parties are behind a firewall. • Define a full-featured set of metadata for file transfers,

including the following:– description – size – name – date – hash

• Optionally support ranged transfers.