【问题标题】:Apache Wicket vs Apache Click阿帕奇检票与阿帕奇点击
【发布时间】:2010-01-30 14:50:15
【问题描述】:

Apache Wicket 和 Apache Click 有什么区别? Apache Click 是否维护?最新版本似乎来自 2008 年 11 月 谢谢 阿喀琉斯

【问题讨论】:

    标签: java wicket click-framework


    【解决方案1】:

    Click 正在积极开发中,最近已作为 Apache 顶级项目毕业。它目前正在迁移到其新域:http://click.apache.org。迁移完成后,将发布下一个版本 2.1.0。

    在比较 Click 和 Wicket 之前,请注意我是 Apache Click 的提交者,但几年前已经评估过 Wicket,因此对它的工作原理有相当好的了解。

    Click 是一个无状态框架,而 Wicket 是有状态的。在 Click 中,每个请求都会重新创建页面和组件,在 Wicket 中,页面和组件存储在会话中并在后续请求中重复使用。

    Wicket 用于构建复杂的应用程序(想想桌面),所有的 GUI 状态都为您存储和管理。 Click 适用于更传统的 Web 应用程序,其中几乎不需要状态来呈现页面。如果您需要存储状态,您必须通过在会话中添加/删除它来自己管理它。值得一提的是,Wicket 支持无状态页面,而 Click 支持有状态页面,但这并不是这些框架的标准。

    另一个区别是 Click 控件知道如何呈现自己,因此您不必在页面模板中重复标记。如果需要,您仍然可以手动布局模板,但这不是绝对必要的。在 Wicket 中,标记需要反映页面中创建的组件。 Wicket 中的想法是 Java 开发人员实际上并不创建或维护模板,而是由设计人员处理。

    亲切的问候

    鲍勃

    【讨论】:

    • +1:很好的平衡答案。他们都有长处,你很好地抓住了这一点。
    • Wicket 不一定是有状态的。默认情况下,您的 wicket Web 应用程序是无状态的,并且 wicket 仅在需要时才切换到有状态模式。只要您在网页上小心地仅使用无状态组件(例如 org.apache.wicket.markup.html.form.StatelessForm),您的应用程序将保持无状态。您还可以将 StatelessChecker 添加到您的应用程序以强制执行无状态。检查器将抛出一个关于有问题的有状态组件的异常,如果需要,请参阅我的另一篇文章如何设置它。
    【解决方案2】:

    使用 wicket,您可以使用纯 html,而不是像 click 那样的速度或 jsp 那样的模板语言。这不仅对只需要学习html和java的程序员本身很方便,而且对工具(调试等)也很方便

    它强制用户界面和逻辑更好的分离。 wicket 中也不需要 xml,恕我直言,点击不同。

    更多区别:wicket 的邮件列表流量更高; wicket 上有更多出版物(例如书籍),然后点击;有更多的开发人员编码检票口(看thisthis

    【讨论】:

    • 是的,Wicket 使用约 850.000 行代码构建,而 Click 仅包含约 50.000 行代码。这也应该说明复杂性。关于这个信息,点击要简单得多。
    【解决方案3】:

    Wicket 让您可以更灵活地撰写网页。您可以为整个应用程序创建由组件组成的单个页面,也可以根据需要创建多个页面。点击是基于页面的。 Wicket 支持开箱即用的 ajax。在浏览器不支持 ajax 的情况下,wicket 中的大多数 ajax 组件都会退回到正常的页面刷新。 Wicket 有几十个开箱即用的组件和几十个来自相关项目的其他组件。我在 wicket 中发现的一个很棒的功能是它的冗长。这意味着我的应用程序所做的一切都是我创建的。我用 html 和 css 编写了整个演示文稿,没有生成任何内容。从经验来看,缺乏魔法对我来说是一大优势。最后也是最不重要的是,许多大公司都在使用检票口。 Walmat mobile 和 wellsfargo mobile 使用检票口完成。

    【讨论】:

    • "这意味着我的应用程序所做的一切都是我创建的。"不,这意味着您在 html 中执行的所有操作都必须在检票口页面中执行。没有什么比找不到与给定组件相关联的 html 元素更令人沮丧的了,反之亦然。保持代码和标记同步是维护的噩梦。
    【解决方案4】:

    wicket 的最大缺点是它的状态性。单元测试和调试状态问题可能很困难。它的状态性意味着它使用更多的内存,并且可能会影响您的硬件预算。 wicket 的状态性质的副作用意味着它需要能够不时保存该状态。为此,您的所有对象都需要可序列化。

    我刚刚开始关注点击。我喜欢它的无国籍性质。网络是请求/回复,应该是无状态的(至少尽可能)。

    我也喜欢 click 与 apache cayanne 的完美集成。

    【讨论】:

    • 如果您需要状态,有状态的性质不再是缺点。
    • 我认为这并不总是正确的。小型 webapp 上的优秀开发人员可能不会在尝试在小型 webapp 中维护复杂状态时遇到很多问题。如果我要构建一个大型项目(10 多个开发人员),我肯定会倾向于无状态解决方案。构建、测试、调试和维护要容易得多。
    • 小心您可以使用 wicket 构建无状态 Web 应用程序。我用检票口写了一个无状态的网上商店。请参阅我的其他帖子如何强制执行无国籍状态。
    • 当您想以无状态方式使用 Wicket 时,它简直糟透了。真的很难调试,也很难维护 wicket 应用程序。在某些情况下,Wicket 的开发时间可能会少得多,但如果你遇到了错误……那就结束了。我会改为点击。如果你想处理状态,那么你可以使用一个简单的会话范围的 spring bean。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2021-02-15
    • 1970-01-01
    • 2018-07-09
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多