Lecturas recomendadas sobre c# y .net · noviembre 2019
Aquí vienen las interesantísimas lecturas sobre c# y .net que he recopilado durante este noviembre. ¡A leer!
1. Small methods are easy to troubleshoot
Muchas veces me ha tocado resolver un bug cuya información en el log era NullReferenceException: Object reference not set to an instance of an object. No son bugs triviales y generalmente cuesta resolverlos. En el post Small methods are easy to troubleshoot, Mark Seemann explica cómo escribir código que sea capaz de resolver estos bugs fácilmente. Es un pasito más que te acerca a ser un programador mejor.
2. DDD and bulk operations
Domain Driven Design es bueno cuando se trata de realizar pequeñas actualizaciones de datos (un update por vez). Pero no funciona bien cuando se trata de operaciones masivas de datos. Vladimir Khorikov explica en su artículo DDD and bulk operations, cómo utilizar la combinación de los patrones Specificacion y Command para realizar este tipo de operaciones, cumpliendo a la vez dos requisitos importantes: el principo de programación Don't Repeat Yourself (DRY) y conseguir un buen rendimiento. Un post excelente.
3. Novedades en la evaluación en cliente de EF Core 3.0
Si sabes lo que significa la evaluación en cliente de Entity Framework Core es que has tenido problemas con ella como yo. Por suerte con EF Core 3.0 la cosa mejora enormente. José M. Aguilar explica en su post las novedades que trae. Te recomiendo que lo leas porque te va ayudar a manejar correctamente este Framework. El punto "(...) la expresión en cliente sólo podrá ser utilizada si se trata de la proyección final" es muy práctica y conviene saber cómo aplicarla.
4. Paging in ASP.NET Core Web API
Me ha sorprendido este post de Vladimir Pecanac sobre cómo devolver una lista paginada desde un Web API porque la información sobre el Total de páginas, la página actual, si tiene siguiente pagina etc la mete en un Header (Cabecera) de la respuesta. Al parecer lo hace así porque devolver Ok(listaPaginada) no te proporciona toda la información de la lista paginada.
5. How to write to a file with C# in 2019 - StackOverflow doesn't get it right
Me he sentido identificado con este post. Muchas veces googleo cuestiones sencillas porque no recuerdo la sintaxis exacta. Por ejemplo cómo escribir en un fichero utilizando c#. Te puede pasar que las respuestas que te encuentres sean del 2010. ¿Estás seguro que en el 2019, con lo rápido que evoluciona la programación, se hace de la misma manera? Thomas Ardal hace un resumen de cómo ha evolucionado la manera de escribir en un fichero con c#. Y ojo que te puede pasar con otro tipo de cuestiones.
6. Exploring lighter alternatives to Electron for hosting a Blazor desktop app
Cuando me plantean desarrollar una aplicación siento una enorme responsabilidad, incluso cierto estrés: hay tantas maneras de realizarla que explicar pros y contras de cada una de ellas, y que además el cliente te entienda, es misión imposible.
Si hubiera un framework multiplataforma, con stack .net, moderno y que incluyera la mayor parte de las ventajas de las diferentes maneras de crear una aplicación sentiría un gran alivio. Blazor apunta a ello, pero todavía está verde. Artículos como este de Steve Sanderson me ayudan a comprender cómo está la situación. Todo apunta a que este sueño se puede acabar cumpliendo.
7. Options Pattern in .NET Core
Si has trabajado con .Net core te habrás topado con la clase Starup. En ella se configuaran numerosas clases con lo que se llama Options Patern (patrón opciones). ¿No te gustaría aplicar esta misma técnica para configurar tus clases? En Options Pattern in .NET Core Changhui Xu describe como se hace.
8. Use Quartz.Net for background and recurring jobs within an ASP.NET Core 3.0 application
Tienes una web y quieres empezar a realizar trabajos en background o que se ejecuten cada cierto tiempo. Partiendo de la base de que no quieres crear más infraestructura existen dos opciones conocidas: Hangfire y Quartz.Net. La primera es moderna y sencilla pero falla cuando quieres implementar funcionalidades complejas. En este post, Valentin Fritz explica como usar Quartz.Net para conseguir este tipo de funcionalidades. Es importante tener claro que los recursos para ejecutar el trabajo en background se obtienen de la misma máquina o contenedor que está ejecutando la aplicación.
9. Create a Windows Service App in .NET Core 3.0
Este post de Changhui Xu es otro ejemplo de cómo poder realizar tareas en background. En este caso se trata de un Servicio de Windows. Es importante remarcar que aunque sea .Net Core, solo vas a poder aplicarlo en máquinas Windows, parece obvio pero genera confusión.
10. Managing output in the .NET SDK projects
El contenido del directorio de salida de los proyectos .Net se puede controlar desde el archivo del proyecto .csproj
. Este post de Cezary Piatek es un resumen de las diferentes opciones de configuración para personalizar el contenido en el directorio de salida de los proyectos .Net.
Extra: Disabled buttons suck
Hampus Sethfors
Mostrar botones como deshabilitados hasta que se complete un formulario puede parecer una buena idea. No lo es. Por lo general, crean una pésima experiencia de usuario y excluyen a muchas personas con discapacidades. He aquí por qué los botones deshabilitados son una mierda y qué hacer en su lugar.