安全地将修补程序应用于 COM+ 应用程序



我们有一些COM+ Application由几个DLL组成,每个包含多个服务组件(用C#编写),运行在Windows Server 2003/2008R2操作系统上。

在某些情况下(我们尽量避免),我们有义务应用补丁来纠正错误。为了实现这一点,我们目前所做的是(当然,假设我们在目标服务器上拥有所需的所有内容):

  1. 禁用 COM + 应用。
  2. 关闭 COM + 应用。
  3. 取消注册要替换的 DLL。
  4. 替换 DLL。
  5. 再次注册所涉及的 DLL。
  6. 启用 COM + 应用。

上面提到的步骤没有问题,我们构建了一个用于通过命令行以编程方式管理COM+ Application Catalog的小应用程序,因此这样我们可以更新一些 DLL 并使服务组件在大约 2 秒内运行......这对我们来说并不过分,我们可以负担得起这个(离线)时间,但我想通过编写修补工具来完全改进和自动化该过程。

我想弄清楚的是:

  • 我怎么知道我的COM+ Application的所有服务组件都已完成其工作(所有请求/调用都已完成),以便我可以安全地进行第 2 点?
  • 更详细地说,是否有任何库可以用来获取某个COM+ ApplicationServiced Components状态?

注意 :如果您习惯使用 dcomcnfg,我需要获得访问权限的数据与您在 Console RootComputersMy Computer<MyComPlusApp> 下展开COM+ Application文件夹时看到的数据相同,然后展开文件夹Components并转到菜单View并选择Status菜单项。Windows当然能够知道每个COM+ Serviced Component的状态,并在屏幕上显示它,所以这正是我需要访问的数据。

我怎么知道我的 COM+ 的所有服务组件 应用程序已完成其工作(所有请求/调用都已完成 完成),以便我可以安全地进行第 2 点?

可以使用 COM+ 检测接口或 COM+ 跟踪来接收有关组件的信息。

更详细地说,是否有任何库可以用来获取 某个 COM+ 应用程序的服务组件的状态?

IGetAppTrackerData接口应该可以让您获得所需的信息。

一些警告:不要忘记,在关闭应用程序时需要小心,因为组件无法调用,但在关闭之前,另一个呼叫已提供服务。 此外,根据我使用 COM+ API 的经验,可能会变得混乱,并且有时缺少文档(尤其是在示例方面)。

似乎节省 2 秒可能需要一些工作。 :)

最新更新