Inquiridor
Comunicação entre controller e camada de negócio

Discussão Geral
-
Boa noite.
Tenho a seguinte dúvida em relação à arquitetura MVC: pelo que eu já estudei sobre essa arquitetura, o MVC é utilizada na camada de visualização, correto? Isso significa que, se eu achar interessante, posso ainda possuir uma camada de negócio, uma de persistência e uma de modelo.
No caso, ficaria com a seguinte arquitetura:
1-Camada de visualização (MVC)
1.1-Model
1.2-View
1.3-Controler
2-Camada de negócio
3-Camada de persistência
4-Modelo (ou data objects)
Pois bem. Nesse modelo de arquitetura, se eu vou enviar dados da tela para a gravação no BD, eu teria o modelo da arquitetura MVC carregado com os dados da interface.
Mas pra enviar para as camadas "abaixo", eu teria que transferir os dados do modelo da arquitetura MVC (item 1.1) para o modelo que corre por fora da camada de visualização (item 4).
Eu poderia fazer essa transferência dentro do controller, mas me parece que, nesse caso, teria que existir algume camada intermediária entre as camadas de visualização e de negócio.
Enfim, as minhas dúvidas são:
a- existe alguma recomendação quanto a forma de transferir esses dados?
b- esta é uma boa arquitetura de desenvolvimento?
c- existe algum padrão de projeto que poderia ser usado nesse caso?
Sei que é uma questão que, de repente, envolve questões mais filosóficas do que práticas (ou não, rsrs). Mas é uma questão que faz um tempinho que está na minha cabeça, e gostaria de saber a opinião do pessoal aqui.
Enfim, quem puder responder, agradeço. Cada vez mais eu to entendendo que essa nossa área é passível de muito debate.
Grato
- Editado PAgrippa sexta-feira, 5 de setembro de 2014 22:36
Todas as Respostas
-
MVC é um padrão arquitetural.
Model - Entidades + Regras de Negócio
Controller - Interpreta as requisições
View - User InterfaceDê uma olhada nos projetos abaixo, eles podem ajudá-lo a entender como as "peças" se encaixam.
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1
http://nerddinner.codeplex.com/
https://prodinner.codeplex.com/
Thiago Custodio | Software Engineer
Blog
Twitter
Faça parte da Comunidade Windows Azure Brasil no Facebook -
Pagrippa, se sua dúvida é como transferir os dados para o repositor e depois leva-lo para o MVC, eu sempre utilizo uma camada chamada DTO e faço o AutoMapper dele com as minhas entidades.
http://automapper.codeplex.com/
http://eduardopires.net.br/2013/08/asp-net-mvc-utilizando-automapper-com-view-model-pattern/
http://msdn.microsoft.com/en-us/library/ff649585.aspx
-
Crie sua camada de dados e/ou negócio em um outro projeto use um mecanismo de injeção de dependência para usar nos controllers.
Eu uso e gosto do Castle Windsor, tem desenvolvedor que prefere on Ninject.
Tutorial Castle:
http://blog.albertomonteiro.net.br/2012/05/21/injecao-de-dependencia-com-castle-windsor/
http://docs.castleproject.org/Windsor.MainPage.ashxTutorial ninject:
http://www.devmedia.com.br/introducao-a-injecao-de-dependencia-no-asp-net-mvc/27099
Ambos podem ser instalados via Nuget.
- Editado João_ PradoModerator quinta-feira, 11 de setembro de 2014 01:30