<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.geturl.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>blog.geturl.net - Tag - swx</title>
  <link>http://blog.geturl.net/</link>
  <atom:link href="http://blog.geturl.net/feed/tag/swx/rss2" rel="self" type="application/rss+xml"/>
  <description>Actionscript, pixLib et tous leurs amis ;)</description>
  <language>fr</language>
  <pubDate>Fri, 02 Jan 2009 21:52:47 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>[pixSWX] - Une alternative au remoting</title>
    <link>http://blog.geturl.net/post/2007/10/24/%5BpixSWX%5D-Une-alternative-au-remoting</link>
    <guid isPermaLink="false">urn:md5:b230e3740b0503a8a38f4c8975a69b6d</guid>
    <pubDate>Wed, 24 Oct 2007 17:18:00 +0200</pubDate>
    <dc:creator>ali_o_kan</dc:creator>
        <category>Flash plateforme</category>
        <category>actionscript</category><category>pixLib</category><category>pixSWX</category><category>remoting</category><category>swx</category><category>SWXformat</category>    
    <description>&lt;p&gt;&lt;a href=&quot;http://code.google.com/p/pixswx/wiki/First_explanation&quot;&gt;english version&lt;/a&gt;  translated by Gilles Bertand&lt;/p&gt;


&lt;p&gt;Salut &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Tout d'abord pour les personnes qui ignore ce qu'est SWXformat une petite video s'impose&amp;nbsp;:&lt;/p&gt;

&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; width=&quot;437&quot; height=&quot;370&quot; id=&quot;viddler&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.viddler.com/player/ad098fea/&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;/object&gt;




&lt;p&gt;[MAJ] - Pour la version Française&amp;nbsp;: &lt;a href=&quot;http://www.beflash.be/?p=35&quot; hreflang=&quot;fr&quot;&gt;beflash.be&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Maintenant que tout le monde sait ce qu'est SWXformat, voyons ce qu'est pixSWX. :p&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;C'est tout simplement l'API qui permet d'utiliser SWX dans pixLib. &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;&lt;/p&gt;    &lt;h3&gt;SWXCall&lt;/h3&gt;

&lt;p&gt;Il s'agit de la classe principal, c'est elle qui va envoyer et recevoir les informations.&lt;/p&gt;
&lt;pre&gt;
[actionscript]
// -- Basic usage
var swx : SWXCall = new SWXCall(&amp;quot;http://www.geturl.net/services/swx_php_1/php/swx.php&amp;quot;, &amp;quot;Simple.addNumbers&amp;quot;);
swx.addListener(this); // implements ISWXListener
swx.load(18, 32);
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;ISWXListener&lt;/h3&gt;

&lt;p&gt;Est une interface déclare l'ensemble des méthodes qu'un écouteur doit implémenter.&lt;/p&gt;
&lt;pre&gt;
[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;
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;SWXResponder&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;
&lt;pre&gt;
[actionscript]
var swx : SWXCall = new SWXCall(&amp;quot;http://www.geturl.net/services/swx_php_1/php/swx.php&amp;quot;, &amp;quot;Simple.addNumbers&amp;quot;);
var swxResponder : SWXResponder = new SWXResponder(this, onResult, onFault, onProgress);
swx.addListener(swxResponder);
swx.load(18, 32);
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Dans cette exemple, ce sont les méthodes onResult, onFault, onProgress déclarer sur this qui seront utilisé.&lt;/p&gt;


&lt;h3&gt;SWXProxy&lt;/h3&gt;

&lt;p&gt;Cette classe permet de regrouper l'ensemble des méthodes d'un service.&lt;/p&gt;
&lt;pre&gt;
[actionscript]
class pixswx_first.net.SWXSimpleService	
	extends SWXProxy
{
	public static var echoDataMETHOD : SWXMethod = new SWXMethod(&amp;quot;echoData&amp;quot;);
	public static var addNumbersMETHOD : SWXMethod = new SWXMethod(&amp;quot;addNumbers&amp;quot;);
	
	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);
	}
}
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;SWXProxyLocator&lt;/h3&gt;

&lt;p&gt;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 -&amp;gt; http://blog.geturl.net/post/2006/10/27/63-pixlib-vues-modeles-controleur .&lt;/p&gt;
&lt;pre&gt;
[actionscript]
class pixswx_first.net.SWXLocator 
	extends SWXProxyLocator
{
	private static var _oI : SWXLocator;
	public static var simpleSERVICE : String = &amp;quot;Simple&amp;quot;;

	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() + &amp;quot; initialization with '&amp;quot; + gatewayURL + &amp;quot;' gateway url.&amp;quot;);
		push(simpleSERVICE, new SWXSimpleService(gatewayURL, simpleSERVICE));
		// push all services
	}
}
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;à l'initialisation du site&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[actionscript]
SWXLocator.getInstance().init(&amp;quot;http://www.geturl.net/services/swx_php_1/php/swx.php&amp;quot;);
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Ensuite&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[actionscript]
var swxService : SWXSimpleService = SWXSimpleService(SWXLocator.getInstance().getService(SWXLocator.simpleSERVICE));
swxService.echoData(new SWXResponder(this, onSWXResult, onSWXFault), &amp;quot;Hello World!&amp;quot;);
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Voilà pour ce tour d'horizon. &lt;br /&gt;&lt;/p&gt;


&lt;p&gt;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).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;+ infos :&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/pixswx/&quot; hreflang=&quot;fr&quot;&gt;Les sources de pixSWX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/pixswx/downloads/list&quot; hreflang=&quot;fr&quot;&gt;Les sources des exemples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.swxformat.org&quot; hreflang=&quot;fr&quot;&gt;SWXformat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pixlib.org&quot; hreflang=&quot;fr&quot;&gt;pixLib&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;bye, &lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Laurent &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>