webservices: connecting joomla! with other programs

Post on 17-Jan-2015

32.977 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Webservices

Herman Peeren June 1st 2010

connecting Joomla! with the rest

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

Alternative: ODBCdirectly calling the database from client-application

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

direct call to database, ODBC:

now: Webservices

Joomla! as a system on its own

connecting Joomla!

connecting Joomla!

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

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)

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

}

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)

XML-RPC

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

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

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

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

SOAP-envellope:

WSDL:

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

sample SOAP-calls and WSDL

importing WSDL in Delphi 2010:

importing WSDL in Flex Builder 3:

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;

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

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

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.

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

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

let’s connect Joomla!

let’s connect Joomla!

Questions?

Contact info:Herman Peerenherman@yepr.nl

top related