最近、バックグラウンドワーカーを使用していくつかの操作を行い(他のWebサービスからデータを取得)、イベントを使用してデータをクライアントにスローするプロジェクトを見てきました。このプロジェクトはWCFサービスであり、ASP.NET Webサイトによって、別のクラスライブラリによってWCFクライアントの役割として使用され、アプリケーションにイベントがスローされます。このすべてのマルチスレッドシリーズは、私が調べたいと思った。これはbasicHttpBinding
拘束力があることを確認しました。サービスに対する唯一の動作は、UseSynchronizationContext=false
説明のつかない例外の後に追加されたことがわかった場所です。これは正常です:)
今、私はのデフォルトConcurrencyMode
について尋ねていますbasicHttpBinding
。彼らはそれを成し遂げるべきではありませんか、Reentrant
それともこれがデフォルトの振る舞いです?
WCFサービスがクライアントからダウンしている場合、オブジェクトのインスタンスに設定されていない説明のつかない参照がすでにあるため、このシナリオは失敗し続けますか?IIS処理に依存するASP.NETプロジェクトによって消費されるWCFサービスでマルチスレッド操作を使用することは悪いことだと思います。これは、WCFサービスがクライアントクラスライブラリにデータを返し、これらをページに追加する前に、ページがクライアントに送信される可能性があるためです。上記について話し合い、あなたの考えを説明していただけますか?
CallbackContracts
マルチスレッド操作ではなく、組み込みWCFテクノロジを使用した長時間の操作の後に通知するように、WCF消費者に通知するために、このような非同期プログラミングスタイルが必要な場合は、より良い方法ではありませんか?
設計を修正するための説明が必要であり、これが実際のサービスアーキテクチャである場合、これが悪いサービスアーキテクチャであることを証明するものがあります。
ありがとうございました。