我有一個使用ASP.NET MVC 1.0構建的web。它使用Structuremap作爲IOC容器。如何設置StructureMap來解決Windows服務中的依賴關係?
ObjectFactory.Initialize(service =>
{
service.ForRequestedType<IOrderRepository>()
.TheDefaultIsConcreteType<OrderRepository>()
.CacheBy(InstanceScope.PerRequest);
});
我必須使用相同的後端在Windows服務: 如果我註冊它的Application_Start這樣的國際奧委會部分工作良好。
服務中有一些定時器,同時訪問OrderRepository,所以線程是一個問題在這裏。
我最初的想法是這樣的服務的構造進行註冊:
public Service1()
{
ObjectFactory.Initialize(service =>
{
service.ForRequestedType<IOrderRepository>()
.TheDefaultIsConcreteType<OrderRepository>()
.CacheBy(InstanceScope.PerRequest);
});
}
這是正確的地方,並用於緩存的正確參數?
讀documentation of Structuremap,我覺得最保險的辦法是使用默認設置緩存:
PerRequest - 默認操作。將爲每個請求創建一個新實例。
我有印象,PerRequest意味着的HttpContext,但那是另一個入口:
的HttpContext - 單一實例將爲每個的HttpContext創建。在
HttpContext.Items
集合中緩存實例。
我想你通常會在'OnStart'中做這樣的事情嗎?我想這可能會在單個實例上被多次調用,但這是不可取的。 –