此頁沒有內(nèi)容條目
內(nèi)容

Microsoft Transaction Server 資源分配器

在三層環(huán)境中,如果在中間層上使用 Microsoft Transaction Server,那么客戶可以共享數(shù)據(jù)庫連接??梢允褂?RDSServer.DataFactory 對象或創(chuàng)建可為客戶端共享設(shè)置 ODBC 連接的 ActiveX 組件 DLL。在 Transaction Server 運行時環(huán)境中運行 RDSServer.DataFactory 或自定義業(yè)務(wù)對象時,共享機制產(chǎn)生作用。只使用數(shù)百個而不是上千個數(shù)據(jù)庫連接仍然可以支持上千個客戶端。這是 Microsoft Transaction Server 中 ODBC 資源分配器的功能。

在 Microsoft Transaction Server 中運行業(yè)務(wù)對象

業(yè)務(wù)對象可以是可執(zhí)行文件 (.exe) 或動態(tài)鏈接庫 (.dll)。用于運行業(yè)務(wù)對象的配置取決于對象是 .dll 還是 .exe 文件:

?創(chuàng)建為 .exe 文件的業(yè)務(wù)對象可以通過 DCOM 調(diào)用。如果通過 Internet Information Server (IIS) 使用這些業(yè)務(wù)對象,那么它們將受到附加數(shù)據(jù)調(diào)度的限制,這將降低客戶端性能。

 

?創(chuàng)建為 .dll 文件的業(yè)務(wù)對象可以通過 IIS(從而通過 HTTP)使用,并且只能通過 Microsoft Transaction Server 在 DCOM 上使用。業(yè)務(wù)對象 DLL 需要在 IIS 計算機上注冊以便用戶可通過 IIS 獲得訪問權(quán)限。RDSServer.DataFactory 對象是遠程數(shù)據(jù)服務(wù)提供的默認業(yè)務(wù)對象的 DLL,并且受到本節(jié)中的條件限制。(關(guān)于如何配置 DLL 以便在 DCOM 上運行的步驟,請參閱下一節(jié)“使 DLL 在 DCOM 上運行”。)

通過在 MTS 運行時環(huán)境中運行 RDSServer.DataFactory 或自定義業(yè)務(wù)對象,也可以使用 MTS 資源分配器提高性能和縮放性。由于這些業(yè)務(wù)對象調(diào)用 ADO,而 ADO 間接調(diào)用 ODBC,因此可以使用 MTS ODBC 資源分配器。

資源分配器自動匯集和重復(fù)利用資源。因此,當(dāng) RDSServer.DataFactory 或者自定義業(yè)務(wù)對象釋放數(shù)據(jù)庫連接時,連接將返回到緩沖池中。當(dāng)再次調(diào)用方法創(chuàng)建連接時,將會請求相同的數(shù)據(jù)庫連接。ODBC 資源分配器可重復(fù)利用緩沖池中的連接,而不用創(chuàng)建新的連接,這樣可以節(jié)省時間和服務(wù)器資源。

注意   當(dāng)中間層上的業(yè)務(wù)對象作為 Microsoft Transaction Server 組件實現(xiàn)時(使用 GetObjectContext、SetComplete SetAbort),通過多個客戶端調(diào)用,該業(yè)務(wù)對象可以使用 Transaction Server 上下文對象來維護自身狀態(tài)。使用 DCOM 可以實現(xiàn)這個方案,并且通常在委托的客戶端和服務(wù)器 (Intranet) 之間實現(xiàn)。在這種情況下,客戶端的 RDS.DataSpace 對象和 CreateObject 方法由事務(wù)的上下文對象和 CreateInstance 方法(由 ITransactionContext 接口提供)代替,并通過 Microsoft Transaction Server 實現(xiàn)。