轻量级开发技术总结

引言:

目前轻量级开发技术非常多,适用的场景也各有不同,比如我们熟知的PHPASP .NETASP ASP .NET不是一个东西,二者编程思想都不一样)他们适用于中小型Web开发,尤其是PHP非常适合中小型Web站点的快速搭建。Java非常适合大型和企业级应用系统的开发,而在J2EE开发中可选用的开发技术和开发框架也很多,而且难以评价和对比,开发者的开发背景、开发习惯,特别是针对不同的项目,开发者对开发技术的评价也不一致。比如有人感觉Hibernate很好用,但是有人感觉Hibernate效率太低,笨重繁琐还不如直接书写SQL操作数据库简便易用。本文是对最近一点时间在轻量级技术和框架研究对比上的一点总结,以此来梳理自己的思路。

1.系统开发应考虑的问题及解决方案。

其实我认为单从技术选择和系统实现的角度看,我们在开发一个系统时需要解决和考虑的问题无非就四点:

(1)      前端UI如何生成和展现?

(2)      必要的用户操作如何响应到服务器端处理?

(3)      服务器对于用户行为如何响应,如何处理,如何持久化?

(4)      以上这些问题都有哪些框架和技术比较好用?

1.1 UI如何生成和展现:

这个就关系到具体的界面是怎么被绘制出来的,我们且不讨论OS级别的界面绘制方式,这个没有多大意义,基本上所有的开发技术肯定都是对外提供一种标准(如HTML+CSS)或者是一些接口(如SwingFlexWPF),开发者遵循这些规范“拼写代码”就可以绘制想要的界面,对于OS底层绘制方法的调用由这些技术来完成。

UI生成和展现带来的一个子问题就是:我们如何控制生成的UI界面并响应用户操作。对于这个问题,每种UI展现技术都会有相应的解决方案,而且很多UI技术里面都有一种经典的MVC思想在内。

1.1.1 HTML +CSS技术

对于轻量级的UI生成和展现技术来说,最流行的无疑是HTML+CSS,而根据“规则制定者”对HTMLCSS的在不同时期和不同版本的规则,HTML技术又可以分为HTML 4HTML 5XHTMLCSS 2CSS 3。不过这些都大同小异,只是具体细节上的区别而已。(哪个版本好用,主导不是我们开发者而是浏览器厂商 = =)和HTML伴生的UI控制技术就是JavaScript了,尽管现在出现了在服务器端运行的JS,但是JS的根本用途还是控制HTML页面,影响浏览器对HTML页面的展现。而HTML本身只表现了数据,对于UI样式,HTML交给了CSS来控制,因此HTML+CSS+JS三兄弟坐上轻量级UI领域的江湖盟主宝座。

HTMLCSS之所以这么流行,原因很多,比如这种开发技术门槛低,不需要专业的编程人员即可制作页面,但是我认为最主要的一点:所有能上网的用户都会有一个浏览器,用户不需要安装其他插件即可看到最终界面。但是单论对数据的展现的丰富性、多样性而言,HTMLCSS绝对排不到前列。

轻量级的另外一些UI展现技术如Java AppletFlex、银光(SilverLight)。这三者到底属不属于轻量级技术很难界定,Applet或许可以排除在外,因为在pad和移动设备上它确实用不上,但是Flex和银光已经可以支持到pad和移动媒体上了。单论展现效果和数据展现的丰富程度,这些技术都要比HTML+CSS+JS的方式要强,对于程序员来说,基于这些技术开发复杂的、频繁的用户交互系统的UI层肯定巨爽无比。

