SWXCall

Il s'agit de la classe principal, c'est elle qui va envoyer et recevoir les informations.

[actionscript]
// -- Basic usage
var swx : SWXCall = new SWXCall("http://www.geturl.net/services/swx_php_1/php/swx.php", "Simple.addNumbers");
swx.addListener(this); // implements ISWXListener
swx.load(18, 32);


ISWXListener

Est une interface déclare l'ensemble des méthodes qu'un écouteur doit implémenter.

[actionscript]
public function onFault(e : SWXFaultEvent) : Void;
public function onResult(e : SWXResultEvent) : Void;
// extends ILibListener
public function onLoadInit(e:LibEvent) : Void;
public function onLoadProgress(e:LibEvent) : Void;
public function onTimeOut(e:LibEvent) : Void;


SWXResponder

Cette classe permet de définir où l'on soit récupérer la réponse du serveur, basé sur la même logique qu'un Delegate.

[actionscript]
var swx : SWXCall = new SWXCall("http://www.geturl.net/services/swx_php_1/php/swx.php", "Simple.addNumbers");
var swxResponder : SWXResponder = new SWXResponder(this, onResult, onFault, onProgress);
swx.addListener(swxResponder);
swx.load(18, 32);


Dans cette exemple, ce sont les méthodes onResult, onFault, onProgress déclarer sur this qui seront utilisé.

SWXProxy

Cette classe permet de regrouper l'ensemble des méthodes d'un service.

[actionscript]
class pixswx_first.net.SWXSimpleService	
	extends SWXProxy
{
	public static var echoDataMETHOD : SWXMethod = new SWXMethod("echoData");
	public static var addNumbersMETHOD : SWXMethod = new SWXMethod("addNumbers");
	
	public function SWXSimpleService( sURL : String, serviceName : String )
	{
		super(sURL, serviceName);
	}
	
	public function echoData( swxlistener : ISWXListener, o ) : Void
	{
		super.callMethod(echoDataMETHOD, swxlistener, o);
	}
	
	public function addNumbers( swxlistener : ISWXListener, nFirst : Number, nSecond : Number ) : Void
	{
		super.callMethod(addNumbersMETHOD, swxlistener, nFirst, nSecond);
	}
}


[actionscript]
// -- SWXProxy Usage
var sGateway : String = "http://www.geturl.net/services/swx_php_1/php/swx.php";
var swxService : SWXSimpleService = new SWXSimpleService(sGateway, "Simple");
swxService.addNumbers(swxResponder, 100, 31);


SWXProxyLocator

Il s'agit d'une map qui permet de récupérer de façon global les différents service d'une application, basé sur le fonctionnement du FrontController -> http://blog.geturl.net/post/2006/10/27/63-pixlib-vues-modeles-controleur .

[actionscript]
class pixswx_first.net.SWXLocator 
	extends SWXProxyLocator
{
	private static var _oI : SWXLocator;
	public static var simpleSERVICE : String = "Simple";

	public static function getInstance() : SWXLocator 
	{
		if (!_oI) _oI = new SWXLocator();
		return _oI;
	}

	private function SWXLocator()
	{
		super();
	}

	public function init( remotingURL : String ) : Void
	{
		gatewayURL = remotingURL;
		Debug.INFO(toString() + " initialization with '" + gatewayURL + "' gateway url.");
		push(simpleSERVICE, new SWXSimpleService(gatewayURL, simpleSERVICE));
		// push all services
	}
}


à l'initialisation du site :

[actionscript]
SWXLocator.getInstance().init("http://www.geturl.net/services/swx_php_1/php/swx.php");


Ensuite :

[actionscript]
var swxService : SWXSimpleService = SWXSimpleService(SWXLocator.getInstance().getService(SWXLocator.simpleSERVICE));
swxService.echoData(new SWXResponder(this, onSWXResult, onSWXFault), "Hello World!");


Voilà pour ce tour d'horizon.

Je me suis très largement inspiré de l'API remoting que Francis a écrit, donc ce que j'ai écris au dessus est valable à peut de chose près pour les services en remoting (AMFPHP par exemple).

+ infos :

bye,

Laurent :)