ASP.NET WebApi vs MVC? [cerrado]

140

Con los controladores ASP.NET MVC puede exponer sus datos en diferentes formatos. AspNetWebAPI está diseñado explícitamente para crear API, pero puedo hacerlo fácilmente con los controladores MVC, no tengo claro en qué casos sería mejor que los controladores MVC tradicionales. Estoy interesado en escenarios donde los beneficios de WebApi son obvios y valdría la pena agregar otra capa de complejidad a mis aplicaciones.

Pregunta: ¿cuáles son las ventajas y / o desventajas de usar asp.net WebApi con respecto a MVC?

Hugo Zapata
fuente
11
Es curioso para mí cuán aleatorias estas preguntas "vs" se cierran inmediatamente o suben a este nivel de votos positivos.
cbmeeks
10
Grrr. Odio esas pancartas "cerradas como demasiado anchas". Muchas veces encuentro grandes preguntas como esta. Y más a menudo que no, también tienen excelentes respuestas. ¿Y qué si es demasiado amplio? Los expertos están aquí y no en Wikipedia o en algún otro foro. Así que déjalos hacer lo suyo y sal del camino.
nharrer

Respuestas:

47

WebApi permite crear servicios que pueden exponerse a través de HTTP en lugar de a través de un servicio formal como WCF o SOAP. Otra diferencia está en la forma en que WebApi utiliza el protocolo Http y lo convierte en un verdadero ciudadano Http de primera clase.

ACTUALIZACIÓN: El ASP.NET Core, API web se ha integrado en el tipo de proyecto MVC. La ApiControllerclase se consolida en la Controllerclase. Más en: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Un enlace relevante de comparación, debates y tutoriales:

ingrese la descripción de la imagen aquí

Yusubov
fuente
20
No estoy de acuerdo con que la otra publicación sea similar. La otra publicación es en realidad sobre WCF vs WebAPI.
Shane Courtrille
Técnicamente hablando, dice WCF Web API, sin embargo, la publicación menciona en la segunda línea que ahora se fusionó con la API web de Asp.net y es compatible con el autohospedaje. He actualizado el enlace de todos modos con uno más reciente. Espero que eso ayude.
Yusubov
Actualizadas las referencias.
Yusubov
23

WebAPI escupe OData, por lo que obtiene todas las ventajas de usar OData. Por ejemplo, con WebAPI obtienes:

  • Opciones de consulta como $ filter, $ top, $ orderby, etc.
    • Con los controladores MVC tradicionales, debe implementarlos usted mismo.
  • Estandarización del formato.
    • Hay clientes OData que comprenderán el formato subyacente de su API RESTful.
Paolo del mundo
fuente
55
Algo así como. PUEDO soportar oData, pero solo si decora la acción con el atributo 'consultable', al menos a partir del RC.
EBarr
14

Asp.Net Web API VS Asp.Net MVC 1 . Asp.Net MVC se usa para crear aplicaciones web que devuelven vistas y datos, pero la API web de Asp.Net se usa para crear servicios HTTP completos con una manera fácil y simple que solo devuelve datos, no vistas.ingrese la descripción de la imagen aquí

2 . Web API ayuda a crear servicios REST-ful sobre .NET Framework y también admite la negociación de contenido (se trata de decidir los mejores datos de formato de respuesta que podrían ser aceptables por el cliente. Podrían ser JSON, XML, ATOM u otros datos formateados ), autohospedaje que no están en MVC.

3 . Web API también se encarga de devolver datos en un formato particular como JSON, XML o cualquier otro basado en el encabezado Aceptar en la solicitud y no se preocupe por eso. MVC solo devuelve datos en formato JSON usando JsonResult.

4 . En la API web, la solicitud se asigna a las acciones basadas en verbos HTTP, pero en MVC se asigna al nombre de las acciones.

5 . Asp.Net Web API es un nuevo marco y parte del marco central de ASP.NET. El enlace del modelo, los filtros, el enrutamiento y otras características de MVC que existen en la API web son diferentes de MVC y existen en el nuevo ensamblado System.Web.Http. En MVC, estas características existen en System.Web.Mvc. Por lo tanto, la API web también se puede usar con Asp.Net y como una capa de servicio independiente.

6 . Puede mezclar API web y controlador MVC en un solo proyecto para manejar solicitudes AJAX avanzadas que pueden devolver datos en formato JSON, XML o cualquier otro y construir un servicio HTTP completo. Por lo general, esto se llamará Web API self hosting.

7 . Cuando ha mezclado MVC y el controlador de API web y desea implementar la autorización, debe crear dos filtros, uno para MVC y otro para API web, ya que ambos son diferentes.

8 . Además, la API web es una arquitectura ligera y, excepto la aplicación web, también se puede usar con aplicaciones de teléfonos inteligentes.

La fuente original está aquí.

curioso
fuente
13

Similitudes

1) ambos heredan de ihhtphandler para la solicitud asíncrona, por lo que, básicamente, un controlador o controlador de mvc son el envoltorio de la web.

