3

私はAxis2でWebサービスをセットアップしています。その仕事は、大量のXMLを取得し、後で処理するためにキューに入れることです。「Call」インスタンスで「invokeNonBlocking」操作を使用してを作成することにより、同期Webサービスを非同期で呼び出すようにクライアントを設定できることを理解しています。(http://onjava.com/pub/a/onjava/2005/07/27/axis2.html?page=4を参照)

だから、私の質問は、この場合、非同期Webサービスを使用することに利点はありますか?1)クライアントがブロックされておらず、2)サービスが同期か非同期かに関係なく、xmlを受け入れてキューに書き込む必要があるため、冗長に見えます。

4

3 に答える 3

1

私の意見では、非同期が適切な方法です。考慮すべき点がいくつかあります。

  1. 常に複数のクライアントがこのサービスにアクセスしていますか?
  2. このプロセスはどのくらいの頻度で発生していますか?

非同期メソッドを実装するには、もう少し手間がかかります。しかし、私は保証します。1 つは、スレッドを管理する必要がないことです。あなたの主な関心事は、キュー内のデータの揮発性 (つまり、競合/デッドロック状態) かもしれません。

于 2010-01-31T06:51:06.583 に答える
0

「同期呼び出し」は適切だと思います、私は同意します。

クライアントからの要求に時間がかからない場合は、呼び出しを非同期にすることにも利点はありません。ここで問題となっている状況について私が理解していることから、Webサービスは将来的に要求に対して「処理」を実行します。

逆に、リクエストに時間のかかるプロセスが必要だった場合は、非同期呼び出しは適切ではありませんでした。

于 2010-01-20T22:53:39.913 に答える
0

それについてもう少し反芻した後、サービスは非同期であるべきだと考えています。その理由は、データをキューに書き込むタスクを別のスレッドに配置し、タイムアウトの可能性を減らすためです。プロセスはより複雑になりますが、タイムアウトを回避できる場合は、それを実行する必要があります.

于 2010-01-21T17:40:28.737 に答える