質問

一度に複数のプロセスで使用できるアセンブリがあります。静的クラスを使用している場合、複数のプロセスはすべて同じ「インスタンス」を使用しますか?そのクラスの?

プロセスは独立しているため、これらは異なるアプリケーションドメインで実行されるため、静的な「インスタンス」があります。別に?

ここでの詳細は、カスタムBizTalkアダプターによってアセンブリが使用されており、並列バッチでメッセージを処理するように設定されていることです。それが私が「複数のプロセス」と呼んでいるものです。上記。

役に立ちましたか?

解決

複数のスレッドがインスタンスを共有します。このため、静的クラスはスレッド間で状態を渡すのに便利ですが、競合状態( Monitor または lock のプロパティ)を導入しないように非常に注意する必要があります。

ただし、複数のプロセスは別々のAppDomainに存在する必要があるため、それぞれに独自のインスタンスがあります。

他のヒント

静的クラスは、アプリケーションドメインごとに1つ存在します。あなたの場合、アダプターが同じアプリケーションドメインで複数のスレッドを使用している(したがって、静的クラスの単一インスタンスを共有している)か、複数のプロセスを使用している(したがって、静的クラスの個別のインスタンスを持っている)かどうかに依存します。

"私は、一度に複数のプロセスで使用できるアセンブリを持っています。静的クラスを使用している場合、複数のプロセスはすべて同じ「インスタンス」を使用しますか?そのクラスの?"

いいえ、それらはすべて別々のインスタンスを持っています。

"プロセスは独立しているため、これらは異なるアプリケーションドメインで実行されるため、静的な「インスタンス」があります。別に?"

はい。

静的クラスのスコープは、アプリケーションドメインに制限されています。各アプリドメインには、静的変数の独自のコピーがあります。 「プロセス」が同じアプリドメイン内のスレッドである場合、静的な値を共有します。しかし、それらが実際に別個のWindowsプロセスである場合、それらは異なるアプリドメインを持つため、別個のコピーになります。

シングルトンパターンを確認することもできます。要点は、サービスインスタンスの数を制御することです。

すべてのクライアントリクエストを処理する別個のdll /プロジェクトが必要だと思います。静的クラス/シングルトン/マルチトンを使用して、必要な機能を実装できます。それは本当にあなたが達成しようとしていることに依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top