CodeZine(コードジン)

特集ページ一覧

サービスコンポーネントのさまざまな配置方法

COM+サービスを.NET Frameworkのクラスで利用できるようにする

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/04/18 13:00

この記事では、.NET Frameworkに用意されているさまざまなクラスやツールを使ってサービスコンポーネントを配置する方法を説明します。また、Windowsインストーラテクノロジを利用すると、サービスコンポーネントの配置を自動化するWindowsインストーラプロジェクトを簡単に作成できることも説明します。

目次

はじめに

 インターネットは数多くのネットワークアプリケーションが接続されることで成り立っていますが、このインターネットの世界で、Webサイトを訪れる数百万人のユーザーの要求に応えるべくWebアプリケーションをスケーラブルにしたいと思うのは当然のことです。COM+は、スケーラブルで、拡張性があり、保守可能な分散アプリケーションを作成するためのWindows DNA 2000アーキテクチャの中核要素です。ただし、.NETでは、COM+コンポーネントのことを「サービスコンポーネント」と呼んでいます。.NET戦略のたび重なる変更により、サービスコンポーネントの配置モデルは、従来のCOM+コンポーネントの配置方法とは異なっています。この記事では、.NET Frameworkに用意されている各種ツールを使ってサービスコンポーネントを配置する方法を学習します。また、配置モデルがサービスコンポーネントのタイプによってどう変わるかについても説明します。最後に、Windowsインストーラプロジェクトを使ってサービスコンポーネントの配置を自動化する方法を学習します。

 Windows 2000のコンポーネントサービスは、エンタープライズアプリケーションのための機能を豊富に備えており、Web対応の分散アプリケーション開発に必要なすべての基本機能を提供します。COM+サービスはもともとCOMコンポーネントで使うために設計されたものですが、COM+ランタイムが提供するサービスは、オブジェクトプーリング、データベース接続プーリング、リソース共有、ロールベースセキュリティ、分散トランザクション処理の監視など、有益なものが多いので、.NETコンポーネントでも利用できれば便利です。

 .NET Frameworkには、COM+サービスをアプリケーションに提供するために必要なすべてのクラスを含んだSystem.EnterpriseServicesという名前空間があります。COM+の概要については、TechNetの「Introduction to COM and COM+」を参照してください。

 サービスコンポーネントのさまざまな配置方法の説明に入る前に、System.EnterpriseServices名前空間にある最も重要なクラスの1つ、ServicedComponentクラスについて説明しましょう。

ServicedComponent

 COM+サービスを利用する.NETオブジェクトを作成するには、System.EnterpriseServices.ServicedComponentクラスからオブジェクトを派生する必要があります。このクラスは、COM+ランタイムとシームレスにやり取りするためのメソッドをオブジェクトに提供し、これによってオブジェクトはCOM+サービスを利用できるようになります。サービスコンポーネントの配置を説明するに当たって、サーバーアプリケーションとライブラリアプリケーションの違いを理解しておく必要があります。基本的に、COM+ライブラリアプリケーションは、そのライブラリアプリケーションを作成するクライアントのプロセスで実行されるのに対し、COM+サーバーアプリケーションは、COM+実行可能ファイル(dllhost.exe)のプロセス空間で実行されます。

サービスコンポーネントのさまざまな配置方法(前編)

 COMコンポーネントをコンパイルすると、そのコンポーネントをCOM+にインストールするために必要な全情報を含んだタイプライブラリが作成されます。一方、.NETコンポーネントをコンパイルすると、マニフェスト、MSIL、メタデータなどを含んだアセンブリが作成されます。アセンブリは、タイプライブラリとはまったく異なるものです。そのため、アセンブリからタイプライブラリを作成し、アセンブリをCOM+にシームレスにインストールできるようする必要があります。

 Windows 2000のコンポーネントサービスに.NETコンポーネントを配置するには、次の3とおりの方法があります。

  • Regsvcsコマンドラインユーティリティを使う
  • Regsvcsコマンドラインユーティリティは、アセンブリの名前を入力として受け取り、そのアセンブリを読み取ってタイプライブラリを作成した後、オブジェクトをCOM+に登録します。
  • .NET Frameworkに用意されている自動登録メカニズムを使う
  • 実行時に、共通言語ランライム(CLR)はアセンブリに基づいてタイプライブラリを自動的に作成し、COM+はそのタイプライブラリにある情報を使ってオブジェクトをインストールします。この方法は「レイジー登録」(lazy registration)と呼ばれ、ライブラリアプリケーションでしか利用できません。
  • System.EnterpriseServices名前空間の一部であるRegistrationHelperクラスを使う
  • RegistrationHelperクラスのInstallAssemblyメソッドを使って、コードからCOM+に.NETオブジェクトを登録することができます。

 アセンブリは、COM+に配置するだけでなく、次のいずれかの場所にも配置しなければなりません。

  • クライアントアプリケーションのプライベートbinディレクトリ
  • クライアントが[Add Reference]ダイアログボックスを使ってサービスコンポーネントアセンブリを参照する場合は、ここがアセンブリの既定の配置場所になります。
  • 共有の場所(GAC)
  • コンピュータ上のすべてのクライアントがアセンブリを利用できるようになります。

 ライブラリアプリケーションにサービスコンポーネントを配置する場合は1つ目の配置方法(プライベート配置)を検討し、サーバーアプリケーションにサービスコンポーネントを配置する場合は2つ目の配置方法(GACに配置)を検討します。

 サービスコンポーネントを使う前に、アセンブリに厳密に署名するためのキーファイルが必要です。キーファイルを生成するには、まず-kスイッチを使ってsn.exe(厳密名ユーティリティ)を実行します。この結果、公開/秘密キーのペアを含むファイルが作成されます。次に、公開/秘密キーのペアでアセンブリに署名し、「Assemblyinfo.cs」ファイルに<assembly: AssemblyKeyFile("..\\..\\LibraryApp.snk")>という行を追加します。

 では、COM+ライブラリアプリケーションにサービスコンポーネントを配置する方法の説明から始めましょう。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • Thiru Thangarathinam(Thiru Thangarathinam)

    オブジェクト指向アプリケーション開発方法論を用いたアプリケーションのアーキテクチャ設計、設計、開発、および実装に関して約6年の経験を持つ。ソフトウェアライフサイクル(設計、開発およびテスト)にも精通。 ASP.NET、.NET Framework、Visual C#.NET、Visual Basi...

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5