サービス コンポーネントの概要

サービス コンポーネントは、CLS 準拠の言語で作成されるクラスです。System.EnterpriseServices.ServicedComponent クラスから直接または間接的に派生させて設定します。EnterpriseServices 名前空間によって、このように設定したクラスを COM+ アプリケーションで管理し、COM+ サービスを使用できます。サポートされているサービスの一覧については、「利用可能な COM+ サービスの概要」を参照してください。

自動トランザクションやキュー コンポーネントなどの COM+ サービスは、宣言によって設定します。デザイン時に、サービス関連の属性を適用し、それらのサービスを使用するクラスのインスタンスを作成します。一部のサービスは、サービス関連のクラスまたはインターフェイスのメソッドを呼び出して設定します。また、1 つのオブジェクトから別のオブジェクトにフローするサービスもあります。たとえば、トランザクションを要求するように設定されたオブジェクトが、そのトランザクションを次のオブジェクトにフローすることがあります (次のオブジェクトもトランザクションをサポートし、要求する場合)。

クラス実装に適用される構成情報は、COM+ カタログに保持されます。実行時に、コードに適用した属性に基づいて、COM+ がコンテキスト サービス層を作成します。COM+ によって管理される 2 つのマネージ オブジェクト間をフローする自動トランザクションの例を次の図に示します。

COM+ アプリケーションで管理するサービス コンポーネント

サービスが、COM+ と .NET Framework オブジェクト間をフローする場合もあります。それぞれの環境が、そのネイティブのコードの実装と実行を制御します。COM+ は常にオブジェクト コンテキストを提供します。

サービス コンポーネントを作成するには

  1. 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()
       {}
    }
    
  2. サービス属性をアセンブリ、クラス、またはメソッドに適用するコードを次に示します。

    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() 
    {}
    }
    

    メモ   .NET Framework バージョン 1.1 では、アセンブリに ApplicationAccessControlAttribute 属性が存在しない場合、既定で COM+ セキュリティ構成が有効になっています。これは、.NET Framework Version 1.0 から変更された点です。

  3. この例を次のようにコンパイルできます。

    Makefile.bat

    vbc /t:exe /r:System.EnterpriseServices.dll Demo.vb
    [C#]
    csc /t:exe /r:System.EnterpriseServices.dll Demo.cs
    
  4. サービス コンポーネント アプリケーションのアセンブリを動的または手動で登録することにより、サービス コンポーネント アプリケーションを配置します。詳細については、「アセンブリの動的登録」および「アセンブリの手動登録」を参照してください。

サービス コンポーネントの登録後、クライアントは、他のコンポーネントを作成するときと同じ方法でそのコンポーネントのインスタンスを作成できます。完全な例については、「サービス コンポーネントの例」を参照してください。

メモ   Windows 2000 プラットフォーム上の COM+ では、作成するコンポーネントに対して、常に最新バージョンの共通言語ランタイムが読み込まれます。つまり、.NET Framework Version 1.0 と .NET Framework Version 1.1 の両方がインストールされたコンピュータでは、常に .NET Framework Version 1.1 が読み込まれます。回避策として、COM+ の dllhost.exe の構成ファイルを作成して、すべてのアプリケーションを特定のバージョンの .NET Framework に "ロック" できます。Windows XP および Windows Server 2003 プラットフォームでは、アプリケーションのルート ディレクトリの設定を使用して、構成ファイルのある適切なディレクトリを COM+ で指定できます。

参照

サービス コンポーネントの作成 | COM+ サービスを設定する属性の適用 | サービス コンポーネントの登録 | サービス コンポーネントの例 | 利用可能な COM+ サービスの概要 | ServicedComponent クラス