Remoting AMF3 et backend .NET avec FluorineFX.

12 déc

1)      Le remoting

Pour ceux qui ne le savent pas, l’AMF est un protocole de communication client-serveur inspiré de SOAP. L’intérêt de ce format réside dans sa capacité à transporter des données complexes et typées entre le client et le serveur, en binaire.

Bien qu’inventé en 2003, ce protocole reste le plus efficace et le plus performant, tenant tête à des collègues plus récents comme l’excellent JSON (http://www.jamesward.com/census2/ ).

De plus l’AMF est un format complétement ouvert dont on peut trouver ses spécifications ici :

http://opensource.adobe.com/wiki/download/attachments/111428….

 

2)      FluorineFX

On peut trouver une implémentation de l’AMF dans presque toutes les technologies serveur (PHP, JAVA, .Net, Ruby, Python, Perl, Haxe, ColdFusion, etc…). En .Net, les deux principales sont WebOrb et FluorineFX.

Sans rentrer dans les détails et chercher à comparer chacune de ses deux solutions, je vais plutôt indiquer les raisons qui nous ont fait choisir FluorineFX.

FluorineFX est :

-          Plus simple à installer

-          Plus simple à utiliser

-          Plus performant

-          Open source

 

Techniquement j’apprécie les fonctionnalités comme le RTMP, le Data Paging,  et le class mapping automatique.

 

3)      La configuration

Le serveur  :
Sous IIS 7 c’est on ne peut plus simple. Il faut bien entendu installer le module dans son projet et modifier le Web.config ainsi :

<system.webServer>

<modules>

<add name="FluorineGateway" type="FluorineFx.FluorineGateway, FluorineFx" />

</modules>

</system.webServer>

Le service :

La déclaration d’un service se fait également très simplement à l’aide du metatag [RemotingService] sur sa declaration de classe. Fluorine se chargera alors tout seul de la publication du service.

using FluorineFx;

namespace Demo.Service
{
[RemotingService]
public class UserService
{
public UserService()
{

}

public void LogUser(string username, string password)
{

}
}
}

Le client :

Coté client, l’utilisation de FluorineFX est completement transparent et ne change en rien par rapport à une autre solution.

Ainsi pour mapper un objet de donnée sur une classe coté serveur on utilisera encore le metatag

[RemoteClass( alias = "Demo.TestVO" )] .

 

Comments are closed.