Presentation is loading. Please wait.

Presentation is loading. Please wait.

Publishing and transporting Web Services over XMPP

Similar presentations


Presentation on theme: "Publishing and transporting Web Services over XMPP"— Presentation transcript:

1 Publishing and transporting Web Services over XMPP
Johannes Wagener

2 Web Services – State of the Art
UDDI: Universal Description, Discovery and Integration WSDL: Web Services Description Language SOAP: Simple Object Access Protocol (from Wikipedia)

3 http is a pull protocol! Client Server doBLAST() (waiting) (working)
Firewall http timeout

4 Workaround Client Server doBLAST() ID Client (loop) Server (working)
checkResult(ID) “please wait” (…) Client Server (finished) checkResult(ID) RESULT

5 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

6 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)

7 (from Wikipedia)

8 XMPP Architecture similar to Email …
server1.com server2.org server3.net

9 XMPP Architecture one user can connect with different resources
server1.com server2.org server3.net User ID Server Resource

10 XMPP Architecture Server Components
server3.net service.server3.net

11 XMPP Architecture Use cases of Server Components
conference.server3.net msn.server3.net server3.net userdirectory.server3.net

12 XMPP Architecture present
jabber.org

13 XMPP Architecture present
jabber.org googl .com

14 XMPP Architecture present
jabber.org gmx.net googl .com

15 … but many unofficial servers, too.

16 Clients

17 Servers

18 Servers Clusterable

19 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

20 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

21 Simplified Stream Example... with two <message/> stanzas
(from RFC 3920)

22 Information Query: <iq/>
C: <iq to='server.org' type='get' id='request_1'> <query xmlns='jabber:iq:version'/> </iq> S: <iq type='result' from='server.org' <query xmlns='jabber:iq:version'> <name>ejabberd</name> <version>1.1.2</version> <os>win32/nt </os> </query>

23 XMPP Extensions Protocol (XEPs)
(…)

24 (Web) Service Discovery
There are three kinds of information that need to 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

25 Web Service related XEPs
} Asynchronous + Stateful - Discoverable - Asynchronous + Stateful + Discoverable +

26 Ad-Hoc Commands C: <iq type='set' from='user@server.org'
to='service.server.org' id='iq_127'> <command xmlns=' node='function_name' action='complete'/> <THE RPC INPUT/OUTPUT DATA/> </command> </iq> S: <iq type='result' from='service.server.org' sessionid='RPC-SESSION-1' status='completed'> <THE RPC OUTPUT/OUTPUT DATA/>

27 Use Case: Disco and Ad-Hoc Commands Rendering a GUI around a service with the XEP-0004 X-Data envelope XEP-0004 X-Data Forms optimized for GUI

28 Ad-Hoc Commands X-Data Forms (XEP-0004) GUI X-Data Forms (XEP-0004)
C: <iq type='set' to='service.server.org' id='iq_127'> <command xmlns=' node='function_name' action='complete'/> <THE RPC INPUT DATA/> </command> </iq> S: <iq type='result' from='service.server.org' sessionid='RPC-SESSION-1' status='completed'> <THE RPC OUTPUT DATA/> X-Data Forms (XEP-0004) GUI X-Data Forms (XEP-0004) GUI

29 Web Service related XEPs
} Asynchronous + Stateful - Discoverable - Asynchronous + Stateful + Discoverable + Yet another XEP? SOAP ? WSDL ? something else?

30 Test Case: Web Service Server Component
WSDbfetch SOAP wsdbfetch.gandhi gandhi

31 Test Case: Client GUI (chat-client), Scripting Environment (Bioclipse)
WSDbfetch SOAP wsdbfetch.gandhi gandhi

32 XEP-0050 Ad-Hoc Commands Transporting EMBL-EBI’s WSDbfetch Web Service over XMPP

33 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) “result is available” Client Server function(data) “function started”

34 Andreas Heusler Egon Willighagen Ola Spjuth

35

36 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.


Download ppt "Publishing and transporting Web Services over XMPP"

Similar presentations


Ads by Google