Découverte de Remoting 2.0


Fichiers à télécharger :

Amfphp
ComposantComposants Remoting

Qu’est ce que Flash remoting ?

Flash Remoting est une passerelle permettant d’échanger des données avec un serveur de manière ultra simplifiée tout en conservant les types de données.

Flash Remoting utilise un format binaire nommé ActionScript Message Format (AMF) permettant un gain de performances remarquable lors des échanges entre le serveur et Flash, le format AMF étant un format natif compressé du lecteur. Le développeur Flash appelle des méthodes distantes définies sur un service distant qui est en fait une classe PHP définie sur le serveur.

La puissance de Flash Remoting consiste dans la conversion automatique des données entre le serveur et le player Flash, autrement dit, plus aucune sérialisation des données, Remoting s’occupe de tout, vous passez un tableau à votre méthode distante, Remoting va convertir le tableau ActionScript en un tableau compatible PHP, une Date ne sera pas convertie automatiquement mais interprétée et passée en timestamp, mais il sera tout de même possible de renvoyer de PHP un objet Date à Flash en spécifiant le type retourné dans les attributs de la méthode dans le service distant.

Pourquoi pas XML ?

Le format XML permet de structurer vos données mais nécessite un travail au niveau du schéma de représentation des données. Les données n’étant pas compatible entre une application serveur et le player Flash, vous ne pourrez pas renvoyer un tableau PHP à Flash de manière transparente et inversement, il vous faudra à chaque fois sérialiser puis desérialiser le tableau, d’où l’intérêt du XML.

Flash Remoting permet de gérer la conversion des différents types d’objets automatiquement entre l’application serveur et le player Flash, tout cela au format AMF, ce qui permet une intérpretation des données beaucoup plus performante qu’un parse de chaîne de caractère (XML) qui necessiterait une sérialisation de la chaine vers un objet XML, un gain notable aussi bien au niveau performance que niveau bande passante utilisée. De plus Flash Remoting a la capacité de retourner à Flash des ressources mySQL sans aucun traitement à effectuer ;)

Pour utiliser Remoting et PHP nous utiliserons Amfphp, car les classes Remoting que vous ajoutez en installant les composants permettant la manipulation des données, les classes nécessaires à la connexion mais n’intègre pas les classes gérant la conversion des types entre Flash et le serveur pour cela vous pouvez utilisez Amfphp pour PHP, Fluorine pour .NET, OpenAMF pour Java, ou encore Flap pour Perl et Python. Voici un tableau détaillant les types correspondants entre ActionScript et PHP par exemple :

hjk

Voici un schéma expliquant le fonctionnement de Flash Remoting :

jhk

Amfphp installé sur votre serveur gère la conversion des données entre Flash et la classe PHP, AMPHP est gratuit et open-source, relativement léger il s’installe en quelques minutes sur votre serveur mutualisé ou dédié. Il est aussi possible d’appeler des WebServices avec AMFPHP, dans notre tutoriel nous utiliserons un service simple que nous créerons.

Le but de ce tutoriel est d’aborder Flash Remoting au terme de cette vidéo sous serez capable de vous connectez à une service distant et d’appeler une méthode sur ce service, nous n’aborderons pas les thèmes comme le débogage, ou encore l’optimisation de performances ou encore le design objet, mais simplement comment débuter avec Flash Remoting. Trois tutoriaux seront très bientôt disponible traitant du débogage avec Remoting, puis du Service Browser permettant un développement des services distants extrêmement simplifié, et enfin une explication avancée des différents attributs disponibles pour la propriété methodTable.

Attention : Pour bénéficier de l’encodage automatique des caractères spéciaux Français, veillez à bien décommenter la ligne suivante dans votre passerelle (gateway.php) comme ci dessous :

Erratum : Dans la partie 3, une petite etourderie m’a fait importer la classe PendingCall du paquetage mx.services.PendingCall lors de l’appel de méthode distante. Cette classe correspond en fait aux PendingCall utilisés lors d’appels de méthodes de WebServices, la classe correcte est mx.remoting.PendingCall ;)

Dans l’absolu ce n’est pas grave cela fonctionne aussi, mais mieux vaut utiliser mx.remoting.PendingCall qui correspond au vrai type de données ( vérifiez avec instanceof ).

Bookmark and Share

5 réponses Souscrire aux commentaires


  1. angel

    Bonjour je viens d’effectuer ce magnifique tutoriel et je remercie ce site d’exister.
    Neanmoins j’averti les utilisateurs qui comme moi vont effectuer ce tuto qu’il vont certainnement avoir le même pb que moi. cad
    quand on telecharge amf php la version n’est pas la meme que dans le tuto et quand on test gateway.php dans le naviguateur celui ne propose pas la fenetre et NetConnection Debugger n’affiche rien, alors que ce n’est pas le cas dans l’exemple du tuto!

    je refait et reverifier plusieurs fois avant d’ecrire ce comm

    18 déc 2008 @ 15:11


  2. Alama

    En AS3 et CS4, les choses ont changé, le remoting est natif et utilise les classes NetConnection et Responder.

    Les choses sont + simples.

    La version AMFPHP a utiliser est la 1.9 bêta qui gere le AMF1 et le AMF3

    la notion de services n’est plus vraiment comme défini avant, mais plutôt des classes qui répondent au nouveau standard PHP 5.1. la méthode table n’est plus nécessaire.

    Le générateur AS a été supprimé temporairement et je ne sais pas ce qu’il en est du setCredential.

    Le frameWork AMFPHP a été déjà réécrit en partie, mais devrait être entièrement revu pour répondre aux nouvelles normes POO PHP et devenir ainsi la release 2.0

    Sinon, la 1.9 fonctionne très bien en complément de l’extension AMF pour PHP.

    15 jan 2009 @ 18:56


  3. Alama

    PS: pour FLEX, je préconise la solution AS3 pure en balises MX:SCRIPT au lieu de la solution services XML.. mais bon, selon moi! :D

    15 jan 2009 @ 18:58


  4. maxime

    formidable ! j’en suis pas encore à la réalisation mais ça a l’air très clair.

    je suis en phase d’étude pour la création d’un site dynamique en flash, je me posais pas mal de questions sur la communication entre flash et une bdd et vous avez répondu à une bonne partie de celles-ci. merci.

    Me reste plus qu’à trouver les réponses aux autres… :)

    16 mai 2009 @ 8:51


  5. Nashd

    Toutes mes recherches pointent a Flash Builder comme solution. Reste a voir.

    22 juil 2010 @ 20:01

Répondre