这两年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框架核心知识点详解 #### 一、Seam框架简介 Seam,全称为JBoss Seam,是一款基于Java EE 5的技术栈构建的应用框架。它通过整合JSF(JavaServer Faces)与EJB 3.0(Enterprise JavaBeans 3.0)组件,并充分...
**Seam Carving 技术详解** Seam Carving,又称图像拉链,是一种基于能量最小化的图像调整方法,主要用于图像大小的动态调整,而不仅仅是简单的等比例缩放。它能够在保持图像主要结构不变的情况下,根据需要增加或...
**JBoss Seam 学习资源概述** JBoss Seam 是一个开源的应用程序框架,它整合了JavaServer Faces (JSF)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA) 和其他Java EE技术,旨在简化开发过程,提高开发...
**JBoss Seam组件中文手册** **一、Seam框架概述** Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3...
"为Seam做好准备"这个标题暗示我们即将探讨的是关于Seam框架的入门与准备工作。Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他...
Seam Security是针对Java Web应用程序的安全框架,它是JBoss Seam项目的一部分,提供了全面的安全解决方案,包括身份验证、授权和身份管理等功能。Seam Security以易于配置和使用为特点,允许开发者快速设置应用程序...
《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...
根据提供的信息,我们可以推断出这是一本关于 Seam 框架的专业书籍,书名为《Seam in Action》,作者为 Dan Allen 和 Manning 出版社出版。本书主要讲解了 Seam 框架在 Java EE 3 环境中的应用与开发实践。接下来将...
### Seam参考手册中文版知识点概览 #### 一、Seam简介及基本概念 ##### JBoss Seam概述 - **Seam**是JBoss家族中的一员,它是一个建立于Java EE平台之上的开源框架,旨在简化企业级应用的开发过程。 - **版本**: ...
### SEAM 中文开发指南知识点概述 #### 一、SEAM 框架简介 - **SEAM**:SEAM 是一个基于 Java EE 的企业级应用框架,它简化了复杂的应用程序开发过程,并且提供了丰富的功能来支持业务逻辑的实现。 - **版本信息**...
MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...
### JBoss Seam中文版知识点详解 #### JBoss Seam简介 JBoss Seam是一个强大的企业级应用开发框架,基于Java EE标准,特别强调简化Web应用的开发流程。它通过整合多种技术如JSF、EJB 3.0等,提供了一种更为高效、...
JBOSS_SEAM配置
Seam是一个Java EE框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Inversion of Control(IoC)和Enterprise JavaBeans(EJB)等技术融合在一起,为开发复杂的Web应用程序提供了便利。在Seam框架...
Seam是一种Java EE框架,它在开发企业级应用程序时提供了高度集成和语境相关的组件模型。这个框架的主要目标是简化复杂性,使开发者能够更高效地构建动态、响应式的Web应用。Seam的核心理念是将不同的技术,如Java...
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
Seam是一个开源的Java EE框架,它将JavaServer Faces(JSF)与EJB3、Hibernate等技术结合在一起,提供了一种更为简化的企业级开发方式。在这个“seam级联菜单例子”中,我们将深入探讨如何在Seam应用中实现级联选择...
Seam框架是一个全面的Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)以及许多其他Java EE技术,为开发者提供了强大的组件模型和丰富的功能,旨在简化...
Seam Carving是一种图像内容感知的尺寸调整方法,它能够在保持图像主要结构不变的情况下,智能地减少或增加图像的宽度和高度。这种方法是由Amit Agarwal和Matthieu Salzmann于2007年提出的,其核心思想是通过找到...