本来是在新闻里的,不过觉得那里不合适讨论这种问题,所以另外开了一个新的帖子
greateWei说
wicket确实不错,基本上和桌面开发思想类似,一些常用的控件如Label、Tabbed Panel、Text、DateTime、Tree、Grid等上手使用非常方便,你可以做公用的panel,tree等,然后在多个页面中使用。
另外一个就是ajax支持对开发使用人员基本上是透明的,封装做的相当不错。
我觉得一般来说,wicket适合用于开发交互性比较强,用户操作比较复杂的应用管理类web应用,对于一般大流量、浏览性web网站不一定适合,主要原因wicket所有的状态采用session机制来保存管理,每个页面的状态也是保存在服务器端,这样一旦用户访问人数非常多的话,对服务器端压力非常大,特别是内存要求很高。
之前做了一个简单的外卖订餐网站(http://www.517wm.com),发现并发访问人数超过1500人左右时,经常性会发生内存溢出(tomcat 分配了 1G 内存,计算机内存是5G,使用普通PC机做服务器),要解决这个问题,估计只有通过tomcat集群或者一些其他jvm内存集群方案才能解决。
wl95421说
Wicket的性能并不差,给大家做个简单的分析,一般的页面,如果是用LoadModel,大概序列化后只占5-10K,每个Session中默认是放置5个页面,假设再开大一些,放置10页,也就是说对于每个Session来说,Wicket只占用100K左右的内存。
对于1500人的访问,即1500X100K,那么只占用150M内存,这个占用绝对不算大。
只不过对于大部分人来说,并不习惯使用LoadModel,所以将Model也Cache在Session中了,如果是列表数据,自然就大了很多,比如说一个25条数据的列表页面,序列化后肯定不是10K,至少也是个40K,搞不好100K,就算默认是5个页面,也要占用500K内存,1500个上来,就是750M,肯定完蛋。
所以如果出现这种情况,应该看LoadModel,而不是默认的Model。
另外如果情况不严重,可以考虑使用DiskSessionStore,性能也还不错。
再加一句,并不是所有的东西都需要放到Session中
多用一下StatelessForm,会发现对于互联网来说,这种更合适。
greateWei说
to wl95421
去年年底也是看了你写的wicket用户手册入门的,之前还不了解wicket是干什么用呢,
之前确实没有使用LoadModel模式,主要是编码工作量问题吧,网站上线试用了一段时间后,随着资料增加和访问人数增加,内存溢出越来越频繁,后来基本上设计到大数据量列表的全部使用了LoadModel模式,不过内存问题还是存在的。
有几次,网站中一些搜索引擎爬虫收录时,并发数上去后,偶尔还是会发生内存溢出问题,我查看了硬盘中的session文件,发现大小基本上在300k左右,应该属于正常范围。
解决办法倒不是没有:
1.增加内存容量;不过tomcat在windows下似乎最大只能分配1G内存,linux应该没这个限制;
2.Terracotta也是一个选项;
3.session序列化机制改良,曾有人提出使用mem cache来实现;我现在使用的是默认session保存机制;
使用wicket一段时间,总的印象还是不错的。
原先主要做桌面应用软件开发的,发现切换到web开发挺自然的。ajax开发应用实在是方便,struts2虽然也有,当时看了基本上放弃使用struts2,主要是本人之前没有ajax开发调试经验;web部分代码重用非常方便,使用panel可以为你节省很多重复代码。
如果使用java开发web应用管理类网站,有频繁交互,需要有良好的用户体验,我觉得wicket、tapestry、GWT三个框架是首选,三个框架都有异曲同工之妙。
分享到:
相关推荐
Wicket使用HTML作为页面模板,开发者可以在HTML中直接嵌入Java代码,创建动态的Web页面。每个HTML文件都可以对应一个或多个页面类,页面类负责处理页面的行为和逻辑。 **五、状态管理** Wicket是一个无状态的框架,...
本开发指南将带你深入了解Wicket的核心概念、架构以及如何有效地使用它进行开发。 ### 1. Wicket简介 Wicket 的核心理念是组件化,它将HTML页面与Java对象紧密关联,每个HTML元素都有对应的Java对象,这种绑定使得...
### Wicket 开发指南知识点概览 #### 一、Wicket 框架介绍 - **框架起源与发展:** - Wicket 是一种基于 Java 的 Web 应用框架,最初由 Marc Guillemot 和 Eelco Hillenius 开发。 - 该框架首次公开发布是在 ...
**Wicket开发指南** Wicket框架是一个基于Java的开源Web应用程序框架,它的设计目标是提供一种简单、声明式和组件化的编程模型,让开发者能够更高效地构建动态、交互式的Web应用。Wicket的核心理念是将UI逻辑与HTML...
Wicket是一个开源的Java Web应用程序框架,它提供了一种组件化的开发方式,...通过阅读开发指南并亲手运行这些示例,你将能够深入理解Wicket的工作原理,熟练掌握其开发技巧,从而在实际项目中更高效地使用Wicket框架。
**2.2 使用Eclipse开发Wicket程序** - **安装Eclipse开发环境**:确保Eclipse环境中包含了必要的插件和支持。 - **配置Eclipse开发Wicket的环境**:设置项目依赖、构建路径等信息,确保开发环境正确无误。 #### 三...
### Wicket 1.4 开发手记:Hello World与环境配置 #### 一、引言 在《Wicket 1.4 开发手记》系列的第一篇文章中,作者Steel.Ma分享了他对Wicket框架的一些见解,特别是针对Wicket 1.4版本的入门级介绍。文章首先对...
3. **强类型**:Wicket使用Java的强大类型系统,这意味着开发者可以在编译时发现错误,而不是在运行时。 4. **分离关注点**:Wicket支持MVC模式,允许开发者清晰地分离业务逻辑、表示层和数据绑定。`Wicket开发指南...
24.使用Wicket和Spring测试驱动开发 24.1。配置运行时环境 24.2。配置基于JUnit的集成测试环境 24.3。摘要 25. Wicket最佳实践 25.1。正确封装组件 25.2。将模型和页面数据放在字段中 25.3。正确命名Wicket ID 25.4...
- **URL到页面映射(URL to Page Mapping)**:Wicket使用基于类的URL映射,使得URL更加语义化。 4. **开发流程** - **创建页面**:定义一个继承自`org.apache.wicket.Page`的类,并在其中添加组件。 - **组件...
2. **无状态服务器**:Wicket 应用服务器端无需维护页面状态,只需处理用户发送的请求,降低了服务器内存开销。 3. **可测试性**:由于业务逻辑与视图分离,Wicket 应用易于进行单元测试和集成测试。 4. **可扩展性*...