我不是Java开发人员,所以我可能会出错一些条款......但是.
我整合的应用程序正从Spring迁移到Wicket.虽然它不应该影响我与它的整合,但我想知道为什么他们会这样做?
据我所知,Spring是更受欢迎的框架.我对此一无所知,除了它很受欢迎.我确实阅读了Wicket页面,Wicket看起来非常简单明了.
Wicket有哪些优势?
在我看来,改变你的整个框架将是一些工作,所以我想知道Wicket是否提供Spring没有的东西?
我经常在圈子里吹捧的优点是:
你的html可以完全符合xhtml - 有很好的表达和逻辑分离,你的presentation/html层需要知道的关于wicket的唯一东西是标准html标签中的wicketid属性.这对于团队中的html/css/javascript客户端人员来说非常棒,他们几乎没有实际的java工作.没有其他基于Java的Web框架可以声明这一点,afaik.
没有特定于wicket的xml配置 - 一切都可以在源代码中完成,并且很少需要对.war的标准web.xml进行
基于组件的开发非常容易理解 - 特别是如果你有非web背景(例如,摇摆程序员).它鼓励重复使用比mvc更多,imo.
以下是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中编写和使用验证器是微不足道的.定制和本地化验证错误消息的显示和内容也非常容易.
Typesafe会话
Wicket无需手动管理HttpSession属性.页面和组件对象透明地存储在会话中,您的应用程序也可以创建具有类型安全属性的自定义会话子类.存储在会话中的所有对象都可以自动参与群集复制.
工厂可定制
Wicket非常易于扩展.大多数操作都可以通过工厂或工厂方法进行定制.
可拆卸型号
Wicket中的模型对象在集群中的内存和网络使用方面可以非常轻量级.使用模型时,它可以"附加",使用来自持久存储的信息填充自身.当模型不再使用时,可以重置瞬态信息,从而减小对象的大小.
边框组件
Wicket Border组件可以以可重复使用的方式装饰页面.这对于继承常见的导航结构或布局特别有用.
支持所有基本HTML功能
Wicket支持您在Web应用程序开发中习惯使用的图像标记,链接,表单和其他所有内容.
属性的程序化操作
Wicket组件可以以编程方式更改任何HTML标记属性.
自动转换
表格验证后,可以使用Wicket转换器更新模型.大多数普通转换都是内置的,很容易编写新的转换器.
动态图像
Wicket使图像的使用,共享和生成变得非常容易.只需实现绘制方法即可创建动态图像.
可分页ListView
Wicket中的ListViews非常强大.您可以在ListView行中嵌套任何类型的组件,甚至是其他ListView.PageableListView支持大型列表的导航链接.
树组件
开箱即用的树组件,用于导航和选择节点.
本土化
HTML页面,图像和资源字符串都可以进行本地化.
Spring不仅仅是Spring MVC.你可以(也可能应该)使用Spring 和 Wicket.
Wicket岩石!
Spring (the UI part of which is called Spring MVC) just seems to be a mega, 'do everything, including the kitchen sink', type of framework which made it appear huge and unwieldy to me when I started to evaluate Spring (and Spring MVC). Today Spring doesn't seem to me to be focussed on any one thing. Originally I think it was simply a dependency injection framework but it quickly grew to try to be all things to all people and the simplicity was lost.
The books I read on Spring had examples that contained way too much XML config. Errors in XML config files are a lot harder to debug and fix than errors in java code which you can single step through with your debugger.
What's wrong with declaring stuff in Java code instead of XML anyway? Since when did someone decree that everything should be declared in XML anyway. If you like swimming in a sea of complex XML config files then go with Spring. If you like getting work done and being productive then go with Wicket.
Wicket is very focussed on being the best Java based UI framework for web app development. It doesn't try to lock you into any particular dependency injection framework or any particular persistence framework (use it with JDO/JPA, DataNucleus, Hibernate, whatever).
It's focus is clearly on UI but you can use any dependency injection framework you like (you don't have to use Spring's DI with it but you can if you want). We even use our own DI (http://www.expojo.com) with Wicket and all is funky.
春天比Wicket更全面.
Wicket是一个Java Web UI框架.Spring也有一个,以及用于持久性,远程处理,安全性,消息传递等的模块.
Spring建立在依赖注入和AOP之上.Wicket既没有.
我没有用它,但它应该很简单.我不能说Spring是更容易还是更难.
除了Web应用程序之外,您还可以在很多情况下使用Spring.
您可以在Wicket In Action的免费第一章中了解使用Wicket的优势:http://www.manning.com/dashorst/
简而言之,当您正在开发的应用程序相对复杂,您希望它可维护,能够扩展团队并利用重用时,Wicket是一个很好的框架.面向对象编程被证明是编程UI的一个非常有用的范例,但遗憾的是,大多数用于开发Web应用程序的Java框架,包括Spring MVC,只支持一个非常程序化的编程模型,在这个模型中,他们用MVC标记术语以使其听起来很酷(但是实际上,由于它们支持的粒度是请求/响应往返而不是自包含的小部件,因此MVC确实具有误导性.
Spring的DI部分很棒,你可以轻松地与Wicket一起使用.