Diferencias: 1) el controlador mvc es muy pesado si pudieras revisar su definición, puedes ver cuántas interfaces y el código base que ha usado, la API web es un controlador más ligero y distinguir la solicitud por sus parámetros pasados ​​(¡sí, también podemos cambiarla! )

2) El controlador MVC tiene demasiadas características como devolver vistas, resultados de acciones, resultados de JavaScript, etc. pero en la API web tiene JSON o XML

3) API es para implementar servicios Restful (obtener, publicar, poner, eliminar, opciones) que pueden alojar de forma independiente en cualquier lugar sin depender de las vistas, el controlador MVC no puede soportar eso ya que se integra estrechamente con las vistas.

LostCoder
fuente
1
Vale la pena señalar que aún puede lograr un comportamiento similar a API con MVC utilizando resultados de acción de mvc como JSONResult, etc. Sin embargo, como señaló, el controlador MVC es más pesado. Además, la forma en que se implementan los controladores de API web son más propicios para hacer una API que MVC.
Grizzly Peak Software
12

Esta imagen parece mostrar las diferencias y similitudes en la forma del asunto. Espero que la ayuda sea interesante para mí.

ingrese la descripción de la imagen aquí

BehrouzMoslem
fuente
10

En algún momento, es posible que desee olvidar ASP.NET MVC por completo. Si usted es un desarrollador de .NET pero desea crear una aplicación de una sola página (usando Angular, por ejemplo), querrá los beneficios de un servicio RESTful (WebAPI) sin toda la hinchazón innecesaria que viene con ASP.NET MVC.

¿Qué hay de Bob?
fuente
5

ASP.NET MVC y ASP.NET Web api ambos están utilizando para diferentes propósitos

ASP.NET

ASP.NET ofrece tres marcos para crear aplicaciones web: formularios web, ASP.NET MVC y páginas web ASP.NET. Los tres marcos son estables y maduros, y puede crear excelentes aplicaciones web con cualquiera de ellos. No importa qué marco elija, obtendrá todos los beneficios y características de ASP.NET en todas partes.

Cada marco apunta a un estilo de desarrollo diferente. El que elija depende de una combinación de sus activos de programación (conocimiento, habilidades y experiencia de desarrollo), el tipo de aplicación que está creando y el enfoque de desarrollo con el que se sienta cómodo. Los tres marcos serán compatibles, actualizados y mejorados en futuras versiones de ASP.NET.

MVC

ASP.NET MVC le brinda una forma poderosa y basada en patrones para crear sitios web dinámicos que permite una separación clara de las preocupaciones y le brinda un control total sobre el marcado para un desarrollo ágil y agradable. ASP.NET MVC incluye muchas características que permiten un desarrollo rápido y amigable con TDD para crear aplicaciones sofisticadas que utilizan los últimos estándares web.

API web

ASP.NET Web API es un marco que facilita la creación de servicios HTTP que llegan a una amplia gama de clientes, incluidos navegadores y dispositivos móviles. ASP.NET Web API es una plataforma ideal para crear aplicaciones RESTful en .NET Framework.

puede leer más formularios aquí http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

Descifrador
fuente
3

ASP.NET MVC se centra en facilitar la salida de HTML. ASP.NET Web API se centra en facilitar la salida de datos sin procesar.

En el mundo de WebForms, ASP.NET MVC sería equivalente a páginas .aspx y ASP.NET Web API sería .asmx

Murugesan Nataraj
fuente
2

Asp.Net MVC se usa para crear aplicaciones web que devuelven vistas y datos, pero la API web de Asp.Net se usa para crear servicios HTTP completos con una manera fácil y sencilla que solo devuelve datos, no vistas.

Web API ayuda a construir servicios REST-ful sobre .NET Framework y también admite la negociación de contenido (se trata de decidir el mejor formato de respuesta de datos que podría ser aceptable para el cliente. Podría ser JSON, XML, autohospedaje que no son en MVC

Web API también se encarga de devolver los datos en un formato particular como JSON, XML o cualquier otro basado en el encabezado Aceptar en la solicitud y no se preocupe por eso. MVC solo devuelve datos en formato JSON usando JsonResult.

Nikhil Fegade
fuente
1

Por lo general, WebAPI se utiliza para servicios de datos donde MVC puede generar más tipos de resultados.

WebAPI con seguridad simplifica la forma en que podemos crear servicios de datos. Es limpio y fácil para este propósito. MVC viene con algunas herramientas más.

MVC puede generar cualquier salida que WebAPI puede generar. La generación de resultados a partir de plantillas se puede lograr fácilmente en MVC. No puedo encontrar una razón para hacerlo en WebAPI. Los desarrolladores de PHP y el antiguo programador ASP pueden conocer esta actitud del pasado, donde puedes construir archivos HTML involucrados con código C # en el interior.

WebAPI- DATA MVC - DATA, UI / HTML, XHTML, Archivos, Plantillas, etc.

Eitan Revach
fuente