浏览 5968 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2005-08-09
经过这段时间的努力,Jacker已基本成型。 演示可访问: http://jacker.oicp.net/jacker 技术框架图 图(一)描述了jacker对开发的分层和每层使用到的技术 web层mvc使用webwork,动态页面使用eastm简单模版,浏览器层也使用了xmlhttp技术; 业务层调用通过jservice进行解耦,业务层容器这里使用了spring,o/r可选择Hibernate等。 其中eastm,jservice是jacker同时维护的两个子项目. jacker框架的一些特点: .xmlhttp 论坛上的一些观点让我深受启发 buaawhl: 关于Ajax(XMLHttp);,我的意见是必要时才用,而且最好采用粗粒度的用法 -- JavaScript发出一个URL请求,返回一整段HTML,直接替换到页面的某一块,而不是用JavaScript来做这样的把数据填充到HTML DOM中。如果你直接在浏览器里面输入那个URL,也可以获取那整段的HTML内容... 关于HTTP Get和Post,我表述一下自己的看法。 我认为,Web的精髓在于Get,而不是Post,在于获取服务器的输出,而不是输入到服务器。即,Web的精髓在于以小搏大,四两拨千斤。最经典的用法就是用一个URL,获取一个长篇的文本内容,这个内容里面充满了其他更多的资源连接。这也是超文本连接HTML发明的初衷。 至于HTTP Post,则是这上面的一个扩展。B/S结构如此流行,很多应用都要转移到Web上面,怎么办,应用总是交互的,总要让用户输入数据吧,就增加了HTTP Post协议。 HTTP Get经典、简单、有效。可以用丰富的URI定义把这个优势发挥到极致。这个实现也比较简单、优雅。就不多说了。主要的难点在于HTTP Post。下面的讨论主要应对“HTTP Post”这个复杂现象。HTTP Post从来就不让人们满意。当输入逻辑复杂到一定程度,表单数据的繁杂、凌乱、散落,到了服务器端很难组织起来。输入方面B/S结构确实和C/S结构难以匹敌。于是,出现了XMLHttp... moxie: 表单数据通过XMLHTTP生成了一个完整的xml文件,传递到后台的Action。我们做了一个xml数据的Interceptor,将xml数据自动设置到Action的属性中... xmlhttp的一个主要的优点就是它能和服务器端进行独立的交互而不切换当前页面,不像form那样提交后就要forward到下一个页面的。 jacker采用了xmlhttp,开发出的界面交互性也因此增强不少。不过jacker仍不是一门rich client技术,动态页面的生成仍然是传统的方式,也就是url的get,而xmlhttp主要用来post表单数据,获取返回信息或get动态页面文本对页面一部分进行替换; 使用url get和xmlhttp post对取数据和写数据进行了有效的分工,因为所有写数据库的提交都是通过xmlhttp,再也不会直接post form而导致一些问题了,比如刷新结果页面页面就弹出警告,或刷新导致重复提交,数据库增加一条重复记录等等; .简单模版 简单模版的引入,将使动态页面的编写如开发静态html那样的简单,而且动态模版页面就是纯净的html,能方便的使用DreamWeaver编辑,也能用浏览器直接看效果; .业务调用解耦 使用命令的方式调用业务方法,使得业务的实现可以和web层的代码完全解偶,对web层而言,开发可以完全不受业务层进度的影响,且运行时只要一个service层的模拟实现mock即可,service mock不但能支持web层开发,还能完整的演示交互效果,而且也是写web层测试所必需的; .优秀开源框架 webwork,spring,hibernate等优秀框架,特别是webwork,使用它的拦截器映射xml数据和处理异常,使Action代码简洁了很多很多; .各层技术独立 jacker每层采用的技术都是开源且可单独使用的,也可以被单独替换,包括其中的两个子项目eastm,jservice。jacker主要是整合这些技术构建方便的开发环境。你可以使用ejb写业务层而不是spring+hibernate,你可以用jsp写页面而不用eastm模版,而你如果对eastm感兴趣也可以拿来作为其他开发的view层。 层间交互图 图(二)以客户资料更新的整个交互过程为例,说明jacker框架的各层是如何传递数据,如何交互的。 先是提取客户资料,展示html页面供客户修改; 然后提交修改后的数据,更新后台数据,并返回xml包装的操作结果信息。 注意各层是如何交互数据的,特别是客户端如何区分对待get和post数据的。 开发模式 jacker的定位是分层开发,团队开发,甚至是分布开发。好的开发模式需要在实践中确立。我目前在使用jacker做项目,因为人数较少,使用逐层渐进开发,应对不确定的需求。 具体开发方式是:从前台到后台,先出demo html界面,确认好合理的demo后就进入web层的开发,web层开发主要是:Action类,页面逻辑类,和模版页面,模版页面也是静态html,通常只要拷贝demo稍加改动就可以了;web层开发的同时可以定义业务层调用和实现简单的业务对象mock,便于调试。然后就能启动服务器进行调试了。而真正操作数据库的业务实现,可以作为一层单独来做。 Jacker的技术框架总算是介绍完了,因为比较新,以后一定还会随着项目进行不断完善。在技术框架之上,jacker还计划实现一套通用的基于xml的用户角色权限管理模块。谢谢关注! jacker: https://jacker.dev.java.net/ eastm: https://eastm.dev.java.net/ jservice: https://jservice.dev.java.net/ 下载地址:https://jacker.dev.java.net/files/documents/1202/18481/jacker-8-06.zip 我的blog: http://www.blogjava.net/goldrain 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-08-09
good.
Jacker 是 Appfuse 的路线吗? (演示各层的组合,作为开发基础) |
|
返回顶楼 | |
发表时间:2005-08-09
buaawhl 写道 good.
Jacker 是 Appfuse 的路线吗? (演示各层的组合,作为开发基础) appfuse我还没接触过,有时间一定了解一下 buaawhl一定关心eastm部分吧,呵呵,多多交流! |
|
返回顶楼 | |
发表时间:2005-08-09
目前除了spring+hibernate的组合还没有给出例子,其他层的交互都在演示中给出了。
当然jacker现在还比较粗,还没考虑性能,缓存方面的问题,这些会随项目开发进一步完善。 |
|
返回顶楼 | |