为COM interop托管.net程序集,使用寿命长?

时间:2009-07-28 06:13:27

标签: asp.net com interop com-interop

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

目前我在asp.net解决方案中引用程序集并将其称为i任何.net程序集。在经典的asp网站上,我通过COM包装器调用它。

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

这是最好的方法吗?此外,这样组件实际上将被托管两次 - 在asp.net应用程序范围中有一个实例,在组件服务中有一个实例。我也许只能将它放在组件服务中,然后从asp.net引用它。

我不知道 - 有些东西闻起来很腥(不,不是我) - 我是在正确的轨道上还是你看到了更好的选择?

2 个答案:

答案 0 :(得分:0)

你真的需要一个长跑物吗?您说您需要监视配置文件更改 - 当配置更改时您是否需要触发某些操作,或者您是否只需要确保每个传入请求都使用组件的最新配置副本?如果是后者,那么标准的.NET配置应该适合您,而无需考虑对象的生命周期。

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

答案 1 :(得分:0)

好的,所以我觉得我找到了两个解决方案,这个方案都可以接受:

1)在Application对象的Application_OnStart上的global.asa中注册它,如Application("Someobject") = Server.CreateObject("Someobject")

2)在组件服务中托管它并处理那里的生命周期。