当前位置:  开发笔记 > 编程语言 > 正文

何时使用Ninject和MongoDB使用Singleton vs Transient vs Request

如何解决《何时使用Ninject和MongoDB使用SingletonvsTransientvsRequest》经验,为你挑选了1个好方法。

当我在global.cs文件中进行绑定时,我不太确定何时应该使用SingletonScope()vs TransientScope()vs RequestScope().

我有一个例如我对MongoSession的调用(使用NoRM和mvcStarter项目http://mvcstarter.codeplex.com/)设置为SingletonScope但是我创建了一个使用这个MongoSession对象的存储库来更容易地调用Mongo,例如,我有一个NewsRepository,它使用MongoSession从数据中获取我的新闻项.作为一个例子,我有一个调用,它获取DisplayOnHome设置为true的新闻项目,并获取CreationDate的最新信息.这样的存储库应该是SingletonScope还是RequestScope会更合适?

我什么时候应该使用它们?为什么?



1> Ruben Bartel..:

通常在Web应用程序中,您希望状态尽可能地是请求范围.

只有在非常低级别优化的情况下,你才有可能遇到适合创建单例对象的情况(甚至可能会将这种缓存/共享逻辑拉到另一个被拉入的类中作为对您的其他[请求范围]对象的依赖,并使单例范围).请记住,Web应用程序上下文中的单例表示使用相同对象的多个线程.这几乎不是好消息.

在相同的基础上,瞬态范围是最直接的默认值(这就是Ninject 2为什么这样做的原因) - 请求范围只应在出于性能原因需要共享某些事物时才会进入等式(或者因为这仅仅是上下文)共享[如另一个答案中所述]).

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有