Hola! mi nombre es Braian y me dedico a crear software.
En este proyecto voy a crear un eCommerce y documentar el proceso a través de videos separados en Sessions.
Espero que pueda ser util.
Por el momento en este repositorio vamos a llevar el control del código fuente correspondiente al backend.
Vamos a construirlo con .net 5 (A.K.A. netcore hasta la version anterior) y algunas librerías que nos facilitaran algunas funciones. Ademas agregamos soporte para Docker para que al momento de poder funcional el mismo nos sea mas fácil.
Base de datos: Mongo DB
Hosting/cloud service: TBD
- Session #1: Arquitectura, Configuración de IDE, DockerFile.
- Session #2: Comunicación de Api con Application usando Mediatr.
- Session #3: Inyección de Dependencias para IoC con Autofac
- Session #4: Conexión con DB - MongoDB
- Session #5: Unit Tests - XUnit Moq Bogus
- Session #5 Bonus Coverage y OpenCover
Video: https://youtu.be/I7CdBYwgENY
Creamos los distintos proyectos para seguir el arquetipo de DDD (Domain-Driven Design). Para facilitar esta tarea usamos este script.
Configuramos algunas tasks de vscode para hacernos mas fácil el desarrollo, subimos la capeta .vscode para poder compartir la configuración.
Movemos la clase Startup.cs al proyecto Bootstrap.
Configuramos ApplicationKey apuntando al assembly del proyecto Api, para que detecte los Controllers.
Finalmente agregamos el Dockerfile solo con el resultado del publish de `Api.csproj, ya que ese es nuestro proyecto de entrada.
Video: https://youtu.be/ofK-2vNYjKg
Implementamos Mediatr para comunicar la capa Api con Aplicación.
Con esta librería desacoplamos ambas capas, ademas a futuro podemos beneficiarnos de otras funcionalidades (behaviors o notifications).
Asi quedaría la comunicación con la implementación:
Video: https://youtu.be/q0kUTI3yWt4
Usamos Autofac para resolver las dependencias de los distintos colaboradores dentro del proyecto.
Aplicar DI (Dependency injection) es una manera de lograr la Inversión del Control (IoC). Como principal ventaja obtenemos un código desacoplado, fácilmente testable y reutilizable.
Video: https://youtu.be/I8tn7ETECGo
Usamos MongoDb.Driver para conectarnos a un Mongo db y recuperar datos. Ademas de filtrarlos por nombre agregamos un paginado y orden de documentos.
Como implementamos esta conexión:
Nota usamos esta config de docker-compose para levantar el servicio de MongoDb: https://github.com/bcariaga/mongodb-docker-seed
Video: https://youtu.be/7myjSHLe8rE
Usamos XUnit para crear pruebas de unidad (Unit Test) y mos apoyamos en Moq para crear objetos que nos permitan "simular" el comportamiento de nuestros colaboradores a traves de su interfaz.
Ademas usamos Bogus para crear datos fake.
Con OpenCover generamos un reporte html para analizar el Code Coverge de nuestro proyecto.


