2012-04-04 4 views
2

En ce qui concerne la théorie, il semble que le framework Asp.net MVC pourrait mieux être décrit comme un modèle de logiciel MVP ... Pourquoi pas? Parce que, comme il me semble, je vois Asp.net MVC comme une structure qui a des vues fonctionnelles (scripts en cours d'exécution) qui appellent des actions de contrôleur. Donc, il semble que les vues sont des maîtres.Pourquoi Asp.net MVC et non Asp.net MVP

+0

Je pense que vous êtes tout à fait raison. –

+0

@SimonLinder: FYI. J'ai trouvé plus d'infos qui raconte la ** différence principale ** ... dans MVP la vue est * le manager * qui parle alors au présentateur, mais dans MVC le contrôleur est * le manager * et les vues sont simplement * les paysans * instancié par leurs gestionnaires. Donc, la principale différence est le rôle de la vue. –

Répondre

2

Il existe deux différences distinctes (provenant de la source):

Voir Passif:

La vue est aussi stupide que possible et contient presque zéro logique. Le présentateur est un intermédiaire qui parle à la vue et au modèle. La vue et le modèle sont complètement protégés l'un de l'autre. Le modèle peut déclencher des événements, mais le présentateur s'y abonne pour la mise à jour de la vue. En mode passif, il n'y a pas de liaison de données directe, mais la vue expose les propriétés du setter utilisées par le présentateur pour définir les données. Tout l'état est géré dans le présentateur et non dans la vue.

Pro: surface de testabilité maximale; séparation nette de la vue et du modèle

Con: plus de travail (par exemple toutes les propriétés du setter) que vous effectuez vous-même toutes les liaisons de données.

Contrôleur Supervision:

Le présentateur gère les gestes de l'utilisateur. La vue se lie directement au modèle via la liaison de données. Dans ce cas, le présentateur doit passer le modèle à la vue afin qu'il puisse s'y lier. Le Presenter contiendra également une logique pour les gestes comme l'appui sur un bouton, la navigation, etc.

Pro: en tirant parti de la liaison de données, la quantité de code est réduite. Con: il y a moins de surface testable (à cause de la liaison de données), et il y a moins d'encapsulation dans la vue puisqu'elle parle directement au modèle.

Voir cette question: What are MVP and MVC and what is the difference?