首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象Web应用程序:所有绑定都应该是InRequestScope()?

对象Web应用程序:所有绑定都应该是InRequestScope()?
EN

Stack Overflow用户
提问于 2012-11-15 16:35:33
回答 2查看 6.2K关注 0票数 4

我有一个用asp.net mvc制作的web应用程序,我正在使用asp.net绑定接口。

现在,我有这样的想法:

代码语言:javascript
复制
// Db Context
kernel.Bind<DbContext>().To<DbEntities>().InRequestScope();

// Repositories - which are using instance of DbEntities
kernel.Bind<ICustomerRepository>().To<CustomerRepository>();
kernel.Bind<IProductRepository>().To<ProductRepository>();

// Services - which are using instances of Repositories
kernel.Bind<ICustomerService>().To<CustomerService>();
kernel.Bind<IProductService>().To<ProductService>();

我将DbContext绑定到RequestScope中的DbEntities,因为我想在相同的web请求中使用相同的DbContext。在此之后,它应该处理它。

但是其他绑定应该是怎样的呢?它们在默认情况下是什么样子?

例如,有一个DbContext实例(每个请求一个)的IProductRepository也应该是InRequestScope()吗?

IProductService有一个IProductRepository实例

绑定应该如何适用于web应用程序?(并且我不会使服务器的内存过载)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-16 03:42:15

对于MVC应用程序,您的配置是可以的。如果你在默认的瞬态作用域或请求作用域中绑定你的存储库,没有太大的区别。正如@Mark在瞬态作用域中所述,您的依赖项将作为有界对象的新实例注入,但在事务作用域中,它们将在每个请求中创建一次。我更喜欢更多一点的请求作用域,如果你想在你的存储库上做(例如)一些每个请求的缓存,建议你这样做。

票数 3
EN

Stack Overflow用户

发布于 2012-11-15 17:33:43

您可以让存储库保持原样。默认作用域是这样的:只要需要IProductRepository,就会创建一个新实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13393883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档