Uploaded image for project: 'C# Driver'
  1. C# Driver
  2. CSHARP-3470

Implement ASP.NET Core service collection extension method for client registration

    XMLWordPrintableJSON

Details

    • Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Major - P3 Major - P3
    • None
    • None
    • Configuration

    Description

      ASP.NET Core DI functions via IServiceCollection dependency registration.
      While MongoClient can be registered with a general approach, like:

      services.AddSingleton<IMongoClient>(_ => new MongoClient(connectionString));
      

      There's a trend among prominent dotnet libraries in providing specialized extension methods for dependency registration, like:

      services.AddMongoClient(connectionString);
      

      This could be achieved by creating a separate nuget package (e.g. MongoDB.Extensions.DependencyInjection) with an extension implementation. The basic one is:

      public static class ServiceCollectionExtensions
      {
      	public static IServiceCollection AddMongoClient(this IServiceCollection services, string connectionString)
      	{
      		services.AddSingleton<IMongoClient>(_ => new MongoClient(connectionString));
      		return services;
      	}
      }
      

      The major rational for this improvement is directing driver users towards using MongoClient as singleton by default, since not everyone notice the advised singleton lifetime scope in documentation, and per-instance usage sometimes leads to issues with the resource management.

      Attachments

        Activity

          People

            Unassigned Unassigned
            mikalai.mazurenka@mongodb.com Mikalai Mazurenka (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: