Skip to content

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 interfaz IServiceCollection.
  • Microsoft.Extensions.Configuration: Necesario para la interfaz IConfiguration.
  • 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 si services o configuration son nulos.
    • EventStorePubSubException: Se lanza si la sección de configuración EventStorePubSub 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



¡Espero que esta documentación detallada te sea de gran utilidad! Si tienes más preguntas o necesitas ajustes, no dudes en preguntar.