在三层环境中,如果在中间层上使用 Microsoft Transaction Server,那么客户可以共享数据库连接。可以使用 RDSServer.DataFactory 对象或创建可为客户端共享设置 ODBC 连接的 ActiveX 组件 DLL。在 Transaction Server 运行时环境中运行 RDSServer.DataFactory 或自定义业务对象时,共享机制产生作用。只使用数百个而不是上千个数据库连接仍然可以支持上千个客户端。这是 Microsoft Transaction Server 中 ODBC 资源分配器的功能。
在 Microsoft Transaction Server 中运行业务对象
业务对象可以是可执行文件 (.exe) 或动态链接库 (.dll)。用于运行业务对象的配置取决于对象是 .dll 还是 .exe 文件:
通过在 MTS 运行时环境中运行 RDSServer.DataFactory 或自定义业务对象,也可以使用 MTS 资源分配器提高性能和缩放性。由于这些业务对象调用 ADO,而 ADO 间接调用 ODBC,因此可以使用 MTS ODBC 资源分配器。
资源分配器自动汇集和重复利用资源。因此,当 RDSServer.DataFactory 或者自定义业务对象释放数据库连接时,连接将返回到缓冲池中。当再次调用方法创建连接时,将会请求相同的数据库连接。ODBC 资源分配器可重复利用缓冲池中的连接,而不用创建新的连接,这样可以节省时间和服务器资源。
注意 当中间层上的业务对象作为 Microsoft Transaction Server 组件实现时(使用 GetObjectContext、SetComplete 和 SetAbort),通过多个客户端调用,该业务对象可以使用 Transaction Server 上下文对象来维护自身状态。使用 DCOM 可以实现这个方案,并且通常在委托的客户端和服务器 (Intranet) 之间实现。在这种情况下,客户端的 RDS.DataSpace 对象和 CreateObject 方法由事务的上下文对象和 CreateInstance 方法(由 ITransactionContext 接口提供)代替,并通过 Microsoft Transaction Server 实现。