Webservices: connecting Joomla! with other programs.

32
Webservices Herman Peeren June 1 st 2010 connecting Joomla! with the rest

description

Webservices: connecting Joomla! with other programs.XML-RPC, SOAP and REST with Joomla!

Transcript of Webservices: connecting Joomla! with other programs.

Page 1: Webservices: connecting Joomla! with other programs.

Webservices

Herman Peeren June 1st 2010

connecting Joomla! with the rest

Page 2: Webservices: connecting Joomla! with other programs.

Webservice:• data-exchange with a webserver• often in XML-format

Page 3: Webservices: connecting Joomla! with other programs.

Alternative: ODBCdirectly calling the database from client-application

“normal”, indirect call, e.g. via webpage or webservice:

direct call to database, ODBC:

Page 4: Webservices: connecting Joomla! with other programs.

now: Webservices

Page 5: Webservices: connecting Joomla! with other programs.

Joomla! as a system on its own

Page 6: Webservices: connecting Joomla! with other programs.

connecting Joomla!

Page 7: Webservices: connecting Joomla! with other programs.

connecting Joomla!

Page 8: Webservices: connecting Joomla! with other programs.

connecting Joomla! to: • desktop applications

(RIAs), Java, Flex, Delphi, VS, Titanium, MS Office, etc.

• other webapplications: as a server or client

• browser: Ajax, Flash

• any other computer program...

Page 9: Webservices: connecting Joomla! with other programs.

Example uses:

• connecting to multiple Joomla!-sites for backup and upgrading. (e.g.: Akeeba Remote)

• using external services (e.g. Google Docs, Amazon S3, etc.)

• bridges with other applications (e.g. MageBridge)

Page 10: Webservices: connecting Joomla! with other programs.

Protocols:

• your own... • a binary protocol like AMF• using some XML or JSON (Ajax)• one way XML: feed (Atom/RSS)

• XML-RPC• SOAP• REST

when we talk about webservices we mostly talk about those 3 ways

}

Page 11: Webservices: connecting Joomla! with other programs.
Page 12: Webservices: connecting Joomla! with other programs.
Page 13: Webservices: connecting Joomla! with other programs.

Remote Procedure Calls (XML-RPC and SOAP)

• call a method on the server• DO something (procedure, verb)

vs REST• get/put/post/delete a resource on the server

• resource (object, noun)

Page 14: Webservices: connecting Joomla! with other programs.

XML-RPC

• define I/O types• phpxmlrpc-library• in Joomla!: as a plugin...• better: use MVC• changed in J! 1.6

Page 15: Webservices: connecting Joomla! with other programs.

Webservice and MVC• model: is the “heart” of application(use same model for webservice)

• controller decides what to do based on the input

• view: renders the output

Page 16: Webservices: connecting Joomla! with other programs.

XML-RPC in Joomla! 1.6

• no plugin anymore• new JController (might use a strategy pattern?)

• controllername.xmlrpc.php• idem: controllername.json.php• index.php?....&protocol=xmlrpc • http://docs.joomla.org/Xml-rpc

Page 17: Webservices: connecting Joomla! with other programs.

SOAP

• evolved from XML-RPC• heavily used in .NET• meta-data: WSDL and SOAP-envellope

• SOAP-header: a.o. for authentication

• WSDL: description in XML-format

Page 18: Webservices: connecting Joomla! with other programs.

SOAP-envellope:

Page 19: Webservices: connecting Joomla! with other programs.

WSDL:

• description of a webservice• automatic code generation!• easy to use in e.g. Delphi, Flex, etc.

Page 20: Webservices: connecting Joomla! with other programs.

sample SOAP-calls and WSDL

Page 21: Webservices: connecting Joomla! with other programs.

importing WSDL in Delphi 2010:

Page 22: Webservices: connecting Joomla! with other programs.

importing WSDL in Flex Builder 3:

Page 23: Webservices: connecting Joomla! with other programs.

SOAP in Joomla!, some possibilities:• JMSOAP and com_connector: J!1.0 (vBulletin-connection)

• VM SOA: SOAP for VirtueMart• other PHP libraries and Frameworks: NuSoap, PearSoap, Zend, PHP5 SOAP module...

• JSOAP coming soon! (based on PHP5-SOAP)

require_once(“nusoap.php”); $server = new soap_server;

Page 24: Webservices: connecting Joomla! with other programs.

REST

• “representational state transfer”• architecture, not a protocol• linking to recourses, not methods• resource = object + URI• stateless communication• uniform interface (CRUD)• using HTTP-headers and methods

Page 25: Webservices: connecting Joomla! with other programs.
Page 26: Webservices: connecting Joomla! with other programs.

REST in Nooku Framework:

• KControllerBread + KRequest works out of the box!

• authentication and http status messa-ges not yet 100% (planned for 0.9)

Joomla! RESTful thoughts:

• www.alltogetherasawhole.org/profiles/blogs/restful-api-for-joomla

Page 27: Webservices: connecting Joomla! with other programs.

Authentication/Authorization

• with XML/RPC credentials are para-meters in the remote procedure call.

• with SOAP credentials are in the SOAP-header.

• with REST the credentials are in HTTP-headers.

Page 28: Webservices: connecting Joomla! with other programs.

SSL or other encrypting

• SSL (https://) can be used to encrypt the credentials (and data)

• or you can define encryption of cre-dentials (and data) yourself: - basic (base64: no real encryption) - digest - WSSE, OAuth, your own variation

Page 29: Webservices: connecting Joomla! with other programs.

Get Joomla! connected

• providing standard, easy to use con-nections is essential for further deve-lopment of Joomla!

• let’s provide XML/RPC, SOAP and REST within the MVC framework in a uniform way (Zend has it all, why not we too?)

Page 30: Webservices: connecting Joomla! with other programs.

let’s connect Joomla!

Page 31: Webservices: connecting Joomla! with other programs.

let’s connect Joomla!

Page 32: Webservices: connecting Joomla! with other programs.

Questions?

Contact info:Herman [email protected]