2010-05-20 24 views
0

J'ai vu un tas de screencasts démontrant l'intégration entre blazeds et flex, ainsi que certains didacticiels lcds, pilotés par le modèle ou non.Propagation en direct de DataGrid/ArrayCollection lors du changement de valeurs dans l'application Flex

J'ai vu que certains d'entre eux le présentateur ouvre 2 navigateurs et une fois que vous modifiez une valeur dans une grille, il se propage à toutes les autres grilles qui présente les données.

Je me demande comment diable cela est fait, et comment reproduire. Cette fonctionnalité dépend-elle de la solution Edge/LCDS? Je ne le pense pas, mais je n'ai jamais vu de code expliquant cela. Je pense qu'il peut ou ne peut pas compter sur les protocoles de messagerie JMS/MQ/ou s'il s'agit d'une sorte de synchronisation bidirectionnelle et de propagation de collection entre les instances du même résultat de service.

Merci pour toutes les entrées.

Cheers,

Ernani

Répondre

4

Vous pouvez implémenter cette fonctionnalité à la fois avec BlazeDS et LiveCycle Data Services. BlazeDS fournit des fonctionnalités de messagerie et de messagerie (les fonctions de messagerie vous permettent de synchroniser les données entre les clients), LCDS étend BlazeDS en ajoutant de nouvelles fonctionnalités telles que la gestion des données (améliorations de productivité), la génération de PDF, EDGE Développement MDA, intégration de portail, etc. Il ajoute également des fonctions de messagerie avancées telles que la confluence des messages, la limitation, la fiabilité.

BlazeDS est gratuit et open source et à mon avis une solution robuste, vous pouvez l'utiliser si vous voulez synchroniser les données entre les clients. LCDS ajoute beaucoup de choses, mais les clients LCDS devraient avoir un gros budget.

Comment ça marche? Il n'y a pas de JMS pour cette fonctionnalité (cependant BlazeDS peut s'intégrer avec un fournisseur JMS afin que vous puissiez avoir un client dans broswser et le second une application SWING). Au lieu de cela, il existe des files d'attente de messages sur le serveur et un graphique éditeur-abonné. Afin de pousser les données des clients vers le serveur, il y a plusieurs choix, les plus avancés ne sont disponibles que sur LCDS: interrogation HTTP, interrogation longue HTTP, streaming HTTP, sockets RTMP (LCDS uniquement). Tous sont décrits en détails sur le blog Damon.

Si vous voulez voir du code aller et télécharger BlazeDS et jeter un oeil sur les échantillons, il y en a plusieurs montrant les fonctionnalités de messagerie. De plus, un serveur Tomcat est inclus dans le téléchargement et les exemples sont déjà déployés.

+0

Bonne réponse. Je voudrais également ajouter qu'il existe quelques exemples de fonctionnalités de messagerie et de gestion des données dans Tour de Flex: http://flex.org/tour Les exemples de gestion des données peuvent être cassés pour le moment en raison de la base de données être en bas. Mais l'équipe de TDF travaille pour résoudre ce problème. –

+0

Merci, bonne réponse en effet, donc afin de reprendre cette question, c'est seulement faisable en utilisant un point de terminaison MQ? J'ai pensé à gérer ceci avec RemoteObjects seulement, mais cela semble impossible, non? –

+0

Oui, c'est ... téléchargez les exemples d'intégration Spring BlazeDS (http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/ch06.html) et vous trouverez un exemple utilisant ActiveMQ. Oui, c'est presque impossible, il faut utiliser les objets producteurs et consommateurs. Presque impossible signifie que vous pouvez faire quelque chose en mettant en œuvre votre propre sondage basé sur des appels à distance périodiques, mais il est exagéré. –

1

Pour ce faire, vous devez garder une connexion socket ouvert entre le client et le serveur afin que le serveur peut envoyer des données au client.

Je crois que le protocole RTMP a été utilisé pour cette communication bidirectionnelle. Je comprends que c'est la raison principale pour utiliser LiveCycle Data Services sur BlazeDS. WebORB dispose également de fonctionnalités push, tout comme GraniteDS. J'ai aussi vu des démos où cela est fait avec ColdFusion.

Si aucune de ces options n'est disponible, vous êtes en train d'effectuer une sorte d'interrogation sur le serveur distant.

Malheureusement, je n'ai pas d'échantillons de code spécifiques à partager.

+0

Merci pour votre réponse, mais les échantillons avec LCDS sont beaucoup plus faciles comme je l'ai vu, il faut que ce soit un moyen de définir cela dans un manière plus facile. Je pense que ce dont il a besoin est de garder une sorte d'état d'application de la dernière matrice chargée et de l'effacer ou de l'interroger. Cette vidéo fournit un exemple de fonction pilotée par modèle sur LCDS. Considérant que BlaceDS est une version à faible empreinte de LCDS, et nous devons assurer une sorte de réplication d'état, ce serait une fonctionnalité indispensable dans BlazeDS. http://vimeo.com/6612999 Merci encore. –

0

Un échantillon simple montrant comment faire en utilisant WebORB se trouve ici: http://www.kensodev.com/2009/11/01/synchronize-client-application-using-flexweborb-net/

Cet échantillon est basé sur 3 WebORB pour .NET; WebORB 4 est maintenant disponible, pour .NET et Java. Point être: C'est simple cerveau-mort en utilisant WebORB, ce qui est gratuit (bien qu'une version payante Enterprise est également disponible). Dieu ne plaise que quelqu'un devrait débourser 30K $ pour LCDS juste pour obtenir cette fonctionnalité.

--- Jim Plamondon, Minuit Coders (fabricants de WebORB)