想象一个更复杂的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应用程序使用cookie,查询字符串,会话ID和所有内容来避免http的无状态。
那为什么对webservices这么糟糕呢?
答案 0 :(得分:9)
因为在网络服务中保持状态很困难,如果您不是非常小心和/或迟早会遇到一些非常难以发现的错误。
答案 1 :(得分:2)
状态也是大多数错误隐藏的地方。
答案 2 :(得分:1)
我对状态网络服务运气合理。他们确实感觉有点脏,因为在HTTP之上的洞cookie会话是这样的;但另一方面它们是SOAP,所以在这一点上对美容过于沮丧会是一种愚蠢的行为。
要记住的一件事是互操作性:如果您正在进行有状态的Web服务,您的客户将不得不支持您所做的相同的状态(通常是cookie)。但是再次 - 对我来说很好。
P.S。我假设你在一个容器中,负责跟踪你的会话。