ASP.Net y SignalR

SignalR es una componente de Microsoft para ASP.Net, su objetivo es agregar funcionalidad web en tiempo real a las aplicaciones, de tal forma que permite hacer que el código del servidor actualice o inserte contenido en los clientes conectados en tiempo real, similar a una consola de chat.

Es una abstracción de múltiples tecnologías PUSH, soporta diferentes protocolos de comunicación, los cuales negocia y utiliza en base a las características y/o limitaciones del servidor y el navegador web.

Soporta 4 protocolos de trasporte:

  • webSockets
  • foreverFrame
  • serverSentEvents
  • longPolling

Y maneja una arquitectura como la siguiente, donde HubsAPI y PersistentConnection API son 2 modelos diferentes de implementación del lado del Servidor.

Diagrama arquitectonico de SignalR

En general, simplifica mucho el proceso de realizar notificaciones Push en aplicaciones web y elimina la dependencia con servicios Push de terceros como IBM Bluemix o Google Firebase.

Para implementaciones en Azure, existe un componente llamado Azure SignalR el cual provee integración con componentes montados en Azure y resuelve algunos problemas de escalamiento horizontal que se generan al utilizar SignalR en Azure.

Para mayor información respecto a implementaciones dejo un ejemplo de implementación con .Net Framework y algunas referencias para .Net Core y .Net Framework.

Por el momento es todo, deja un comentario si te fue de utilidad.

Referencias:

.Net Core

https://learn.microsoft.com/es-mx/aspnet/core/signalr/introduction?view=aspnetcore-7.0&WT.mc_id=dotnet-35129-website

https://learn.microsoft.com/es-mx/aspnet/core/tutorials/signalr?view=aspnetcore-7.0&tabs=visual-studio

.Net Framework

https://learn.microsoft.com/en-us/aspnet/signalr/overview/getting-started/

Otros

https://en.wikipedia.org/wiki/Push_technology

Operaciones con objetos DateTime y TimeSpan

En esta ocasión les comparto unos ejemplos muy básicos de comparación de fechas y horas.

Le mostrare una pequeña aplicación de consola que realice para unas pruebas.

El objetivo es comparar 2 horas con minutos, tipo 13:30, guardarlos en un TimeSpan y compararlos.

Console.WriteLine("Escribe una hora en formato HH:mm");
Console.WriteLine("Por ejemplo: 13:30");
TimeSpan time1 = TimeSpan.Parse(Console.ReadLine());
Console.WriteLine("Escribe otra hora en formato HH:mm");
TimeSpan time2 = TimeSpan.Parse(Console.ReadLine());

if (time1 > time2)
	Console.Write("La 1ra hora es mayor que la 2da");
else if (time1 < time2)
	Console.Write("La 2da hora es mayor que la 1ra");
else
	Console.Write("La 1ra hora es igual que la 2da");

Console.Read();

Entrega una salida como la siguiente:

Incluye una segunda opción donde obtiene la diferencia en horas entre dos fechas.

Console.WriteLine("Escribe un dia del mes:");
int dia1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Escribe otro dia del mes:");
int dia2 = Convert.ToInt32(Console.ReadLine());

DateTime date1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, dia1);
DateTime date2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, dia2); 

int total = Convert.ToInt32(date2.Subtract(date1).TotalHours);

Console.WriteLine("Horas de diferencia entre las 2 fechas: " + total.ToString());

Console.Read();

La segunda parte quedaría así:

Por el momento es todo, posteriormente iré agregando mas ejemplos a esta publicación.

Son unos ejemplos simples, espero a alguien le sean útiles.

Código de ejemplo:

https://pabloroman.mx/ejemplos/Test_DateTime&TimeSpan.zip

Programar Policies para Endpoints de Azure API Management

Iniciando en este mundo de las Policies en API Managment tuve algunos problemas en encontrar una forma medianamente optima para programar dichas policies de una forma no tan tediosa o arcaica.

El mejor editor que encontré y recomiendo es Visual Studio Code en conjunto con la extensión Azure API Managment. Te permite conectarte directamente con tu instancia de API Management e interactuar con los objetos. Tiene algunas pequeñas fallas en la interfaz, pero es mucho mejor que otros editores.

https://learn.microsoft.com/en-us/azure/api-management/visual-studio-code-tutorial

Incluso puedes llegar a debugear una Policy, aunque el proceso de debugeo deja algo que desear.

https://learn.microsoft.com/en-us/azure/api-management/api-management-debug-policies

Para iniciar en la programación recomiendo las siguientes lecturas:

https://learn.microsoft.com/en-us/azure/api-management/api-management-policies

https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies

https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions

Para información mas general de API Management consultar:

https://learn.microsoft.com/en-us/azure/api-management/

Herramientas online para programadores

En esta ocasión les comparto algunas herramientas que uso en mi día a día, espero les sean de utilidad.

Webtoolkit Online

Conjunto muy completo de herramientas en un solo sitio

www.webtoolkitonline.com

Code Beautify

Otro sitio con un conjunto de herramientas muy completo

codebeautify.org

XML Viewer

Permite visualizar, formatear, convertir, minificar archivos XML, entre otras cosas

https://codebeautify.org/xmlviewer

JSON Viewer

Permite visualizar y formatear datos en formato JSON

Online JSON Viewer (stack.hu)

JSON Formatter

Para formatear y validar datos en formato JSON

https://jsonformatter.curiousconcept.com

DotNetFiddle

Compilador de codigo C# en línea

C# Online Compiler | .NET Fiddle (dotnetfiddle.net)

C# Viewer

Visualizador, compilador y minificador de codigo C#

https://codebeautify.org/csharpviewer

Excel To Json

Como su nombre lo dice, permite convertir la informacion de un excel a JSON

Excel To Json Converter – BeautifyTools.com

APP Diagrams

Herramienta para generar diversos tipos de diagramas (Mapas mentales, UML, etc, etc).

diagrams.net

BPMN Sketch Miner

Herramienta para generar diagramas mediante la Notacion de Modelado de Procesos de Negocios (BPMN)

BPMN Sketch Miner (bpmn-sketch-miner.ai)

Web Sequence Diagrams

Otra herramienta para generar diagramas de forma fluida

https://www.websequencediagrams.com/

PlantText

Herramienta para generar diagramas UML

https://www.planttext.com/

https://plantuml.mseiche.de/