実行時の .NET アセンブリーの識別

.NET アセンブリーが BAR ファイル内にパッケージ化されていない場合にそれを統合ノード・ファイル・システムからロードする方法を制御する規則。

このタスクの概要

統合サーバーの .NET 構成は、.NET ノードのプロパティーまたは ESQL プロシージャーのシグニチャーによって制御されます。 オプションで、詳細な構成オプション用に DotNet アプリケーション・ドメイン・ポリシーを定義することもできます。 メッセージ・フローは、Microsoft 共通言語ランタイム (CLR) を使用する統合サーバー内で実行されるアセンブリーを呼び出すことができます。 フロー開発者は、ロードされる .NET フレームワーク・アセンブリー、および使用される .NET アプリケーション・ドメインを制御することができます。 アセンブリーは、メッセージ・フロー内の .NET ノードから、または ESQL プロシージャーを呼び出すことによって呼び出されます。

アプリケーション・ドメイン

このタスクの概要

.NET フレームワークは、アプリケーションのリソースの範囲を提供する特定のアプリケーション・ドメインで実行されるようにアプリケーション・アセンブリーを分離します。 IBM® App Connect Enterprise では、統合サーバーのオペレーティングシステムプロセス( DataFlowEngine )が CLR をホストします。 必要に応じて、このプロセス内の複数のアプリケーション・ドメイン内で、.NET アセンブリーを実行することができます。
  • .NETAppDomain name ノードのこのプロパティは、アセンブリが読み込まれるアプリケーション・ドメインを指定します。 DotNet のアプリケーション・ドメイン・ポリシーが、ノードのプロパティ AppDomain name と同じ名前で定義されている場合、アセンブリが読み込まれる際にはポリシーのプロパティが優先されます。 このようなプロパティーには、 Application Base directory プロパティーが含まれます。
  • ESQL プロシージャーが .NET アセンブリーを呼び出す際に、プロシージャーのシグニチャーで、アセンブリーのロード先とする必要があるアプリケーション・ドメインを指定することができます。 ESQLプロシージャのシグネチャでアプリケーションドメインに指定された名前と同じ名前で DotNet のアプリケーションドメインポリシーが定義されている場合、アセンブリが読み込まれる際には、そのポリシーのプロパティ(例: Application Base directory)が優先されます。
前述の方法でアプリケーション・ドメインが指定されない場合、アセンブリーのロード先のアプリケーション・ドメインは次のものによって決定されます。
  • IBM App Connect Enterprise アプリケーション内にデプロイされた場合、そのアプリケーションの名前
  • IBM App Connect Enterprise アプリケーション内で定義されていないフローにデプロイされた場合、統合サーバーの名前

アプリケーション・ドメインがアプリケーションの名前または統合サーバーの名前によって決定され、 DotNet アプリケーション・ドメイン・ポリシーが同じ名前で定義されている場合は、アセンブリーのロード時にポリシー・プロパティー (例えば、 Application Base directory) が優先されます。 アプリケーション名または統合サーバー名にスペース文字が含まれている場合、アプリケーション名または統合サーバー名をポリシーの名前と比較するときにそれらの文字は無視されます。

アプリケーション基本ディレクトリー

このタスクの概要

ロードされるアセンブリーのコピーを知るには、まずアプリケーション基本ディレクトリーを判別します。
  1. 「アプリケーション・ドメイン」 プロパティーがポリシーを参照している場合は、そのポリシーの Application base プロパティーが使用されます。 実稼働環境ではこのアプローチを使用します。
    注:.NET アプリケーションドメインにアセンブリが含まれており、それがランタイムにデプロイされている場合でも、ポリシープロパティ(を含む Application base)が常に優先されます。 この状況では、.NET アセンブリが「Application Base」ディレクトリではなく、 .appdomainzip 指定されたディレクトリから読み込まれるようにするには、ポリシーの Application base プロパティが空白になっていることを確認してください。
  2. .NET ノードの「アセンブリー名」プロパティー (または ESQL プロシージャー・シグニチャーのこれに相当する部分) がファイル・システム内の絶対ロケーションを指定する場合、「アプリケーション基本ディレクトリー」としてこの絶対ディレクトリー・パスが使用されます。
  3. .NET ノードの「アセンブリー名」プロパティー (または ESQL プロシージャー・シグニチャーのこれに相当する部分) がパスを持たない .dll ファイルの名前だけを指定する場合、統合ノードは「アプリケーション基本ディレクトリー」としてランタイム統合ノードの作業パスのサブディレクトリーを使用します。 このディレクトリーは、変更される可能性があります。別のアプローチのいずれかを使用することを検討してください。

アセンブリーのロードとグローバル・アセンブリー・キャッシュ

このタスクの概要

統合ノードは、必要な .NET アセンブリーがアプリケーション基本ディレクトリーで見つかることを予期します。 しかし、アセンブリーはマシン全体のキャッシュに配置することができます。 このキャッシュをグローバル・アセンブリー・キャッシュ (GAC) といいます。 アセンブリーを GAC に配置するには、厳密な名前付き でなければなりません。 アセンブリーがコンパイルされると、バージョン、国別情報、公開鍵トークンのプロパティーが与えられます。 .NET ノードまたは呼び出しを ESQL から構成する際に、厳密な名前付きの アセンブリーが使用されるようにバージョン、国別情報、および公開鍵トークンを指定できます。

厳密な名前付きの アセンブリーを再ロードまたは更新する場合、統合サーバーを再始動する必要があります。