Librerías HTTP en .Net

He de decir que nunca me había planteado usar librerías HTTP para hacer una llamada REST desde mí código en C#. Simplemente uso HttpClient y luego serializo el resultado con Newtonsoft, nada del otro mundo. La autenticación, parámetros o cuerpo de la petición, la monto a mano y listos. Hasta el día de hoy (en el momento de escribir esta entrada para el blog) no conocía librerías para hacer esto, ni interés que tenia. Pero entonces, me ha llamado un compañero de trabajo para ver si podía darle mi opinión sobre un tema y mientras mirábamos el código, he visto una clase llamada RestClient. -Eso no es estándar de .Net- he pensado, así que me he puesto a indagar. Y lo que he visto me ha parecido interesante y por eso he indagado un poco y me he puesto ha hacer unas pruebas básicas, para ver si compensa o no usar librerías para realizar llamadas HTTP.

Sigue leyendo Librerías HTTP en .Net

El futuro de .Net y sus distintas versiones

Dentro de poco, en noviembre de este año, .Net 5 pasara a GA (general availability) y esto va a suponer un gran cambio en el ecosistema .Net, que no todo el mundo esta terminado de entender.

El otro día me topé con el siguiente Tweet que no tiene desperdicio:

Cómo el mismo menciona en la conversación creada, Microsoft no lo ha puesto fácil, así que me he puesto a revisar la documentación y roadmap para intentar resumir esto un poco.

Vamos a ver cada una de las versiones del framework y a intentar explicar esto un poco.

Ojo, no confundir los frameworks o implantaciones de .Net con los lenguajes (que alguna vez me lo he encontrado). C# es el lenguaje y .Net Core es el framework (por poner un ejemplo).

Sigue leyendo El futuro de .Net y sus distintas versiones

El reto de la empresa de mapas: Bajar un fichero de 2GB y procesarlo lo más rápido posible

Hace algún tiempo me tope por casualidad con un reto que proponen en la sección de reclutamiento en una conocida empresa que se dedica a la visualización de datos sobre mapas (no quiero poner el nombre directamente, que el reto sigue activo en su web y no quiero fastidiarles si alguien «Googlea» para ver como hacerlo). El reto consiste en obtener un fichero .csv de aproximadamente 2GB de Internet y hacer algunos cálculos sobre los datos que contiene, lo más rápidamente posible. Esta claro que el ejercicio es para ver como los nuevos aspirantes plantean una posible solución, ya que el resultado, entre otras cosas, dependerá mucho de la velocidad de la red en la que se ejecute el programa. Recordemos, el requisito es ir lo más rápido posible y hay que descargar un fichero de 2GB. 

El stack tecnológico de esta empresa es Python, pero como a mí lo que me gusta es C#, acepté el reto, pero en mi lenguaje.

Al final conseguí unos tiempos de ~30 segundos en una red de 600 megas (que según comente con los creadores del reto en Twitter, no esta nada mal) con un programa de consola en .Net Core, vamos a ver como lo enfoqué.

Sigue leyendo El reto de la empresa de mapas: Bajar un fichero de 2GB y procesarlo lo más rápido posible

Crear un programa de consola asíncrono con C#

Hace ya bastante tiempo que no publico una píldora de código. Aquí va una: como crear un programa de consola en C# que pueda hacer llamadas asíncronas (async – await).

Puede serte útil en algún momento.

Actualización: Como bien comenta @snavarropino en los comentarios, a partir de la versión 7.1 de C# se incluyen main asíncronos, por lo que no sería necesario usar este «atajo».

¡Nos leemos!

Crear números aleatorios con C#

El último post de 2017 fue una pequeña píldora, y el primero de 2018 no podía ser distinto.

A primera vista, crear un número aleatorio puede parecer algo muy sencillo de hacer con C#, ya que tenemos una clase para ello:

https://msdn.microsoft.com/es-es/library/system.random(v=vs.110).aspx

Pero hay que tener una serie de cosas en cuenta para no equivocarnos y creer que estamos generando número aleatorios cuando no es así.

Sigue leyendo Crear números aleatorios con C#