Mi equipo y yo hemos recibido financiación para empezar a desarrollar una aplicación web de nivel empresarial (no entraré en detalles de lo que hace). La aplicación tendrá muchas páginas web separadas, pero dos de esas páginas estarán más enfocadas y serán muy pesadas: pesadas como en mucha interacción del usuario, modales que muestran datos masivos, conexiones websocket, chat, etc.
Se me ha asignado el cargo de arquitecto jefe en el proyecto, por lo que estoy investigando los últimos marcos web. Para el back-end, hemos hecho algunas pruebas y hemos decidido ir con la plataforma Azure SQL. Hasta ahora, me gustan las mejoras que se han realizado y se están realizando en ASP.NET con Core 2.0. Específicamente el motor Razor, sobre versiones anteriores de ASP.NET MVC.
Quería obtener algunas opiniones de expertos sobre el "nuevo" Razor vs. Angular / React y similares. En particular, me preocupa más el rendimiento. ¿Cómo se mantiene Core 2.0 Razor en los marcos de renderización del lado del cliente? ¿Son las diferencias insignificantes? Nuestra aplicación está dirigida a un potencial de 1.000.000 de usuarios (aproximadamente 100.000 simultáneos).
¡Gracias por adelantado!
Respuestas:
Terminamos optando por un front-end angular y un backend de API ASP.NET Core, utilizando Azure SQL. Probamos Core Razor y, aunque mejor que el Razor heredado, Angular fue mucho más rápido para nosotros al final. En lo que respecta a la experiencia del usuario, Angular (o React) es muy superior en términos de rendimiento. Descubrimos que los aspectos de enlace de modelos de Angular son una ventaja gigantesca de la representación del lado del servidor. Sin embargo, el uso de Razor (o la representación del lado del servidor en general) se presta a una mejor integridad general en lo que respecta a los datos y permite una mejor transición de los datos de front-end a back-end. Existe una verdadera desconexión entre un marco front-end y una API. Todos los datos que se pasan al servidor deben convertirse en objetos con tipo; esto significa que debe administrar dos conjuntos de modelos POCO separados. Esto puede causar problemas si los objetos del servidor y los objetos del front-end no se alinean. Por el momento, Entity Framework Core no está muy maduro, por lo que tenemos problemas para actualizar objetos, consultar objetos, incluidos objetos secundarios, etc.
En general, esta configuración nos ha funcionado muy bien hasta ahora. Me imagino que React sería un reemplazo similar a Angular si te sientes más cómodo con él. Tuve que aprender Angular, que fue una transición muy fácil, ¡y ahora me encanta!
fuente
Al usar Angular / React con api en el lado del servidor:
pero al usar Angular / React deberías preocuparte por los clientes.
fuente
No tengo puntos de referencia. Pero tengo varios proyectos que ejecutan JQuery, Razor, .NET MVC (C #), AJAX. No a la escala que estás abordando.
Consejos ... Asegúrese de pensar detenidamente y seguir las mejores prácticas. Para mantener las cosas fáciles de mantener, asegúrese de dividir controladores, vistas y modelos en grupos más pequeños y significativos. Cuando comencé, cometí el error de poner todo en un controlador de inicio y un montón de vistas en la carpeta compartida. Al principio estaba bien, pero cuando comenzó el deslizamiento de funciones, se volvió un desastre y fue difícil volver atrás y rediseñarlo.
También uso Linq2SQL. Cometí el error de crear modelos para todo y luego me di cuenta de que podía devolver el conjunto de resultados de mis consultas como modelo. duh.
Si va .NET MVC y le preocupa el rendimiento, estas son las cosas con las que me encontré:
¡NO devuelva vistas parciales que creen grandes bloques de HTML! Asegúrese de minimizar todo. Deshazte de todos los espacios en blanco. Utilice nombres de identificación más pequeños. Tómate el tiempo para crear un HTML lo más ligero posible. Devuelva JSON y haga que el cliente haga parte del trabajo.
Tenga cuidado con la forma en que desarrolla su CSS. No use muchos estilos en línea, tómese el tiempo para incorporarlos en archivos CSS que luego pueda minimizar.
Lo mismo ocurre con el JS del lado del cliente. Es tentador poner el JS dentro de vistas parciales. Mantenga las cosas organizadas.
El renderizado en IE es horrible. Especialmente si hay muchas imágenes. Asegúrese de comprimir las imágenes tanto como sea posible, sin perder calidad, por supuesto.
fuente