c# - example - Diferencia entre MVC 5 Project y Web Api Project
web api return json example (4)
Soy nuevo en ASP.NET MVC y API web e intento 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 arquitectura y el uso ?
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.
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
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.
Mis dos centavos...
- En ASP.Net MVC , el
Controller
la MVC decide cuál debería ser laView
, es decir, el controlador decide qué debe "ver" el usuario (según el escenario o contexto actual) cuando realiza una solicitud. - En los formularios web ASP.Net , las páginas
ASPX
deciden qué debe "ver" el usuario cuando realiza una solicitud. - 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