私は、マルチスレッドクライアントが並列要求数を処理するために使用するWCFを持っています。何とか2つの異なるリクエスト/スレッドのデータを共有し始めます。私は次のようInstanceContextMode
とConcurrencyMode
を変更しようとしました:WCF並行性とマルチスレッドクライアント
- デフォルトInstanceContextMode = PerSession ConcurrencyMode =シングル
- InstanceContextMode = PerCall ConcurrencyMode =シングル
- InstanceContextMode = PerCall ConcurrencyMode =複数
しかし、これまで運がなかった。この並行性の問題を引き起こす可能性のある共有変数および関数はありません。 MSの文書PerCall
によれば、個々の呼び出しごとにインスタンスが作成され、独自のプライベートメモリスタックを持つインスタンス間でデータを共有する方法は意味をなさない。
ワークフロー: WCF、.Netアセンブリ1と.Netアセンブリ2の3つの主要コンポーネントがあります。WCFの "Process"という名前の関数があり、これは文字列パラメータを受け取り、処理された構造化オブジェクトを返しますWCF。 WCFにインスタンス変数はありません。機能のすべて。この関数は文字列をほとんど処理せずに構造化オブジェクトに変換し、アセンブリ1の関数に渡して処理を行い、その後、呼び出しの呼び出しメソッドを使用してアセンブリ2の関数に渡します。これは、2つの異なる同時呼び出しの最終結果をどうにかして混合するプロセス全体です。
誰でもこの問題を解決することができれば、本当に感謝しています。
私たちはより多くのコードを参照する必要があります。共有変数がない場合、どのようにデータを共有できますか? – Laurijssen
ここにコード全体を公開することはできませんが、コードのワークフローとその仕組みについてのアイデアを伝えます。 –