domingo, 20 de marzo de 2016

ASP.NET Web API, paso a paso - 1 - ¿Qué es Web API?

¡Saludos! Con esta primera entrada, espero empezar una serie de mini tutoriales, para elaborar una aplicación web basada en un servicio REST elaborado con ASP.NET Web API. Y el primer paso es responder a la pregunta:

¿Qué es Web API?

 ASP.NET Web API es un framework para construir APIs (Application Programming Interfaces), construida sobre el .NET Framework. Es una especie de librería más liviana y simple que WCF (Windows Communication Foundation) orientada completamente al protocolo HTTP, que permite construir servicios web sin estar sujetos a un estilo o arquitectura definido (por ejemplo REST o RPC).

ASP.NET Web API es de código libre, y está disponible al público en general en un repositorio GIT en Codeplex, para ser consultado y también para realizar contribuciones. Esta publicado bajo la Apache License, Version 2.0.

Web API es considerada como el futuro de ASP.NET, pues refuerza el uso de estándares HTTP, y unifica las características esenciales para el desarrollo de servicios web que el MVC Framework y WCF proveen, de una forma más compleja.

¿Cuáles son las ventajas de Web API?

 ASP.NET Web API presenta las siguientes ventajas para el desarrollo de APIs sobre HTTP:
  • Se acopla a los estándares HTTP, siendo la mejor implementación por parte de Microsoft de las especificaciones del protocolo HTTP (RFC 2616).
  • Modelo de programación HTTP moderno, pues permite el acceso directo a las solicitudes y respuestas HTTP, a través de tipos de objetos especializados.
  • Soporte completo de rutas, lo que permite especificar las acciones a ejecutar, así como parámetros y restricciones, sin necesidad de modulos adicionales de sobreescritura de URL.
  • Soporta negociación de contenido y media types, para que el cliente y el servidor puedan establecer el formato de los datos que la API recibirá y enviará en respuesta. Por defecto, Web API provee soporte para JSON, XML y formularios codificados como URL (URL-encoded form data), pero permite agregar tipos de datos personalizados, a traves de media formatters.
  • Conversión automática de datos a objetos, ya que los datos recibidos en las solicitudes HTTP son transformados a objetos .NET, y viceversa, para ser manipulados en las acciones de la API.
  • Filtros que sirven para añadir una capa extra de funcionalidades a las acciones, y son manejados como atributos, para facilitar su integración en las clases y métodos.
  • Mejora el desarrollo de pruebas unitarias, ya que muchas partes del framework pueden ser personalizadas y simuladas, al basarse en interfaces y clases genéricas que pueden ser extendidas.
  • Inversión de control y resolución de dependencias integrada y extensible, a través del patrón de localización de servicios, implementado mediante el "resolvedor de dependencias" del MVC Framework.
  • Composición de consultas, basada en las convenciones de URL de OData, con solo implementarla interfaz IQueryable<T>.
  • Configuración a través de código, para evitar sobrecargar los archivos de configuración XML.
  • Asíncrono de pies a cabeza, para permitir recibir más solicitudes HTTP, mientras se espera que otras terminen de ser procesadas.
  • Puede ser auto-hospedado (self-hosted), por lo que no está atado al uso del servidor web IIS.
  •  
     

¿Cómo funciona Web API?

Web API se basa en un modelo de "muñeca rusa" para el procesamiento de los mensajes HTTP, que además permite añadir bloques de funcionalidad en cada uno de los distintos niveles de procesamiento.
Russian-Matroshka.jpg
Muñecas rusas "Matroshka" (Wikipedia CC BY-SA 3.0)

En este enlace puedes encontrar un diagrama bastante completo del ciclo de vida de los mensajes en ASP.NET Web API 2.

Próximos pasos

En la próxima entrada de esta serie, se desarrollará una API REST muy básica desde cero, en donde se mostrarán las funcionalidades principales del framework ASP.NET Web API.
Con la tecnología de Blogger.