Apache Wicket有哪些优势?

时间:2009-02-12 23:38:12

标签: java model-view-controller spring wicket

我不是Java开发人员,所以我可能会出错一些条款......但是。

我整合的应用程序正从Spring迁移到Wicket。虽然它不应该影响我与它的整合,但我想知道为什么他们会这样做?

据我所知,Spring是更受欢迎的框架。我对此一无所知,除了它很受欢迎。我确实阅读了Wicket页面,Wicket看起来非常简单明了。

Wicket的一些优势是什么?

在我看来,改变你的整个框架将是一些工作,所以我想知道Wicket是否提供Spring没有的东西?

10 个答案:

答案 0 :(得分:26)

我经常在圈子里吹捧的优点是:

  1. 你的html可以完全符合xhtml - 表现和逻辑之间有很好的分离,你的演示/ html层需要知道的关于wicket的唯一东西是标准html标签中的wicketid属性。这对于团队中的html / css / javascript客户端人员来说非常棒,他们几乎没有实际的java工作。没有其他基于Java的Web框架可以声明这一点,afaik。
  2. 没有特定于wicket的xml配置 - 一切都可以在源代码中完成,而且很少需要为.war
  3. 的标准web.xml做。
  4. 基于组件的开发非常容易理解 - 特别是如果你有非网络背景(例如,摇摆程序员)。它鼓励重复使用比mvc更多,imo。

答案 1 :(得分:13)

以下是apache wicket的一些功能:

POJO组件模型

Wicket中的页面和组件是支持封装,继承和事件的真正Java对象。

易于开发

因为Wicket是Java和HTML,所以您可以利用您对Java或您喜欢的HTML编辑器的了解来编写Wicket应用程序。

关注点分离

Wicket不会将标记与Java代码混合,也不会为标记文件添加特殊语法。 HTML和Java的世界是并行的,只与Wicket id相关联,Wicket id是HTML中的属性和Java中的Component属性。由于Wicket HTML只是HTML而Wicket Java只是Java,因此编码人员和设计人员可以在很大程度上独立工作,而无需依赖任何特殊工具。

<强>安全

Wicket默认是安全的。 URL不公开敏感信息,所有组件路径都是与会话相关的。必须采取明确的步骤在会话之间共享信息。此外,URL加密允许高度安全的网站。

透明,可扩展的群集支持

所有Wicket应用程序都可以自动在集群上运行,无需额外的工作。一旦理解了瓶颈,Wicket就可以调整页面状态复制。 Wicket的下一个版本将支持客户端模型以实现零状态可伸缩性。

透明后退按钮支持

Wicket支持可配置的页面版本管理。当用户使用浏览器中的后退按钮提交表单或跟踪他们访问的页面中的链接时,Wicket能够将页面对象恢复到最初呈现页面时的状态。这意味着您可以编写支持后退按钮的Web应用程序,只需要很少的工作。

多标签和多窗口支持

Wicket提供了一种编写支持多窗口和多选项卡使用的应用程序的简便方法,允许开发人员在用户打开新的浏览器窗口或选项卡时做出正确的反应

可重复使用的组件

Wicket中的可重用组件特别容易创建。您不仅可以使用Java extends关键字扩展现有组件,还可以创建将一组组件关联为可重用单元的Panel组件。

简单,灵活,可本地化的表单验证

在Wicket中编写和使用验证器是微不足道的。定制和本地化验证错误消息的显示和内容也非常容易。

类型安全会话

Wicket无需手动管理HttpSession属性。页面和组件对象透明地存储在会话中,您的应用程序也可以创建具有类型安全属性的自定义会话子类。存储在会话中的所有对象都可以自动参与群集复制。

工厂可自定义

Wicket非常易于扩展。大多数操作都可以通过工厂或工厂方法进行定制。

可拆卸型号

Wicket中的模型对象在集群中的内存和网络使用方面可以非常轻量级。使用模型时,它可以“附加”,使用来自持久存储的信息填充自身。当模型不再使用时,可以重置瞬态信息,从而减小对象的大小。

边框组件

Wicket Border组件可以以可重复使用的方式装饰页面。这对于继承常见的导航结构或布局特别有用。

支持所有基本HTML功能

Wicket支持您在Web应用程序开发中习惯使用的图像标记,链接,表单和其他所有内容。

属性的程序化操作

Wicket Components可以通过编程方式更改任何HTML标记属性。

自动转化

表格验证后,可以使用Wicket转换器更新模型。大多数普通转换都是内置的,很容易编写新的转换器。

动态图片

Wicket使图像的使用,共享和生成变得非常容易。只需实现绘制方法即可创建动态图像。

Pageable ListView

Wicket中的ListViews非常强大。您可以在ListView行中嵌套任何类型的组件,甚至是其他ListView。 PageableListView支持大型列表的导航链接。

树组件

用于导航和选择节点的开箱即用树组件。

