COM+ 对象池概念

对象池是由 COM+ 提供的自动服务,可用于配置组件,使自身实例在池中保持活动状态,随时可供请求组件的任何客户端使用。 可以采用管理方式配置和监视为给定组件维护的池,并指定池大小和创建请求超时值等特征。 应用程序运行时,COM+ 会管理池,根据指定的条件处理对象激活的详细信息并重用。

通过以这种方式重用对象,特别是写入对象以充分利用重用,可以实现非常显著的性能和伸缩优势。 借助对象池,可以获得以下优势:

  • 可以加快每个客户端的对象使用时间,从对象对客户端执行的实际工作中排除耗时的初始化和资源获取。
  • 可以分担在所有客户端中获取昂贵资源的成本。
  • 在应用程序启动时,可以在任何客户端请求传入之前预分配对象。
  • 例如,可以通过设置适当的最大池级别来管理用于管理池管理的资源使用量,只有拥有相应许可证,才能打开相应数量的数据库连接。
  • 可以采用管理方式配置池,以充分利用可用硬件资源,在可用硬件资源发生更改时轻松调整池配置。
  • 可以缩短使用实时 (JIT) 激活的对象重新激活时间,同时故意控制资源专用于客户端的方式。

编写可共用对象

可入池对象必须满足某些要求,才能使单个对象实例可供多个客户端使用。 例如,它们不能保留客户端状态或具有任何线程相关性。 事务对象还具有特定的要求,即必须在事务中手动登记池对象持有的托管资源。

共用对象可以实现 IObjectControl 来控制重用方式。 这样,它们就可以在给定上下文中激活时执行初始化,以便在停用时清理任何客户端状态,并指示它们何时处于不可重用状态。

通常,最好以某种泛型方式编写可共用对象,以便可以使用构造函数字符串以管理方式对其进行自定义。 例如,可以写入对象以保存泛型 ODBC 连接,并在构造函数字符串中以管理方式指定特定 DSN。

下表中介绍的本部分中的主题提供有关对象池在 COM+ 中的工作原理的信息,以及有关如何编写、配置和实现可共用对象的信息。

主题 说明
对象池的工作原理
提供基本概念。
使用对象池提高性能
提供有关如何更有效地使用对象池的特定详细信息。
可入池对象的要求
提供有关如何编写要共用的对象的详细信息。
池化事务性对象
提供有关适用于可共用事务对象的特殊要求的详细信息。
控制对象生存期和状态
介绍如何实现共用对象以控制其重用方式。

COM+ 对象池任务