2010-07-16 166 views
2

在我的情況下,我使用Lucene.Net進行搜索,並希望使用IndexReader和IndexSearcher的單個實例。我應該在哪裏將它們從一個方法移動到只能爲第一個查詢實例化一次,然後再使用。由IIS 7和全局變量(單例)承載的WCF服務

public static List<MyType> GetIndexMatches(string fullTextIndexPath, string keyWord) 
     { 
      IndexSearcher searcher = null; 
      IndexReader reader = null; 
      try 
      { 
       searcher = new IndexSearcher(fullTextIndexPath); 
       reader = IndexReader.Open(fullTextIndexPath); 
... 

回答

0

您是否試過讓它們存在於服務級別(不是在Web方法級別)的靜態?

0

我不確定您是否熟悉IoC(控制反轉),但是如果您使用Castle Windsor或Ninject 2這樣的容器(它們都可以很好地與WCF集成,並且可以接管創建WCF服務通過容器實例),您可以爲您的IndexSearcher和IndexReader配置一些注入依賴項。在定義這樣一個組件時,你可以給他們一個單身人士的「生活方式」。使用IoC容器的好處是,您可以將相同的組件實例注入到任何需要它們的相關類中,並輕鬆地在整個應用程序中輕鬆地重用您的單件組件。