ドメイン サービスで長時間実行されている呼び出し操作のステータスを取得するためのポーリングに問題があります。具体的には、ステータスのポーリングに使用される呼び出し操作関数へのすべての呼び出しは、長時間実行される呼び出し操作が終了するまで返されません。
詳細は次のとおりです。
- RIA サービスで Silverlight 5 を使用しています。
- 私のサーバー側のドメイン サービス クラス (以下のコード例) では、RunLongOperation という名前の呼び出し操作で実行時間の長い操作があります。
- また、長時間実行オペレーションのステータスを取得する CheckStatusOfLongOperation という名前の 2 つ目のオペレーション呼び出し関数もあります。
- 私の Silverlight クライアントでは、RunLongOperation を呼び出します。その後、5 秒ごとに CheckStatusOfLongOperation を呼び出します。
- Fiddler によると、5 秒ごとに CheckStatusOfLongOperation が呼び出されています。ただし、RunLongOperation が完了するまで、どの呼び出しに対しても応答がありません。
CheckStatusOfLongOperation をより早く返すにはどうすればよいですか?
ASP.NET サーバー コード:
Public Class MyDomainService
Inherits DomainService
<Invoke()>
Public Function RunLongOperation() As String
'Long running operation, some database queries,
'but mostly in-memory operations
End Function
<Invoke()>
Public Function CheckStatusOfLongOperation() As String
'Checks a single variable and return status
End Function
End Class