代码之家  ›  专栏  ›  技术社区  ›  Christopher Klewes

有状态与无状态Web服务

  •  13
  • Christopher Klewes  · 技术社区  · 16 年前

    设想一个更复杂的crud应用程序,它有一个三层体系结构,通过webservices进行通信。客户机开始与服务器对话并执行一些类似向导的操作。要处理向导,客户端需要服务器提供的反馈。


    我们开始讨论这种方法的有状态或无状态web服务。我结合自己的经验做了一些研究,这让我想到了后面提到的问题。

    具有以下属性的无状态Web服务(在本例中):

    + high scalability
    + high availability
    + high speed
    + rapid testing
    - bloated contract
    - implementing more logic on server-side
    

    但是我们可以忽略前两点,我们的应用程序不需要高的可伸缩性和可用性。

    所以我们来看看有状态的webservice。我读过很多博客和论坛文章,实现有状态web服务最有创意的一点是:

    + simplifies contract (protocol)
    - bad testing
    - runs counter to the basic architecture of http 
    

    但是,不是所有的web应用程序都有这些缺点吗?web应用程序使用cookies、查询字符串、会话id和所有东西来避免http的无状态性。

    那么,为什么它对webservices如此不利呢?

    3 回复  |  直到 16 年前
        1
  •  9
  •   Darin Dimitrov    16 年前

    因为在webservice中保持状态是很困难的,如果您不非常小心和/或迟早会遇到一些很难找到的bug。

        2
  •  2
  •   SamB som-snytt    16 年前

    州也是大多数虫子藏身的地方。

        3
  •  1
  •   MK.    16 年前

    我在有状态的web服务方面运气不错。它们确实感觉有点脏,因为http上的hole-cookie会话就是这样;但另一方面,它们是soap,所以在那一点上过于担心美丽是有点愚蠢的。

    要记住的一件事是互操作性:如果您正在执行有状态的web服务,那么您的客户机将必须支持与您相同的状态概念(通常是cookies)。但再一次——对我来说很好。

    另外,我假设你在一个容器里,这个容器会帮你跟踪会议。

    推荐文章