但是这三种技术都有一个严重缺点,他们都需要下载插件并安装到浏览器来运行(虽然银光“无耻”的利用自己的地方已经集成到了OS内)。但是就下载插件这一点就让用户小白(请原谅我这么说)无法接受,一个真实的案例就是,某MIS系统使用的是基于AppletUI架构,当MIS系统升级后,用户都需要升级自己本地的JRE版本,“传说”某个大Boss为了让自己能登陆到系统上,“专门”配了一台电脑,这台电脑不干做其他事情,就怕自己不小心影响到JRE插件导致自己无法登陆。对于开发者来说这是一个“血”的教训,可想而知,当开发者“通知”那个boss系统要升级的时候,他们会迎来什么样的“待遇”。

1.2必要的用户操作如何响应到服务器端

对于这个问题,如果能确定第一点选用的技术,那么这个就不是问题了。比如,如果我们确定使用HTML+CSS的方式,那么我们向服务器提交数据就只能使用HTTPHTTPS包括在内)方式向服务器提交请求。而根据请求的发送方式,我们又有两种,第一种:传统的提交按钮,称为有刷新的方式。第二种:异步的Ajax方式,可实现无刷新的提交。在这里,必须强调的是,发送到服务器的请求应该是必要的,因为有些操作是无需要让服务器知道的:如已知数据的升序、降序显示,这些通过UI控制技术都可以完成,没必要给服务器那么大压力。

而其他开发技术:如Swing,他们都有相应的和服务器交互的技术,比如RPCRMI方式,而且他们大部分也都支持和Http服务器的数据交互。

1.3服务器对于用户行为如何响应,如何处理,如何持久化。

这个问题就涉及到服务器技术了,正如前面提到的,目前主流的服务器技术包括:JavaPHPASP .NETJava对于用户数据的接收使用Servlet完成,业务处理、数据持久化都有很多成熟的组建和框架。而且对于Java如何灵活的、方便的、易扩展的、易修改的接受用户请求、处理并返回结果,都有很多框架和模板技术供我们使用的。

1.4前面三个问题都有哪些框架和技术可选。

我们单以Java技术体系来说,抛开Java Applet(这东西开发的界面稳定性和交互性很好,但是比较笨重,不符合轻量化的要求),UI展现技术,我们能选择的最好是HTML + CSS + JS方式(如果你们有Flex开发人员且不觉得烦的话,Flex开发频繁的交互系统个人认为比HTML好)。HTML页面可以手动一个页面一个页面的编写,也可以使用模板技术,这就涉及到Java Web层选用的技术了。

Java Web的视图层可选用的模板技术很多如JSPJSF,高级的如XSTLVelocity JDynamiTeTapestry等。这些都是用来解决在Servlet中拼写HTML代码这个让人“呕吐”的问题的。JSPJSFJSTL这些都实现了在“HTML里面书写Java code”的目标,不过如果你还是觉得这样会让你“恶心”,那么就可以使用更进一步的技术:动态模板技术,模板技术会脱离标准的Web环境来生成页面,动态模板技术有四个特征:1.语法,模板技术都有一个自定义或扩展子标准表达式的语法规则(需要学习滴。。。);2.用语法书写的语言文件,被解析的和绑定数据的“源泉”;3.能够动态绑定数据的数据对象,用来给界面提供显示数据。4.模板引擎,解释语法、绑定数据、渲染页面、返回结果。

模板技术都追求的是模块化、组件化设计,他们最终实现的都是从Java语言、模板语言到HTML代码的翻译过程。对于一般项目,个人建议使用JSP + Tag标签方式维护开发一套自己的Java模板就可以了,XSTLVelocity这些都需要学习新的语言,了解新的概念,成本很高,而且灵活性比较小。

既然我们都考虑到了Java WebView层可以使用的模板技术了,那么在前端HTML+CSS+JS层,我们也应该考虑考虑是否有好用的JS框架以及能够将前后端统一整合的MVC框架。

1.4.1前端JS框架

