使用多个组合的REST资源管理视图状态
例如,我将编写一个论坛,在浏览器中显示如下:使用多个组合的REST资源管理视图状态,rest,resources,viewstate,Rest,Resources,Viewstate,例如,我将编写一个论坛,在浏览器中显示如下: - original post - Re: original post - Re^2: original post - Re^2: original post + Re: original post _______________________________________________________________________________ Text of the selected post. 树视图将是
- original post
- Re: original post
- Re^2: original post
- Re^2: original post
+ Re: original post
_______________________________________________________________________________
Text of the selected post.
树视图将是一个资源,所选文章的文本将是一个,周围的页面将是一个。如果选择了其他帖子,则应更新“孔”页面,以便在浏览器中始终显示正确的URI。但是如果洞页面被更新,树的客户端状态就会丢失。树资源会被重新加载,并且会丢失扩展了哪些节点、我滚动了多远等信息
剩下的解决方法是什么
- 是否像使用URI一样只执行页面的部分更新?树信息部分可能会变得相当大
- 构造一个完整的资源并隐藏这样一个事实,即有树这样的底层资源?但这并不能拯救树之州
- 是否将当前视图状态传输到服务器并将其与响应一起返回
- 用饼干
- 等待HTML5
其他想法?建议?如果它有一个URI,那么它就是一个资源。同样地,包含所有这些内容的页面是一个资源,在ReST和纯旧HTTP中是一个句号。因此,它有自己的生命,独立于您可以在服务器上使用什么来编写页面 但是,如果您希望为页面提供服务并使用ajax调用来更新内容,那么您可以直接访问您提到的每个资源以获取它们的当前版本。在那个阶段,您可以使用hash标记(如第一个要点中所示)使URI副本粘贴友好。或者,您可以使用隐藏的iframe使导航在浏览器中仍能正常工作。两者通常结合使用。在这种情况下,页面的当前状态要么(或两者)在javascript中,要么(和)在URI的哈希部分 请注意,页面本身仍然是一个独立的资源,因此,在散列创建新URI之前,您将传递的任何视图“状态”。除非您明智地指定内容位置,否则代理和缓存会将它们视为完全不同的资源 在生成标记之前处理服务器上所有UI的场景中,依赖Cookie简直是邪恶的。它破坏了web的体系结构,破坏了缓存,等等。如果您想用javascript将其用作持久性存储,并且只要服务器不看它,而且它纯粹是装饰性的,那么请自便 从这个意义上讲,HTML5中的本地存储将用更多的空间解决同样的问题