La definición más básica de tecnologías de la información es la aplicación de la tecnología para resolver problemas empresariales u organizativos a gran escala. Inicialmente han sido en el ámbito del cálculo, tareas recursivas o procesamiento de gran número de datos, donde se puedan sacar ventajas de la computación. Cuando las tecnologías llevan a un dispositivo a adquirir y aplicar conocimiento y llevar a cabo comportamiento inteligente, entonces hablamos de inteligencia artificial, permitiendo así construir sistemas inteligentes para diferentes áreas de aplicación. Para ello, estos sistemas inteligentes requieren combinar distintas tecnologías, abarcando desde la generación o captura de datos, el procesamiento de los datos con infraestructuras de computación adecuadas, la analítica de los datos, y el soporte al aprendizaje automatizado o la toma de decisiones.
Un campo de la inteligencia artificial es machine learning. Entendemos por machine laerning, conseguir que las computadoras hagan predicciones sin ser programadas explícitamente. Machine learning se usa para resolver problemas que son difíciles (o imposibles) de resolver con programación basada en reglas (por ejemplo, instrucciones if y bucles for). Un paso más en machine learning, aprendizaje automático, es cuando se introducen redes neuronales, que permiten que este aprendizaje automático sea más profundo y más complejos los conceptos que pueda aprender, se habla entonces de Deep Learning.
En esta entrada, nos referimos a ML.Net, que Microsoft lanzó en 2018 como preview, un marco de machine learning gratuito, multiplataforma y de código abierto diseñado para llevar el poder de (ML) a las aplicaciones .NET para una variedad de escenarios. ML.NET es algo más que una biblioteca de Machine Learning que ofrece un conjunto específico de características; ofrece una API de alto nivel y un marco integral que no solo aprovecha sus propias características de ML sino que también simplifica otras bibliotecas y tiempos de ejecución de infraestructura de ML de nivel inferior.
En este ejemplo, se ha usado la bb.dd Northwind, que consiste en las operaciones de una empresa de exportación / importación en el sector de la alimentación, como catálogo de pedidos, y usar SVD (singular value decomposition) / One Class-Matrix Factorization, como modelo que muestre un ranking de productos a recomendar para los items en el pedido. La web puede verse en https://northwindml.azurewebsites.net/.
En la entrada http://www.jcamweb.com/blog/aspnet/net-y-net-core-son-ahora-net-5-0/ se describieron algunas de las ventajas de la actualización de asp.net core 5. Como un tipo de las aplicaciones típicas es usar un backend en webapi y frontend angular, por sus ventajas de ser una SPA, arquitectura en componentes y posibilidades de PWA,en esta entrada vamos a ver las posibilidades que ofrece usar el proyecto propio de Visual Studio para desarrollar este tipo de aplicación.
En 2001 apareció .Net actualmente en la versión 4.8, este fue un framework de desarrollo común para aplicaciones de escritorio y web siendo el estándar en Windows. Posteriormente en 2016 Microsoft presentó .Net Core una plataforma de desarrollo modular, disponible para Linux, Mac y Windows y bajo licencia MIT. Desde finales de 2020 está la unificación de estos dos framework en .Net 5.0. Veamos algunas de las mejoras.
Primero decir que se ha eliminado «Core» del nombre para enfatizar que esta es la implementación principal de .NET en el futuro. .NET 5.0 admite más tipos de aplicaciones y más plataformas que .NET Core o .NET Framework. Mejora en el «Garbage Collector» GC, el recolector de memoria mejora sustancialemte respecto a .Net 4.8 y .Net Core 3.1 usando BenchmarkDotNet. Mejora en el compilador «Just-In-Time» Jit, del 40% respecto a .Net 4.8. Optimización en el procesamiento de textos, dichos cambios se extienden desde microoptimizaciones en rutinas que procesan caracteres individuales hasta revisiones de bibliotecas completas de procesamiento de texto. Y para quienes utilizan C#, como no, incorpora todas las mejoras de la versión C# 9.0.
En la entrada http://www.jcamweb.com/blog/aspnet/asp-net-core-web-api-compartido-en-windows-azure-api/ detallamos el interés y pasos de usar el Api Management de Windows Azure para tener una asp.net core api publicada en el cloud. Pero qué pasa si queremos olvidarnos de desarrollar para un sistema operativo / entorno concreto, ir comprobando que librerías deben estar instaladas para ejecutar nuestra aplicación, y tener servidores / escalabilidad de inmediato. La respuesta es publicar en kubernetes.
Dos de los paradigmas, más nombrados en los últimos años, para creación, publicar y compartir funcionalidad de software, son web api y cloud. En esta entrada vamos a utilizar asp.net core para crear un web api y publicarlo en windows azure.
Este es el proyecto en visual studio 2019 de Basic Calculator, una aplicación que expone las funciones aritméticas básicas a través de un web api controller. Además se ha añadido un cliente jquery para consumirlo.
Para facilitar el proceso de compartir, se ha añadido el https://www.nuget.org/packages/Swashbuckle.AspNetCore.Swagger/ que crea una url con fichero OpenApi en formato json para «descubrir» la interfaz api cuando se publique en azure. Inicialmente se ha de publicar el proyecto en windows azure, esto será el backend que responderá a la interfaz que se crea con el api management de windows azure. Para ello podemos seguir la entrada en http://www.jcamweb.com/blog/general/publicar-en-windows-azure/. Una vez publicada tocan los pasos de generar la api.
Este es el recurso que debemos crear para gestionar la web api en azure. Debemos crearlo en el mismo grupo recursos que tengamos el proyecto web api asp.net core. Este recurso, que en este caso llamamos BasicCalculator, es el que nos va permitir admistrar la web api, tal como distintas versiones, tener una versión de evaluación con limitación de llamadas, identificación…
Iremos entonces, en el panel de admistración de azure, a todos los recursos, elegiremos el Api Management que creamos anteriormente y daremos a crear un Api. Como subimos con el Nuget la funcionalidad de crear el fichero openapi, tendremos una url con la definición de nuestra web api. Esta el la url que debemos utilizar cuando demos a «Add new Api», elegir «OpenApi», así de manera automática expondrá la interfaz de la api y tendremos por añadido un entorno de testeo de la web api.