Service Collection
La librería CodeDesignPlus.Net.Event.Store proporciona un método de extensión para configurar y utilizar los servicios de Event Store y Event Sourcing en aplicaciones .NET. Este método facilita la integración con el contenedor de dependencias y simplifica la configuración necesaria para el almacenamiento de eventos.
Dependencias y Requisitos Previos
Section titled “Dependencias y Requisitos Previos”Microsoft.Extensions.DependencyInjection: Necesario para la interfazIServiceCollection.Microsoft.Extensions.Configuration: Necesario para la interfazIConfiguration.Microsoft.Extensions.Options: Necesario para la configuración de opciones.CodeDesignPlus.Net.Event.Sourcing: Necesario para la configuración de opciones de Event Sourcing y utilizar su extensiónAddEventSourcing.CodeDesignPlus.Net.EventStore: La librería principal del Event Store que contiene las abstracciones y clases necesarias.
Escenarios de uso
Section titled “Escenarios de uso”Este método de extensión es particularmente útil en aplicaciones que:
- Implementan una arquitectura basada en Event Sourcing y necesitan un almacén de eventos.
- Quieren una forma sencilla de configurar Event Store y Event Sourcing en su aplicación .NET.
- Necesitan configurar tanto Event Store como Event Sourcing utilizando la misma configuración.
- Requieren utilizar la inyección de dependencias para acceder a los servicios de Event Store.
- Desean abstraer la gestión de conexiones al almacén de eventos.
Beneficios
Section titled “Beneficios”- Configuración Simplificada: Facilita la configuración de Event Store y Event Sourcing con un solo método de extensión.
- Coherencia: Permite configurar las opciones de Event Sourcing desde la misma sección de configuración que Event Store.
- Abstracción: Proporciona una abstracción sobre las conexiones al almacén de eventos.
- Inyección de Dependencias: Permite utilizar la inyección de dependencias para acceder a los servicios de Event Store y Event Sourcing.
- Reutilización: Se basa en la configuración existente y extiende las opciones de
EventSourcing.
Ejemplo Práctico
Section titled “Ejemplo Práctico”Supongamos que tienes el siguiente archivo appsettings.json con la configuración para Event Store:
{ "Core": { "Business": "CodeDesignPlus", "AppName": "sample-eventstore", "Version": "v1", "Description": "Sample of CodeDesignPlus.Net.Core", "Contact": { "Name": "CodeDesignPlus", "Email": "custom@outlook.com" } }, "EventStore": { "Servers": { "Core": { "ConnectionString": "tcp://localhost:1113?tls=false", "User": "admin", "Password": "12345678" } } }}Y quieres configurar los servicios de Event Store y Event Sourcing en tu aplicación. Podrías hacerlo en la clase Startup o Program.cs:
using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.DependencyInjection;using CodeDesignPlus.Net.EventStore.Extensions;
public class Startup{ public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) { Configuration = configuration; }
public void ConfigureServices(IServiceCollection services) { services.AddEventStore(Configuration); }
public void Configure(IApplicationBuilder app) { // ... Configuración de la aplicación ... }}Métodos de extensión
Section titled “Métodos de extensión”La librería CodeDesignPlus.Net.EventStore proporciona un método de extensión para configurar los servicios de Event Store y Event Sourcing en una aplicación .NET. Este método simplifica la configuración y la integración con el contenedor de dependencias.
AddEventStore
Section titled “AddEventStore”Type: public static IServiceCollection AddEventStore(this IServiceCollection services, IConfiguration configuration)
Este método agrega los servicios de Event Store y Event Sourcing a la colección de servicios especificada utilizando la configuración proporcionada.
-
Parámetros
services: La colección de servicios (IServiceCollection) a la que se agregarán los servicios de Event Store y Event Sourcing.configuration: La configuración (IConfiguration) que se utilizará para configurar los servicios de Event Store y Event Sourcing. La sección “EventStore” debe existir en la configuración.
-
Tipo de retorno
IServiceCollection: La colección de servicios modificada, lo que permite encadenar otras llamadas de extensión.
-
Excepciones
ArgumentNullException: Se lanza siservicesoconfigurationson nulos.EventStoreException: Se lanza si la sección de configuraciónEventStoreno existe.
-
Ejemplo de Uso
public void ConfigureServices(IServiceCollection services, IConfiguration configuration){services.AddEventStore(configuration);}
Conclusiones
Section titled “Conclusiones”El método de extensión AddEventStore simplifica la configuración de Event Store y Event Sourcing, promoviendo la coherencia en las opciones de configuración al utilizar la misma sección y al extender las opciones de EventSourcing. Se recomienda siempre definir la configuración en un archivo appsettings.json. Este enfoque facilita la configuración y uso de Event Store en aplicaciones .NET, permitiendo una fácil integración y configuración por inyección de dependencias.
Referencias
Section titled “Referencias”- Repositorio de CodeDesignPlus.Net.EventStore: Para consultar el código fuente y ejemplos.
- Repositorio de CodeDesignPlus.Net.Event.Sourcing: Para entender las opciones que se extienden.
- Documentación de Microsoft.Extensions.DependencyInjection: Para entender el funcionamiento del IServiceCollection.
- Documentación de Microsoft.Extensions.Configuration: Para trabajar con la configuración en .NET.
- Documentación de Microsoft.Extensions.Options: Para entender como se gestionan las configuraciones fuertemente tipadas.
¡Espero que esta documentación detallada te sea de gran utilidad! Si tienes más preguntas o necesitas ajustes, no dudes en preguntar.