サイド バイ サイド アセンブリの作成に関するガイドライン
次のガイドラインでは、独自の COM または Win32 サイド バイ サイド アセンブリを作成する方法について説明します。 必要な機能がサポートされている Microsoft サイド バイ サイド アセンブリのいずれかによって提供されている場合は、独自の サイド バイ サイド アセンブリを作成する必要がない場合があります。 この場合は、Microsoft が提供するアセンブリを使用し、「分離アプリケーションとサイド バイ サイド アセンブリの使用」のサイド バイ サイド アセンブリを使用する手順に従います。
まず、コンポーネントがサイド バイ サイド アセンブリに適した候補を作成するかどうかを検討します。 詳細については、「共有コンポーネントをサイド バイ サイド アセンブリとして指定する必要がある」を参照してください。
サイド バイ サイド アセンブリを作成するには、次のガイドラインに従います。
- アセンブリに含めるリソースを決定します。 アセンブリは、アプリケーションと顧客に常に一緒に提供される 1 つ以上のファイルで構成されていることに注意してください。 アセンブリは、名前付け、バインド、バージョン管理、配置、 および既定の構成に使用される基本的な単位として機能します。 原則として、2 つのリソースが同じアセンブリに属しているかどうかが不明な場合は、個別のアセンブリに移動するように作成することをお勧めします。 通常、サイド バイ サイド アセンブリは 1 つの DLL で構成されます。
- アセンブリのアセンブリ マニフェスト を作成します。 マニフェストでは、アセンブリ内の COM オブジェクトまたはタイプ ライブラリを記述する必要があります。 アセンブリ マニフェストに作成する必要がある内容の詳細については、「 アセンブリ マニフェスト」を参照してください。
- アセンブリの複数のバージョンがシステム上で実行されている場合に、オブジェクトの使用状況を評価します。 異なるバージョンのアセンブリで、メモリ マップファイル、名前付きパイプ、登録済みの Windows メッセージとクラス、共有メモリ、セマフォ、ミューテックス、ハードウェア ドライバーなどの個別のデータ構造が必要かどうかを判断します。 アセンブリ バージョン間で使用されるすべてのデータ構造は、下位互換性のあるバージョンである必要があります。 バージョン間で使用できるデータ構造と、バージョンに対してプライベートにする必要があるデータ構造を決定します。 共有データ構造でセマフォやミューテックスなどの個別の同期オブジェクトが必要かどうかを判断します。
- 「サイド バイ サイド アセンブリの DLL を作成する」のガイドラインに従って、サイド バイ サイド アセンブリとして機能するように DLL を作成します。
- 一連のヘッダー ファイルとヘルパー関数を作成して、アセンブリ状態を含むレジストリ キーを簡単にバージョン管理できるようにします。 アセンブリは通常、状態設定をレジストリ キーに保存します。 同時に実行できる複数のアセンブリ バージョンを分離するには、レジストリ設定を個別のバージョンベースで記述する必要があります。 サイド バイ サイド の共有シナリオでアセンブリの状態を正しく格納して処理するように、サイド バイ サイド アセンブリと DLL を設計します。 サイド バイ サイド アセンブリのステート ストレージの作成に関するページのガイドラインに従います。
- プライベート アセンブリを使用するアプリケーションの開発者は、アプリケーション ディレクトリをセキュリティで保護する必要があります。 アプリケーションが Windows インストーラーを使用してインストールされている場合は、LockPermissions テーブルを使用してアプリケーション ディレクトリをセキュリティで保護できます。 通常、システムには、プライベート アセンブリへの読み取り、書き込み、および実行アクセス権が付与されます。他のすべてのプロセスには、実行アクセスと読み取りアクセスのみが付与されます。
- サイド バイ サイド共有のシナリオを使用してアセンブリをテストし、有効なサイド バイ サイド アセンブリであることを確認します。 アセンブリの正常なインストールでは、期待どおりに動作することを保証できません。
- アセンブリの更新に番号を付ける方法を採用します。 各アセンブリは、4 部構成のバージョン番号に関連付けられます。 左から右、メジャー、マイナー、ビルド、リビジョンの各部分はピリオドで区切ります。 以前のバージョンと互換性のないバージョンのアセンブリのメジャー番号またはマイナー番号を変更します。 アセンブリに対して下位互換性のある変更を行うには、ビルド パーツとリビジョン パーツのみを変更します。 たとえば、開発者は、すべての 1.0.0.* バージョン番号がアセンブリ バージョン 1.0.0.0 への更新バージョンを参照する番号付け方法を採用する場合があります。