不带组件的 COM+ 服务概念

COM+ 1.5 引入了使用不带组件的 COM+ 服务的功能。 这大大减少了从不使用组件的环境中使用 COM+ 服务时的性能成本,并且也消除了使用这些服务的复杂性。 从 IIS 6.0 开始,IIS 和 ASP 充分利用使用不带组件的 COM+ 服务。

COM+ 服务最初设计用于 COM+ 组件。 但是,某些编程环境并非基于组件,因此需要使用 COM+ 服务的大量开销。 例如,在发布 COM+ 1.5 之前,IIS 必须仅创建填充码对象,才能在 ASP 页面中使用 COM+ 事务服务。 创建这些对象产生的性能成本包括将配置数据存储在 IIS 元数据库和 COM+ 注册数据库 (RegDB) 中,以及 IIS 元数据库与 COM+ RegDB 之间的额外通信,这些通信是有效管理配置数据所必需的。

如果 IIS 需要使用第二个 COM+ 服务(例如同步),则它必须创建完全不同的填充码对象才能执行此操作。 若要同时使用 COM+ 事务和同步,需要第三种类型的填充码对象。 此方法的复杂性按 O(n2) 扩展,使得新服务的实现变得极其困难。

在进入不带组件的 COM+ 服务后,可通过从类实例化的对象配置需要的服务。 CServiceConfig 类实现配置不同服务所需的接口,同时提供支持多个服务的灵活性,以及将来支持新服务的功能。

然后,可以通过两种不同的机制使用配置的服务:它们可以通过 CoCreateActivity 函数使用,该函数会将服务应用于通过函数创建的活动提交的所有工作,还可以通过签入 CoEnterServiceDomain 调用和 CoLeaveServiceDomain 函数之间的服务来使用。 这些函数都不需要创建任何新组件即可使用 COM+ 服务;仅需要 CServiceConfig 对象。

不带组件的 COM+ 服务任务