服務元件概觀
服務元件是一個用 CLS 相容語言撰寫的類別,直接或間接從 System.EnterpriseServices.ServicedComponent 類別衍生而來。COM+ 應用程式中可以裝載這種方式設定的類別,而且可以透過 EnterpriseServices 命名空間 (Namespace) 使用 COM+ 服務。如需支援服務的清單,請參閱可用的 COM+ 服務摘要。
COM+ 服務 (例如自動交易或佇列元件) 是用宣告方式設定的。您是在設計階段套用與服務相關的屬性,並建立使用這些服務的類別執行個體 (Instance)。有些服務的設定方式是在與服務相關的類別或介面上呼叫方法。有些服務可從一個物件流到另一個物件。例如,設定為需要交易的物件可將該項交易擴充至第二個物件 (如果第二個物件也支援或需要交易的話)。
COM+ 資料庫目錄 (Catalog) 會保留您套用於類別實作的組態資訊。在Runtime,COM+ 會根據您套用於程式碼的屬性 (Attribute) 來建立內容服務層。下圖顯示的是在 COM+ 所裝載的兩個 Managed 物件之間流動的自動交易。
裝載服務元件的 COM+ 應用程式
服務也可以在 COM+ 和 .NET Framework 物件之間流動。每一個環境都會控制機器碼的實作和執行;COM+ 每次都會提供物件內容。
建立服務元件
定義直接或間接從 ServicedComponent 類別衍生而來的類別。例如,下列程式碼可確保
Account
類別是由 COM+ 應用程式所裝載。Imports System.EnterpriseServices Public Class Account Inherits ServicedComponent Shared Sub Main() End Sub End Class [C#] using System.EnterpriseServices; public class Account : ServicedComponent { static void Main() {} }
下列程式碼會將服務屬性套用於組件、類別或方法。
Imports System.EnterpriseServices <Transaction(TransactionOption.Required)> Public Class Account Inherits ServicedComponent <AutoComplete()> Shared Sub Main() End Sub End Class [C#] using System.EnterpriseServices; [Transaction(TransactionOption.Required)] public class Account : ServicedComponent { [AutoComplete] static void Main() {} }
注意 如果組件 (Assembly) 中沒有 ApplicationAccessControlAttribute 屬性,會預設啟用 .NET Framework 1.1 版的 COM+ 安全組態。這是 .NET Framework 1.0 版變更的行為。
您可以依照下列方式編譯範例:
Makefile.bat
vbc /t:exe /r:System.EnterpriseServices.dll Demo.vb [C#] csc /t:exe /r:System.EnterpriseServices.dll Demo.cs
在註冊完服務元件之後,用戶端即可依照建立其他任何元件執行個體的方式來建立元件的執行個體。如需完整的範例,請參閱服務元件範例。
注意 Windows 2000 平台上的 COM+ 一定為您正在建立的元件,載入最近使用的 Common Language Runtime 版本。這表示如果電腦上安裝了 .NET Framework 1.0 版和 .NET Framework 1.1 版,它一定載入 .NET Framework 1.1 版。您可以建立 COM+ dllhost.exe.configuration 檔,將所有應用程式「鎖定」在特定的 .NET Framework 版本,作為一種解決方案。您可以在 Windows XP 和 Windows Server 2003 平台上使用應用程式根目錄設定,將 COM+ 指向組態檔的適當目錄。
請參閱
撰寫服務元件 | 套用屬性以設定服務 | 註冊服務元件 | 服務元件範例 | 可用的 COM+ 服務摘要 | System.EnterpriseServices.ServicedComponent