現在オフラインです。再接続するためにインターネットの接続を待っています

[HOWTO] Visual C# .NET で、サービス .NET コンポーネントを作成する方法

この記事は、以前は次の ID で公開されていました: JP306296
Microsoft Visual Basic .NET については、次の資料を参照してください。312902
Microsoft Visual C++ .NET については、次の資料を参照してください。309108

この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。
  • System.EnterpriseServices

この資料の内容

概要
この資料では、トランザクションを使用するサービス .NET コンポーネントの作成方法について手順を追って説明します。また、サービス コンポーネントをテストするクライアントの作成方法についても説明します。Microsoft Enterprise Services は、Microsoft COM+ サービスに対して .NET コンポーネントを提供するものです。

先頭に戻る

重要な情報

  • サービス コンポーネントには厳密な名前を付ける必要があります。
  • サービス コンポーネントはシステム レベルのリソースであるため、グローバル アセンブリ キャッシュ (GAC) に登録されている必要があります。サーバー アプリケーションを GAC にインストールする必要がありますが、ライブラリ アプリケーションについてはその必要はありません (ただし、GAC にインストールすることをお勧めします)。
  • サービス コンポーネントは COM+ を使用して動的登録で自動的に登録することも、Regsvcs.exe ユーティリティを使用して手動で登録することもできます。Regsvcs.exe は次のフォルダに格納されています。
    \WINNT\Microsoft.NET\Framework\<Framework Version>
    Regsvcs.exe の詳細については、Microsoft .NET Framework SDK (Software Development Kit) のドキュメントを参照してください。
  • このサンプルはローカル コンピュータに Microsoft SQL Server がインストールされていることを前提としています。
  • このサンプルは説明のみを目的としています。厳密には、COM+ はトランザクションに対して最も高い分離レベルを適用するため、このサンプルの SELECT クエリは実際には COM+ トランザクションの外部で実行することをお勧めします。データベースのスループットを上げるために、低レベルのトランザクションのクエリを読み取ることを考慮に入れてプログラムを作成するのも良い方法です。
先頭に戻る

サービス .NET コンポーネントの作成

  1. ServicedCOM という名前の新しい Visual C# クラス ライブラリ プロジェクトを作成します。
  2. デフォルトのクラスおよびファイル名を Class1.cs から SimpleTrans.cs に変更します。これを行うには、次の手順を実行します。
    1. [クラス ビュー] ウィンドウで、[Class1] を右クリックし、[プロパティ] をクリックします。
    2. [プロパティ] ウィンドウで、(Name) プロパティを SimpleTrans に変更します。
    3. ソリューション エクスプローラで、[Class1.cs] を右クリックし、[プロパティ] をクリックします。
    4. [プロパティ] ウィンドウで、"ファイル名" プロパティを SimpleTrans.cs に変更します。
  3. System.EnterpriseServices 名前空間への参照を追加します。
  4. 次のステートメントを SimpleTrans.cs と AssemblyInfo.cs の両方に、先頭行として追加します。
    using System.EnterpriseServices;
    SimpleTrans.cs の先頭に、次のステートメントを追加します。
    using System.Data.SqlClient;
  5. ServicedComponent からクラスを継承します (完全修飾名は、System.EnterpriseServices.ServicedComponent です)。
  6. 次のコードをパブリック クラス宣言の直前に追加します。
    [Transaction(TransactionOption.RequiresNew)]					
  7. 次に、推奨される以下の属性を AssemblyInfo.cs に追加します。
    [assembly: ApplicationActivation(ActivationOption.Library)][assembly: ApplicationName("SimpleTrans")]						
    • ActivationOption 属性は呼び出し元のプロセスでコンポーネントをアクティブにするかどうかを指定します。Activation.Option は Library または Server に設定できます。
    • ApplicationName 属性は、COM+ カタログとコンポーネント サービス Microsoft 管理コンソール (MMC) スナップインで COM+ アプリケーションを表示するときに使用する名前です。
  8. SimpleTrans.cs の using ステートメントの直後に次の属性を追加します。これは省略可能です。
    [assembly: Description("Enterprise Services を表示するトランザクションを扱う簡単なアプリケーションです。")]						
    この属性は、COM+ カタログとコンポーネント サービス MMC スナップインで、COM+ アプリケーションについての説明として表示されます。
  9. 次のメソッドを SimpleTrans.cs に追加します。
    // SetComplete と SetAbort を明示的に使用する例です。        public string DoTrans()        {            SqlConnection	connection;            SqlCommand		command;             SqlDataReader	reader;            string		name;            string		query;		            try            {                query = "SELECT au_lname, au_fname FROM authors";                connection = new SqlConnection("data source = localhost;                                                initial catalog = pubs;                                                UID=sa;PWD=");                command = new SqlCommand(query, connection);                connection.Open();                reader = command.ExecuteReader();				                reader.Read();                name = reader.GetString(0) + ", " + reader.GetString(1);            }            catch(Exception exc)            {                ContextUtil.SetAbort();                throw exc;            }            return name;    }// SetComplete と SetAbort を暗黙に使用する例です。[AutoComplete]public void DoTxAuto(){    // 適切なコードを作成します。}					
  10. 使用している環境に応じて、SqlConnection の文字列を変更します。
  11. [ビルド] メニューの [ソリューションのビルド] をクリックします。
