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

文書翻訳 文書翻訳
文書番号: 306296 - 対象製品
この記事は、以前は次の ID で公開されていました: JP306296
すべて展開する | すべて折りたたむ

目次

概要

この資料では、トランザクションを使用するサービス .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 - 最終更新日: 2004年3月17日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft Enterprise Services (included with the .NET Framework) 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbhowtomaster KB306296
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com