Los Workbooks son una especie de documentos "vivos" con los que puedes compilar y ejecutar código en C#. Con ellos, aprender a programar a .NET cobra un nuevo significado. Mira, por ejemplo, cómo se ve un “Hola mundo“ en ellos:

Console.WriteLine("Hola mundo");

Interfaz

Vamos a ver algunos elementos de la interfaz antes de adentrarnos de lleno en el tema. Estos son los controles que te encontrarás muy seguido:

Con el símbolo de + puedes agregar un nuevo bloque de código, con el de puedes agregar un bloque de texto y con el de ✖️ puedes eliminar el bloque seleccionado.

Otro de los elementos con los que seguramente estarás muy familiarizado es el Intellisense:

Declaración de variables

También podemos declarar variables y asignarlas para el documento:

int entero; // declaración
float flotante = 10f; // Asignación
decimal x = (decimal)flotante * 3;
decimal y = x / 6;

Declaración de clases

Inclusive podemos crear clases completas

public class Pokemon
{
  public int Id { get; set; }
  public string Name { get; set; }
  public int Height { get; set; }
  public int Weight { get; set; }
}

Y luego, instanciarlas:

var p1 = new Pokemon();
p1.Name = "Pikachu";

NuGet

Oh, y también puedes insertar paquetes de NuGet, para hacerlo, tienes que ir a la barra de menús Archivo > Agregar paquetes y listo. Por ejemplo, en este Workbook agregué los paquetes de las librerías HTTP de Microsoft y Newtonsoft.Json para manipular este formato. Vamos a consultar la PokéAPI

Una vez agregado el paquete aparecerán unas directivas para preprocesador que le indican al Wokbook que haremos uso de dichos paquetes:

#r "System.Net.Http.Primitives"
#r "System.Net.Http.Extensions"
#r "Newtonsoft.Json"

A partir de entonces podemos hacer uso de estas, ¡pero hey! no olvides los using

using Newtonsoft;
using System.Net.Http;
using System.Net.Http.Headers;

Ahora sí, vamos a consultar la PokéAPI. Configuramos el cliente:

var client = new HttpClient();
client.BaseAddress = new Uri("http://pokeapi.co/api/v2/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

Y realizamos las llamadas. ¿por qué no buscas a tu Pokémon favorito modificando la variable pkmn? (no olvides presionar ctrl o cmd + ↩︎ para ejecutar el código:

var pkmn = "jirachi";
var response = await client.GetAsync("pokemon/" + pkmn);

¡Oh! lo olvidaba, ¿ves eso que sale debajo de nuestro código cada vez que lo ejecutamos? no es nada más que otra de las maravillas de los Workbooks, que realiza la evaluación de la última expresión y la presenta en pantalla, además de que nos da varias opciones para visualizar la información:

Ahora sí, de vuelta al código:

if(response.IsSuccessStatusCode)
{ // ... Read the string.
	    string result = await response.Content.ReadAsStringAsync();
        var poke = await Newtonsoft.Json.JsonConvert.DeserializeObjectAsync<Pokemon>(result);
	    Console.WriteLine($"{poke.Id:000} {poke.Name}: H: {poke.Height} and W: {poke.Weight}");
}

¿Cómo son los Workbooks?

Por si mismos, los Workbooks no son más que archivos te texto plano (un híbrido entre YAML, Markdown y otra cosa) que son interpretados por la aplicación de escritorio.

Vamos a revisar precisamente este mismo archivo. Estas son las primeras líneas:

La primera es un Uniform Type Identifier, la segunda es la especificación de para qué plataformas es nuestro espacio de trabajo (en este caso es la consola) y por último la declaración de los paquetes de los que se hace uso.

Otra cosa que podemos revisar es la forma en la que los bloques de código se especifican, es muy parecido a cuando se declaran en markdown, con la diferencia de que tiene un csharp después de las tildes invertidas:

Lo cierto es que varias veces le tuve que meter las manos al código fuente del archivo para lograr algunas cosas en este archivo, pero vamos, que apenas es la primera versión “estable“ de esta herramienta.

Instalación

Si ya estás ansioso por descargar y probar los Workbooks puedes dirigirte a este enlace.

Usos

Seguramente ya estarás pensando en algún uso para esta nueva herramienta. El más claro que yo tengo en mente es el poder los posts de #AprendeCSharp, es más, ¿por qué no comienzas por descargar este o los que Xamarin preparó para ti.

Eso es todo por este post, espero descarguen los Xamarin Workbooks y los usen como una herramienta para aprender.