想象一个更复杂的 CRUD 应用程序,它具有三层架构并通过 Web 服务进行通信。客户端开始与服务器的对话并执行一些类似向导的操作。要处理向导,客户端需要服务器提供的反馈。
我们开始讨论这种方法的有状态或无状态 Web 服务。我结合自己的经验做了一些研究,这就指向了后面提到的问题。
具有以下属性的无状态 Web 服务(在我们的例子中):
+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
但是我们可以去掉前两点,我们的应用程序不需要高扩展性和可用性。
所以我们来到有状态的网络服务。我读过很多博客和论坛帖子,实现有状态网络服务的最有创意的一点是:
+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http
但是几乎所有的 Web 应用程序不都有这些缺点吗?Web 应用程序使用 cookie、查询字符串、会话 ID 和所有东西来避免 http 的无状态。
那么为什么它对 web 服务那么糟糕呢?