Service Collection
La clase ServiceCollectionExtensions
proporciona métodos de extensión que facilitan la configuración y registro de servicios relacionados con MongoDB en una aplicación .NET. Permite añadir la configuración de MongoDB al contenedor de servicios, registrando los servicios necesarios, validando las opciones, y configurando las opciones de diagnóstico si es necesario. También ofrece una forma de registrar automáticamente repositorios asociados a las interfaces adecuadas.
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.MongoDB.Driver
: Proporciona las clases necesarias para interactuar con MongoDB.
Escenarios de uso
Este método de extensión es particularmente útil en aplicaciones que:
- Necesitan configurar MongoDB de manera centralizada y validar opciones.
- Requieren servicios de diagnóstico para MongoDB.
- Requieren el registro automático de repositorios MongoDB según las interfaces definidas.
Beneficios
- Configuración centralizada: Agrupa toda la configuración de MongoDB en un solo lugar.
- Validación de opciones: Utiliza la validación automática de las opciones para asegurarse de que los parámetros necesarios estén configurados correctamente.
- Soporte de diagnósticos: Permite configurar servicios de diagnóstico para MongoDB, lo que es útil para monitoreo y depuración.
- Registro automático de repositorios: Si está habilitado, registra automáticamente los repositorios que implementan la interfaz
IRepositoryBase
, reduciendo el trabajo manual.
Ejemplo Práctico
En este ejemplo, utilizaremos la extensión AddMongo
para configurar y registrar servicios relacionados con MongoDB en una aplicación .NET Core.
Primero, definiremos las opciones de configuración en el archivo appsettings.json:
{ "Core": { "Business": "CodeDesignPlus", "AppName": "sample-mongo-repositorybase", "Version": "v1", "Description": "Sample of CodeDesignPlus.Net.Core", "Contact": { "Name": "CodeDesignPlus", "Email": "custom@outlook.com" } }, "Mongo": { "Enable": true, "ConnectionString": "mongodb://localhost:27017", "Database": "db_sample", "RegisterAutomaticRepositories": true }}
A continuación, registraremos los servicios de MongoDB en el contenedor de servicios de la aplicación:
public void ConfigureServices(IServiceCollection services){ services.AddMongo(Configuration);}
Métodos de extensión
ServiceCollectionExtensions
proporciona los siguientes métodos de extensión para configurar y registrar servicios relacionados con MongoDB en una aplicación .NET.
AddMongo
Type: public static IServiceCollection AddMongo<TStartup>(this IServiceCollection services, IConfiguration configuration) where TStartup : IStartup
El método AddMongo
registra los servicios necesarios para interactuar con MongoDB en el contenedor de servicios de la aplicación.
-
Parámetros:
services
: El contenedor de dependencias (IServiceCollection
) donde se registran los servicios de MongoDB.configuration
: La configuración de la aplicación, que debe incluir la sección correspondiente a MongoOptions.
-
Tipo de retorno:
IServiceCollection
— Permite encadenar llamadas adicionales.
-
Excepciones:
ArgumentNullException
: Si services o configuration son null.MongoException
: Si la sección MongoOptions no se encuentra en la configuración.
AddRepositories
Type: public static void AddRepositories<TStartup>(this IServiceCollection services) where TStartup : IStartup
El método AddRepositories
registra automáticamente los repositorios que implementan la interfaz IRepositoryBase
en el contenedor de servicios.
- Parámetros:
services
: El contenedor de dependencias (IServiceCollection
) donde se registran los repositorios.
- Excepciones:
MongoException
: Si falta la interfaz correspondiente para el repositorio.
Conclusiones
La clase ServiceCollectionExtensions
proporciona métodos de extensión útiles para configurar y registrar servicios relacionados con MongoDB en una aplicación .NET. Facilita la configuración centralizada, la validación de opciones y el registro automático de repositorios, lo que simplifica el desarrollo y mantenimiento de aplicaciones que utilizan MongoDB.