Title: Publishing and transporting Web Services over XMPP
1Publishing and transporting Web Services over XMPP
Johannes Wagener
2Web Services State of the Art
UDDI Universal Description, Discovery and
Integration
WSDL Web Services Description Language
SOAP Simple Object Access Protocol
(from Wikipedia)
3http is a pull protocol!
http timeout
4Workaround
Client
Server
doBLAST()
Client (loop)
Server (working)
checkResult(ID)
please wait
()
Client
Server (finished)
checkResult(ID)
RESULT
5Next 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
6About 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)
8XMPP Architecturesimilar to Email
user_at_server1.com
server1.com
server3.net
server2.org
user_at_server3.net
user_at_server2.org
9XMPP Architectureone user can connect with
different resources
server1.com
server3.net
server2.org
user_at_server2.org/work
user_at_server2.org/home
User ID
Server
Resource
10XMPP ArchitectureServer Components
server3.net
user_at_server3.net
service.server3.net
11XMPP ArchitectureUse cases of Server Components
conference.server3.net
msn.server3.net
server3.net
user_at_server3.net
userdirectory.server3.net
12XMPP Architecturepresent
jabber.org
13XMPP Architecturepresent
jabber.org
googlemail.com
14XMPP Architecturepresent
jabber.org
gmx.net
googlemail.com
15 but many unofficial servers, too.
16Clients
17Servers
18Servers
Clusterable
19Libraries
- 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
20The 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
- ltmessage/gt to submit messages
- ltpresence/gt to submit presence information
- ltiq/gt for everything else and thats a lot
21Simplified Stream Example...with two ltmessage/gt
stanzas
(from RFC 3920)
22Information Query ltiq/gt
C ltiq from'juliet_at_example.com/balcony'
to'server.org' type'get'
id'request_1'gt ltquery xmlns'jabberiqversi
on'/gt lt/iqgt S ltiq type'result'
from'server.org' to'juliet_at_example.com/ba
lcony' id'request_1'gt ltquery
xmlns'jabberiqversion'gt
ltnamegtejabberdlt/namegt ltversiongt1.1.2lt/versi
ongt ltosgtwin32/nt5.1.2600lt/osgt
lt/querygt lt/iqgt
23XMPP Extensions Protocol (XEPs)
()
http//www.xmpp.org/extensions
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
25Web Service related XEPs
Asynchronous Stateful - Discoverable -
Asynchronous Stateful Discoverable
26Ad-Hoc Commands
C ltiq type'set' from'user_at_server.org'
to'service.server.org' id'iq_127'gt
ltcommand xmlns'http//jabber.org/protocol/com
mands' node'function_name'
action'complete'/gt ltTHE RPC INPUT/OUTPUT
DATA/gt lt/commandgt lt/iqgt S ltiq
type'result' from'service.server.org'
to'user_at_server.org' id'iq_127'gt
ltcommand xmlns'http//jabber.org/protocol/command
s' sessionid'RPC-SESSION-1'
node'function_name' status'completed'gt
ltTHE RPC OUTPUT/OUTPUT DATA/gt lt/commandgt
lt/iqgt
27Use Case Disco and Ad-Hoc CommandsRendering a
GUI around a service with the XEP-0004 X-Data
envelope
XEP-0004 X-Data Forms optimized for GUI
28Ad-Hoc Commands
C ltiq type'set' from'user_at_server.org'
to'service.server.org' id'iq_127'gt
ltcommand xmlns'http//jabber.org/protocol/com
mands' node'function_name'
action'complete'/gt ltTHE RPC INPUT DATA/gt
lt/commandgt lt/iqgt S ltiq type'result'
from'service.server.org'
to'user_at_server.org' id'iq_127'gt
ltcommand xmlns'http//jabber.org/protocol/command
s' sessionid'RPC-SESSION-1'
node'function_name' status'completed'gt
ltTHE RPC OUTPUT DATA/gt lt/commandgt lt/iqgt
X-Data Forms (XEP-0004) GUI
29Web Service related XEPs
Asynchronous Stateful - Discoverable -
Asynchronous Stateful Discoverable
Yet another XEP?
something else?
SOAP ?
WSDL ?
30Test Case Web ServiceServer Component
WSDbfetch
SOAP
wsdbfetch.gandhi
gandhi
31Test Case ClientGUI (chat-client), Scripting
Environment (Bioclipse)
WSDbfetch
SOAP
wsdbfetch.gandhi
gandhi
bioclipse_at_gandhi
chat-client_at_gandhi
32XEP-0050 Ad-Hoc CommandsTransporting EMBL-EBIs
WSDbfetch Web Service over XMPP
33Summary
- 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
34Andreas Heusler Egon Willighagen Ola Spjuth
35(No Transcript)
36XEP-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.