¡Estuvimos en la .NET Conf Argentina y te contamos la experiencia en primera persona!

Del 29 de junio al 1 de julio se realizó en Buenos Aires la .NET Conf AR v2017, uno de los eventos más importantes de América Latina sobre tecnologías .NET y Azure. El encuentro, que fue en la Facultad de Ciencias Económicas de la Universidad de Buenos Aires.

Argentina, .NET Conf contó con con 8 workshops y 10 charlas cada uno de la mano de 24 speakers hablando de temas como: Azure, Windows 10, Universal Apps, ASP.NET, MVC, WebAPI, Xamarin, Windows Mobile, Data Management, Sharepoint, Application Lifecycle Management, Agility, Visual Studio, C#, Emprendedurismo, Internet of Things, Aspect Oriented Programming, y mucho más.

Allí, Jorge Artave, Jefe de Proyectos de Fx2, fue en representación de nuestra empresa, asistiendo a las diversas actividades del evento, sumando nuevas experiencias y conocimientos.

Algunos de sus comentarios sobre las charlas a las que fue Jorge:

  • Charla sobre SignalR Core, .NET Core y Angular

Charla principalmente centrada en SignalR y en ejemplos de código. Uno de los ejemplo novedosos que hicieron mención fue de una aplicación para registrarse a un sorteo desde los clientes, en el cual en determinado momento el servidor notifica al ganador.

En cuanto a la parte teórica se explicaron temas básicos de SignalR, como por ejemplo los dos modos de funcionamiento:
1. Persistent Connections: en este modo de funcionamiento el desarrollador es el responsable de definir el protocolo a seguir por la aplicación incluyendo los mensajes a ser transmitidos, permitiendo trabajar con mensajes raw.
2. Hub: En este modo de funcionamiento la herramienta es encargada del protocolo y mensajes a transmitir por la aplicación. Para el desarrollador, la herramienta le permite ejecutar funciones del cliente desde el servidor y viceversa.

Existe una versión en desarrollo para .NET Core pero aún falta resolver unas dependencias.

  • Charla sobre Bots

Bots: ¡Básicamente son aplicaciones con las que podemos conversar! De parte de Microsoft lo que que presentaron fueron las herramientas de:
1. Luis.ai
2. Bot framework

El primero, Luis.ai (Language Undestanding Inteligente Service), básicamente nos permite procesar lenguaje natural para obtener principalmente dos cosas de un mensaje, la intención del mismo y las entidades relacionadas. Haciendo un matcheo con la programación común y corriente, la intención se podría ver como las funciones que necesitamos ejecutar para satisfacer al usuario y las entidades los parámetros de estás.

La segunda herramienta, Bot Framework, nos dará la plataforma para armar nuestro bot, esto es, definir los distintos tipos de entidades, las acciones posibles, los distintos encadenamientos y la conexión con nuestra lógica de negocio.

Dos puntos interesantes respecto a la charla:
Los “modelos” generados en Luis pueden ser ajustados en base a las distintas queries que se le hayan pasado. Entiendo que hay que tener cuidado con esto porque se podría llegar a sobre ajustar el modelo. Si bien parece interesante hacerlo únicamente mediante lenguaje natural, no necesariamente hay que restringirlo a preguntas y respuestas, en algunos casos puede ser interesante incluir controles tradicionales como pueden ser botones, lo cual esta contemplado en bot framework (ademas de otros controles)

Enlaces interesante:
http://www.github.com/marcelofelman/mva-bots
http://mfelman.com/wp-content/uploads/2017/04/Tambero.gif

  • Charla sobre Asp.NET Core

Hubieron muchas charlas enfocadas a este nuevo framework. Lo mas destacable es que actualmente se encuentran en uso y existen aplicaciones en producción.

Entrando en detalles técnicos, se planteó un cambio de responsabilidades interesante, ya no es el IDE el que propone una solución inicial con todas las dependencias posibles, es responsabilidad del desarrollador definir las dependencias a incluir. Para aclarar esto si se quiere usar MVC es necesario incluir su dependencias, si se quiere utilizar cache es necesario incluir una dependencia, hasta si se quiere distribuir contenido estático (por ejemplo html, css, etc.) es necesario agregar otra dependencia ! Esto que parece tan engorroso va de la mano con una de las metas del framework, disminuir el consumo de memoria y procesamiento necesario, reduciendo las capas necesarias desde que se recibe un request hasta que se envía el response.

Similar a lo anterior se tiene un nuevo servidor web más sencillo y multiplataforma: Kestrel. Este servidor carece de funcionalidades normales para un IIS, como por ejemplo reiniciar las aplicaciones si “crashean”, un mantenimiento básico de logs o iniciar las aplicaciones al iniciar el sistema. Para solventar esta carencias hay que utilizar herramientas externas, por ejemplo para levantar automáticamente las soluciones se planteó utilizar una llamada supervisor o configurar casa aplicacion como un demonio del sistema operativo. Adicionalmente resulta necesario utilizar un proxy reverso como puede ser nginx para poder, por ejemplo, contar con soporte para https.

Finalmente se tiene como principal ventaja la reducción de costos asociado oficialmente al menor costo de los ambientes de ejecución.

  • Charla sobre Blockhain, Smart Contracts y Azure

Esta fue en lo personal una de las charlas más locas del viernes. En un principio la charla comenzó hablando de la confianza, en particular en la que se le suele tener a los bancos a pesar de haber sucedido alguna que otra crisis por culpa de éstos.

Entrando en lo técnico, la blockchain termina siendo una base de datos distribuida con ciertas restricciones. En particular está db mantiene estructuras de datos enlazadas, mediante un hash criptográfico, llamadas block. En particular cada block tiene tres atributos, los datos, un nounce (algo como una semilla) y el hash para dicho block (que termina funcionando como una firma del block).

De lo anterior resulta destacable dos cosas: que es una db distribuida y que los blocks se enlazan utilizando hash criptográficos, lo que implica que, si se quisiera hackear, habría que poder romper los hashes (no menor, por lo de criptográfico) y que una vez hecho esto, actualizar todos los nodos en donde se encuentre el block a modificar y al menos los adyacentes (en un caso ideal, la db se encuentra replicada completamente en todos los nodos de la red).

Para redondear lo anterior, dos cosas no menores y un ejemplo:
– La blockchain puede ser completamente pública.
– Bitcoin es una red blockchain en donde los datos de los blockes, es la información financiera de los distintos nodos (usuarios anónimos)
Es posible utilizarlo como una base de datos distribuida para cualquier cosa, otro ejemplo que dieron fue para el registro de sensores de temperatura en un océano con el fin de, por ejemplo, asegurar los datos a utilizar en trabajos relacionados con calentamiento global.

Smartcontracts
Smartcontracts básicamente viene a ser una aplicación de las blockchain a código de software, donde cada block tiene como dato el código del software que ejecuta. De esta forma lo que se consigue es un software completamente visible y que no puede ser modificado, permitiendo tener una auditoría fiable del mismo. Un ejemplo bien claro de un software en donde serían deseables estas características, es el de una aplicación de votos electrónicos de una nación.

Para redondear, dos comentarios finales:

– Hay empresas trabajando con esta herramienta, una es RSK Smartcontracts en Argentina.
– Azure nos permite trabajar con esto, brindando la posibilidad de trabajar con algunos frameworks (etherium es uno de éstos) y permite fácilmente definir VMs que funcionen como nodos de la misma.