由IIS 7和全局变量(单例)托管的WCF服务

时间:2010-07-16 01:00:22

标签: iis singleton wcf

在我的情况下,我使用Lucene.Net进行搜索,并希望使用IndexReader和IndexSearcher的单个实例。我应该从哪个方法移动它们,以便能够为第一个查询实例化一次,然后重用。

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

2 个答案:

答案 0 :(得分:0)

您是否尝试过将其置于服务级别(而不是Web方法级别)?

答案 1 :(得分:0)

我不确定您是否熟悉IoC(控制反转),但是如果您使用像Castle Windsor或Ninject 2这样的容器(这些容器都可以很好地与WCF集成,并且可以接管WCF服务实例的创建通过容器),您可以为IndexSearcher和IndexReader配置一些可注入的依赖项。在定义这样的组件时,您可以为他们提供单身人士的“生活方式”。使用IoC容器的好处是,您可以将相同的组件实例注入任何需要它们的依赖类,并轻松地在整个应用程序中轻松地重用单例组件。