关于视图层技术架构的选择

发布时间:2021-01-11 00:00:00.0 阅读量:644人次 来源:优匠科技(www.hshkj.com.cn)
关于视图层技术的选择,很多年来,也是争议颇多的一个话题。对于选择.NET技术的公司来说,这个问题还是很好选择的,跟着微软就可以了。微软阵营的问题是选择太少,出了问题不知道怎么办,只能网上找控件,碰到收费的控件,又爱又恨,最后还是放弃,不了了之。痛恨微软和别人的不开源,自己的代码却从不给人看,这是微软阵营的特点。

如果说微软阵营抱怨封闭不开源,选择太少的话,那么J2EE阵营最大的问题则是选择太多了,不仅普通程序员无法从纷繁复杂的各类开源框架中做出正确的选择,即使对于系统架构师这类老手,从数十种开源框架中,找到符合自己公司和项目特点的那个,也是相当挠头的。

比如说现在最流行的Ajax开源框架JQuery,仅最基本最常用的DataGrid控件,解决方案就有十几个。如何从这十几个DataGrid控件中选择最合适的一个,也就是所谓的“银弹”,是相当的痛苦啊。当然,开源的源代码也多得是,可惜的是绝大部分程序员从来不看别人的源代码,虽然张口闭口大家都在谈着Struts、Spring、Hibernate,有几个人把他们的源代码读过一遍?甚至开发文档阅读过一遍?

下面教给大家一个框架的秘诀,如果自己实在不知道如何选择,那就遵循两个原则:一是是否得到IBM、Oracle、微软这类大型软件公司的支持;二是别问为什么,就选择大家最常用的,随大流就可以了。

对于UI这一层的选择,J2EE阵营有3类选择。

(1)Ajax:包括JQuery、ExtJs以及ZK等Ajax框架。国内的用友、金蝶、阿里软件等和其他一些传统管理软件转过来的公司,一般会采用ExtJs作为自己视图层解决方案。

(2)Flex:Flex最终生成的还是Flash,Flex的出现,是真正的富客户端解决方案(RichInternetApplication)。界面基于标准的XML标签,非常华丽,再加上功能强大的ActionScript,不仅适用于传统MIS开发,而且还可以开发网络游戏,像著名的网络游戏开心农场,就是基于Flash开发的。

不过,Flash也面临巨大的挑战。首先是没有得到风头正猛的苹果公司的支持,Flash在移动开发领域,也遇到了强大的阻力。如果说苹果公司只是给了Adobe背后一刀,尚未伤其筋骨的话,那么微软在最新的技术路线图中,则明确表示IE9也将不再支持Flash,那么微软会不会给Adobe致命的一击?微软和苹果的理由是它们都将只支持HTML5.0。

(3)JSF:JSF一般在大公司使用,比如Oracle经典的J2EE开发框架。不过,在国内由JSP转向JSF的公司并不多见。

这里给个建议,对于进销存MIS系统的开发,如果考虑跟以前的兼容,首选是ExtJS,其次是Flex,最后是ZK和JBoss的企业级开发框架Seam,而对于网站类开发,则只选择JQuery就可以了。

为什么选择Flex作为自己的UI层技术解决方案呢?首先可以排除的是JSF,JSF仅有少数公司在用,JSF是用Swing的解决思路去解决Web难题,Swing首先就在桌面领域败给了SWT,在Web领域,这个失败的技术架构,同样也没有得到大家的认可。

那么在ExtJs和Flex之间如何选择呢?之所以选择Flex,是因为Flex支持Restful风格的技术架构。Flex跟后台的通信机制,事实上有3种:

RemoteObject、WebService和HttpService组件。第三种HttpService组件,就是Restful风格的。采用Restful后,后台接收数据的代码跟前台技术无关,这套代码同样可适用于ASP、JSP、PHP,只要它们支持Restful就可以了,真正可以做到mushup(混合语言)编程,这就是我所说的自己的“银弹”。当然,选择ExtJS你可以选择JSON格式的数据进行前后台通信。

如果IE以后真的不支持Flash了,这个还真的是一个问题,好在我们的架构,跟视图层无关,视图层是随时可以替换掉的,目前来看,只有Flex对Restful支持得最好,所以我们选择Flex作为自己的技术解决方案,而且不存在浏览器不兼容的问题。

IE、Chrome以及Firefox等主流浏览器都是支持Flash的,而且Adobe也做了一个Flash转化为HTML格式的工具,Flash一样可以在iPAD上运行。

以上就是关于关于视图层技术架构的选择问题上的介绍,希望对大家有帮助,如果对此有什么疑惑,欢迎咨询优匠科技!


填写您的服务需求获取项目报价。

*请认真填写需求信息,我们会在24小时内与您联系。

© Copyright 2017- 广州优匠科技有限公司 粤公网安备 44011302003178号 粤ICP备18032239号

与我们取得联系