Lecturas recomendadas sobre c# y .net · julio 2020
Aquí tienes algunas lecturas interesantes sobre c# y .net que he recopilado durante el mes de julio.
1. How do I find which directory my .NET Core console application was started in or is running from? · Scott Hanselman
¿Desde qué directorio se ejecuta una aplicación .Net Core? ¿Dónde se encuentra físicamente? ¿Desde qué directorio he realizado la llamada para que se ejecute? Todas estas son preguntas básicas que deberíamos saber, lee este post si quieres conocer las respuestas.
2. Is Equality Comparison a Code Pollution? · Vladimir Khorikov
Code pollution es un antipatrón que se produce cuando se agrega código de producción que solo es necesario para las pruebas unitarias. Este post discute si el código agregado para comparar dos objetos entraría dentro de este antipatrón. Spoiler: no.
3. Asynchronous Method Without async
in C# · Drake Lambert
¿Qué pasaría si en una acción asíncrona de un controlador quitáramos la palabra clave async? Drake Lambert discute en este post los casos en que se podría realizar esta acción con éxito para mejorar el rendimiento de la aplicación, aunque al final concluye que es mejor no hacerlo.
4 .NET Garbage Collection, Here We Go! · Anand Gupta
El comportamiento del Garbage collector al recolectar elementos no utilizados puede ser diferente si se trata de código optimizado (release) o de código no optimizado (debug). La diferencia puede deberse a la recolección agresiva de objetos por el JIT en caso de código optimizado (release). Todo esto puede sonar a chino, por eso te recomiendo este post corto y comprensible que me sorprendió.
5. Task asynchronous programming as an IO surrogate · Mark SeeMann
En este post se discute si IO<T> (Input/Output) podría ser equivalente a Task<T>. El post forma parte de una serie sobre una posible implementación de un contenedor IO<T> que sería capaz de marcar los métodos impuros en c#. Solo por los ejemplos de código utilizados ya merece la pena leerlo.
6. Handling concurrency in an ASP.NET Core Web API with Dapper · Carl RIPPON
Aquí tienes un ejemplo de cómo utilizar la característica rowversion de SQL para generar un Web API que controle la concurrencia. Puede utilizarse tanto en Web Api como en cualquier otro tipo de aplicación.
7. Modular Monolith: Integration Styles · Kamil Grzybek
Los sistemas de integración entre dos aplicaciones son: tranferencia de archivos, base de datos compartida, llamada directa y cola de mensajes. Analiza sus pros y contras utilizando tres tipos de criterio: acoplamiento, complejidad y tiempo de sincronización. Si vas a integrar dos sistemas independientes seguro te interesa.
8. A Few Different Ways to Concatenate Strings in C# · Vladimir Pecanac
Aquí tienes seis maneras diferentes de concatenar strings en c#, nunca está de más recordarlas.
9. An Interesting Params Gotcha In C# · Wade Gausden
Si utilizas Entity Framework quizá te hayas topado con este tipo de error al utilizar el método HasData:
The seed entity for entity type ‘XXX’ cannot be added because there was no value provided for the required property ‘YYY’
Este post arroja un poco de luz sobre lo que realmente está pasando.
10. C#9 Records: Mis impresiones · Eduard TomÀs
Extenso análisis sobre una nueva característica de c# 9: los records. Todo lo que quieres saber y mucho más.
Extra: 2020 Developer survey · Stack Overflow
La encuesta sobre desarrollo de software más esperada del año.