0

asp.net Webフォームアプリケーション(3.5)とWindowsサービス(サービスの開始時にアクティブ化されるサービスライブラリ)を介してホストされるwcfサービスがあります。両方とも同じサーバーにデプロイされます。

WCFサービスは、長時間実行されるいくつかのタスクに使用されます。

今、クライアントはかなりの時間がかかるカスタマイズされたレポートを望んでいます。

私の考えは、UIでタスクの進行状況を表示することですが、それを行う正しい方法に苦労しています。

次のようにできますか?

  1. ページからの要求に応じて、サービスは非同期で処理を開始し、ステータスを変数に報告します。(データベースに書き込みたくない)

  2. クライアントページからの非同期ポーリング。インターンはwcfサービスの別の操作と通信して、変数値を取得します。

Ajaxクライアントはwcfサービスと通信できますが、サービスはWebアプリケーションとしてホストする必要があるようです(ここではあまり理解していません)

他に何か考えはありますか?wcfコールバック(二重通信)を使用するためのオプションはありますか?あまりにも混乱しています。

4

2 に答える 2

2

We achieved something similar a year back.

1) We created a WCF Server with Singleton InstanceMode which processes the request and at the same time keep status as well. Another method e.g. GetStatus returns status to client. It also provides error details, in case of any error. However we also persisted the processing details.

2) On web page we async hit getstatus once request is initialized and showed a progress bar on web page.

This worked great for us.

于 2012-12-10T16:29:20.593 に答える
1

SignalRのようなものを使用して、Webアプリケーションからクライアントに応答をプッシュすることを検討できます(他の利点の中でも、これは彗星技術を使用するため、実行する必要のあるポーリングの量を減らします)。

WCFサービスからWebアプリへの応答を取得するには、サービスへの非同期要求を使用するか、 Windows AzureServiceBusなどのメッセージングソリューションを使用します。

パイプラインとして使用Client > JQuery > MVC > WCF > Service Bus > MVC > SignalR > Clientし、長時間実行されるプロセスに非常に適しています。

于 2012-12-10T16:26:07.297 に答える