web-dev-qa-db-fra.com

Différence entre Request MVC et Component MVC

J'ai entendu dire que JSF implémente le MVC basé sur les composants et que Spring MVC implémente le MVC basé sur les requêtes. Je voudrais savoir quelle est la différence technique exacte entre ces deux types.

62
Krishna

Dans le MVC basé sur la demande (action), un servlet de contrôleur frontal unique déléguera aux modèles d'action en fonction de l'URL/des paramètres de la demande. Vous travaillez directement avec les objets bruts HttpServletRequest et HttpServletResponse dans le modèle d'action. Vous devez écrire du code vous-même pour rassembler, convertir et valider les paramètres de demande et, si nécessaire, mettre à jour les valeurs du modèle avant de pouvoir invoquer l'action commerciale.

Dans MVC basé sur les composants, un contrôleur frontal unique rassemblera, convertira et validera les paramètres de demande et mettra à jour les valeurs du modèle lui-même afin que vous n'ayez à vous soucier que de l'activité commerciale vous-même. La façon dont le contrôleur doit collecter/convertir/valider/mettre à jour les valeurs est définie en un seul endroit, la vue. Comme cela n'est pas possible avec du HTML "ordinaire", un langage de balisage spécifique est requis pour atteindre l'objectif. Dans le cas de JSF 2.0, c'est basé sur XML (XHTML). Vous utilisez XML pour définir des composants d'interface utilisateur qui à leur tour contiennent des informations sur la façon dont le contrôleur doit rassembler/convertir/valider/mettre à jour les valeurs du modèle et générer/rendre la représentation HTML nécessaire.

Les avantages et les inconvénients doivent être clairs à ce stade: avec un framework MVC basé sur la demande, vous devez écrire vous-même plus de code (standard) pour atteindre l'objectif. Cependant, vous vous retrouvez avec un contrôle beaucoup plus fin sur le processus et la sortie HTML/CSS/JS. Avec un framework MVC basé sur des composants, vous n'avez pas besoin d'écrire beaucoup de code vous-même. Cependant, vous avez un contrôle moins fin sur le processus et la sortie HTML/CSS/JS. Donc, si vous souhaitez faire les choses un peu différemment de ce que la norme décrit et/ou l'implémentation fournit, alors vous perdrez beaucoup plus de temps dans un framework MVC basé sur des composants lorsque vous n'êtes pas bien familiarisé avec ses tenants et aboutissants.

Manfred Riem (membre de l'équipe JSF 2.x et ex Java EE 8 MVC 1.0)) l'a bien décrit pendant son discours sur MVC 1.0 (JSR 371) sur Devoxx 14 :

photo

Voir également:

92
BalusC