13

想象一个更复杂的 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 服务那么糟糕呢?

4

3 回答 3

9

因为在 web 服务中保持状态是很困难的,如果你不是非常小心和/或迟早有经验,你可能会遇到一些很难找到的错误。

于 2010-04-06T21:16:37.500 回答
2

我在有状态的 Web 服务方面运气不错。他们确实觉得有点脏,因为 HTTP 之上的漏洞 cookie 会话就是这样;但另一方面,它们是肥皂,所以在那个时候对美丽过于沮丧是有点愚蠢的。

要记住的一件事是互操作性:如果您正在做有状态的 Web 服务,您的客户端将必须支持与您所做的相同的状态概念(通常是 cookie)。但同样——对我来说效果很好。

PS 我假设你在一个容器中,它将为你跟踪会话。

于 2010-04-06T21:18:07.170 回答
2

状态也是大多数错误隐藏的地方。

于 2010-04-06T21:18:55.313 回答