这两年REST(Representational State Transfer)随着ajax, web2.0, ROR逐渐火了,起来。不得不承认REST确实是一种在互联网环境下非常好的架构风格。REST中一个非常重要的约束,就是服务端无状态,将大部分的状态管理向客户端转移。而SEAM正好朝向REST的反面走去,而且是走得很彻底。SEAM是完全的服务器端有状态,所有的状态都在服务器端来管理。所以seam的文档里都会自称自己是一个stateful的框架。要说服务器端有状态,其实JEE的标准的web container基本上都是以服务器端有状态的方式来运行的, servlet的 session scope, application scope就是这个服务器端状态的容器。SEAM为了更好的进行服务端的状态的管理,还添加了另外几个scope:
会话 Conversation scope : 跨越多个页面,但是比session要短
page scope : 在同一个页面内同一个棵JSF组件树上保存状态,不同于jsp的 page scope
business scope : 跨越多个session的业务流上下文
有了session, 服务器能记住每一次的客户端的请求是由谁发送来的;有了conversation, seam更有能力知道用户正在处理哪几个页面,做哪个用例;而 business scope 更是让seam有能力记住用户的操作是在哪个业务流程里的。这种想要让服务器记住一切与客户端交互上下文,维持交互状态的设计,让SEAM变成一个彻底的REST风格的对立者。
在SEAM里面集成了RichFaces等ajax框架,但是java script在seam和 REST的眼中,地位完全不一样。在REST里,java script被用作是客户的VM语言,肩负着在客户端维护状态,展现资源的重任,而在SEAM里,ajax只不过是一锦上添花的小玩具而已。因为即使你用ajax方式来发一个请求,服务端还是要走一个非常复杂的流程(各种状态的恢复和维护),这种ajax并不会带来多少的性能上的提升。
REST风格是针对于互联网来说有,互联网网存在着高延迟和高并发的特性,数据的传输需要花费很多的时间,对一台服务器的访问量可能由于一则花边新闻而骤然升高,在这种情况下,服务端和客户的缓存显得尤为重要。客户端缓存可以减少不必要的请求,服务端的缓存可以减少对相同资源的处理时间。为了能让缓存尽量的发挥它的作用,所以很强调服务端无状态的特性。而每一次请求都要包含状态数据的SEAM应用在应对高延迟和高并发时,显然没有REST风格有优势。不过,从目前的情况来看,SEAM也就是把自己定位成企业应用的WEB框架,而企业网络,和因特网相比则没有那么高的延迟和并发了。
这样看来,如果是做互联网应用,REST风格的架构要比SEAM这种架构要好;而如果是做企业应用,SEAM还是个不错的选择的。
分享到:
相关推荐
seam_carving代码实现 图像缩放
JBOSS_SEAM配置
seam in action seam in action seam in action seam in action seam in action seam in action seam in action
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
seam介绍
seam级联菜单例子
JBoss Seam JBoss Seam JBoss Seam
seam资料seam资料seam资料seam资料seam资料seam资料seam资料seam资料
seam下一代web开发框架
seam carving的相关代码实现
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
Jboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in Action
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN
SeamCarving的C++实现代码,使用opencv库。包含完整项目工程及测试图像,可直接使用
seam中的注解总结,包括三种JPA和seam自身的标签
Seam全称是Jboss Seam,是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,以及利用JDK5.0的Annotation技术,从而为开发基于Web的企业应用程序提供一个最新的模式。
Seam - 语境相关的组件 ,学习seam的好资料.
Seam 中文开发指南 seam中文文档
seam框架需要的所有jar包,支持seam ui组件
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...