ImprovedWebservicesOverXMPP - EMBRACE

saucecopywriterInternet και Εφαρμογές Web

2 Φεβ 2013 (πριν από 4 χρόνια και 8 μήνες)

163 εμφανίσεις

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

http is a pull protocol!

Client

Server

doBLAST()

Client

(
waiting
)

Server

(
working
)

doBLAST()

Client

(
waiting
)

Server

(
working
)

doBLAST()

Firewall

http timeout

Workaround

Client

Server

doBLAST()

Client

(
loop
)

Server

(
working
)

checkResult(ID)

Client

Server

(
finished
)

checkResult(ID)

RESULT

“please wait”

(…)

ID

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

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)

(from Wikipedia)

XMPP Architecture

similar to Email …

user@server1.com

server2.org

server1.com

server3.net

user@server2.org

user@server3.net

XMPP Architecture

one user can connect with different resources

server2.org

server1.com

server3.net

user@server2.org/work

user@server2.org/home

User ID

Server

Resource

XMPP Architecture

Server Components

server3.net

user@server3.net

service.server3.net

XMPP Architecture

Use cases of Server Components

server3.net

user@server3.net

userdirectory.server3.net

msn.server3.net

conference.server3.net

XMPP Architecture

present

jabber.org

XMPP Architecture

present

jabber.org

googlemail.com

XMPP Architecture

present

jabber.org

googlemail.com

gmx.net

… but many unofficial servers, too.

Clients

Servers

Servers

Clusterable

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


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

Simplified Stream Example...

with two <message/> stanzas

(from RFC 3920)

C: <iq from='juliet@example.com/balcony'


to='server.org'


type='
get
'


id='
request_1
'>


<query xmlns='
jabber:iq:version
'/>


</iq>



S: <iq type='
result
'


from='server.org'


to='juliet@example.com/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/>

XMPP Extensions Protocol (XEPs)

(…)

http://www.xmpp.org/extensions

(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

Web Service related XEPs

}

Asynchronous

+

Stateful


-

Discoverable

-

Asynchronous

+

Stateful


+

Discoverable

+

Ad
-
Hoc Commands

C: <iq type='set'


from='user@server.org'


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='user@server.org'


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>

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

Ad
-
Hoc Commands

C: <iq type='set'


from='user@server.org'


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='user@server.org'


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

Web Service related XEPs

}

Asynchronous

+

Stateful


-

Discoverable

-

Asynchronous

+

Stateful


+

Discoverable

+

Yet another XEP?

SOAP ?

something else?

WSDL ?

Test Case: Web Service

Server Component

gandhi

SOAP

WSDbfetch

wsdbfetch.gandhi

gandhi

chat
-
client@gandhi

SOAP

WSDbfetch

bioclipse@gandhi

wsdbfetch.gandhi

Test Case: Client

GUI (chat
-
client), Scripting Environment (Bioclipse)

XEP
-
0050 Ad
-
Hoc Commands

Transporting EMBL
-
EBI’s
WSDbfetch

Web Service over XMPP

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

Server

function(data)

“function started”

“result is available”

Andreas Heusler


Egon Willighagen


Ola Spjuth

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.