クライアントからジョブを受け入れ、処理して結果を返すカスタムThreadPoolを作成しました。現在、これはMVCアプリケーションで実行されています。ユーザーがフォームを使用してジョブをアップロードする場合、サーバーはそのフォームを処理してレポートを返します。処理には、複数の外部サービスへのSOAPリクエストの送信とレスポンスの蓄積が含まれます。同じタスクが自己ホストWCFとMVCで実行されたときの巨大なパフォーマンスの差
最近、アップロードタスクを自動化できるWindowsベースのアプリケーションを作成し、ジョブの現在のステータスのコールバックも処理します。したがって、netTCPBindingを持つWCFサービス&コールバック契約&をコンソールアプリケーションでホストしました。すべてがうまくいきます、Windowsアプリケーションはコールバックなどを受信していますが、大きな問題はパフォーマンスです。 MVCアプリケーション経由の手動アップロードよりも同じジョブをWCFリクエストで処理するのに4倍以上かかる。
最初は通信の遅れに疑問を抱いていたので、各ステップの時間を見つけるためにストップウォッチを実装しました。驚くべきことに、遅延は通信遅れによるものではなく、外部サービスへのSOAP要求を行う最後のルーチンが発生しています。私の意見では、これはクライアントからサーバーへのJob of Transportの転送とは独立しており、カスタムThreadPoolのSeparate Threadsでも実行されます。
MVCアプリケーションとWCFサービスで同じAPIを使用しています。ロジック、ルーチンはすべて同じです。私の2番目の疑問は、WCFが新しい要求を処理するために実行中のスレッドを停止/中断するかどうかでしたか?
誰かが理由を知ることができますか?私は何が必要なのかに基づいてより多くの情報を提供することができます。ヘルプ
+1私も知りたいです... –