对象池
COM+ 对象池服务可以减少从头创建每个对象的系统开销。在激活对象时,它从池中提取。在停用对象时,它放回池中,等待下一个请求。
对象池使您能够控制所使用的连接数量,与连接池相反,连接池用来控制达到的最大数量。下面是对象池和连接池之间的重要区别:
创建
使用连接池时,创建在同一线程上进行,因此如果池中没有连接,则代表您创建连接。采用对象池时,池可以决定创建新对象。但是,如果已经达到最大数量,它会给您下一个可用的对象。当需要花费较长时间来创建对象时,这的确是一个重要的行为。但不要长期使用这种方法来创建对象。
最小值和最大值的实施
不在连接池中实施。对象池的最大值在尝试缩放应用程序时很重要。可能需要仅为几个对象而复用成千上万个请求。(TPC/C 基准依赖这一功能。)
COM+ 对象池与 .NET Framework 托管 SQL 客户端连接池几乎完全相同。例如,创建在不同的线程上进行,并强制实施最小值和最大值。
注意
应用程序域会影响对象池的行为。在 Microsoft Windows 2000 中,当应用程序激活设置为 Library 并且您有多个应用程序域时,将在默认应用程序域中创建所有缓冲池对象,并在多个客户端之间共享。在同样的情况下,当使用 Microsoft Windows XP 和 Windows Server 2003 时,每个应用程序域都有一个对象池。无论使用哪一种操作系统,当有多个应用程序域,且应用程序激活设置为服务器时,进程外客户端将使用默认应用程序域中的对象池。