Le contrôleur doit-il effectuer des affectations directes sur les objets Modèle, ou simplement indiquer au modèle ce qui doit être fait?Dans MVC, quelles sont les limitations du contrôleur?
Répondre
Le contrôleur possède deux fonctions classiques:
gérer l'événement d'entrée de l'interface utilisateur (gestionnaire ou rappel déposée)
avertir le modèle d'une action - qui peuvent ou peuvent ne pas résulter un changement sur l'état du modèle
il ne fonctionne pas la validation des données, qui est sur le modèle, ni avoir son mot à dire dans la façon dont l'information est présentée.
Les services de modèle n'ont pas besoin de connaître l'existence du contrôleur, ainsi, le contrôleur peut faire ce dont la vue a besoin en utilisant les services de modèle.
Cela dépend largement de la portée de votre application. Si c'est relativement rapide et sale, alors il n'y a aucun sens dans la sur-ingénierie, et bien sûr, vos contrôleurs peuvent parler à vos objets de modèle. D'un autre côté, s'il doit être plus «entreprenant» pour une raison quelconque, un bon modèle à utiliser conjointement avec MVC est ce qu'on appelle le «Business Delegate». C'est ici que vous pouvez composer des méthodes grossières à partir d'une ou de plusieurs méthodes sur un ou plusieurs objets du modèle; par exemple, supprimer un objet et retourner une liste rafraîchie sans cet objet. Cette couche donne deux avantages. D'une part, il déconnecte les contrôleurs de tout système ORM utilisé pour les objets du modèle. De plus, c'est la couche qui doit finalement traiter de façon constructive toutes les exceptions qui peuvent avoir eu lieu au lieu de les relancer.
Je ne pense pas qu'un contrôleur devrait traiter des objets de modèle.
J'ai tendance à penser que le contrôleur fait vraiment partie du niveau de l'interface utilisateur. Je préfère injecter une couche de service entre le contrôleur et le reste de l'application. Le niveau Web accepte les requêtes HTTP, les paramètres unmarshals des objets de la demande dans les objets avec lesquels l'interface de service peut traiter, et la réponse à renvoyer. Tout le travail avec les transactions, les unités de travail, et traitant des objets de modèle et de persistance est fait par le service.
Cette approche est davantage axée sur le service. Il sépare le service de l'interface utilisateur, laissant la possibilité à plusieurs clients de réutiliser le même service. Cela rend la couche qui demande les services au service "mince", il est donc facile de désactiver les services SOAP pour REST ou EJB ou CORBA ou quoi que ce soit de nouveau.
ok, si vous vouliez extraire l'adresse IP de la requête, le feriez-vous dans la couche service ou dans le contrôleur? – zsharp
le même pour l'identification de l'utilisateur? – zsharp
contrôleur pour l'adresse IP. Pour ce qui est de la sécurité, c'est une préoccupation transversale, elle appartient donc à un aspect. – duffymo
- 1. Quelles sont les limites du refactoring?
- 2. Quelles sont les limitations pour les noms de signets dans Microsoft Word?
- 3. Quelles sont les limitations des types de caractères primitifs dans D?
- 4. Quelles sont les limitations de Dynamic Language Runtime dans .NET 4.0?
- 5. Quelles sont les applications réelles du rendement?
- 6. Quelles sont les limitations de la méthode PyObject .__ tojava__ de jython?
- 7. Quelles sont les options de validation pour ASP.NET MVC
- 8. Quelles sont les meilleures pratiques pour l'écriture MVC App?
- 9. Quelles sont les chaînes vraiment dans .NET?
- 10. Asp.Net MVC: Les attributs de filtre au niveau du contrôleur sont-ils pris en charge?
- 11. Quelles sont les modifications empilables?
- 12. Quelles sont les nouvelles fonctionnalités du navigateur disponibles aujourd'hui?
- 13. Apache Velocity: Quelles sont les variables disponibles dans les templates?
- 14. Quelles sont les utilisations pratiques du fichier resx?
- 15. Quelles sont les règles d'appel du constructeur de la superclasse?
- 16. Limitations du spouleur d'impression Windows?
- 17. Quelles sont les règles concernant les chemins httpHandler dans ASP.NET?
- 18. Quelles sont les alternatives à ClickOnce?
- 19. Quelles sont les valeurs SPAlert EventTypeBitmask valides?
- 20. quelles sont les options disponibles pour l'implémentation de rapports enrichis dans asp.net mvc?
- 21. Quelles sont les meilleures options disponibles pour une interface utilisateur riche dans une application ASP.NET MVC?
- 22. Comment utiliser les paramètres facultatifs dans un contrôleur ASP.NET MVC
- 23. Quelles sont les bonnes expressions régulières?
- 24. Quelles sont les variables initialisées en Delphi?
- 25. Afficher l'alerte javascript de l'action du contrôleur dans asp.net mvc
- 26. ajouter un élément à l'application du contrôleur dans asp.net mvc
- 27. Compresseur YUI: Quelles sont les micro-optimisations?
- 28. Quelles sont les alternatives "Pastie"? (installable)
- 29. Limitations de ScriptManager dans les appels AJAX
- 30. Quelles sont les limites internes à WCF?
Plus généralement, le contrôleur coordonne la vue et le modèle. S'il invoque des modifications sur le modèle, il le ferait indirectement. Par exemple, via des méthodes de façade. L'intention est d'isoler la logique métier de l'interface utilisateur. –
Dans ce sens, l'idée de liaison de modèle à l'entrée webuser dans la méthode du contrôleur ne serait pas recommandée? – zsharp