Download presentation
Published byChristopher Merritt Modified over 9 years ago
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
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.