Service Collection
La librería CodeDesignPlus.Net.Event.Store.PubSub
proporciona un método de extensión para configurar y utilizar conjuntamente los servicios de Event Store y Pub/Sub en aplicaciones .NET. Esta extensión facilita la integración con el contenedor de dependencias y simplifica la configuración necesaria para la gestión de eventos en un entorno de Event Sourcing que utiliza la comunicación Pub/Sub.
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.Store
: Necesario para la configuración de los servicios del Event Store.CodeDesignPlus.Net.PubSub
: Necesario para la configuración de los servicios del Pub/Sub.CodeDesignPlus.Net.EventStore.PubSub
: La librería principal del Event Store Pub/Sub que contiene las abstracciones y clases necesarias.
Escenarios de uso
Este método de extensión es particularmente útil en aplicaciones que:
- Implementan una arquitectura basada en Event Sourcing y necesitan comunicar los cambios de estado mediante un sistema de Pub/Sub.
- Quieren una forma sencilla de configurar los servicios de Event Store y Pub/Sub en su aplicación .NET.
- Necesitan configurar tanto Event Store como Pub/Sub utilizando la misma configuración, con una integración coherente.
- Requieren utilizar la inyección de dependencias para acceder a los servicios de Event Store Pub/Sub.
- Desean centralizar la configuración de Event Store y Pub/Sub en una sola sección de configuración.
- Buscan abstraer la gestión de eventos y la comunicación entre microservicios.
Beneficios
- Configuración Simplificada: Facilita la configuración de Event Store y Pub/Sub con un único método de extensión.
- Coherencia: Permite configurar las opciones de Event Store y Pub/Sub en una misma sección de configuración.
- Integración: Proporciona una integración fluida entre Event Store y Pub/Sub.
- Inyección de Dependencias: Permite utilizar la inyección de dependencias para acceder a los servicios de Event Store Pub/Sub.
- Abstracción: Proporciona abstracciones sobre los servicios de Event Store y Pub/Sub.
- Centralización: Facilita el manejo de configuración de Event Store y Pub/Sub en un solo lugar.
Ejemplo Práctico
Supongamos que tienes un archivo appsettings.json
con la siguiente configuración para Event Store Pub/Sub:
{ "Core": { "Business": "CodeDesignPlus", "AppName": "sample-eventstore-producer", "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" } } }, "EventStorePubSub": { "Enabled": true, "UseQueue": false }}
Y quieres configurar los servicios de Event Store y Pub/Sub en tu aplicación. Podrías hacerlo en la clase Startup
o Program.cs
de la siguiente manera:
using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.DependencyInjection;using CodeDesignPlus.Net.EventStore.PubSub.Extensions;
public class Startup{ public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) { Configuration = configuration; }
public void ConfigureServices(IServiceCollection services) { services.AddEventStorePubSub(Configuration); }
public void Configure(IApplicationBuilder app) { // ... Configuración de la aplicación ... }}
Métodos de extensión
La librería CodeDesignPlus.Net.Event.Store.PubSub
proporciona un método de extensión para la interfaz IServiceCollection
que facilita la configuración de los servicios de Event Store y Pub/Sub en una aplicación .NET. A continuación, se describe el método de extensión proporcionado por la librería.
AddEventStorePubSub
Type: public static IServiceCollection AddEventStorePubSub(this IServiceCollection services, IConfiguration configuration)
Este método agrega los servicios de Event Store Pub/Sub 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 Pub/Sub.configuration
: La configuración (IConfiguration
) que se utilizará para configurar los servicios de Event Store Pub/Sub. La sección “EventStorePubSub” 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 siservices
oconfiguration
son nulos.EventStorePubSubException
: Se lanza si la sección de configuraciónEventStorePubSub
no existe.
-
Ejemplo de Uso
public void ConfigureServices(IServiceCollection services, IConfiguration configuration){services.AddEventStorePubSub(configuration);}
Conclusiones
El método de extensión AddEventStorePubSub
facilita la configuración integrada de Event Store y Pub/Sub, promoviendo la coherencia en las opciones de configuración. Se recomienda utilizar la configuración a través de un archivo appsettings.json
para una gestión centralizada. Esta extensión proporciona una forma eficiente para integrar Event Store y Pub/Sub en aplicaciones .NET que usan Event Sourcing y comunicación basada en eventos.
Referencias
- Repositorio de CodeDesignPlus.Net.EventStore.PubSub: Para consultar el código fuente y ejemplos.
- Repositorio de CodeDesignPlus.Net.Event.Store: Para entender las opciones de configuración de Event Store.
- Repositorio de CodeDesignPlus.Net.PubSub: Para entender las opciones de configuración de Pub/Sub.
- 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.