2010-07-16 2 views
2

В моем случае я использую Lucene.Net для поиска и хотел бы использовать отдельные экземпляры IndexReader и IndexSearcher. Где я должен перемещать их из метода, чтобы иметь возможность просто создать экземпляр для первого запроса и затем повторно использовать его.Служба WCF, размещенная IIS 7 и глобальными переменными (одиночные числа)

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

Вы пытались сделать их статическими, которые существуют на уровне обслуживания (а не на уровне веб-метода)?

0

Я не уверен, что вы знакомы с IoC (Inversion of Control), но если вы используете такой контейнер, как Castle Windsor или Ninject 2 (оба из них хорошо интегрируются с WCF и могут взять на себя создание службы WCF экземпляры через контейнер), вы можете настроить некоторые инъекционные зависимости для вашего IndexSearcher и IndexReader. При определении такого компонента вы можете дать им «образ жизни» синглтона. Преимущество использования контейнера IoC заключается в том, что вы можете вводить одни и те же экземпляры компонентов в любой зависимый класс, который им нужен, и легко с легкостью повторно использовать компоненты singleton во всем приложении.