我不太确定在全局数据库中进行绑定时,何时应该使用SingletonScope()vs TransientScope()vs RequestScope().cs文件.

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

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

推荐答案

一般来说,在web应用程序中,您希望状态尽可能成为请求范围.

只有在非常低级别的优化情况下,您才有可能遇到这样的情况,即创建单例对象是合适的(即使在这种情况下,您也有可能将这种缓存/共享逻辑拉到另一个类中,该类作为对其他[request scope]对象的依赖而被拉入,并生成that个单例范围).记住,在web应用程序的上下文中,单线程意味着使用相同对象的多个线程.这很少是好消息.

同样,瞬态作用域是最直接的默认值(这就是为什么Ninject 2这么做的原因)——请求作用域应该只在出于性能等原因需要共享某些内容时出现(或者因为这只是共享的上下文[如另一个答案中所述]).

Mongodb相关问答推荐

在MongoDB查询中添加来自另一个集合的匹配文档的计数

MongoDB:如何通过增量向量递增整数向量

MongoDB 按日期时间字段查询 1h 间隔

仅当特定字段存在于 MongoDB 中时才更新它

Mongodb 按数组元素聚合组

通过 docker 运行的 MongoDB 服务器无法互相看到(名称解析中的临时故障)

如何修改 mongodb 中嵌套对象数组中的字段名称/键?

Spring Data + MongoDB GridFS 可以通过 Repository 访问吗?

Mongo 删除最后的文件

如何在 Mongo 聚合中合并文档中的数组字段

mongodb 中的 --bindip 配置选项有什么作用?

Flask and Mongo

在 Nodejs 中配置最大旧空间大小

如何使用 mongodb 和 php 正确处理分页查询?

spring-data-mongo - 可选查询参数?

为什么使用 Redis 而不是 MongoDb 进行缓存?

MongoDB:查询和检索嵌入式数组中的对象?

python + pymongo:如何从 for 循环中在 mongo 中的现有文档上插入新字段

我需要手动关闭mongoose连接吗?

Mongoose upsert 不创建默认模式属性