Cuando empiezas un proyecto hay una serie de aspectos comunes que suelen ser resueltos mediante la instalación de una serie de paquetes básicos. Hoy te vengo a hablar de los que yo uso de manera habitual. Aunque lo primero que te recomiendo es configurar bien tu Visual Studio.
Tabla de contenidos
Logs con Serilog
Para mí Serilog es un paquete indispensable para gestionar los logs de una aplicación en .NET. Este paquete tiene varias características por las que lo considero imprescindible:
- Gran integración con el framework
- Está especialmente pensado para usar logs estructurados
- Configuración flexible, tanto por código como por fichero de configuración
- Puede exportar o enviar estos logs a muchos proveedores
- Gran flexibilidad debido a la multitud de extensiones que tiene
Pruebas unitarias
Creo que todo proyecto si quiere tener un mínimo de calidad, debe incluir pruebas unitarias para las partes más complejas y con mayor lógica del proyecto. Para este apartado suelo utilizar siempre el siguiente conjunto de paquetes:
- xUnit o nUnit como framework de test unitarios
- NSubstitute es la herramienta para crear mocks que estoy usando últimamente y me tiene muy contento, antes utilizaba Moq que es otro gran conocido.
- Autofixture para generar datos de prueba, algo normal cuando tus entidades son complejas.
- Coverlet para conseguir el tan ansiado valor de cobertura de código
Feature toggles
Esta característica cada vez la considero más importante para cualquier tipo de desarrollo, ya que permite realizar pruebas e incorporar nuevas características parcialmente. Para ello suelo usar Esquio, este paquete contiene:
- La librería para implementar los feature toggles
- Gestion del almacenamiento de los mismos en fuentes externas
- Interfaz de usuario para gestionarlos
Aspectos generales
Bajo este epígrafe voy a encuadrar aquellos paquetes más generales que sirven para cualquier caso de uso:
- Dapper para gestionar las llamadas a cualquier tipo de base de datos.
- Polly para conseguir reintentos en las llamadas HTTP y otros patrones de resilencia
Desarrollo de APIs
Una de las cosas que últimamente más hago, es crear APIs utilizando .NET Core o .NET 5 y ASP.NET Core como framework para desarrollar el backend de muchas APIs, estas luego son consumidas por otros servicios. Este tipo de desarrollos tienen unas características específicas relativas a la seguridad, la gestión de las peticiones o la documentación, a continuación te dejo los paquetes que suelo usar:
- AspNetCoreRateLimit este paquete lo uso, como su propio nombre indica, para limitar el número de peticiones que un cliente puede hacerme. Cuando tu API es pública, es muy importante controlar cómo se está consumiendo.
- Swashbuckle como generador de la documentación de la API bajo el estándar Swagger / OpenAPI
Microservicios
Los microservicios han llegado para quedarse, aunque no siempre sean la mejor opción, pero debido a su complejidad de uso hay una serie de paquetes que considero muy interesantes añadir siempre.
- Open Telemetry, el paquete oficial para conseguir una telemetría siguiendo un estándard en .NET, muy importante si los microservicios usan distintos lenguajes o buscas uniformizar el stack. Si quieres más información sobre este asunto, me parece muy interesante el siguiente recurso.
- Dapr puede ser muy interesante que lo integres si tu arquitectura de microservicios es realmente compleja. Intenta solucionar multitud de problemas comunes pero todavía está un poco verde.
Gestion de los paquetes
Además de los paquetes anteriormente mencionados, hay una serie de herramientas y técnicas muy útiles para la gestión de los paquetes de tus proyectos, lo cual se vuelve bastante complejo cuando tienes una solución grande.
- Dotnet outdated es una utilidad que te va a permitir ver desde la línea de comandos, qué paquetes pueden ser actualizados.
- Gestión centralizada de los paquetes vía ManagePackageVersionsCentrally
- Gestión centralizada de los paquetes vía archivos de precompilación.
Jorge Durán
Latest posts by Jorge Durán (see all)
- [Remix] Multitud de recursos para .NET - 18 junio, 2021
- ¿Qué es un puntero y cómo se usan? - 4 junio, 2021
- Los 10 mejores paquetes nuget que tienes que instalar - 26 abril, 2021