先頭に戻る

アセンブリに対する厳密な名前の指定

  1. [スタート] ボタンをクリックし、[プログラム] をポイントします。次に、[Microsoft Visual Studio .NET]、[Visual Studio .NET ツール] を順にポイントし、[Visual Studio .NET コマンド プロンプト] をクリックします。
  2. コマンド プロンプトで sn.exe -k ServicedCOM.snk と入力し、アセンブリに厳密な名前を指定します。

    厳密な名前を使用してアセンブリに署名する方法の詳細については、.NET Framework SDK (Software Development Kit) ドキュメントを参照してください。
  3. ServicedCOM.snk をプロジェクト フォルダにコピーします。
  4. AssemblyInfo.cs の AssemblykeyFile のコードを次のコードに置き換えます。
    [assembly: AssemblyKeyFile("..\\..\\ServicedCOM.snk")]					
先頭に戻る

サービス コンポーネントの COM+ への追加

サービス コンポーネントは、最初のインスタンスの作成時に動的に登録することも、Regsvcs.exe を使用して手動で登録することもできます。Regsvcs.exe を使用して手動で登録する場合は、次の手順を実行します。
  1. [スタート] ボタンをクリックし、[プログラム] をポイントします。次に、[Microsoft Visual Studio .NET]、[Visual Studio .NET ツール] を順にポイントし、[Visual Studio .NET コマンド プロンプト] をクリックします。
  2. コマンド プロンプトで regsvcs servicedcom.dll と入力します。このコマンドにより、クラス名と同じ名前の COM+ ライブラリ アプリケーションが作成されます。警告メッセージが表示されますが、無視します。
先頭に戻る

コンポーネントのテスト

  1. メモ帳でテキスト ファイルを開きます。
  2. そのファイルに次のコードを貼り付けます。
    set o =createobject("ServicedCOM.SimpleTrans")MsgBox o.DoTrans()					
  3. [ファイル] メニューの [上書き保存] をクリックします。
  4. [名前を付けて保存] ダイアログ ボックスの [ファイル名] ボックスに Test.vbs と入力します。[ファイルの種類] ボックスの一覧の [すべてのファイル] をクリックし、[保存] をクリックします。
  5. ファイルをダブルクリックしてサンプルを実行します。
先頭に戻る
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 306296 (最終更新日 2003-09-18) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:306296 - 最終更新日: 03/17/2004 19:32:00 - リビジョン: 1.0

  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowtomaster KB306296
フィードバック