JSF 2.0与Wicket vs. SpringMVC 3.x的特殊要求

Mar*_*tin 14 jquery wicket spring-mvc jsf-2

为了满足我在新Java EE 6项目中的几个关键需求而寻找一个可行的Web框架,我在这里阅读了关于这个主题的许多线程,我最终可以减少JSF 2.0,Wicket 1.4(组件之中)的预想框架数量基于)和SpringMVC 3(基于动作).

关于这些框架,我需要一些建议,如果和也许如何以下要求实现的:

  1. 最好是分离设计师/编码器工作流程,以便设计师 - 最佳 - 可以独立地使用他们喜欢的工具(如Dreamweaver)来详细说明他们的HTML,CSS,JS/jQuery文件.

  2. 轻松集成许多现有(花哨和动画)jQuery组件,例如这个滑动登录面板(这里可以看到一个演示).因此,该要求实际上很容易整合现有的HTML + CSS + jQuery代码,并且:

  3. 对于ui组件树,一种同步机制,用于将客户端(通过JS/jQuery)动态更改的视图状态与服务器上相应的视图状态同步.

    我想我需要那个.例如,考虑上面的"滑动登录面板",在客户端通过JS可以更改"打开"或"关闭".其初始状态被编程为"关闭",用户决定客户端始终保持打开状态.现在,当用户在某处导航并再次返回到此视图时,登录面板状态将无法"关闭"而不是"已打开"(因为这是其初始状态,并且服务器端未发生动态状态更新).

    因此,需要一个同步机制,对吧???

  4. 最佳外化(某处集中)导航规则
    (a)任意页面间导航(静态导航规则),以及
    (b)"向导式"导航(动态导航规则从当前状态/结果动态确定).

  5. 良好的性能(加载时间,服务器内存消耗,经验响应等).

显而易见的问题是:

  1. JSF2,Wicket和Spring MVC3支持哪些req(以及哪些)?

  2. 一般来说,有了这个要求 - 而且我仍然不确定技术方面/后果:在这种情况下应选择哪种框架类型(基于组件与行动)(即,哪些关键决策方面或"规则"拇指"应该记住"?


非常感谢您的建议和帮助.
马丁

Arj*_*jms 12

JSF:

  1. 在JSF(Facelets)的模板语言中,这很容易.您只需编写常规HTML并仅为动态部件添加jsfc属性.有关快速示例,请参阅维基百科文章:http://en.wikipedia.org/wiki/Facelets
  2. 使用JSF的复合组件非常简单.只需将您的jquery内容放在.xhtml文件中,添加一个小标题,它就可以作为一个组件重复使用.使用PrimeFaces也可以直接使用许多基于jquery的组件
  3. JSF擅长这种同步机制.通过定义明确且易于掌握的步骤进行同步.基本上,这种同步机制或多或少是使用JSF而不是直接编写jquery的主要原因.
  4. JSF就是这样,甚至可以称之为navigation rules.它们是在外部.xml文件中定义导航的强大机制.可以基于在特定页面上发生的逻辑结果和/或动作来定义导航规则.它们可以是前向或重定向的,有或没有额外的参数.
  5. JSF总体表现非常好.它保留(保存)状态,因此这会花费你一些记忆,但它足够聪明,只能部分保存它(与原始值不同的值).您还可以决定将此状态存储在客户端或服务器上.由于非常方便view scope,您的后备逻辑使用的少量数据可以非常轻松地在请求之间进行缓存.这样可以避免在每次请求后访问数据库,从而大大提高性能.

JSF真正闪耀的领域之一是其组件模型.通过其复合组件概念自行组合组件非常容易.您还可以使用Java创建组件,这需要更多参与但仍然绝对不困难.

由于JSF的组件模型是标准化的并且非常清晰地记录,因此许多第三方提供了随时可用的组件库.例如RichFaces,Primefaces,OpenFaces,IceFaces,Trinidad ......这个名单几乎无穷无尽.

关于性能的一些额外说明.在比较三个Web框架中的任何一个时,您提到的差异可以忽略不计,并且根据经验,Web框架不是处理请求时花费大部分时间的地方.这几乎总是在数据库和IO中.

Web框架可以帮助您轻松防止进入数据库,但即使Web框架A在合成测试中仅比框架B快10倍,那么在实践中,如果只有5%,您几乎不会注意到这一点请求的时间是在该框架中花费.


Daa*_*aan 11

便门:

  1. 优选地,分离的设计者/编码器工作流程:由于使用标准HTML和CSS而可能.设计师编辑HTML,开发人员编写Java.在HTML中,只有一些标记(wicket:id属性)来定义动态组件的位置.
  2. 轻松集成jQuery:使用WiQuery,它将JQuery组件与Wicket集成在一起.使用WiQuery,您还可以集成其他JQuery组件,这些组件可以回馈(WiQuery是开源的).
  3. 对于ui组件树,同步机制[..]:Wicket和WiQuery将在大多数情况下为您处理.Wicket在服务器端是有状态的,可以为您处理页面部分的刷新(内置).
  4. 最佳外化(某处集中)导航规则:向导的动态切换很容易(它只是Java).链接只指向要显示的Page类,在为您处理单击时切换到该页面.
  5. 性能良好:这完全取决于您的使用案例.Wicket可以进行聚类和扩展,因此对于99%的用例,您可以获得"良好的性能".

一些一般性的评论:我真的很喜欢Wicket的组件模型.编写自己的组件和行为非常容易.Wicket的面向对象模型非常强大.