代码之家  ›  专栏  ›  技术社区  ›  Per Hornshøj-Schierbeck

为COM互操作托管.NET程序集,使用寿命长?

  •  0
  • Per Hornshøj-Schierbeck  · 技术社区  · 16 年前

    我有一个组件(一个内置于.NET中的程序集),我需要访问(几乎)两个不同网站的每个请求。一个网站是用经典的ASP编写的,另一个是用ASP.NET MVC编写的。

    现在我引用ASP.NET解决方案中的程序集,并像调用任何.NET程序集一样调用它。在经典的ASP网站上,我通过COM包装器调用它。

    这一切都很好,除了现在我需要这个组件保持活动状态并监视对配置文件的更改。在我的ASP.NET网站上,我可以在应用程序范围内保留一个引用,我想我可以在组件服务中为ASP访问注册它。

    这是最好的方法吗?此外,这样组件实际上可以托管两次—一个实例在ASP.NET应用程序范围内,另一个实例在组件服务中。我可能只能让它存在于组件服务中,然后从ASP.NET引用它。

    我不知道-有什么东西闻起来很难闻(不,不是我)-我走对了吗?或者你看到更好的选择了吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Randy Levy    16 年前

    你真的需要一个长期运转的物体吗?您说您需要监视配置文件的更改——当配置更改时,您需要触发一些操作,还是只需要确保每个传入的请求都为您的组件使用配置的最新副本?如果是后者,那么标准.NET配置应该可以为您工作,而不需要考虑对象的生存期。

    在托管方面,您是否需要使用任何COM+服务?如果没有,那么我就不会使用COM+。如果您想要一个.NET组件的中心位置,为什么不在GAC中注册它呢?

        2
  •  0
  •   Per Hornshøj-Schierbeck    16 年前

    好吧,我想我找到了两个解决方案,都可以接受这个项目:

    1)在应用程序的global.asa中注册它,从应用程序对象中开始,如下所示 Application("Someobject") = Server.CreateObject("Someobject")

    2)在组件服务中托管它,并在那里处理生存期。