5

HTTP はステートレスであるという概念があったため、SOAP over HTTP (Web サービス用) もステートレスです。状態とは「物の状態」のことだと思っていました。例として、 と呼ばれるクラスとEmployeeと と呼ばれるメソッドがあるとsetSalarygetSalaryます。Web サービスの呼び出し元が呼び出しsetSalaryて給与を 1000 にした場合、getSalaryが呼び出された場合、呼び出し元は必ずしも値 10000 を取得する必要はありません。テストgetsalaryして 1000 (つまり、によって割り当てられた値setSalary) を取得したとき、状態Employeeオブジェクトの維持されました。

スタック オーバーフローの質問Web サービスはステートレスですか? Employee状態を維持するために使用される Cookie のようなトリックについて言及していますが、状態を維持するために明示的な努力をしていないので、オブジェクトの状態はどのように維持されたのでしょうか?

ステート/ステートレスの概念を完全に誤解している場合はお知らせください。

4

2 に答える 2

9

ステートレスとは、サービスの状態が後続のリクエストとレスポンスの間で保持されないことを意味します。一方、ステートフルでは、状態は後続のリクエスト間で永続化されます。つまり、各リクエストは、前のリクエストで行われた変更を認識して保持する必要があります。

バンキング アプリケーションは、ユーザーが最初にログインしてからトランザクションを作成し、ログアウトするステートフル アプリケーションの例です。ユーザーがログアウト後にトランザクションを実行しようとすると、トランザクションを実行できなくなります。

はい、http プロトコルは本質的にステートレス プロトコルですが、ステートフルにするためにHTTP Cookieを使用します。だから、デフォルトでSOAPです。ただし、使用しているフレームワークによっては、同様にステートフルにすることもできます。

あなたが提供したケースでは、後続のリクエストまたは同じリクエストで値を設定および取得しようとしていますか? その時だけ、私はそれについてコメントすることができます。

于 2012-05-02T06:48:23.880 に答える