精华帖 (2) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-09
最后修改:2011-06-09
mlw2000 写道 skzr.org 写道 实际上你这个分析考察的不再是mvc的性能了,包括了后台的sql执行效率。
第一: 其实我的结论很简单: “对于一个普通的DELL PC服务器(1.6G hz cpu)来说,采用struts会额外消耗2.5ms的响应时间,采用spring会额外消耗1.5ms的响应时间”。 第二: 这样测试的结果可以作为我们系统技术选型的依据: 假如我们容许3%的性能损失,那么100毫秒以上的业务请求都可以随意使用MVC框架,剩余的关键请求可以采用servlet来处理。 第三: 单单就我测试的硬件环境来看,struts 吞吐量达到4000,spring达到6500;达到这个值的前提是“在action或者controller中几乎完全省略了业务逻辑”。考虑到在95%的情况下,系统的响应时间要求基本上都会超过100毫秒(对于10ms级的应用系统讨论就不需要讨论这个问题了),所以从这个意义上来说,我刚开始的测试可以说是是走入了一个误区,不过弄拙成巧,测试结果反过来从另一个角度解答了我们的疑问。 PS:对于关心servlet性能的同学,我也同期也测试了纯jsp+el表达式的实现,测试吞吐量在7000~8500之间漂移比较大,个人以我那台服务的硬件觉得8000已经是极限了,漂移也比较正常。 个人见解: 关键节点用servlet,其余完全可以MVC,至于选择哪个完全看爱好。 请问什么是关键节点?关键节点就没有业务逻辑了? |
|
返回顶楼 | |
发表时间:2011-06-10
最后修改:2011-06-10
最终抛弃struts2是因为使用struts1过来的,后来搞struts2,感觉很多东西都是多余的,再后来解除spring3 mvc就被其简单易用迷住了 套用一句话:谁用谁知道! struts1经历过7、8个大系统,struts2经历过2个大系统,spring3 mvc目前还没有。 感觉struts2比struts1设计好,不过却没有struts1易用阿,效率上也没有struts1好,很多时候struts2的哪些设计和考虑基本上在开发中都用不上。 后来RESTful和ajax后,spring3 mvc太棒了。 |
|
返回顶楼 | |
发表时间:2011-06-10
最后修改:2011-06-10
首先我承认struts2的性能肯定比不过spring(因为intercepter和prototype).
但是就我做的项目来说,没有一个项目会在mvc存在瓶颈 (如果在你的系统中 action 已经是最耗时的一层了 -.-!! 那就换用spring mvc/struts1/servlet吧)
struts2的设计非常好,最喜欢的是 intercepter,扩展性非常强,而且用起来也相当简单。struts2的配置也是亮点, 框架扩展性和易用性是我一直选择strurts2的最大的原因!
但是刚刚在看贴的时候,看到skzr.org老兄说spring3 mvc比strurts2还更好用?
印象中spring mvc的易用性大大落后于struts2,没有深入用过。 如果在性能、扩展性和易用性都非常好的,我可能会换spring3 mvc,也为了"spring生态"(一直认为"spring生态"中,mvc是最差的一环,所以没有用)
总之,先看看spring mvc再说吧.. 如果是真的话.... |
|
返回顶楼 | |
发表时间:2011-06-10
downpour 写道 lnaigg 写道 如果没有高并发的场景,MVC的性能对整个系统影响应该是比较小的。
随着并发量增长,MVC的效率要求会有所提高,但不会是重点。 个人认为,性能瓶颈有90%都出在持久层。 MVC的选型一般会从架构方面、团队认可度方面考虑,不会从性能方面考虑。 所以楼主的分析是完全正确的。 我不知道为什么大家一直在纠结一个MVC框架的性能而不是它的可用度?我们引入一个框架的最终目的是什么?牺牲了哪些又得到了哪些好处?先明确这个问题,再来考虑这些不搭边的因素。 非常赞同,一个项目成功与否,程序开发的过程占的时间比例不高。能否减少代码量、是否开发效率高、易维护、用了框架,能在规定期完成项目才是正常的目标。 再好的框架和程序,交付不了,没有客户,全是浮云! |
|
返回顶楼 | |
发表时间:2011-06-10
struts和页面绑定的太多了。
比如数据验证啊,ognl绑定啊。原来解决了很多问题。 但是现在不需要了,jquery,ajax这些东西的存在,比他更方便,效果更好。现在要求的controller仅仅是需要返回一个文件流而已(jsp/json/xml)! 当然,如果你的系统完全是增删改查之间的跳转,那struts2 实在是太方便了。 否则 绝对是spring mvc更好。 |
|
返回顶楼 | |
发表时间:2011-06-10
异常处理,权限验证,接口日志.......
intercepter真爽,粒度比filter小得多。 \("o")/ |
|
返回顶楼 | |
发表时间:2011-06-10
supben 写道 struts和页面绑定的太多了。
比如数据验证啊,ognl绑定啊。原来解决了很多问题。 但是现在不需要了,jquery,ajax这些东西的存在,比他更方便,效果更好。现在要求的controller仅仅是需要返回一个文件流而已(jsp/json/xml)! 当然,如果你的系统完全是增删改查之间的跳转,那struts2 实在是太方便了。 否则 绝对是spring mvc更好。 struts2扩展性非常好,你说的这些完全可以实现(一个result而以) 而且页面绑定也不是struts最大的亮点,个人一直觉得没大用处,页面有jquery |
|
返回顶楼 | |
发表时间:2011-06-10
result里面还支持freemarker呢,10几种!但是一般的项目用的着么?
我的意思就是struts太庞大了啊。 struts tag不用,model-driven不用,validation不用,试问这不就是spring mvc么? |
|
返回顶楼 | |
发表时间:2011-06-10
这就比如ext和jquery,你ext用就用他整个的。
如果你仅仅是1-2个页面需要那种效果,其他部分仍然是传统的。 那还是该用ext还是jquery呢。 |
|
返回顶楼 | |
发表时间:2011-06-10
最后修改:2011-06-10
supben 写道 result里面还支持freemarker呢,10几种!但是一般的项目用的着么?
我的意思就是struts太庞大了啊。 struts tag不用,model-driven不用,validation不用,试问这不就是spring mvc么? 就像spring被抱怨庞大一样,spring的发展注定会集成多的jee技术,一样有老多人在那抱怨什么越来越像ejb, 但是别人spring的模块层次清析,各个部分独立。 集成这么多东西只能说明设计合理扩展性好。 这个道理同样适用于struts2 (ps:反正struts tag不用,有jquery。 struts2 validation导是非常方便,另外 js在前端做了验证, 不是说服务器端就不用验证。 |
|
返回顶楼 | |