2

Apache Axis2c ライブラリの上に構築されたStaff Libraryを使用して、ステートレスにするサービスを実装しています。

私が理解しているように、サービスがステートフルであるかどうか (つまり、「クライアントとサーバーの相互作用に、サーバーが相互作用固有のデータを追跡することを含むかどうか。後続の各相互作用は前の相互作用の結果に依存する可能性があるため」かどうか)サービスアーキテクチャの実装に依存するものです。

私が理解しているように、スタッフを使用してステートレス サービスを作成することは完全に可能です。では、スタッフの「機能」ページで「ステートフルな Web サービスの実装」と明示的に言及されているのはなぜですか? スタッフライブラリがそれを行うのは理にかなっていますか?

4

1 に答える 1

1

たぶん、それは本当にステートフルではありません。

「ステートフル」と呼ばれる理由は次のとおりです。サーバーはセッションごとにサービスインスタンスを保存します。サービスはローカル データをクラス プロパティとして格納でき、セッション内で作業するときに同じデータが得られます。

ログインしてsessionId提供されたLoginサービスを使用すると、サーバーはこれにバインドされたサービスインスタンスを(遅延して)作成しますsessionId。したがって、2 つの異なるセッションでは、プロパティの値が異なる 2 つのサービス インスタンスが存在します。これは、測地線情報システムなど、呼び出しごとに初期化および破棄できない大きなオブジェクトを操作する場合に非常に役立ちます。

ステートレス Web サービス フレームワークは通常、クライアント呼び出しごとにサービス インスタンスを作成し、何もローカルに保存できません。例外として、共有メモリや DBMS などのグローバル メカニズムを使用し、ID を渡してクライアントを区別します。

于 2014-09-27T18:03:07.560 に答える