我有一个用asp.net mvc制作的web应用程序,我正在使用asp.net绑定接口。
现在,我有这样的想法:
// 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应用程序?(并且我不会使服务器的内存过载)
发布于 2012-11-16 03:42:15
对于MVC应用程序,您的配置是可以的。如果你在默认的瞬态作用域或请求作用域中绑定你的存储库,没有太大的区别。正如@Mark在瞬态作用域中所述,您的依赖项将作为有界对象的新实例注入,但在事务作用域中,它们将在每个请求中创建一次。我更喜欢更多一点的请求作用域,如果你想在你的存储库上做(例如)一些每个请求的缓存,建议你这样做。
发布于 2012-11-15 17:33:43
您可以让存储库保持原样。默认作用域是这样的:只要需要IProductRepository,就会创建一个新实例。
https://stackoverflow.com/questions/13393883
复制相似问题