¿Qué es exactamente "API web" en ASP.Net MVC4?

15

Sé lo que es una API web.
He escrito API en varios idiomas (incluso en MVC3).
También estoy bien practicado en ASP.Net.
Acabo de descubrir que MVC4 tiene "API web" y sin pasar por los ejemplos de video no puedo encontrar una buena explicación de lo que ES exactamente.
Según mi experiencia anterior, las tecnologías de Microsoft (especialmente ASP.Net) tienden a tomar un concepto simple y envolverlo en un montón de gastos generales inútiles que están destinados a hacer todo "más fácil".
¿Puede alguien explicarme qué es exactamente la API web en MVC4? ¿Por qué lo necesito? ¿Por qué no puedo simplemente escribir mi propia API?

James P. Wright
fuente
3
¿Estás hablando del nuevo marco de API web ? Eso está separado de MVC. Si eso es lo que quieres decir, echa un vistazo a esta publicación de blog de Rick Strahl.
Oded
1
@Oded: Deberías poner esto como respuesta.
James P. Wright
Lo mejor de la API web (que no veo en ninguna parte de la respuesta aceptada o el enlace anterior) es que si devuelve un IQueryable <>, ¡sus métodos web admitirán automáticamente la sintaxis de consulta OData! - En la pila general de ASP.NET 4.5 "Web API" y "SignalR" están "reemplazando" WCF (no estoy seguro de si están construidas sobre WCF o no, pero WCF se ha eliminado de todos los diagramas de bloques y se ha reemplazado con "API web" y "SignalR").
BrainSlugs83
Why can't I just write my own API?¿Con solo ASP.NET MVC regular? Usted puede. La API web ASP.NET MVC solo le ofrece extras adicionales para que sea más fácil. Por favor ver más abajo.
Jim G.

Respuestas:

16

La API web ASP.NET es un marco "no obstinado" para construir el servicio HTTP , independientemente de REST o RPC. Es la mejor implementación de Microsoft de RFC 2616 (HTTP Spec).

Ciertamente, puede crear su propia API, pero API web ASP.NET:

  • Construido en base al modelo de muñeca rusa que permite agregar módulos tipo lego a la tubería HTTP
  • Convierte a HTTP en ciudadano de primera clase, por lo que todos los encabezados comunes están fuertemente tipados (no solo el valor del nombre) y ayuda a analizarlos
  • Permite tanto el alojamiento ASP.NET (IIS) como el autohospedaje
  • admite negociación de contenido, tipos de medios, ...
  • Es asíncrono de arriba a abajo
  • Utiliza un enfoque similar para clientes con HttpClient
Aliostad
fuente
6

La nueva API web de Microsoft es, como su nombre lo sugiere, todo sobre escribir API que sean accesibles para la web, con una inclinación hacia REST.

Rick Strahl recientemente escribió en su blog y tiene un buen análisis sobre cuándo usar MVC vs Web API.

Cosas como la negociación de contenido integrado, varios formatos integrados y más.

Oded
fuente
6

En resumen: la API web ASP.NET está haciendo que REST sea un ciudadano de primera clase en .NET , que WCF realmente no pudo adoptar. Como ya sabrás, la API web ASP.NET es un marco for building web APIsde trabajo sobre .NET Framework.

Una de las mayores frustraciones que tuvimos como desarrolladores web fue enfrentar las infinitas configuraciones con WCF. Quiero decir, WCF es genial, pero no ha sido aceptado en REST desde el marco de la API web de WCF . Había algo llamado REST Starter Kit pero terminó muerto.

Sin embargo, la API web ASP.NET es un marco de trabajo de próxima generación que facilita la creación de servicios HTTP que llegan a una amplia gama de clientes, como navegadores y dispositivos móviles. Es una plataforma ideal para crear aplicaciones RESTful en .NET Framework. Para obtener más información y excelentes publicaciones en el blog, visite la página de bloggers ASP.NET Web API

Yusubov
fuente
1
Si investiga la historia de la API web, comenzó en WCF.
SASS_Shooter
Bueno, es un reemplazo liviano con características importantes para facilitar la configuración y agilizar el desarrollo de aplicaciones.
Yusubov
@Yusobov: Esto no es del todo cierto: también existen los Servicios de datos de WCF que son bastante buenos para construir apis REST compatibles con Odata. Lo he estado usando en un entorno de producción y realmente funciona bien una vez que está configurado. El único problema con eso es que es mucho más difícil de configurar que una API web ASP.NET.
Adrian Grigore
1

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 construir aplicaciones RESTful en .NET Framework.

http://www.asp.net/web-api


EDITAR:

Específicamente, la API web ASP.NET incluye:

  1. Una canalización ASP.NET optimizada con una sobrecarga reducida si elige alojar su servicio en IIS.
  2. HttpClient que facilita que un cliente se conecte a la API web.
Jim G.
fuente
Puedo leer esas cosas yo mismo. Mi pregunta es ¿cuál es el punto? ¿Qué es tan diferente en el uso de la API web y el uso de MVC regular, pero tener JsonResults en lugar de ViewResults?
James P. Wright
1. Antes de MVC 4, podría devolver un resultado JSON sin ningún problema. MVC 4 simplemente conserva esa capacidad, incluye algunas otras clases auxiliares para que sea más fácil y simplifica la canalización de ASP.NET para reducir la sobrecarga cuando sabe que no necesitará devolver ViewResults.
Jim G.
1
Además, como es una actualización efectiva para la API web de WCF, no está casado con IIS. Puede alojar un servicio de API web ASP.NET si lo prefiere. wcf.codeplex.com/…
Jim G.
-2

Hoy, una aplicación basada en la web no es suficiente para llegar a sus clientes. Las personas son muy inteligentes, están utilizando dispositivos iPhone, móviles, tabletas, etc.en su vida diaria. Estos dispositivos también tienen muchas aplicaciones para facilitar la vida. En realidad, nos estamos moviendo desde la web hacia el mundo de las aplicaciones. Por lo tanto, si desea exponer sus datos de servicio a los navegadores y a todas estas aplicaciones de dispositivos modernos de manera rápida y sencilla, debe tener una API que sea compatible con los navegadores y todos estos dispositivos.

atul
fuente
esto no parece agregar nada sustancial sobre los puntos hechos y explicados en las 4 respuestas anteriores
mosquito