3 層アーキテクチャを持ち、Web サービスを介して通信する、より複雑な CRUD アプリケーションを想像してみてください。クライアントはサーバーとの会話を開始し、ウィザードのようなものを実行します。ウィザードを処理するには、クライアントはサーバーからのフィードバックを必要とします。
このアプローチのステートフルまたはステートレス Web サービスについての議論を開始しました。私は自分の経験と組み合わせていくつかの調査を行いました。
次のプロパティを持つステートレス Web サービス (この場合):
+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
しかし、最初の 2 つの点を消すことができます。このアプリケーションは、高いスケーラビリティと可用性を必要としません。
それでは、ステートフル Web サービスについて説明します。私はたくさんのブログやフォーラムの投稿を読みましたが、ステートフル Web サービスを実装する最も発明されたポイントは次のとおりです。
+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http
しかし、ほとんどすべての Web アプリケーションにこれらの欠点があるのではないでしょうか? Web アプリケーションは、Cookie、クエリ文字列、セッション ID、およびすべてのものを使用して、http のステートレス性を回避します。
では、なぜ Web サービスにとってそれほど悪いのでしょうか?