Humanizador
Importante
En el siguiente ejemplo se utiliza la biblioteca Humanizer, pero puedes utilizar cualquier biblioteca que desees, el enfoque en este punto está en comprender cómo Devprime permite el uso de extensiones y cómo integrarlas en tu proyecto sin dañar los principios de arquitectura establecidos, asegurando la separación de responsabilidades y el desacoplamiento.
Creación de un microservicio para usar en el ejemplo
Utilizaremos un microservicio basado en la plataforma Devprime
- Utilice una cuenta activa en Devprime y habilite la CLI de Devprime.
- Lanzar contenedores desde docker (MongoDB y RabbitMQ)
- Cree la cola customerevents en RabbitMQ.
Escriba el siguiente comando en un directorio de su elección y, a continuación, abra el proyecto en Visual Studio, VSCODE o el IDE que prefiera:
dp new customer --stream rabbitmq --state mongodb
Vaya a la carpeta raíz del proyecto: .\customer\
Implementaciones de dominio
Necesitamos incluir un aggregate root
para componer las características comerciales de nuestro contexto, así que escriba el siguiente comando en su terminal:
dp add aggregate Customer
La CLI debe crear la clase Customer.cs
donde incluiremos nuestras primeras reglas de negocio. Abra la ruta: code .\src\core\domain\aggregates\customer\Customer.cs
e incluya las propiedades como se muestra en el ejemplo siguiente:
|
|
Aceleración de las implementaciones con la CLI
El siguiente paso será usar la CLI para acelerar la mayoría de las implementaciones necesarias y para eso escriba el siguiente comando en su terminal:
dp init
La CLI solicita autorización para cambiar los archivos necesarios de la solución, en este caso escribiremos A
para autorizar todos los archivos.
Vuelva a acceder a aggregate root
en la ruta: code .\src\core\domain\aggregates\customer\Customer.cs
y cambie el método Add() como en el siguiente ejemplo:
|
|
Todavía en aggregate root
, cambie el método ValidFields() eliminando la validación del campo OrdinalCreationDate
como se muestra en el siguiente ejemplo:
|
|
Agregar una extensión
Ahora incluiremos la clase HumanService
que será nuestra extensión, a través del siguiente comando de la CLI de Devprime.
dp add extensions HumanService
La CLI solicita autorización para cambiar los archivos necesarios de la solución, presione A
para autorizar todos los archivos.
En la siguiente imagen se muestra la clase HumanService
y su Interfaz IHumanService
, que se encargará de implementar las integraciones con la librería Humanizer.
También muestra la clase Extensions
y la interfaz IExtensions
cuyo propósito es ser un proxy que permita al contexto de ejecución de Devprime Pipeline acceder a todas las extensiones disponibles en la aplicación a través de la inyección de dependencias.
`
Adicionando a referência para a biblioteca Humanizer
Nós vamos incluir a biblioteca Humanizer em nosso projeto, lembre-se de definir o destino de instalação para o projeto “Devprime.Extensions”. code .\src\adapters\extensions\Devprime.Extensions.csproj
Via dotnet CLI
dotnet add .\src\adapters\extensions\Devprime.Extensions.csproj package Humanizer
Rode também o dotnet build
no projeto. (Lembre-se de estar na pasta raíz do projeto .\customer\
):
dotnet build
Implementando a integração com a biblioteca Humanizer
Nós vamos alterar a interface “IHumanService” existente no caminho code .\src\core\application\interfaces\adapters\extensions\IHumanService.cs
, incluindo a assinatura de método a seguir:
|
|
Nós também precisamos implementar o método na classe “HumanService” code .\src\adapters\extensions\humanservice\HumanService.cs
, deixando-a conforme segue:
|
|
Implementado a chamada ao adapter de extension
O nosso cenário envolve um evento de domínio chamado “CustomerCreated” e associado a ele temos um EventHandler chamado “CustomerCreatedEventHandler”, que possui uma chamada ao Devprime State Adapter para persistência dos dados (linha 11) e emite um evento externo à aplicação (linha 26).
Caminho: code .\src\Core\Application\EventHandlers\Customer\CustomerCreatedEventHandler.cs
|
|
Altere o código do nosso EventHandler conforme modelo abaixo (vide linhas destacadas):
|
|
Testando a aplicação
Agora que temos as implementações necessárias, vamos rodar o microsserviço através do comando abaixo:
Windows
.\run.ps1
Linux / Mac
.\run.sh
No browser, acesse o link: https://localhost:5001/swagger
, nós vamos utilizar o método POST para criar um novo customer:
`
Utilice el cuerpo de la solicitud a continuación:
|
|
Todavía en la API use el punto de conexión GET para obtener los clientes registrados (no es necesario pasar ningún parámetro), el resultado de Response Body
debe ser similar al siguiente:
|
|