Bonjour,

Je me pose des questions sur l'architecture de mon application et j'aimerais avoir vos avis.

J'ai un client en Flex qui communique avec un serveur en Java au moyen de BlazeDS pour manipuler une structure de donnée. Un opération que je pourrais faire sur ma structure serait, par exemple, en Java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
structure.getElement("Jean").getVoisin("Jacques").setParent("Jules");
Mon objectif est de faire faire ce genre d'opération depuis le client. Mon approche actuelle est d'envoyer un mx.messaging.messages.AsyncMessage au serveur, via un mx.messaging.Producer, en mettant dans le message le nom de l'élément, du voisin et du parent. Le serveur se débrouille pour enchaîner les appels.

Je trouve ça un peu lourd pour le client. J'aimerais qu'il puisse faire quelque chose comme suit, en ActionScript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
structureDistante.getElement("Jean").getVoisin("Jacques").setParent("Jules");
Oui, c'est la même chose qu'en Java C'est pour ça que ça serait super.

A priori, je partirais bien dans une approche ou les classes Structure, Element, Voisin et Parent sont marqués avec des [RemoteClass="..."]. Mais j'ai du mal à voir comment indiquer à Flex qu'une instance sur le client correspond à une instance sur le serveur. Si j'écris, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[RemoteClass="mon.package.Voisin"]
public class Voisin {
  // rien
}
J'imagine que Flex ne va pas accepter que je fasse ensuite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
var v:Voisin = ... /* une instance bien marquée comme liée à une instance du serveur */
v.setParent("Jules");
Pourtant ça serait super.

Je précise qu'il me semble nécessaire que mes données de références soient sur le serveur car plusieurs client peuvent attaquer la même structure. Et du coup il faudra aussi que les modifications faites par un client soient rapportées aux autres clients.

Alors, connaissez-vous une approche pratique pour ce problème*?