`
richardeee
  • 浏览: 18359 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

【转】当SOA遇到Web 2.0—Java EE的不足之处

阅读更多
原贴地址:
http://news.csdn.net/n/20061221/99748.html

从根本上说,面向服务的架构能够使企业内部动态数据服务的创建变得更加方便,同时,还能够使企业开发人员创建影响这些服务的复合应用程序。Web2.0提供了一个丰富的Web体验,用户能够以高效的、充满希望的、有益的方式参与合作。

  如果我们把这两个现象结合起来,那么,通过企业社团成员之间的互相交流,以及成员与不断变化的企业数据之间的交互,我们就能够实现这一关键的提高效率的新方法。

  协作型企业相互融合,下一代的Web应用程序也已露端倪,但是,开发团体的推测是,为了实现明显的利益,企业所采用的各种技术之间存在着根本性 的差异。标准必须朝哪个方向发展才能够满足SOA与Web2.0概念的结合,为了更好的理解这个问题,我们将致力于检验Java表示技术的状态。

  Ajax化JavaServer Faces

  标准奠定了SOA的基本结构,但是,在Web2.0的世界中却不存在着标准。为了支持Web2.0的功能,市场上出现了太多的方法,其中大多数 在JavaScript的实现(影响Ajax的技术)上却非常繁杂。在Java EE的规范中,JavaServer Faces提供了表示层,但是,相比起Ajax技术和Web2.0概念的流行,它目前的修订版出现的更早。

  事实证明,在组件层,JSF中的可扩展组件架构非常适合与Ajax技术协同使用,但是,组件层Ajax技术存在的问题是,它们是存在于狭小的规 避JSF生命周期的交互空间内。解决这一问题所需要的是,一种更加全面的方式,以实现在JSF生命周期内的Ajax交互。具体来说,有以下两点需要着重阐 述。

  1.改进的用户交互模型: 在JSF中,目前的用户交互模型是基于表格的,它过于粗略而无法传输丰富的Web2.0特性。组件层的Ajax交互粒度,以及JSF目前依赖的基于表格的子任务模型,这两者之间存在着显著的差异。交互类型应当包含以下几种形式:

  •   纯粹的本地客户端JavaScript交互,没有服务器通信、不需要执行JSF生命周期。这种类型的例子可以是,在日期选择组件中通过日历来进行导航。目前,通过组件层JavaScript实现能够支持这个模型。
  •   组件层的Ajax交互,不需要执行JSF生命周期。这种类型的例子可以是,基于当前用户在文本框中的输入,从而形成一个列表。这里的关键是,用户与组件的交互仅仅影响到该组件的表示。同样,目前,通过组件层JavaScript实现能够支持这个模型。
  •   组件层的提交,引发JSF生命周期的执行。生命周期的执行结果将成为新的表示,该表示可能会影响到页面中的多种组件。这这种类型的例子可以是,在日期选择组件中完成日期的选择,结果是引发显示不同的日期安排信息。目前在JSF中,还无法支持这种形式的交互。

  2. 增量表示更新: 为了使用Ajaxian 方式(不是页面刷新)实现第三种交互模型,JSF需要一个增量更新机制,仅仅是把页面中应用到的表示层所做的必要修改从一个表现处理传向下一个表现处理。 下面这个图示表明了这个概念。它需要一个Ajax桥,在服务器端把表示的改变组合起来,在客户端的DOM把那些变化重组。

JSF Push模式

  Ajaxified JSF实现和多数其它的Ajax方式从遗留的Web应用程序模型中继承了一个共同的特征,该模型是一个客户端发起的交互模型。这意味着,客户端的表示层只需要针对用户与表示层的交互进行相应变化。

  与使用遗留应用程序相比,使用Ajax技术,这个交互是细粒度的,但是,它仍然是客户发起的。现在,当你检验支持应用程序的SOA数据模型的动 态特性、了解众多同步用户采用这一动态数据所进行的协调互操作时,你就能够意识到,在客户端推动动态表示变化的机制是非常重要的,这一点越来越清晰。它是 达到Web2.0模型所需要的真正的动态特性的唯一途径。

在产业中已经证明,对于JSF规范与一个表示push模型的协作来说,Ajax push技术,也指Comet,是十分必要的。前文已经描述的这个增量更新特性,提供了在实现JSF Push模式时所需要的基于Ajax的更新机制。除此之外,当应用程序逻辑发现出现了一些将会影响客户端表示层状态的变化时,延长JSF的生命周期来允许 一个强制的表现处理是很有必要的。

虽然,JSF push模型相对而言实现起来更加容易,但是,生产经验表明,为使得开发人员能够有效继承,仅仅暴露JSF API中底层强制的表示机制是远远不够的。关于基本的push机制,JSF规范很有必要对表现API进行介绍,从而呈现给开发人员一个清晰有效的机制,用 于请求强制表示。API尤其需要提供以下几个方面:

  1.触发的表现:应用程序开发人员应当能够在发出表示处理请求的业务逻辑中定义触发点。

  2. 群组表现: 一个触发点能够影响一个单一客户端、多个客户端,或者是所有连接到该应用程序上的客户端。因此,为触发表现提供群组管理结构,这是很有必要的。

  3. 预定的表现:有许多合适的计划机制应当被支持,包括,按需表现、推迟表现,以及内部表现。预定的表现架构应当具备可扩展性,以支持其他用户预先设定的需 求。很重要的一点是,触发表现机制应当能够更加有效的传输。由于存在着大量的触发,它们潜在地以各种方式影响着客户端,因此,管理表现的处理这一任务不能 仅仅落在开发人员身上。触发表现的实现,必须有效地合并表现处理请求、处理必要的同步,而且,这些操作都是以一种线程有效的方式。

  多视图支持

  现存的为JSF定义的阶段和需求范围,根本不足以支持满足Ajax的JSF应用程序——用户能够在同一应用程序上获得多个活动视图。阶段范围能 够维护所有视图共同的状态,但是,它不足以处理视图之间不同的状态。由于多个同步请求都必须是活动状态,所以,需求范围也不充分。因此,需要一个新的范 围,来管理满足Ajax 的JSF应用程序的会话方面。JBoss的Seam 方案提出了会话范围,它主要提供JSF中所需要的额外范围。除了支持多视图之外,会话范围还能够带来其他优势,例如,在应用程序中,通过会话中对一系列用 户交互的明确描述,就能够有效地支持书签和返回按钮特性。

  长期存在的HTTP请求

  回到前面所提到的push模型,你可能注意到,机制需要一个特殊的HTTP请求,它能够异步地响应从应用程序中发出的触发表现出理请求。依据更 新的频率,这个特殊HTTP请求能够长期存在。由于在响应之前,每一个请求都占用其线程,所以,在处理这个长期存在的请求时,现存的Servlet模型无 法很好的响应。因此,为了支持push模型,必须对Servlet模型进行改变,使它能够以线程有效的方式来处理长期存在的请求。再强调一次,有很多生产 方案与异步Servlets和HTTP服务器相关,Java EE规范能够在此基础上定义一个解决方案。

  结论

  人们仍然有些质疑:SOA与Web2.0世界将会发生抵触,新一代的协作型企业应用程序已露端倪。也存在着这样的质疑,现存的Java EE规范无法完全处理Web2.0提出的请求,以及JSR处理必须开始在直接项中考虑这些请求。然而,产业中的重大进步,已经能够处理出现的请求,并且能 够实现扩展现存Java EE基础结构的商业化的可行方案。即将使用JSR 172来生成JSF2.0规范,非常重要的是,包含Ajax特性,以及产业参与者贡献相关技术,来确保能够及时做出基于标准的解决方案。



Zou Ang 2006-12-23 17:39 发表评论
分享到:
评论

相关推荐

    java ee结构解析

    这个平台基于Java SE(Java Standard Edition),旨在提供Web服务、组件模型、管理和通信API,支持企业级的面向服务体系结构(SOA)和Web 2.0应用程序。 Java EE的核心特征之一是Bean Validation框架,这是Java EE ...

    基于JAVA EE的信息发布系统.pdf

    JAVA EE构建在JAVA SE的基础上,提供组件模型、Web服务、管理和通信API,JAVA EE可以实现企业级的面向服务体系结构SOA和Web 2.0应用程序。JAVA EE所包含的技术包括JDBC、Lib J、Annotation等。 2. jQuery技术 ...

    第1讲 Java EE技术概述

    - **重要性**:Java EE 是构建现代企业级应用的关键技术框架,支持服务导向架构 (SOA) 和 Web 2.0 应用程序。 3. **Java ME (Java Platform, Micro Edition)** - **应用场景**:适用于移动设备和嵌入式设备,如...

    《Java EE 7权威指南》

    首先,Java EE 7着重提升了Web服务和SOA(面向服务架构)的支持。它引入了JSR 349(JAX-RS 2.0),增强了RESTful Web服务的开发能力,允许更灵活的数据绑定和更好的错误处理。此外,JSR 352(Batch Applications for...

    Java_EE_6_Tutorials

    Java EE(Java Platform,...Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。

    基于Java EE的校园问答系统的设计与实现.pdf

    Java EE提供了Web服务、组件模型、管理和通信API,可以实现面向服务架构(SOA)和Web 2.0应用程序。在校园问答系统的开发中,Java EE是理想的底层框架,能够保证系统的稳定性和扩展性。 在系统设计中,采用了MVC...

    JavaEE_Platform_Spec

    Java EE(Java Platform,...Java EE 是在 Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0应用程序。

    Java_EE_6规范中文版

    这个版本包含了对JavaServer Faces (JSF) 2.0、EJB (Enterprise JavaBeans) 3.1、JPA (Java Persistence API) 2.0和CDI (Contexts and Dependency Injection) 1.0的支持,这些都是Java EE 6的核心组件。 2. **安全*...

    利用STP构建 Web Service(SOA)

    JAX-WS 2.0 是 Java EE 5 平台的重要组成部分,作为 JAX-RPC 的后续版本,JAX-WS 大大简化了使用 Java 技术开发 Web 服务的工作。它支持 SOAP 1.1 和 SOAP 1.2 等多种协议,并提供用于支持其他协议和 HTTP 的工具。...

    JSP.2.0技术手册(高清晰完整版)

    JSP(Java Server Pages)2.0是Java平台的一个组成部分,用于开发动态网页,它是Java EE(Java Enterprise Edition)的一部分。JSP允许将Java代码嵌入到HTML页面中,使得在服务器端执行Java代码成为可能,从而可以...

    Spring2.0技术手册

    Spring2.0版本进一步增强了对Java EE标准的支持,包括EJB 3.0、JPA等,同时也改进了MVC框架和Web服务支持。 ### Web开发相关技术 #### Ajax、JSP和Servlet - **Ajax**:异步JavaScript和XML的缩写,是一种在无需...

    java程序设计教程复习章节

    基于Java SE,提供Web服务、组件模型、管理和通信API,支持SOA和Web 2.0应用程序。 - **Java ME (Micro Edition)**:用于移动设备和嵌入式设备的应用开发,如手机、PDA、电视盒等。Java ME提供跨设备兼容性和本地...

    QCon 2009 beijing全球企业开发大会ppt:10.Java在企业级开发中的应用

    他的演讲深入探讨了Java如何在企业软件开发中扮演关键角色,并且涉及IBM的企业级Java应用平台、Web 2.0的融合以及云计算对企业级Java应用的影响。 1. **IBM的企业级Java应用平台** IBM提供了一个全面支持Java技术...

    java的信息

    它建立在Java SE之上,提供了服务器端组件模型(如JSP、EJB)、管理和通信API,支持面向服务架构(SOA)和Web 2.0应用程序的开发。 3. Java ME(Java Micro Edition):针对移动设备和嵌入式设备的开发,如手机、...

    理解java开发平台

    2. Java EE(Java Platform, Enterprise Edition):Java企业版,以前称为J2EE,主要针对服务器端应用程序开发,提供了组件模型、Web服务、管理和通信API,支持企业级的面向服务架构(SOA)和Web 2.0应用程序。...

    Java语言概述与面向对象思想--中英文翻译.docx

    它在Java SE的基础上扩展,提供Web服务、组件模型、管理和通信API,支持服务导向架构(SOA)和Web 2.0应用。 3. Java ME(Java Platform, Micro Edition):以前称为J2ME,用于移动设备和嵌入式设备。它提供了一个...

    java(20210925001443)[归纳].pdf

    Java EE建立在Java SE的基础上,提供Web服务、组件模型、管理和通信API,以实现面向服务架构(SOA)和Web 2.0应用程序。 3. Java ME(Java Platform, Micro Edition):以前称为J2ME,主要用于移动设备和嵌入式设备...

Global site tag (gtag.js) - Google Analytics