Lecturas recomendadas sobre c# y .net · octubre 2019
¡Hola! Aquí te dejo las lecturas recomendadas del mes de octubre. ¡Disfrutalas!
1. The Blazor Bet
Ha salido la primera versión de Blazor ¿apuesto por él? Lamentablemente la respuesta es: todavía no. Resulta que Blazor tiene dos versiones distintas, una en la que c# se compila en WebAssembly pudiéndose ejecutar en el navegador; y otra que funciona a través de una conexión con SignalR (esta última es la que se ha publicado). Según Scott Allen en su The Blazor Bet, habrá que esperar como mínimo un año más para que se publique la versión que todos esperamos.
En esta primera versión de Blazor hay que ir con precaución. Todos quieren hacer un prototipo para ver cómo funciona. Nadie está listo para asumir el riesgo.
2. Devil's advocate
Un test unitario que cubra diferentes casos y dé positivo podría estar bien diseñado, o no. En este artículo Mark Seeman explica su técnica Devi'ls avocate para escribir tests unitarios realmente útiles. Es magnífica. Te recomiendo aplicar esta técnica si quieres mejorar tus tests unitarios.
Los programadores que empiezan con tests unitarios a menudo tienen dificultades para identificar casos de prueba útiles. A veces veo personas que escriben pruebas unitarias redundantes, mientras que, por otro lado, olvidan agregar casos de prueba importantes. ¿Cómo sabes qué casos de prueba agregar y cómo sabes cuándo has agregado los suficientes?
3. Switch expressions en C# 8
En este artículo José M. Aguilar explica de manera sencilla y comprensible las nuevas posibilidades de la Switch expression en c# 8. Estas técnicas se irán incorporando paulatinamente a los códigos base, así que te recomiendo echarles un ojo antes.
Seguimos descubriendo perlas en C# 8 que nos harán la vida algo más sencilla a los desarrolladores. En este caso, se trata de una pequeña adición al lenguaje que nos permitirá hacer más claras y concisas determinadas expresiones condicionales.
4. Avoiding the Repository Pattern with an ORM
Cuando ya pensaba que se había escrito todo sobre el patrón repositorio resulta que aparece un post en su defensa y claro, se arma un buen lío. A día de hoy, la mayoría de gurús apuestan por no implementar el patrón Repositorio encima de EntityFramework porque es añadir una capa más de complejidad y porque EF ya implementa este patrón. Avoiding the Repository Pattern with an ORM de Derek Comartin viene a recordar cuáles son los inconvenientes principales de dicho patrón aplicado encima de EntityFramework y en qué circunstancias sí es recomendable. No puedo estar más de acuerdo.
No digo que no debas usar el patrón de repositorio. Voy a aclarar por qué creo que, en ciertas situaciones, no es muy útil y en otras situaciones que sí que lo es.
5. Advanced error handling techniques
"¿Cómo puedo responder con diferentes códigos de estado HTTP dependiendo de la naturaleza del error sin que la lógica de la capa de Dominios se filtre a la API (UI)? En particular, ¿cómo puedo diferenciar entre un Result que falló debido a un error de validación y otro que falló porque no se encontró la entidad? Me gustaría responder con un 400 en el primer tipo de error y con un 404 en el segundo."
Tres veces durante esta semana Vladimir Khorikov ha recibido esta pregunta. En Advanced error handling techniques tienes su respuesta maestra.
Crea una clase explicita
Error
.Usa
Result
combinándola con dicha clase en lugar destring
s.Transforma los
Result
s en códigos de respuesta HTTP en la claseBaseController
.
6. Combining ASP.NET Core validation attributes with Value Objects
En mis aplicaciones cada capa tiene sus propias validaciones. A parte hago que el "Dominio (Negocio)" sea la capa más interna de la cual dependen el resto. Las validaciones del Dominio son explícitas, es decir, métodos escritos a mano que comprueban puntos importantes del Negocio. Bien, ¿qué pasa cuando mi capa de cliente es una API o una Web ASP.Net que tiene un Framework propio para manejar validaciones? ¿Tengo que volver a repetir mis validaciones pero utilizando los Validation Attributes de ASP.Net? En el post Combining ASP.NET Core validation attributes with Value Objects Vladimir Khorikov explica cómo combinar las validaciones del Dominio con las de ASP.Net
En este artículo veremos cómo combinar los validation attributes de ASP.NET Core con los Value Object. Veremos cómo los dos manejan la validación de entrada por su cuenta, describiremos los inconvenientes de cada uno y luego procederemos con el enfoque combinado.
7. Generalize file access for ASP.NET Core applications using IFileClient implementations
Para subir las imágenes de este blog tengo montado un buen lío: Cómo subo las imágenes de este Blog. La verdad es que no estoy muy satisfecho pero funciona bien y hasta ahora no me ha dado problemas. En este post de Gunnar Piepman tengo la guía perfecta para hacer un buen refactoring que sumo desde ya a mi lista de tareas.
Hace mucho tiempo trabajé en un proyecto que generalizaba el acceso a archivos en cliente para que mis aplicaciones pudieran mantener dichos archivos en la máquina local o en algún lugar de la nube sin cambios en el código cliente. Esta publicación muestra cómo generalizar el acceso a archivos en aplicaciones web y proporciona implementaciones para clientes de archivos locales y en la nube.
8. Guide to Building a Good REST API in 10 Days
Si quieres montar un REST API esta guía de Abhinav S te puede ayudar a conseguirlo. Es una checklist con algunos consejos para cada punto.
Este documento enumera algunas pautas que pueden ayudar a construir un buen servicio REST (...) en tan solo 10 días.
9. Speed up ASP.NET Core WEB API application. Part 3
Este es el tercer post de una serie de tres de Eduard Silantiev. En su primer post explica cómo crear un RESTful Web API, en el segundo se centra en la mejora del acceso a los datos y en cómo mejorarlo aplicando Redis caché. Y en este último remata la jugada con un Refactoring explicado punto por punto del que se puede aprender mucho.
Ahora, después de hacer una elección de ideas e implementarlas, podemos considerar nuestra aplicación como un todo. Se hace evidente que el código requiere una profunda refactorización y refinamiento para que satisfaga varios principios de buen estilo de programación.
10. 9 Must Decisions in Web Application Development
¿Single Page Aplication (SPA) + Web Api o Web MVC? ¿React, Angular, Vue? ¿Base de datos relacional o no relacional? ¿Cómo publicaré mi proyecto? ¿Qué framework para crear logs utilizo? ¿Qué metodo de pago implemento? Michael Shpilt ha escogido las 9 decisiones tecnológicas que hay que tomar al desarrollar una aplicación web. Yo veo su post como visión general del estado actual del mercado.
¿Has decidido crear una aplicación web? Genial, bienvenido a un mundo sin opciones fáciles. Hay una gran cantidad de tecnologías diferentes y excelentes en cada paso que vas a dar. Y para cada opción, encontrarás una gran compañía que la utilizó con mucho éxito.
Extra: Announcing free C#, .NET, and ASP.NET for beginners video courses and tutorials
Scott Hanselman
Hay casi cien vídeos cortos que enseñan temas como C #, .NET, crear aplicaciones de escritorio, crear aplicaciones web ASP.NET, aprender sobre contenedores y Docker, o incluso comenzar con Machine Learning. Hay un montón de excelentes vídeos para principiantes de ritmo lento. ¡La mayoría dura menos de 10 minutos y todos están organizados en listas de reproducción en YouTube!