似乎一些Web架构师的目标是拥有一个无状态的Web应用程序.这是否意味着基本上不存储用户会话?或者还有更多吗?
如果只是存储用户会话,那么不这样做有什么好处?
我见过这个建议......
理想情况下,Web应遵循REST原则并完全无状态.因此,单个URL应标识单个资源,而不必保留每个用户的导航历史记录.
...我读了维基百科页面http://en.wikipedia.org/wiki/REST,这听起来不错,但我不知道如何实际实现它.我在ASP .NET Webforms NOT MVC工作.
例如,在我即将构建的应用程序中 - 我需要我的用户登录才允许他们做任何事情.在他们被允许做很多有用之前,他们必须跳过几个箍 - 比如接受T和C并确认他们的基本细节不变.最后他们被允许做他们真正想要的东西,比如BuyAProduct!
在我看来(我来自Rich客户端的HEAVILY有状态世界),我需要状态来记录他们所做的事情并从中推断他们可以做什么.我不知道如何支持他们(比如)为BuyAProduct URI添加书签.当他们到达书签时,我如何知道他们是否已登录,以及他们是否同意T和C以及他们是否尽职尽责地检查了他们的基本细节?
我喜欢应用程序无状态的想法,部分原因是它似乎完全解决了"当用户点击后退和前进按钮时,我该怎么办?" 我看不出我怎么能让它正常工作.我觉得我错过了一些非常基本的东西.
我试图理解token-based authentication这些日子,它声称是一种stateless authentication方法.我遇到了这个概念stateless web application.
以下是我读过的一些主题:
起初,我对这个想法感到非常兴奋.但越来越多的我觉得stateless是pseudo-proposition.
例如,假设我们使用客户端存储的令牌进行身份验证,我们如何对在线用户进行统计(假设没有日志)?我们应该将令牌存储在DB中吗?这不是说我们在服务器上存储状态信息吗?更重要的是,DB中的名称,年龄等普通用户信息也是某种状态信息吗?
我认为这里真正的问题不是让网络应用程序无状态,而是让网络应用程序正确处理状态信息,这样它就不会危及可伸缩性.
这取决于如何解释这个词stateless:
我更喜欢2,因为总会有一些inevitable global state(引自@ deceze对他的答案的评论).无论我们将状态信息存储为HTML 5 Web存储,HTTP标头,隐藏表单字段还是Cookie,状态仍然存在.只是它存储在服务器以外的其他地方.
我错过了什么好事吗?任何人都可以对此有所了解,这样我可以从这种心理斗争中解脱出来吗?
添加1
刚刚看了一下这本书的RESTful Web服务通过Leonard Richardson.在第4章的本节末尾Statelessness,它将状态分为Application State和Resource State.因此,我之前提到的普通用户信息和数据,如图像等,可以归类为Resource State.什么stateless指的是Application State.因此它不会破坏无状态代码存储resource state在服务器上.
但该书还提到了这样一种情况:an application key is used to restrict …