共用方式為


不含元件概念的 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函式使用,此函式會將服務套用至透過函式所建立的活動提交的所有工作,而且也可以藉由內嵌在呼叫CoEnterServiceDomainCoLeaveServiceDomain函式之間使用服務的工作。 這些函式都不需要建立任何新的元件,才能使用 COM+ 服務; 只需要 CServiceConfig 物件。

不含元件工作的 COM+ 服務