Minha pergunta está relacionada ao padrão de design do MVC e à Razor Syntax, apresentada pela Microsoft.
Enquanto aprendia o padrão de design do MVC, foi-me dito que a idéia se baseia em um princípio conhecido como Separação de Preocupações .
Mas a Razor Syntax nos permite usar o C # diretamente no Views .
Não é esse cruzamento de preocupações?
c#
asp.net-mvc
separation-of-concerns
razor
John Strowsky
fonte
fonte
Respostas:
Você está confundindo a sintaxe do Razor com a separação de preocupações.
A separação de preocupações tem a ver com a estrutura do seu código.
Ser capaz de usar C # em modos de exibição não impede isso. Não tem nada a ver com a separação de preocupações enquanto tais.
Claro, você pode estruturar o código em sua exibição para não obedecer à separação de preocupações, mas e o código C # usado apenas para fins de exibição? Onde isso iria morar?
fonte
Em vez de responder diretamente à pergunta, minha resposta questiona a suposição feita na pergunta. Ou seja, a suposição de que o Razor foi criado para o MVC está incorreta. Eu trabalho na Microsoft na equipe do ASP.NET e tenho conhecimento em primeira mão disso.
O Razor não começou como um mecanismo de exibição para o MVC. Foi criado para páginas da Web do ASP.NET , que provavelmente é o mais longe possível do lado do espectro, com as preocupações menos separadas. Foi criado como uma alternativa moderna ao ASP.NET Web Forms / ASP clássico e, é claro, a muitas outras estruturas de programação de servidores semelhantes. A idéia do Razor era criar transições quase perfeitas entre HTML (marcação) e C # (código).
Somente mais tarde a equipe (que me incluí) decidiu que a sintaxe do Razor faria muito sentido em prol de um mecanismo de exibição para MVC, que estava sendo escrito pela mesma equipe.
Quanto ao Razor ativar, dificultar, melhorar ou alterar o conceito de separação de preocupações no ASP.NET MVC, a resposta de Oded é imediata.
fonte
Você está confundindo "separação de tecnologias" com "separação de preocupações". A idéia básica por trás da parte "View" do MVC é que o código na "View" não está executando nenhum acesso a dados ou lógica pesada diretamente, mas é deixado para as partes "Model" e "Controller", respectivamente. O "Controlador" transforma os dados, executa qualquer lógica necessária e os encaminha para a "Visualização" correta. A exibição também pode fazer transformações de dados, mas eu tendem a mantê-las puramente cosméticas, como a transformação de data mencionada acima.
fonte
Eu posso pensar em um
Don't do it
exemplo perfeito .Vamos dizer que temos um ProductController:
Com o barbeador, temos uma alternativa
e em nossa opinião:
Eu acho que é bastante óbvio que a segunda solução parece tão errada. Se você fizer algo assim, não culpe a navalha - culpe a si mesmo.
E não se esqueça: a capacidade de usar o C # nas visualizações não é um recurso básico, mas também era possível com as visualizações do ASP.NET. Com o barbeador, é um pouco mais simples.
Se você estiver procurando por um mecanismo de modelo com mais trilhos, consulte o nancy.fx com o mecanismo de visualização Super simples.
fonte