Bonjour,

Je travaille sur une application internet permettant d'éditer des données distantes d'une manière concurrente et je cherche la bonne architecture à mettre en œuvre.

L'application cliente est développée en Flex et le serveur en Java. J'utilise BlazeDS pour faire la communication entre les deux. Pour valider ces technos j'ai écrit une première version où les clients demandent la donnée au serveur à la connexion, reçoivent toute la structure, l'éditent, puis retournent toute la structure au serveur pour sauvegarde.

Je ne peux évidemment pas garder une telle architecture pour la suite. En effet, la donnée est destinée à grossir et les clients ont tendance à n'en éditer qu'une petite partie. De plus, au delà des problèmes de temps de transfert et de consommation mémoire sur les clients, l'envoi de la structure complète rend difficile la gestion des conflits.

Je cherche donc une solution me permettant de réduire les échanges client/serveur aux seules données pertinentes pour le client. Un exemple qui me vient est Google Docs, où plusieurs personnes peuvent éditer simultanément d'énormes documents dans de simples navigateurs et sans qu'un conflit d'édition ruine le travail des uns et des autres.

Savez-vous quelle architecture se cache derrière de telles fonctionnalités*? Quelles sont les bonnes pratiques en la matière*?