[pixSWX] - Une alternative au remoting
Par ali_o_kan le mercredi, octobre 24 2007, 17:18 - Flash plateforme - Lien permanent
english version translated by Gilles Bertand
Salut 
Tout d'abord pour les personnes qui ignore ce qu'est SWXformat une petite video s'impose :
[MAJ] - Pour la version Française : beflash.be
Maintenant que tout le monde sait ce qu'est SWXformat, voyons ce qu'est pixSWX. 
C'est tout simplement l'API qui permet d'utiliser SWX dans pixLib. 
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 
Commentaires
La vidéo arrive
Salut Ali
Alors cette video... Elle est dispo ?
En tout cas, merci pour ce petit dev. bien sympathique ^^
Les pixLibiens n'auront plus d'excuses pour ne pas utiliser SWX...
@++, Darios
Je crois que ton API est cassée
J'ai beau essayer et réessayer, le résultat de swx.load(18, 32); ne donne toujours pas 42 !
non, ça donne 50.
Pour la vidéo en Français : http://www.beflash.be/?p=35
SWFX c'est surtout compatible flashlite !