Skip to content

bcariaga/gato-negro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gato Negro

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.


Stack

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


Indice


Session #1: Arquitectura, Configuración de IDE, DockerFile.

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.


Session #2: Comunicación de Api con Application usando Mediatr

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:

uso de mediatr


Session #3: Inyección de Dependencias para IoC con Autofac

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.

DI


Session #4: Conexión con DB - MongoDB

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:

MongoDb en Gato Negro

Nota usamos esta config de docker-compose para levantar el servicio de MongoDb: https://github.com/bcariaga/mongodb-docker-seed

Session #5: Unit Tests - XUnit Moq Bogus

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.

Session #5 Bonus Coverage y OpenCover

Con OpenCover generamos un reporte html para analizar el Code Coverge de nuestro proyecto.