3

我们有一些COM+ Application由几个DLLs 组成,每个包含几个服务组件(用 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 点?
  • 更详细地说,有没有我可以用来获取Serviced Components某个状态的库COM+ Application

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

4

1 回答 1

3

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

您可以使用COM+ Instrumentation InterfacesCOM+ Tracking来接收有关您的组件的信息。

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

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

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

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

于 2012-08-11T01:57:06.283 回答