Diferencia entre MVC 5 Project y Web Api Project

Soy nuevo en ASP.NET MVC y API web e bash obtener los conceptos básicos. AFAIK, tenemos plantillas de proyectos en VS 2013, nombradas como MVC , Web API y Both of them together .

He revisado los tutoriales y he aprendido que podemos crear una API utilizando solo MVC y con la plantilla de la API web.

Entonces, ¿cuáles son las diferencias entre estos, en función de la architecture y el uso ?

Básicamente, un controlador de Web API es un controlador MVC , que utiliza HttpMessageResponse como el tipo base de su respuesta, en lugar de ActionResponse . Son lo mismo en la mayoría de los otros aspectos. La principal diferencia entre los tipos de proyectos es que el tipo de proyecto de la MVC Application agrega cosas específicas de la web como CSS predeterminado, archivos JavaScript y otros recursos necesarios para un sitio web, que no son necesarios para una API.

MVC se usa para crear sitios web. En este caso, los Controllers generalmente devuelven una View (es decir, una respuesta HTML) a las solicitudes del navegador. Las API web, por otro lado, generalmente están hechas para ser consumidas por otras aplicaciones. Si desea permitir que otras aplicaciones accedan a sus datos / funcionalidad, puede crear una API web para facilitar este acceso. Por ejemplo, Facebook tiene una API para permitir a los desarrolladores de aplicaciones acceder a la información sobre los usuarios que usan la aplicación. Las API web no tienen que ser para el consumo público. También puede crear una API para sus propias aplicaciones. Por ejemplo, creamos una API web para admitir la funcionalidad AJAX de nuestro sitio web MVC.

Microsoft cambió la forma en que presentan las diferentes plantillas. Ahora, en lugar de utilizar diferentes plantillas para diferentes tipos de proyectos, alientan a los desarrolladores a mezclar tecnologías ASP.NET dentro del mismo proyecto según sea necesario. Microsoft llama a este vNext .

ACTUALIZACIÓN: para ASP.NET Core, la API web se ha integrado en el tipo de proyecto MVC 6 y la clase ApiController se ha consolidado en la clase Controller . Más detalles en: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Mis dos centavos…

  1. En ASP.Net MVC , el Controller la MVC decide cuál debería ser la View , es decir, el controlador decide qué debe “ver” el usuario (según el escenario o contexto actual) cuando realiza una solicitud.
  2. En los formularios web ASP.Net , las páginas ASPX deciden qué debe “ver” el usuario cuando realiza una solicitud.
  3. Pero en la API web , no hay control / potencia en ninguna de las funciones de la API de Web para decidir qué debe “ver” el usuario cuando realiza una solicitud.

Web API NO es una tecnología ligada solo a sitios web. Se puede usar para múltiples propósitos, no solo sitios web. Entonces no sabe el significado de rendering

Otras lecturas

  1. Planificación de soluciones web hoy: formularios web, ASP.NET MVC, API web y OWIN.
  2. WCF o ASP.NET Web APIs? Mis dos centavos sobre el tema
  3. La próxima generación de .NET – ASP.NET vNext
  4. Comenzando con ASP.NET MVC 6

Controlador MVC derivado de la clase de controlador. En Mvc puedes regresar vistas. Mvc achitecture utiliza para crear una aplicación. Sin embargo, las aplicaciones web se utilizan para proporcionar datos a diversas aplicaciones.

Web Api conduce desde el controlador Api y no devuelve la vista.

Nota: También puede crear Api web desde el controlador MVC, pero debe devolver el resultado como JsonResult u otros tipos de devolución soportados por la API web.

Además de las respuestas ya proporcionadas aquí, vale la pena señalar que cualquier controlador que herede ApiController y que tenga una acción con Http verb POST solo puede tener un parámetro de entrada [FromBody]. Si usa un controlador MVC (derivado de ‘Controlador’) puede tener muchos parámetros de entrada de entrada.