当我第一次听到REST这个概念的时候,我被怔住了,为什么呢?因为我觉得自己太浅薄了,计算机以及计算机网络是一个太过于神奇的东西。
状态表述转移
在REST的世界中,资源即状态,而互联网就是一个巨大的状态机:每个网页是其一个状态;url是状态的表述;REST风格的应用则是从一个状态迁移到下一个状态的状态转移过程。早期互联网只有静态页面的时候,通过超链接在静态网页间浏览跳转的page->link->page->link…模式就是一种典型的状态转移过程。
也就是说早期的互联网就是天然的REST,直接的表明我们现在都偏离了这个概念,偏离了互联网这个REST初态!我们为什么要这么做?我们为什么会在偏离REST之后的这几年开始重新审视这个概念?重视它?
无状态服务器
REST风格应用可以实现交互,但它却天然地具有服务器无状态的特征。在状态迁移的过程中,服务器不需要记录任何Session,所有的状态都通过url的形式记录在了客户端。PS:更准确地说,这里的无状态服务器,是指服务器不保存会话状态(Session);而资源本身则是天然的状态,通常是需要被保存的;本文提到的无状态服务器均指无会话状态服务器。
所有的状态都通过URL的形式记录在客户端?我们的购物车代码可以删除了,完全可以通过URL来表达?原来服务器费尽心思在无状态协议http上做的session都可以废掉了?JdonFrameWork,Seam,EJB中的状态管理组件相对REST是矛盾吗?banq在把jdon框架拓展为真正的RESTful的时候会保留Stateful这个Annotation吗?
[该贴被oojdon于2009-07-14 13:31修改过]