1

私はWCFの安らかなサービスを持っていて、それは正しく動作します.問題は、サービスが「計算」メソッドを公開し、計算を完了するのに数分かかる場合があることです.RESTはステートレスメソッドであるため、アイデアが不足しています!

セッションを維持する必要がありますか?

コールバックを行うにはどうすればよいですか?

Web サイトで応答を 10 分間待つのは不便ですが、解決策を見つけなければなりません。

PS: サービスは安らかでなければならず、計算時間を短縮することはできません。

4

2 に答える 2

1

クライアントについて尋ねたのは、クライアントが .Net のみの場合、非同期プログラミング モデルを実装できるためですが、そうではないため...

この投稿のようなことができます - WCF Rest Asynchronous Calling Methods

基本的に、メソッドは追加のスレッドを生成して実際の計算作業を行い、メイン スレッドですぐに呼び出し元のクライアントにある種のトークンを返します。その後、クライアントはこのトークンをポーリング メソッドで使用して、計算が完了したかどうかを確認できます。

于 2012-06-27T13:43:36.143 に答える
0

一方向の WebMethod を作成して、最初の計算要求を送信できます。計算コード内で、データベース テーブルを更新するか、パーセンテージまたは完了のいずれかの進行状況で同様のものを更新する必要があります。

次に、前の表を使用して、ステータスを確認するために使用できる追加の「ポーリング」メソッドを作成する必要があります。

計算メソッドが完了としてマークしたら、それを行う最後の 'GetResults' メソッドを呼び出すことができます。

Web サービス経由で送信された大きなファイルのインポートにも同様のことを行い、非常にうまく機能します。

いくつかの情報;

http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapdocumentmethodattribute.oneway(v=vs.71).aspx

于 2012-06-27T13:21:14.280 に答える