2010-02-21 2 views
4

Donc, je suppose que les gens utilisent encore une couche de gestion en dehors de la logique du contrôleur? Si oui, où est cette ligne grise tracée et que ne mettez-vous pas dans vos classes de contrôleur que vous auriez dans votre projet de couche Business et vice versa? Il me semble que les contrôleurs débarrassent totalement le besoin d'une couche de gestion dans votre application MVC.Contrôleurs! = Couche métier?

+0

Ceci est une question chargée –

Répondre

9

La couche de contrôleur fait partie de la vue, à mon avis. Ce que vous appelez la couche de gestion que j'appelle services (pas services Web, c'est juste un choix de déploiement parmi beaucoup d'autres).

La couche de gestion connaît les cas d'utilisation et les unités de travail pour atteindre les objectifs des utilisateurs. Le contrôleur est entièrement chargé de valider, de lier et de marshaler les demandes, de déterminer quel service est nécessaire pour répondre à la demande et lui transmettre des valeurs, démêler la réponse et l'acheminer vers la vue appropriée suivante. Je suis donc d'accord avec l'hypothèse posée dans votre titre: controller! = Service. Le modèle classique qui vient de Smalltalk est Model-View-Controller, qui n'est pas d'accord avec ma déclaration en séparant la vue et le contrôleur en niveaux distincts.

Ce que je décris est ce qui est implémenté dans les frameworks Java pour le web et le bureau. Une modification de la technologie d'affichage implique généralement de modifier également le contrôleur. Donc, si l'idiome Smalltalk était model-view-controller, l'approche plus moderne ressemblerait à view-> controller-> service-> model/persistence. Le modèle signifie "objets de domaine", qui sont indépendants de toutes les technologies d'affichage.

+3

La couche du contrôleur fait partie de la vue? Le nom de Model-View-Controller représente trois couches totalement séparées. – LukLed

+0

Non, le contrôleur et la vue sont intimement liés. Je sais que l'histoire les a séparés, mais ce n'est pas l'interprétation moderne. C'est plutôt une vue Smalltalk, GoF. – duffymo

8

La ligne n'est pas "grise". C'est pur et absolu.

Le modèle (ou "couche de gestion") fonctionne avec n'importe quelle présentation. Interface graphique, ligne de commande, web. Et il ne nécessite pas des changements pour être enveloppé avec une interface graphique (voir + contrôle) une application de ligne de commande ou une application web.

Vous savez que vous avez correctement exécuté le modèle ("couche de gestion") lorsqu'il n'y a aucune fonctionnalité de présentation ou de contrôle. En outre, il est si complet que toute interface graphique peut l'utiliser directement.

3

Pour faire simple:

  • contrôleur doit contenir l'application logique spécifique.
  • "Couche métier" doit contenir la logique métier.

Suite à l'approche axée sur le domaine d'Eric Evans, la "couche d'affaires" contient:

  • niveau de service: l'interface est conçue autour du scénario d'utilisation
  • Modèles de domaine: les objets de domaine de base, entités, objets de valeur et plus.
  • objets de données d'accès: référentiels

Notez également que les modèles de domaine ne sont pas le niveau d'accès aux données. Il peut encapsuler l'accès aux données, mais n'est pas le niveau d'accès aux données lui-même.

Questions connexes