两个 DLL 宿主启动时创建 COM + 对象池启用

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3148846
概要
在 COM + 应用程序配置为使用应用程序池,两个 DLL 主机启动而不是从一台主机。
更多信息
COM + 应用程序启用应用程序池时,对象创建请求都会被路由通过 RPC 服务。应用程序池使用"循环"算法将对象创建请求发送到已启动的 DLL 宿主进程。

在创建 COM 对象时,您主要使用CoCreateInstance(ex)函数。创建 COM 对象的第二个办法是从 dll 文件,获取类工厂,然后使用类工厂对象。在一次创建多个 COM 对象时,最常使用此方法。

CoCreateInstance可以算是一个对象创建请求。如果您使用的类工厂的方法,这可以算是两个对象创建请求。这是因为第一个创建类工厂对象。如果您有启用的应用程序池,则此配置启动 Dllhost.exe 的两个过程。

由于.NET 使用类的工厂方法来创建 COM 对象,从目标 COM + 应用程序中创建对象时才会在.NET 客户端上启动两个 DLL 主机。
状态
此行为是设计使然。

属性

文章 ID:3148846 - 上次审阅时间:04/08/2016 03:29:00 - 修订版本: 1.0

Microsoft COM+ 1.5

  • kbmt KB3148846 KbMtzh
反馈