webapi_bson_07Una de las características que se incluyó a partir de la versión 2.1 de ASP.NET Web API es el soporte para la serialización BSON, que significa “Binary JSON”. Si bien BSON y JSON tienen en común que los objetos son representados como pares Nombre/Valor, hay que resaltar que su serialización es completamente diferente, ya que si comparamos un elemento serializado BSON, este no es tan “amigable” a la lectura del ojo humano como si lo es un JSON.

El formato BSON está diseñado para ser liviano, fácil de escanear y veloz para codificarse y/o decodificarse. Si quieres conocer más sobre BSON y su especificación, puedes visitar este link.

Entrando en materia, vamos a ver a continuación cómo construir un servicio en ASP.NET Web API que soporte la serialización BSON y también cómo acceder a ese servicio desde una aplicación ASP.NET MVC usando el cliente HTTP de .NET.

Para iniciar, creamos un proyecto de tipo ASP.NET Web API en Visual Studio. En este proyecto, adicionaremos una clase que representa los datos de una persona y que usaremos para enviar datos a los clientes:

public class Persona
{
    public int Identificacion { get; set; }
 
    public string Nombre { get; set; }
 
    public string Telefono { get; set; }
}

Posteriormente, crearemos un controlador en el cual adicionaremos el siguiente método para simular el retorno de unos datos relacionados con personas (clase creada en el paso anterior).

public IEnumerable<Persona> Get()
{
    List<Persona> personas = new List<Persona>();
 
    personas.Add(new Persona() { Identificacion = 1, Nombre = "Hernan", Telefono = "1234567" });
    personas.Add(new Persona() { Identificacion = 2, Nombre = "Alejandro", Telefono = "8541421" });
    personas.Add(new Persona() { Identificacion = 3, Nombre = "Camilo", Telefono = "5214214" });
 
    return personas;
}

Finalmente, y lo más importante, adicionaremos una línea de código para habilitar el soporte al formato BSON en nuestra Web API (este formato no viene habilitado por defecto como JSON y XML). Esto lo hacemos en el archivoWebApiConfig.cs que se encuentra en la carpeta App_Start del proyecto de código.

El código de la clase finalmente debe verse como el siguiente:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {           
        // Habilitando BSON
        config.Formatters.Add(new BsonMediaTypeFormatter());
 
        // Web API routes
        config.MapHttpAttributeRoutes();
 
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Ahora vamos a probar el servicio que construimos, para verificar su funcionamiento y ver más de cerca en que consiste la serialización BSON. Para hacer la prueba, usamos la herramienta Fiddler (si no la has usado antes, en la misma página de la herramienta encuentras documentación sobre cómo puedes empezar a usarla fácilmente).

Lo primero es crear una petición a la URL de nuestro servicio, especificando el encabezado con el tipo de contenido “application/bson” para que ASP.NET Web API nos retorne el contenido en ese formato.

webapi_bson_01

Luego de esto, enviamos la petición al servidor y verificamos el contenido de la respuesta. Esos datos que vemos formateados de una manera algo “extraña” es el formato BSON.

webapi_bson_02

En este punto, hemos construido ya nuestro servicio. La pregunta ahora es: ¿cómo podemos acceder al servicio desde un cliente?

En nuestro próximo post veremos un ejemplo accediendo a este servicio desde una aplicación ASP.NET MVC. ¡No te lo pierdas!

Puedes encontrar la segunda parte de este artículo aquí.

El código de ejemplo de este post y el de la segunda parte los puedes encontrar en mi cuenta de Github.