Friday, April 29, 2022

Aplicando TDD a la arquitectura

¿Qué es la arquitectura?

La arquitectura implica la toma de decisiones relevantes de diseño. 



Ahora la pregunta clave es ¿cómo nos ayuda TDD a tomar estas decisiones relevantes? Básicamente tenemos que plantear pruebas que nos ayuden en la definición de la arquitectura.

El proceso de construcción

Podemos plantear el proceso con un esquema de alto nivel:


Para cual consideramos algunas premisas y técnicas que nos ayudarán a definir nuestra arquitectura.
  • Premisas:
    • El resultado es consecuencia del proceso
    • El desarrollo es guiado por pruebas
    • El proceso es iterativo y los incrementos son pequeños
      • Al trabajar de forma iterativa hay desperdicios
    • Integración, verificación y entrega continua
    • Mantenerlo estúpidamente simple (KISS)
  • Técnicas:
    • BDD/TDD
    • Integración continua / Despliegue continuo
    • Walking Skeleton
    • Arquitectura Hexagonal
Arrancamos de forma temprana teniendo un pipeline de deployment y un ambiente en el cual desplegar. En la primera semana del proyecto se puede armar el esqueleto del proyecto, subirlo a un repositorio, que compile y despliegue.


Ciclo BDD/TDD


  • Arrancamos con una funcionalidad desde la perspectiva del usuario.
  • Para esta funcionalidad escribimos pruebas de aceptación (los tradicionales casos de prueba). Esto es una prueba a nivel de requerimiento.
  • Para satisfacer estas pruebas de aceptación voy a tener que crear un conjunto de objetos y es aquí donde entramos en el ciclo de TDD. Escribo pequeñas pruebas para cada uno de los objetos que van a intervenir en resolver esa transacción de negocio.
Si bien es cierto que escribimos una prueba de aceptación y de repente para que pase una sola prueba de aceptación voy a tener que dar varias vueltas al ciclo de TDD. Por ejemplo, puedo tener 1 prueba de aceptación y 10 pruebas unitarias.


---
Bibliografía

Friday, April 22, 2022

Crear sitio web multi-idioma con ASP.NET Core 6

Términos

Existen una serie de términos que vale la pena diferenciar:


  • Globalization (G11n): Es una convección creada por IBM y Sun Microsystem para cubrir tanto la Internationalization como la Localization.
  • Internationalization (I18n): Hacer que la aplicación soporte distintos idiomas y culturas/regiones.
  • Localization (L10n): Hacer que la aplicación soporte una cultura/región específica. Por ejemplo, no es lo mismo el español de Perú (es-PE) que de España (es-ES). 
  • Translation (T9n): Es el proceso de traducir texto de un lenguaje a otro.
Links interesantes:
  • https://www.linkedin.com/pulse/difference-between-g11n-i18n-t9n-l10n-satish-singh/

Implementar sitio web multi-idioma con ASP.NET 

Paso 1: Crear aplicación web
Paso 2: Crear modelos
Paso 3: Agregar archivos de recursos
Paso 4: Agrupar archivos de recursos 
Paso 5: Configurar Localization Service
Paso 6: Configurar Localization Middleware
Paso 7: Agregar CultureController
Paso 8: Agregar Partial View con lista de idiomas
Paso 9: Invocar Partial View desde Layout
Paso 10: Agregar CustomerController
Paso 11: Agregar Vista para Customer
Paso 12: Crear LocalizationService para acceder a los recursos desde la vista y Controlador
Paso 13: Uso de LocalizationService en el controlador
Paso 14: Uso de LocalizationService en la vista

Repositorio:
  • https://github.com/javierguerrero/globalization-and-localization-aspnetcore-6

Links:
  • https://tutexchange.com/how-to-implement-globalization-and-localization-in-asp-net-core/
  • https://mookiefumi.com/2017-01-04-internacionalizacion-net-core

API Gateway with ASP.NET Core

Grandes preguntas: ¿Repites mucho código en cada nuevo microservicio? ¿Haces que tus frontends llamen múltiples endpoints para obtener lo qu...