Gostaria de saber o que, por que ou quando é melhor escolher cshtml e o quê, por que ou quando é melhor escolher tecnologias aspx? A que se destinam essas duas tecnologias?
Obrigado,
Gostaria de saber o que, por que ou quando é melhor escolher cshtml e o quê, por que ou quando é melhor escolher tecnologias aspx? A que se destinam essas duas tecnologias?
Obrigado,
Respostas:
Como outras pessoas responderam, .cshtml
(ou .vbhtml
se esse for o seu sabor) fornece um mapeamento de manipulador para carregar o mecanismo MVC. A .aspx
extensão simplesmente carrega o aspnet_isapi.dll que executa a compilação e fornece formulários da web. A diferença no mapeamento do manipulador é simplesmente um método de permitir que os dois coexistam no mesmo servidor, permitindo que os aplicativos MVC e os aplicativos WebForms vivam em uma raiz comum.
Isso permite que http://www.mydomain.com/MyMVCApplication seja válido e servido com regras MVC junto com http://www.mydomain.com/MyWebFormsApplication para ser válido como um formulário da web padrão.
Edit:
Quanto à diferença nas tecnologias, o framework de templates MVC (Razor) se destina a retornar as páginas .Net a uma plataforma "baseada na web" mais RESTful de visualizações modeladas que separam a lógica do código entre o modelo (objetos de negócios / dados) , a visão (o que o usuário vê) e os controladores (a conexão entre os dois). O modelo WebForms (aspx) foi uma tentativa da Microsoft de usar a incorporação complexa de javascript para simular um aplicativo com mais estado semelhante a um aplicativo WinForms completo com eventos e um ciclo de vida de página que seria capaz de manter seu próprio estado de página para página.
A escolha de usar um ou outro sempre será controversa porque há argumentos a favor e contra os dois sistemas. Eu, pelo menos, gosto da simplicidade da arquitetura MVC (embora o roteamento seja tudo menos simples) e da facilidade da sintaxe do Razor. Eu sinto que a arquitetura WebForms é muito pesada para ser uma plataforma web eficaz. Dito isso, há várias instâncias em que a estrutura de WebForms fornece um modelo muito sucinto e utilizável com uma rica estrutura de eventos bem definida. Tudo se resume às necessidades do aplicativo e às preferências de quem o está construindo.
Razor é um mecanismo de visualização para ASP.NET MVC e também um mecanismo de template . O código Razor e o código embutido ASP.NET (código misturado com marcação) são compilados primeiro e transformados em um assembly temporário antes de serem executados. Assim, assim como C # e VB.NET compilam para IL, o que os torna intercambiáveis, o código Razor e Inline são intercambiáveis.
Portanto, é mais uma questão de estilo e interesse. Estou mais confortável com o razor, em vez do código embutido ASP.NET, ou seja, prefiro as páginas do Razor (cshtml) às páginas .aspx.
Imagine que você deseja obter uma Human
classe e renderizá-la. Em arquivos cshtml você escreve:
<div>Name is @Model.Name</div>
Enquanto estiver nos arquivos aspx, você escreve:
<div>Name is <%= Human.Name %></div>
Como você pode ver, o @
sign of razor torna a mistura de código e marcação muito mais fácil.
Model
é usado para visualizações fortemente tipadas, nas quais você define seu tipo no topo usando uma model
palavra-chave.
Embora a sintaxe seja certamente diferente entre Razor ( .cshtml
/ .vbhtml
) e WebForms ( .aspx
/ .ascx
), (Razor sendo o mais conciso e moderno dos dois), ninguém mencionou que, embora ambos possam ser usados como View Engines / Templating Engines, ASP.NET tradicional Os controles de formulários da Web podem ser usados em qualquer arquivo .aspx ou .ascx (mesmo em coesão com uma arquitetura MVC).
Isso é relevante em situações onde soluções de longa data para um problema foram estabelecidas e empacotadas em um componente conectável (por exemplo, um controle de upload de arquivo grande) e você deseja usá-lo em um site MVC. Com Razor, você não pode fazer isso. No entanto, você pode executar todo o mesmo processamento de back-end que usaria com uma arquitetura ASP.NET tradicional com uma exibição de formulário da Web.
Além disso, as visualizações de formulários da Web do ASP.NET podem ter arquivos Code-Behind, o que permite embutir a lógica em um arquivo separado que é compilado junto com a visualização. Embora a comunidade de desenvolvimento de software esteja crescendo para ver as arquiteturas fortemente acopladas e o padrão Smart Client como uma prática ruim , costumava ser a principal maneira de fazer as coisas e ainda é muito possível com arquivos .aspx / .ascx. Razor, intencionalmente, não tem essa qualidade.
Os arquivos Cshtml são os usados pelo Razor e conforme declarado como resposta a esta questão , sua principal vantagem é que eles podem ser renderizados dentro de testes de unidade. As várias respostas a este outro tópico trarão muitos outros pontos interessantes.