`
netfly
  • 浏览: 114605 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

web framework选型的困惑

    博客分类:
  • web
阅读更多
困惑的来由:
一直在用struts开发,虽然对struts进行了封装和改进,并使用其动态formbean,但是,还是有狂多的配置文件,狂多的jsp,狂多的action,太多的机械性重复,页面不可以复用,action也不可以复用,我受够了。
以前在C/S结构里,一个界面可以完成许多按钮动作,但是现在,却不得不一个按钮对应一个动作、一个界面,真是折腾人。

所以,我决定做出改变,从而提出理想的web framework的两个基本标准:
其一:组件化,能抽象出几个form,比如单记录form,主从记录form,查询form等
其二:异步处理,天然的异步交换,拒绝不停的刷新页面。

按第一个标准,就只有jsf和Tapestry可以选择,按第二个标准,就没有了。

后来考虑用dwr+qooxdoo+freemark,但是去网上一搜,发现大家都用得灰心丧气的,不但没有减轻开发,反而增加了很多麻烦。听说gwt不错,一看到它是从服务器端生成js代码,类似RPC之类的调用,我就没兴趣了。

想来想去,又回到mvc,在struts 2和webwork之间逗来逗去,struts 2要实现0配置还需要一段时间,要实现类似jsf和Tapestry那种组件化的计划都没有。

唉,我都不知道该如何办才好。
分享到:
评论
19 楼 apple 2007-01-05  
按照楼主的标准,ZK是个好东西。ZK是一个新型的AJAX框架,建议楼主看下。
18 楼 flyingbug 2007-01-05  
根据楼主的标准
Wicket和Echo2是首选
有钱就用Echo2,没钱就用Wicket
17 楼 netfly 2007-01-05  
引用
gwt中对ajax做了封装,整体思路是非常好的,但是开发工具好像还没有开源,并且界面是生成的,而不是原生的html,从这点来说,选择gwt后将使项目的风险增大(大家肯定还对维护拼sql的程序记忆尤新)。

我对这个也是非常担心的,一个不受掌控的html和js,想要达到自己的效果和再进一步的封装,有点不太可能。
16 楼 wl95421 2007-01-05  
我是《Wicket开发指南》的作者
这本书的确不是官方的文档
而官方的Wicket In Action还遥遥无期,等的我都心烦了

Wicket最大的好处在于学习曲线和接口抽象的比较好
象Session数据的存放,完全可以实现自己的ISessionStore,将它写入文件或者放入数据库,性能容易调整。

另外一点,就是它对权限的支持比较好,很容易控制到权限点,即一个Html元素是否可见(如文本框,操作按钮等),对于JSP,就只能用标签或者其它的方法,相对而言,如果有复杂的权限处理,Wicket有一定的优势。

GWT和JSF没有研究过,不说什么。
但是如果你要选择Tapestry,建议你多多考虑,学习曲线确实比较高。
如果项目紧张的话,还是用Struts吧,至少有熟手。
15 楼 kdekid 2007-01-05  
<blockquote><strong>kenken0y </strong>写到:<br/>
gwt中对ajax做了封装,整体思路是非常好的,但是开发工具好像还没有开源,并且界面是生成的,而不是原生的html,从这点来说,选择gwt后将使项目的风险增大(大家肯定还对维护拼sql的程序记忆尤新)。<br/>
</blockquote>GWT 包括编译器在内,现在已经开源 (Apache License 2.0)。不过由于编译(java-&gt;javascript)器这种东西实在复杂,如果不熟悉的话,的确有点不靠谱。<blockquote> </blockquote>
14 楼 kenken0y 2007-01-05  
引用

引用
Wicket是什么?简单点说,它就是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry相类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发方式与C/S相似),更加易于调试(错误类型比较少容易,而且容易定位)。如果你不对微软并不反感,可以把它看作Java平台上的ASP.NET。

这是Wicket开发指南上的原话,我知道Tapestry与JSF、ASP.NET类似,都是基于服务器组件式的开发,Wicket是不是也和Tapestry、jsf一样?能符合我的第二个标准吗?如果不是天然异步交互的,那我还不于选jsf,毕竟它是j2ee的标准。

第二个标准必须用ajax来实现,单纯从ajax来说,dwr是不二选择,特别是2.0中的反转ajax,可以实现服务器对客户短的主动通信.并且也可以用java来操作html的内容。但是dwr本身并不提供界面组件,还要结合dojo或者yui才能做好web层。这也是可选方案之一。
gwt中对ajax做了封装,整体思路是非常好的,但是开发工具好像还没有开源,并且界面是生成的,而不是原生的html,从这点来说,选择gwt后将使项目的风险增大(大家肯定还对维护拼sql的程序记忆尤新)。
wicket很类似Tapestry,同时又利用了echo的优点,在复杂性和易用性之间的平衡做得比较好,用其ajax组件可以做到不刷屏。"Wicket开发指南"并不是wicket的官方文档,如果想更好的了解wicket,可以下载一个,试一试,然后看看官方网站怎么介绍wicket的用法的。
wicket有很多ajax组件,自带的就能满足一般开发的需要,还有很多组织专门提供组件(http://www.wicket-library.com),并且自己开发一个组件也是比较容易的。
erp中经常要使用的模态窗口在wicket自带的组件中就提供了。
有其他项目在wicket的基础上对快速开发提供了支持,
引用
DataBinder 是一个将Hibernate 整合到Wicket 中的一个扩展功能,对于那些以数据驱
动为开发目的的Web 程序,它是不二之选。


关于各种web框架的比较,javaeye有一篇相当专业的文章
[url]http://www.iteye.com/article/21326 [/url]。wicket在其中得分并不高,但是就企业应用开发来说,还是比较好的选择。摘录如下:
引用

从严格意义上来说,比起Taglib, Tapestry来说, 只有Wicket, Echo这样的框架才是真正意义上的组件框架。而且,Wicket相对于Echo的优势如此明显,这里就不多说了。不然就跑题了。总之,Wicket是一个非常值得关注的框架。

13 楼 redsox 2007-01-04  
gwt把javascript掩藏起来了,如果需要修改的时候会不会限制比较多啊?
12 楼 netfly 2007-01-04  
谢谢各位的指点,
在struts2和webwork之间徘徊,是下下之策,如果没有其他可用的话。
struts2与webwork差别是不大,几乎是照抄,但是学习struts2,先搞清楚webwork是上上之策。

商业软件我不会考虑,毕竟在java开放平台上,能看到source code才能了如指掌,对其利弊能进行修正和扩展。

gwt看来是我的最佳选择了。组件式开发,天生异步交互,再好不过了。
11 楼 ahuaxuan 2007-01-04  
以前看到文档说jsf是java平台上的asp.net,但是我觉得不象,那么多tag,用起来真的不怎么爽,相比之下,wicket确实更接近asp.net。
我看到lz说在struts2和webwork之间徘徊,但是从我看的struts2文档看来,他和webwork2的区别好像不是很大啊,就是改装过的webwork2而已。
gwt现在开源了,而且eclipse对应的插件也出来了,很看好gwt
10 楼 dada 2007-01-04  
netfly 写道
dorado=struts+ajax?在技术上本来就不是很先进,而且不开源,绑定到dorado后就无翻身之日了,只能跟着dorado走。
而且一个简单的struts+ajax,被dorado搞得狂大了,40多M。


我觉得你应该首先试用一下,dorado和struts没有什么关系。
技术上确实没有什么值得夸耀的地方,但是他作了一揽子的解决方案,对于开发的速度和复杂界面的开发很有帮助。至于商业上的东西就不做评价了。
ps : dorado的表的渲染速度是我见过所有实现中最快的,而且有不少有意思的思路,哪怕不用试一下对开拓思路也有好处。
9 楼 netfly 2007-01-04  
dorado=struts+ajax?在技术上本来就不是很先进,而且不开源,绑定到dorado后就无翻身之日了,只能跟着dorado走。
而且一个简单的struts+ajax,被dorado搞得狂大了,40多M。
8 楼 dada 2007-01-04  
netfly 写道

Wicket是什么?简单点说,它就是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry相类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发方式与C/S相似),更加易于调试(错误类型比较少容易,而且容易定位)。如果你不对微软并不反感,可以把它看作Java平台上的ASP.NET。

这是Wicket开发指南上的原话,我知道Tapestry与JSF类似,都是基于服务器组件式的开发,Wicket是不是也和Tapestry、jsf一样?能符合我的第二个标准吗?

不考虑dorado吗?我觉得完全符合你的需求,如果说缺点的话就是非开源。
7 楼 netfly 2007-01-04  
引用
Wicket是什么?简单点说,它就是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry相类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发方式与C/S相似),更加易于调试(错误类型比较少容易,而且容易定位)。如果你不对微软并不反感,可以把它看作Java平台上的ASP.NET。


这是Wicket开发指南上的原话,我知道Tapestry与JSF、ASP.NET类似,都是基于服务器组件式的开发,Wicket是不是也和Tapestry、jsf一样?能符合我的第二个标准吗?如果不是天然异步交互的,那我还不于选jsf,毕竟它是j2ee的标准。
6 楼 cxd110 2007-01-04  
kenken0y 写道
wicket比较适合
1.开源,并且比较活跃,开发者很勤奋
2.组件式,带有强烈的c/s结构的ui,有表格和树形控件,界面内容和对事件的响应用java实现,避免js的泛滥
3.界面的显示用纯html(仅仅添加了一个wicket:id,还算能接受),便于美工介入,同时多语言问题也较好解决了
4.在服务器端维护session的状态,适合解决用户交互复杂的情况。
5.支持ajax,适合第二项标准,并且不用编写javascript
6.适合企业应用的开发。企业应用的特点是session数不大,但是每个session的操作很频繁。所以把session保存在服务器端也是可以接受的(任何web架构都需要保存session的状态,只是保存的内容多少有差异,wicket保存的比较多)。

支持wicket,
wicket的session可以通过实现sessionstore来实现把session信息存储到数据库,文件等等其他地方,目前只实现了内存存储。
5 楼 kenken0y 2007-01-04  
wicket比较适合
1.开源,并且比较活跃,开发者很勤奋
2.组件式,带有强烈的c/s结构的ui,有表格和树形控件,界面内容和对事件的响应用java实现,避免js的泛滥
3.界面的显示用纯html(仅仅添加了一个wicket:id,还算能接受),便于美工介入,同时多语言问题也较好解决了
4.在服务器端维护session的状态,适合解决用户交互复杂的情况。
5.支持ajax,适合第二项标准,并且不用编写javascript
6.适合企业应用的开发。企业应用的特点是session数不大,但是每个session的操作很频繁。所以把session保存在服务器端也是可以接受的(任何web架构都需要保存session的状态,只是保存的内容多少有差异,wicket保存的比较多)。
4 楼 kdekid 2007-01-03  
netfly 写道
谢谢kdekid指点,看来我对gwt误会太深了,我还以为是又一个dwr呢,不过还是有些问题要请教:
第一:不知道用gwt开发erp之类的管理系统,有没有人实践过,毕竟我们开发gmail和gmap的机会很小的,大部分应用还是企业管理系统。
第二:我以前开发过swing,知道那里面的组件封装得还不错,不知道gwt能否使用已存在的ajax框架,比如qooxdoo等,如果不支持,gwt能否让我很好的扩展?

不敢说指点,大家一起探讨吧。

gwt 诞生不过一年稍多的时间,个人觉得实际上算不上一个非常成熟的项目,论程度来说绝对比不上 struts, webwork 这些应用广泛的 framework。但我觉得 gwt 有几点优势:
  1. 类似桌面应用程序的开发方式。gwt 可以像 swing/swt 一样构造 web 图形界面。
  2. 可调试性。通过 hosted mode,可以调试客户端程序。
  3. 可扩展性。可以通过扩展 Widget 编写自己的组件,也可以通过 native 接口(javascript 接口)直接用 javascript 扩展 gwt 应用程序。
  4. 友好的许可协议。现在 gwt 是用 apache license 2.0 来发布的。
  5. 活跃的社区和开发人员。


不过相对来说,它也有以下的劣势:
  1. 暂时还不太稳定,在它的 google groups 和 issue tracker 里面可以看到还是有比较严重的 bug 的。
  2. 暂时还缺少友好的 ide 整合软件。
  3. 不提供静态页面的功能,可能需要整合其它 framework 一齐使用。
  4. 界面风格目前还相当单一


以上是个人意见,仅供参考。
3 楼 dada 2007-01-03  
dorado,我不是广告...
2 楼 netfly 2007-01-03  
kdekid 写道
针对你的第二点,目前来说应该只有 ajax 能符合你的需求吧?

gwt 并不是“服务器端生成js代码”,而是 gwt 带有编译工具,把你的 java 程序(其实是符合java的一个子集的程序)编译成 javascript,然后纯粹在客户端执行。gwt 有两种运行方式,一是 hosted 方式,这是用 java 模拟运行,可以逐行调试;一是 compiled 方式,这是用 gwt 的编译器把 java 翻译成 javascript,是实际运行在浏览器上的代码。与服务器的通讯是通过 xmlhttp 实现的。

我觉得 gwt 是在浏览器上实现 (semi)richclient 的理想方式。

有时候不能不感叹 google 想象力丰富。


谢谢kdekid指点,看来我对gwt误会太深了,我还以为是又一个dwr呢,不过还是有些问题要请教:
第一:不知道用gwt开发erp之类的管理系统,有没有人实践过,毕竟我们开发gmail和gmap的机会很小的,大部分应用还是企业管理系统。
第二:我以前开发过swing,知道那里面的组件封装得还不错,不知道gwt能否使用已存在的ajax框架,比如qooxdoo等,如果不支持,gwt能否让我很好的扩展?
1 楼 kdekid 2007-01-03  
针对你的第二点,目前来说应该只有 ajax 能符合你的需求吧?

gwt 并不是“服务器端生成js代码”,而是 gwt 带有编译工具,把你的 java 程序(其实是符合java的一个子集的程序)编译成 javascript,然后纯粹在客户端执行。gwt 有两种运行方式,一是 hosted 方式,这是用 java 模拟运行,可以逐行调试;一是 compiled 方式,这是用 gwt 的编译器把 java 翻译成 javascript,是实际运行在浏览器上的代码。与服务器的通讯是通过 xmlhttp 实现的。

我觉得 gwt 是在浏览器上实现 (semi)richclient 的理想方式。

有时候不能不感叹 google 想象力丰富。

相关推荐

    webframework

    在IT领域,"Web框架"(Web Framework)是开发者用于构建Web应用程序的一种软件框架。它提供了一种结构化的、高效的方式来组织和编写代码,以简化Web应用的开发过程。Web框架通常包括一系列工具、库和约定,能够帮助...

    Web Framework

    web framework, 网页设计, 网站建设,网络架构

    Extensible web attack framework

    乌云内部渗透测试工具Extensible web attack framework

    WebNMS FRAMEWORK 4.7-5.2补丁

    WebNMS Framework是一款强大的网络管理软件开发框架,主要用于构建企业级的网络监控和管理系统。它由AdventNet公司(现为Zoho Corporation的一部分)开发,提供了丰富的API和工具,使得开发者能够快速创建针对各种...

    Entity Framework 4.0 and Web Forms

    Entity Framework 4.0和*** Web Forms是微软公司推出的用于构建Web应用程序的技术,这本书主要讲述了如何使用Entity Framework 4.0在*** Web Forms应用程序中实现数据的显示和编辑。 Entity Framework是微软的.NET...

    org.springframework.web.jar

    在Java的Web开发领域,Spring框架是不可或缺的重要工具,其中`org.springframework.web.jar`文件是Spring框架的核心组成部分,主要用于处理Web应用程序的相关功能。这个JAR(Java Archive)文件包含了Spring Web模块...

    ExpressWeb Framework 1.6.1 <img src="/images/sunny.gif" alig

    《ExpressWeb Framework 1.6.1:构建高效网络应用的基石》 ExpressWeb Framework 1.6.1 是一款专为开发人员设计的高效、轻量级的Web应用程序框架,它提供了强大的功能和易用性,使得构建复杂的网络应用程序变得更为...

    web framework desc

    web framework desc, spring & spring MVC & hibernate & mybatis

    org.springframework.web的jar包.zip

    在本篇文章中,我们将深入探讨`org.springframework.web`包中的关键概念,特别是`ServerEndpointExporter`类在WebSocket服务器端点中的作用。 首先,让我们了解`org.springframework.web`包的基本构成。这个包主要...

    seven web framework in seven weeks

    Whether you need a new tool or just inspiration, Seven Web Frameworks in Seven Weeks explores modern options,...Seven Web Frameworks will influence your work, no matter which framework you currently use.

    基于.net Framework471搭建的WebAPI简单框架配套demo

    通过带着读者手写WebApi框架,了解 WebApi核心原理。在过程中会摘取整体框架中的核心逻辑,简化代码实现过程,了解Autofac+SQLSugar+Swagger-UI+EF的魅力所在,让读者爱上.net的框架。进而对.net的DDD设计模式有想更...

    Uliweb 快速易用的Python Web Framework

    Uliweb 快速易用的Python Web Framework

    autotest.web.framework-1.0.1-20160105

    autotest.web.framework-1.0.1-20160105

    phoenix.webui.framework, 基于WebDriver的WebUI自动化测试框架.zip

    "phoenix.webui.framework"是一个基于WebDriver的Web用户界面(WebUI)自动化测试框架,它为开发者和测试工程师提供了一套高效、稳定的自动化测试解决方案。这个框架的核心是使用WebDriver,这是一个跨浏览器的测试...

    autotest.web.framework-1.0.1-20160114

    autotest.web.framework-1.0.1-20160114

    spring-web-2.5.jar

    META-INF/MANIFEST.MF META-INF/license.txt org.springframework.remoting.caucho.BurlapClientInterceptor.class org.springframework....org/springframework/web/util/HtmlCharacterEntityReferences.properties

    A Simple Web Framework Extension For ThinkPHP With Workerman

    A Simple Web Framework Extension For ThinkPHP With Workerman

    开源项目-smallnest-go-web-framework-benchmark.zip

    在这个背景下,开源项目"smallnest-go-web-framework-benchmark"应运而生,它提供了一个对Go语言Web框架进行基准测试的工具集,旨在帮助开发者更好地了解各个框架的性能表现。 "smallnest-go-web-framework-...

    org.springframework.web.struts-3.1.0.M2.jar

    《Spring与Struts整合——基于org.springframework.web.struts-3.1.0.M2.jar的实践探索》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,以及丰富的模块支持,成为了广大开发者青睐的框架...

Global site tag (gtag.js) - Google Analytics