2010-07-16 162 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容器的好处是,您可以将相同的组件实例注入到任何需要它们的相关类中,并轻松地在整个应用程序中轻松地重用您的单件组件。