Question

Qui a la responsabilité


Qui a la responsabilité de commencer et terminer l'unité de travail dans une architecture MVC?

Était-ce utile?

La solution

Il est pas une responsabilité d'un contrôleur, il viole SRP . Contrôleur ne doit pas savoir même sur les UOW du tout. Dans le Web, un UOW par requête au serveur est généralement utilisé. Dans ce cas UOW doit être mis au rebut à la fin d'une demande et a commencé quelque part après le début d'une demande (début idéalement d'un UOW devrait être paresseux). Le meilleur endroit pour le faire est Global.asax (ou votre classe HttpApplication) en utilisant Application_EndRequest et Application_BeginRequest gestionnaires.
Ceci peut être facilement réalisé avec un cadre du CIO (mon préféré est Windsor), voir cette question pour plus de détails de mise en œuvre.

Autres conseils

Le contrôleur. Cela devient le contexte, vous pouvez donc commencer et terminer l'unité de travail. Par exemple une session NHibernate par demande aurait besoin de vous de savoir quand la demande avait commencé et terminé, vous devez donc le contexte pour vous donner la demande.

Je suis un croyant en architecture à couplage lâche. Mon contrôleur ne sait rien sur le dépôt, le contexte ou UnitOfWork. J'ai créé une couche de service (pas sûr que ce soit le bon terme) que le contrôleur appelle. Ce service travaille ensuite avec le dépôt (dll) persister toutes les données.

Comme zihotki dit que vous violez la SRP si vous donnez cette responsabilité au contrôleur. Ceci est un modèle axé sur la manipulation de données, et en tant que tel ne devrait pas être une préoccupation pour le contrôleur ... qui en ferait deux violations: un pour le SRP et anothrt le principe SoC

.

Quant à savoir qui a la responsabilité, qui est quelque chose à définir par votre architecture. La suggestion StartRequest / EndRequest semble assez solide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top