Me gustaría saber qué, por qué o cuándo es mejor elegir cshtml y qué, por qué o cuándo es mejor elegir tecnologías aspx. ¿Para qué están destinadas estas dos tecnologías?
Gracias,
Me gustaría saber qué, por qué o cuándo es mejor elegir cshtml y qué, por qué o cuándo es mejor elegir tecnologías aspx. ¿Para qué están destinadas estas dos tecnologías?
Gracias,
Respuestas:
Como han respondido otras personas, .cshtml
(o .vbhtml
si ese es su estilo) proporciona un mapeo de manejadores para cargar el motor MVC. La .aspx
extensión simplemente carga aspnet_isapi.dll que realiza la compilación y sirve formularios web. La diferencia en el mapeo del controlador es simplemente un método que permite que los dos coexistan en el mismo servidor, lo que permite que tanto las aplicaciones MVC como las aplicaciones WebForms vivan bajo una raíz común.
Esto permite que http://www.mydomain.com/MyMVCApplication sea válido y se sirva con las reglas MVC junto con http://www.mydomain.com/MyWebFormsApplication para ser válido como un formulario web estándar.
Editar:
En cuanto a la diferencia en las tecnologías, el marco de plantillas MVC (Razor) está destinado a devolver las páginas .Net a una plataforma más RESTful "basada en la web" de vistas de plantillas que separan la lógica del código entre el modelo (negocios / objetos de datos) , la vista (lo que ve el usuario) y los controladores (la conexión entre los dos). El modelo WebForms (aspx) fue un intento de Microsoft de utilizar la incrustación de JavaScript compleja para simular una aplicación con más estado similar a una aplicación WinForms completa con eventos y un ciclo de vida de la página que sería capaz de retener su propio estado de una página a otra.
La elección de usar uno u otro siempre será polémica porque hay argumentos a favor y en contra de ambos sistemas. Por mi parte, me gusta la simplicidad en la arquitectura MVC (aunque el enrutamiento es todo menos simple) y la facilidad de la sintaxis de Razor. Siento que la arquitectura de WebForms es demasiado pesada para ser una plataforma web eficaz. Dicho esto, hay muchos casos en los que el marco WebForms proporciona un modelo muy conciso y utilizable con una estructura de eventos rica que está bien definida. Todo se reduce a las necesidades de la aplicación y las preferencias de quienes la construyen.
Razor es un motor de visualización para ASP.NET MVC y también un motor de plantillas . El código Razor y el código en línea ASP.NET (código mezclado con marcado) se compilan primero y se convierten en un ensamblado temporal antes de ejecutarse. Por lo tanto, al igual que C # y VB.NET se compilan en IL, lo que los hace intercambiables, el código Razor e Inline son intercambiables.
Por tanto, es más una cuestión de estilo e interés. Me siento más cómodo con razor que con el código en línea ASP.NET, es decir, prefiero las páginas de Razor (cshtml) a las páginas .aspx.
Imagina que quieres obtener una Human
clase y renderizarla. En los archivos cshtml , escribe:
<div>Name is @Model.Name</div>
Mientras está en archivos aspx , escribe:
<div>Name is <%= Human.Name %></div>
Como puede ver, el @
signo de la navaja facilita mucho la mezcla de código y el marcado.
Model
se usa para vistas fuertemente tipadas, en las que usted define su tipo en la parte superior usando una model
palabra clave.
Si bien la sintaxis es ciertamente diferente entre Razor ( .cshtml
/ .vbhtml
) y WebForms ( .aspx
/ .ascx
), (Razor es el más conciso y moderno de los dos), nadie ha mencionado que si bien ambos se pueden usar como View Engines / Templating Engines, ASP.NET tradicional Los controles de Web Forms se pueden utilizar en cualquier archivo .aspx o .ascx (incluso en cohesión con una arquitectura MVC).
Esto es relevante en situaciones en las que se han establecido y empaquetado soluciones de larga data a un problema en un componente conectable (por ejemplo, un control de carga de archivos grandes) y desea usarlo en un sitio MVC. Con Razor, no puedes hacer esto. Sin embargo, puede ejecutar todo el mismo procesamiento de backend que usaría con una arquitectura ASP.NET tradicional con una vista de formulario web.
Además, las vistas de formularios web ASP.NET pueden tener archivos de código subyacente, lo que permite incrustar la lógica en un archivo separado que se compila junto con la vista. Si bien la comunidad de desarrollo de software está creciendo para ver las arquitecturas estrechamente acopladas y el patrón de Smart Client como una mala práctica , solía ser la forma principal de hacer las cosas y todavía es muy posible con archivos .aspx / .ascx. Razor, intencionalmente, no tiene tal cualidad.
Los archivos Cshtml son los que usa Razor y, como se indicó como respuesta a esta pregunta , su principal ventaja es que pueden procesarse dentro de pruebas unitarias. Las diversas respuestas a este otro tema traerán muchos otros puntos interesantes.