<强>本地化

HTML页面,图像和资源字符串都可以进行本地化。

答案 2 :(得分:11)

Spring不仅仅是Spring MVC。您可以(也可能应该)使用Spring Wicket。

答案 3 :(得分:11)

Wicket摇滚!

Spring(UI的一部分被称为Spring MVC)似乎只是一个巨型的“做一切,包括厨房水槽”,这种类型的框架让我在开始评估Spring时显得庞大而笨重(和Spring MVC)。今天春天我似乎并不专注于任何一件事。最初我认为它只是一个依赖注入框架,但它迅速发展到试图成为所有人的所有东西,简单性就失去了。

我在Spring上阅读的书中包含了太多XML配置的示例。调试和修复XML配置文件中的错误要比使用调试器单步完成的java代码中的错误要困难得多。

用Java代码而不是XML来声明内容有什么问题?从那时起,有人宣布所有事情都应该用XML声明。如果您喜欢在复杂的XML配置文件中游泳,那么请使用Spring。如果你喜欢完成工作并提高工作效率,那就去Wicket吧。

Wicket非常专注于成为用于Web应用程序开发的最佳基于Java的UI框架。它不会试图锁定任何特定的依赖注入框架或任何特定的持久性框架(使用它与JDO / JPA,DataNucleus,Hibernate,等等)。

它的重点显然是在UI上,但您可以使用任何您喜欢的依赖注入框架(您不必使用Spring的DI,但如果您愿意,可以使用它)。我们甚至使用自己的DI(http://www.expojo.com)与Wicket,一切都很时髦。

答案 4 :(得分:9)

Spring比Wicket更全面。

Wicket是一个Java Web UI框架。 Spring也有一个,以及持久性,远程处理,安全性,消息传递等模块。

Spring建立在依赖注入和AOP之上。 Wicket既没有。

我没有使用它,但它应该很简单。我不能说Spring是更容易还是更难。

除了Web应用程序之外,您还可以在很多情况下使用Spring。

答案 5 :(得分:6)

您可以在Wicket In Action的免费第一章中了解使用Wicket的优势:http://www.manning.com/dashorst/

简而言之,当您正在开发的应用程序相对复杂,您希望它可维护,能够扩展团队并利用重用时,Wicket是一个很好的框架。面向对象编程被证明是编程UI的一个非常有用的范例,但遗憾的是,大多数用于开发Web应用程序的Java框架,包括Spring MVC,只支持一个非常程序化的编程模型,在这个模型中,他们标记了MVC一词,使其听起来很酷(但是实际上,由于它们支持的粒度是请求/响应往返而不是自包含的小部件,因此MVC确实具有误导性。)

Spring的DI部分很棒,你可以轻松地与Wicket一起使用。

答案 6 :(得分:4)

我同意目前提供的答案。未提及的是以下几点,这是Wicket关注Java代码的Web应用程序开发方法的结果: -

  • Wicket开发不涉及编写JSP。
  • 可以开发AJAX组件而无需编写Javascript。

我没有遇到过采用这种以Java为中心的方法的任何其他框架。我使用的所有其他人(Struts,Spring)都涉及JSP开发。

对我而言,Wicket的一大优势是关注Java,以及Eclipse等丰富的开发环境工具的可用性。此外,业务逻辑与应用程序的表示方面非常清晰地分离。

答案 7 :(得分:3)

我喜欢Wicket的一些优点:

  1. 简单 - 如果你来自Swing学校,学习曲线很小。
  2. 清除分离关注点 - 网页设计师不需要了解代码。
  3. 易于部署。

    Here is my blog to show hello world codes in Wicket

答案 8 :(得分:3)

Spring仅在页面级别为您提供MVC设计模式 - 确实是非常粗略的粒度级别。相比之下,Wicket为您提供了单个组件级别的MVC设计模式(就像Swing为胖客户端编程提供的那样)。使用Spring MVC,所有表单的数据对整个前端servlet都是全局的,因此没有太多机会进行信息隐藏,松散耦合或紧密内聚。使用Wicket,您的显示逻辑可以更加模块化 - 组件A管理的数据无需对componentB的代码可见。

较小的粒度级别使得在多个不同的网页甚至跨Web应用程序中重用显示代码变得更加容易。

此外,由于组件配置是用Java而不是XML完成的,因此可以在运行时动态配置它们,从而提供更大的功能和灵活性(与ASP等大多数其他面向组件的框架形成对比) .NET Web窗体或Java Server Faces)。

答案 9 :(得分:1)

Wicket相对于其他流行的Java Web框架的另一个优势是它允许您创建模块化和可扩展的Web应用程序。当您设计基于Web的产品时,这非常有用,您打算通过在部署时以插件的形式添加额外的功能和页面来扩展它,并消除对产品的核心功能/来源的影响。这是一篇非常好的文章。

http://www.infoq.com/articles/modular-wicket