【问题标题】:WCF Service hosted by IIS 7 and global variables ( singletons )由 IIS 7 和全局变量(单例)托管的 WCF 服务
【发布时间】:2011-03-16 17:29:49
【问题描述】:

就我而言,我使用 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);
...

【问题讨论】:

    标签: iis singleton wcf


    【解决方案1】:

    您是否尝试过将它们设置为存在于服务级别(而不是 Web 方法级别)的静态?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多