希望使用.Net核心创建一套微服务,我正在考虑为Startup类创建一个基类,该基类负责配置常用功能,例如日志记录,身份验证,端点运行状况检查,从而使我们的所有服务标准化。

但是令我惊讶的是,似乎没有提到这种模式。是将定制中间件用于常见功能的首选模式吗?任何与这个困境有关的想法或经验将不胜感激。

最佳答案

IServiceCollection命名空间中为IApplicationBuilder和/或Microsoft.Extensions.DependencyInjection接口(interface)创建扩展方法:

public static IServiceCollection AddAllCoolStuff(this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException(nameof(services));
    }

    services.AddSingleton<FooService>();
    services.AddTransient<IBooService, BooService>();
    ...

    return services;
}

public static IApplicationBuilder UseAllCoolStuff(this IApplicationBuilder app)
{
    if (app == null)
    {
        throw new ArgumentNullException(nameof(app));
    }

    app.UseMiddleware<SomeCoolMiddleware>();
    ...

    return app;
}

并在您的启动公司中使用它们:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAllCoolStuff();
    }

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        app.UseAllCoolStuff();
    }
}

关于c# - .Net核心启动基础类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44755011/

10-09 06:42