[pixSWX] - Une alternative au remoting
Par Laurent Deketelaere 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. :p
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. :p
Pour la vidéo en Français : http://www.beflash.be/?p=35
SWFX c'est surtout compatible flashlite !