ASP.NET MVC 5 frente a AngularJS / ASP.NET WebAPI [cerrado]

86

Actualmente estoy evaluando el modelo de programación para la creación de futuras aplicaciones web en mi empresa. Entonces decidiré entre ASP.NET MVC 5 (con Razor Views) y AngularJS con ASP.NET WebAPI. ¿Cuáles son las ventajas / desventajas de estos dos modelos de programación?

bitsmuggler
fuente
4
Bueno ... si va a anclar AngularJS a ASP.NET ... realmente no le está dando una comparación justa. Es como si estuviera buscando eliminar el Javascript de Angular, y esa no es la forma en que debe suceder. Angular está destinado a ser su marco para el cliente y funciona mejor cuando usa muy pocas plantillas del lado del servidor: simple-talk.com/blogs/2013/10/16/… . Cosas como la autenticación y cosas por el estilo tienen sentido, pero deje la navaja fuera, y simplemente vaya directamente a .NET y cree una capa API para Angular con ella.
Brian Vanderbusch
3
Creo que lo que realmente necesitas es AngularJS con ASP.NET WebAPI. Creo que tiene lo mejor de ambos mundos. Intenté mezclar MVC con AngularJS y no fue una experiencia muy agradable cuando encontré problemas, por lo que sugeriría no entrar en esa trampa. Una cosa que extraño con este enfoque son las vistas basadas en dispositivos que MVC con el motor Razor puede proporcionar. Debe haber una manera de superar esto, pero todavía no he experimentado lo suficiente.
Kiran
Después de haber trabajado con Angular durante unos pocos meses (aunque parece una eternidad), nunca volvería a Razor. Cuanto más trabajas con Angular, más lo aprecias: flexibilidad y potencia, a veces se siente como magia. Debo decir que Web API no funciona bien con Angular, al menos en el formulario POST, pero eso podría resolverse. No es una transición fácil para un programador de C # en cuanto a la sintaxis, ya que javascript no es un lenguaje fuertemente tipado. Pero a medida que supere este obstáculo, llegará a apreciar Angular.
Florida G.
Razor es algo horrible incluso entre los motores de plantillas. Notará un aumento drástico en la productividad cuando use angular sobre cualquier motor de plantillas (Jade, manillar, maquinilla de afeitar, etc.). Use un backend que sirva JSON (puede ser web-api, node-express o PHP) y un front-end angular. Y solo para notar, el nocaut no es tan bueno como el angular .... Todo lo mejor ...
Giridhar Karnik
1
@BrianVanderbusch No estoy seguro de lo que estás hablando. El backend no importa en absoluto. Podría ser cualquier cosa. Dice que usará ASP.NET como backend y angular como front end del lado del cliente. Angular todavía necesita hacer llamadas al servidor para obtener datos. Esto no tiene nada que ver con no darle a Angular una comparación justa.
user441521

Respuestas:

103

Mis 2 centavos. Personalmente, prefiero vistas HTML puras, un front-end completamente angular junto con un back-end Web API / EF / SQL Server, básicamente sin Razor. Razor es una abstracción para ayudar a los programadores a renderizar HTML, en estos días todo el mundo está llegando a la conclusión de que eliminar estas abstracciones es una mejor idea, de ahí la evolución de ASP.NET de formularios web a MVC, etc. No es realmente difícil para los desarrolladores llegar a aprende HTML y usa una interfaz angular, además, esto facilita el trabajo de los diseñadores de UI, tienen HTML puro y JSON / Javascript, no necesitan entender MVC, Razor, controladores y acciones. Solíamos trabajar completamente en MVC, en nuestro último proyecto pasamos a un back-end de API web y un front-end angular, y hemos notado que la productividad de nuestro diseñador de UI ha mejorado enormemente.

Mohammad Sepahvand
fuente
3
Y me gustaría agregar a eso, con angular puedes actualizar tus plantillas dinámicamente, lo que obviamente es increíble
Willem D'Haeseleer
4
Sí, cuando se trata de desarrollar una interfaz más dinámica y receptiva frente al costo de desarrollo, realmente no hay competencia.
Mohammad Sepahvand
@ user189756 ¿cómo entrega las páginas HTML al cliente cuando utiliza el enfoque de API web?
Yoav
@Yoav Esta es una respuesta antigua, pero en ese momento era un host MVC con un controlador único.
Mohammad Sepahvand
1
@Yoav Precisamente. Pero agregaré que la otra respuesta también es excelente, especialmente teniendo en cuenta aspectos como el SEO.
Mohammad Sepahvand
53

Creo que no se puede comparar. AngularJS es un marco de aplicación de página única (SPA), mientras que ASP.Net MVC usa el modelo estándar donde se navega entre páginas. Si desea construir un SPA se decide por factores como

  • ¿Quieres SEO? ¿Cuál de estos marcos ricos en JS tiene soporte limitado?
  • ¿Cómo puede estructurar su aplicación como SPA o múltiples SPA?
  • Pasar de un lenguaje seguro de tipo C # a la programación de JavaScript es un desafío.
  • Aprender AngularJS y usarlo de manera efectiva.

Usamos la vista estándar de la maquinilla de afeitar MVC 5 para configurar las vistas iniciales de AngularJS para que pueda incluso combinarlas si es necesario.

Vea esta respuesta ¿Puede usar AngularJS con Parse.com? para derivar más contexto.

Chandermani
fuente
12
"... mientras que ASP.Net MVC usa el modelo estándar donde uno navega entre páginas". Esto es simplemente falso. Las aplicaciones MVC, con maquinilla de afeitar, se pueden diseñar como SPA muy fácilmente.
Sam
7
AngularJS no es un SPA limitado, puede construir un sitio web de varias páginas con enlaces angulares y profundos ...
Giridhar Karnik
3
AngularJS no es un SPA. Puedes usarlo como un SPA, pero eso no es automático ni necesario. Debe agregar la dependencia de enrutamiento ng-route para incluso tener enrutamiento. AngularJS es increíble y puede ser un gran SPA, pero es una tontería decir AngularJS = SPA.
Tom Stickel
5
TypeScript es una buena opción para tipos js seguros.
Kyle JV
9
AngularJS fue creado por Google. Si le falta SEO, están haciendo algo mal.
Worthy7