Trabajando con fechas UTC en C#

Parece algo trivial manejar las fechas y horarios en tu código a partir de DateTime o DateTimeOffset, pero pueden existir algunos casos donde el manejo de fechas puede traducirse en una pequeña pero molesta cantidad de errores o imprecisiones no deseadas, según el fin al que este destinado tu aplicación, y la geolocalización de los usuarios que la usen.

¿Alguna vez te has planteado en que zona horaria esta localizado el servidor que ejecuta tu código una vez lo despliegas a la nube? ¿En que podría afectar eso a la comparación de fechas para determinar aspectos sensibles de tu lógica? En esta entrada voy a profundizar en todo ello.

Leer más…

Mejorando el performance de tu app, trabajar con ConcurrentBag

Una aplicación puede tener un performance o rendimiento que no sean los óptimos por muchos motivos, pero uno de ellos puede ser el hecho de no trabajar bien con procesos que podrían paralelizarse y no se paralelizan.

En caso de paralelizar procesos además hay que tener en cuenta que tu aplicación va a trabajar con diferentes hilos, y que no todos los elementos de C# son seguros al ser manejados por diferentes hilos paralelos.

A continuación presento por qué usar ConcurrentBag, un elemento que implementa IEnumerable como pueda ser List, y que deberá sustituir a List si las vas a necesitar en un proceso con hilos paralelos que tienen subprocesos.

Leer más…

Mejorando el performance de tu app, trabajar con procesos en paralelo

En ocasiones es posible que tu aplicación este sufriendo un mal rendimiento como consecuencia de hacer diferentes procesos secuenciales sin que realmente exista una dependencia entre ellos.

Estos procesos son firmes candidatos a ser usados en paralelos en diferentes subprocesos de tu proceso principal, de forma que el tiempo que tu proceso principal tarda en ejecutarse sea igual al tiempo del peor de los subprocesos, y no una suma secuencial de los tiempos de cada subproceso.

A continuación te presento como hacer esto de forma simple. 

Leer más…

Error de serialización con objetos que aplican herencia.

Recientemente me he encontrado con un error al comunicar un objeto entre dos sistemas aplicando NServiceBus. Me ha resultado bastante curioso y creo que merece la pena una entrada para andarse con ojo con el tipo de asignación que hacemos entre objetos que aplican herencia entre sí.

A continuación te explico cuál es el problema. 

Leer más…