JS上面,目前流行的JS框架也很多,比如鼎鼎大名的JQuery,还有企业级的Ext JS(现在用的少了),国内的如DWZ,采用前端MVC架构的EmberJSGWTGoogle Web Tookit)等,前端JS框架可以说一堆一堆的,但是,在选择这些框架前,我们应该明白,JS标准语言(ECMAScript)本身之规定了JS语法不包含JS APIJSAPI都是浏览器提供的,所以这些JS“框架”又可以分为三类,JS库,JS UI库,基于MVC设计的JS框架。

JS库:提供了对DOM API的封装和扩展,JS库能屏蔽掉浏览器的差异,实现JS层次的浏览器兼容性,当期流行的JS库无疑是鼎鼎大名的JQuery了。JQuery操作“对象”时是“无状态”,也就是它不会去管这个元素处于可见、不可见状态,只负责帮我们高效查询、操作它们。这在操作UI对象的时候是很麻烦的,需要我们自己判断UI状态,如果一个Dialog是否被显示了等等。除JQuery外还有prototypeJQuery出现之前很流行。

JS UI库:一般都是基于JS库实现的,它们进一步实现了对HTML+CSS的组合操作,抽象了一些HTML本身不存在的概念,如“Dialog”“Tabs”“Grid”等,它们会在JS代码里面动态创建DOM节点并设置节点的CSS样式。这些库可以帮我们高效的开发交互式UI界面。而且他们管理UI对象的时候往往是有状态的。这里库有名的有:JQuery UIeasy UImin UIDWZ(这个概念是在HTML里面操作JS)、bootstarp等。

基于MVC架构的JS框架:JS UI库很多都是插件机制的,在设计的时候没有抽象ModelViewController的概念,所以导致他们无法联动管理整个页面,而基于MVCJS框架在JS层次操作UI的时候抽象了这些概念,所以这些框架可以支持如“数据绑定”、“控制器”、“数据持久化”等“特性”。这里框架有:ember.jscan.js等。

JS层选用什么框架就看项目的需要了,如果非要有很多复杂的UI操作的,比如ERP项目,那么选择一个JS UI库或者是MVC架构的JS框架是很不错的。

1.4.2后台JAVA框架

Java后台方面,这个不用多说,Java系统的分层设计,搞Java的都清楚。我们可以使用Spring框架,来提供IoCAOP方面的支持,从而让我们的系统能解耦,并且整个贯穿各层。

数据持久层,可选的框架很多,HibernateiBatisSpring ORMJPA,这些根据项目需要选用,小型项目不建议使用,项目越大也越不建议用这些框架,还不如自己开发一套。而业务处理层选用什么Java组件就看项目了,J2EE的业务组件很多也很好用。而在表示层也就是Java Web层,如何灵活的返回页面是一个值得思考的问题,比如用户A发送了一个请求,这个请求我们可以灵活的控制发送给B或者C,这个时候就需要考虑基于Web MVC的设计,这里的MVC和前面的JS框架的MVC不是一个级数的。这里抽象层次更高,M(我们要展示的数据)可以从业务处理系统中获得,V就是我们的页面(HTML),或者模板页(JSP)、C就需要我们设计和开发。Web MVC框架比较流行的有著名的Structs 2和后起之秀Spring MVC。他们都是可控制的,采用配置的方法,我们可以不在代码里面写死我们要返回的页面地址和名称。

总结:

综上:轻量级开发技术,我们可以根据分为两种,一种基于HTMLCSSHTTP方式,这是最流行的,用户不需要下载插件。采用Java服务器时,我们需要考虑选用一套Web MVC框架,数据持久化框架,可考虑用Spring Frameword整合后台这些框架,然后注入自己的业务处理对象。另外一种基于特定平台的,如Applet(基于Java平台)、Flex(基于Flash平台)、银光(基于.Net平台),他们都需要用户下载一个插件,然后运行自己开发的UI控制代码。这里开发技术很多都会包含特定的后台开发技术,如银光用C#开发后台最好,当然也可以用JavaVB等等,但是需要一番周折,无法做到无缝结合的方式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值