1 / 36

Publishing and transporting Web Services over XMPP

Publishing and transporting Web Services over XMPP. Johannes Wagener. Web Services – State of the Art. UDDI: Universal Description, Discovery and Integration. WSDL: Web Services Description Language. SOAP: Simple Object Access Protocol. (from Wikipedia). Client. Server. doBLAST().

badru
Download Presentation

Publishing and transporting Web Services over XMPP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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. Client Server doBLAST() Client (waiting) Server (working) doBLAST() Firewall Client (waiting) Server (working) doBLAST() http is a pull protocol! http timeout

  4. ID Workaround Client Server doBLAST() 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 Architecturesimilar to Email … user@server1.com server1.com server3.net server2.org user@server3.net user@server2.org

  9. XMPP Architectureone user can connect with different resources server1.com server3.net server2.org user@server2.org/work user@server2.org/home User ID Server Resource

  10. XMPP ArchitectureServer Components server3.net user@server3.net service.server3.net

  11. XMPP ArchitectureUse cases of Server Components conference.server3.net msn.server3.net server3.net user@server3.net userdirectory.server3.net

  12. XMPP Architecturepresent jabber.org

  13. XMPP Architecturepresent jabber.org googlemail.com

  14. XMPP Architecturepresent jabber.org gmx.net googlemail.com

  15. … but many unofficial servers, too.

  16. Clients

  17. Servers

  18. Servers Clusterable

  19. 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 Libraries

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

  23. XMPP 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

  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='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>

  27. Use 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

  28. X-Data Forms (XEP-0004) 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

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

  30. Test Case: Web ServiceServer Component WSDbfetch SOAP wsdbfetch.gandhi gandhi

  31. Test Case: ClientGUI (chat-client), Scripting Environment (Bioclipse) WSDbfetch SOAP wsdbfetch.gandhi gandhi bioclipse@gandhi chat-client@gandhi

  32. XEP-0050 Ad-Hoc CommandsTransporting 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. 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.

More Related