相关疑难解决方法(0)

AddTransient,AddScoped和AddSingleton服务的差异?

我想要实现dependency injectionAsp.Net Core.因此,在将此代码添加到ConfigureServices方法之后,两种方式都有效.

services.AddTransientservice.AddScoped方法有Asp.Net Core什么区别?

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.

    // Add application services.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddScoped<IEmailSender, AuthMessageSender>();
}
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core

746
推荐指数
13
解决办法
28万
查看次数

MongoDb驱动程序2 - 单例实例恢复能力

有没有人有任何使用MongoDB C#Driver(v2 +)与连接弹性方面的单一样式连接/集合实例的经验?

问题

我们最近努力保护我们更广泛的基础设施,基本上在内部通过SSL运行所有内容.因此,我们最近获得了一个主要的MongoDb集群.最直接的差异之一是连接到群集的成本增加.我们的旧解决方案遵循典型的存储库模式,其中消息的订阅者将实例化存储库并且在处理该消息之后允许其成为GCd之前新建连接.我们看到,由于切换到SSL,消息处理性能大幅下降 - 超出了我们的预期!

问题

有没有一起工作建议的方式IMongoClient,IMongoDatabase,IMongoCollection<T>相对于长寿命的实例(周/月).它优雅地处理..

  1. 群集中的特定节点(但群集仍然可用)
  2. 整个群集脱机(例如主要网络中断)
  3. 设置更大的超时等是明智的,有什么影响?

我目前的理解是1.应该没有问题,因为2.它试图在超时窗口内缓冲操作并在集群再次可用时处理它们.3.在很大程度上取决于操作的记忆和及时性(我们需要在内部思考).

如果群集的停机时间超过了各种超时允许我假设抛出异常,那么我也假设我的实例将变得无用,除非我能告诉驱动程序无限期地重试连接到群集.对我来说,这似乎是文档和我自己的研究的灰色区域 - 任何人都可以提供更多的阅读材料或建议如何应对这种情况下的网络故障等?

提前谢谢了,

c# ssl mongodb mongodb-csharp-2.0 mongodb-.net-driver

8
推荐指数
1
解决办法
307
查看次数

为什么我不能让我的服务单身(ioc)?

重要提示:请注意,我并不是指具有私有构造函数和静态实例变量(或者有人建议使用静态类)的单例,而是单例在应用程序生命周期中从控件容器的反转中返回相同的实例.

许多容器默认使用较短的使用寿命.每个依赖项(或每个请求)的新实例或每个范围的实例(例如HTTP请求).

我想知道为什么容器促进短寿命的物体而不是长寿?

请注意,我通常只在容器中注册我的服务.如果我需要创建域模型等,我在容器中注册工厂.

.net inversion-of-control

7
推荐指数
1
解决办法
228
查看次数