2009-10-19 6 views
1

Je suis en train de travailler sur une application qui, comme la plupart des applications, a un tas de logique métier, la quasi-totalité devant être exécutée à la fois sur le serveur et le Flash client basé sur ... Et j'essaie de trouver la meilleure façon (lire: moins complexe) d'implémenter le moteur de règles.Partage de la logique entre le navigateur et le serveur

Ce sont les paramètres du problème:

  1. Le moteur de règles doit à la fois exécuter dans un navigateur Web (par exemple, dans Flash Player) et sur le serveur. Dupliquer la logique (par exemple en écrivant une version "serveur" et une version "client") serait un risque inacceptable.
  2. Les données d'entrée/sortie sont assez complexes, donc la sérialisation est un problème non trivial. Nous utilisons actuellement AMF pour tous nos besoins de sérialisation, et l'utilisation d'un autre protocole ajouterait une complexité importante ... Il devrait donc probablement être évité.
  3. Il est impossible d'implémenter un "langage de description de règles". L'expérimentation a montré que les règles sont suffisamment complexes pour qu'un tel langage ait besoin d'être complet. Ce qui ajouterait aussi beaucoup de complexité.
  4. Le moteur de règles n'aura pas besoin de faire quelques appels de service, mais pas beaucoup.

Actuellement, les meilleurs candidats sont les suivants:

  1. Ecriture du code dans ActionScript, puis en exécutant sur le serveur. En théorie, il est possible de démarrer une instance AVM, de la passer en permanence sur une passerelle, puis de transmettre les données de cette manière ... Mais cela semble loin d'être idéal. Y a-t-il une "bonne" façon de faire cela?

  2. Écrire le code dans haXe. Je ne sais rien du soutien de l'AMF de haXe, alors ça pourrait être un gros problème.

  3. Quelque chose impliquant Tamarin. Cela semble être une option viable, mais je n'ai pas fait assez de recherches pour le dire de toute façon.

Alors, qu'en pensez-vous? Certaines de ces options sont-elles clairement meilleures que d'autres? Y a-t-il quelque chose que je n'ai pas pensé à cela?

Enfin, grâce à la lecture de ce mur de texte :)

Répondre

1

Combien de données parlez-vous? Vous pouvez utiliser Air si vous voulez l'exécuter sur le serveur et accéder à une file d'attente ou quelque chose.

+0

Il n'y aura pas un volume * important * de données, mais il sera raisonnablement complexe. –

+0

Ouais, alors juste AMF sur HTTP pour communiquer à la fois les clients Flex et Air. De cette façon, vous pouvez garder la même base de code. – CookieOfFortune

Questions connexes