针对部署进行设计
规划 COM+ 应用程序的范围是应尽早考虑的重要设计任务。 若分布式系统旨在使用 COM+ 运行,则其部署设计应尽可能减少单项配置的数量,并且最高效地使用每个进程。 还可以使用一些技术,以便在部署 COM+ 应用程序时实现最佳性能。 (有关详细信息,请参阅 部署以实现更快的通信。)
使用组件服务管理工具查看时,每个 COM+ 应用程序都显示为一个文件夹,其中组件集按逻辑分组。 虽然可以在 COM+ 应用程序组件文件夹之间移动各个组件(换句话说,从一个应用程序移到另一个应用程序),但在 COM+ 应用程序级别设置的多个服务(例如安全性)可能会有所不同。 这些服务设置可能会影响可移植性。
COM+ 服务器应用程序定义进程边界
创建新的 COM+ 服务器应用程序时,实际上是定义新的进程边界。 (请注意下面介绍的库应用程序的异常。)此进程将成为 COM+ 应用程序中包含的组件的控制应用程序实例。 每当程序首次调用 COM+ 应用程序时,这些组件都会在 COM+ 可执行程序的新实例中进行进程内运行。 这意味着,给定 COM+ 应用程序的 Components 文件夹中的所有组件都在用过 DCOM 服务器的单个进程空间中运行。 在 COM+ 应用程序中,COM+ 管理内存、与分布式事务处理协调器 (DTC) 的协调、实时组件实例激活、崩溃检测和恢复以及基于角色的安全性。
跨 COM+ 应用程序边界调用
由于每个 COM+ 应用程序通常作为单独的可执行文件实现,因此当一个 COM+ 应用程序中的组件调用另一个 COM+ 应用程序中的组件时,将跨多个 COM+ 应用程序拆分分布式应用程序的效果引入了进程外 COM 调用。 由于跨进程封送处理 COM 参数带来的额外负担,因此这会导致性能下降。
注意
产生这种性能损失本身就没有错:只需注意会发生这种情况。 根据所需的响应时间,同时请求业务服务的用户数,以及每个组件添加到每个 COM+ 应用程序的额外启动负担,您可能会发现,可接受跨应用程序调用导致的性能命中率。
消除跨 COM+ 应用程序边界调用的性能损失的一种可能方法是将给定 COM+ 应用程序标记为库应用程序。 COM+ 库应用程序在创建该类应用程序的客户端进程中运行。 当然,无法以零成本实现性能提升。 在这种情况下,权衡涉及 COM+ 库应用程序的限制。 虽然库应用程序可以使用基于角色的安全性,但它不支持排队组件或远程访问。
相关主题