Daniel,
Il est conseillé d'utiliser un contrôleur frontal, la plupart des gens aren » t conscient de ce modèle de conception.
Il s'agit d'un modèle de conception vraiment bon à utiliser car il garantit que vous accédez à l'application via un seul point d'entrée. Vous pouvez surveiller tout ce qui va et vient facilement avec moins de configuration. Vous réduisez la quantité de duplication de code possible car il existe un seul point d'entrée. En plus d'avoir moins de code à maintenir, le code devrait être plus facile à suivre puisqu'il n'y a qu'une seule entrée. Vous pouvez alors facilement suivre le flux d'exécution de l'application.
Malheureusement pour Seam, il n'y a pas vraiment de motif de contrôleur frontal. Je n'ai pas passé autant de temps que je voudrais développer le mien, mais la sécurité et la vérification sont mes priorités.
En ce qui concerne les contrôleurs de page/application, dans Seam, vous avez plus de contextes ou d'étendues disponibles. Événement, Page, Conversation, Session, Application, pour en nommer la plupart.
Si vous développez un contrôleur ou dans Seam, une action de page, la plupart du temps, il sera basé sur les événements. C'est la portée la plus courte. Si vous avez des flux de pages, vous utiliserez alors des composants de portée conversationnelle.
Regardez les exemples dans le code source. Vous pouvez faire beaucoup de choses avec très peu de code, c'est incroyable, mais en même temps, il se passe beaucoup de choses qui peuvent prendre du temps.
La conception à plusieurs niveaux que suivent la plupart des endroits ne s'applique pas nécessairement ici. Pour la plupart de mes pages, je définis une requête que je vais utiliser en XML (requête d'entité), puis je l'injecte dans l'action de ma page et je l'appelle ici. Ainsi, au lieu d'avoir des classes controller, service, dao et entity, vous finissez avec simplement une action de page, les requêtes et les classes d'entités. Vous pouvez découper les couches de service et dao dans la plupart des cas.
Votre définition complète d'un service peut également changer. Pour moi, un service est un fournisseur de services tel que la notification, la sécurité (audit), la gestion des exceptions, etc. Tous ces services s'exécutent en arrière-plan et ne sont pas liés à une requête http particulière.
Walter