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

web层思想

阅读更多

不论Struts还是JSF,还是.net,或者此前的任何主流Web程序,都是在服务器上构造用户界面,而客户端只是单纯显示界面,这种技术架构和早期的字符终端模式本质上是一样的,是原始、落后、丑陋、低效率、混杂的。

之所以这么多年的web程序都是这种模式,是因为:最初HTML是作为“带链接的文档”,而非“交互程序界面”而设计的,为了在HTML下实现“交互程序界面”技术,后来HTML中增加了<Form>,可以实现简单“交互”,再后来又有了javascript,“交互”又进了一步,但Form、javascript的可编程性都太差,所以每次交互都必须由服务器代替客户端来构造下一步的用户界面,客户端只是单纯的显示,这就是“瘦客户”的由来。这里大家应该看出来:Web应用的客户端之所以“瘦”,并不是因为“瘦”好,而是因为早期的浏览器是为HTML而生,先天不足。不管是Struts还是JSF,或者.net,本质上都是为这种先天不足的“弱智型”浏览器而设计的,所以问题就出来的:今天的浏览器还是这么“弱智”吗?

答案是否定的,其实自从1997年IE4推出后,答案已经出来了,只是大部分人没有看出来而已。IE4和此前的浏览器到底有何不同呢?NetScape Navigator真的是因为微软的捆绑政策而被挤垮的吗?真正的答案是:IE4提出了DHTML,是DHTML打败了Navigator。

DHTML为什么有这么大能量?在DHTML之前,DOM只是一个抽象的概念,在浏览器端,编程语言(javascript)和其编程接口(API)是混杂在一起,我们分不清、NetScape也没告诉我们document.write()到底是javascript语言本身还是编程接口。直到如今,很多关于javascript编程的书籍也把javascript语言和编程接口混为一谈,很多程序员还会去javascript语言的函数参考中去找document.write()的资料,这就是NetScape留给我们的技术遗产。IE4的DHTML第一次以微软的方式实现了DOM,将javascript语言和DOM编程接口彻底分开,IE4也成为第一个完整地实现了基于DOM理念(不是DOM标准,但超越当年的DOM标准)的浏览器,无论是功能性、稳定性、可扩展性、可编程性,都完全超越了Navigator,所以IE4想不挤垮Navigator都不可能。我从98年开始涉及Web开发,2000年后专职做Web开发,一直到现在,Web前端开发的主要参考文档还是1997版MSDN Lib中的DHTML参考,10年也没觉过时,这就是核心技术的生命力。

 


回到主题,再谈Web层的架构。如今,DHTML/DOM已经非常成熟,浏览器的可编程性已经非常好,2005年,业界也“良心发现”似地提出并认可了"Ajax",所谓的“富客户端”系统(我认为用“中客户端”更合适,即界于胖客户与瘦客户之间)也被追捧。问题是,像Struts、JSF、.net这些由服务器端构造界面的框架是否适合“富客户端”系统?是否有必要在这类架构上修修补补来适应“富客户端”系统?在浏览器功能非常强大的今天,服务器的CPU和内存资源是否还要为早期的“弱智”浏览器背书,或者说继续为一个健康的成年人当保姆?未来的Web架构是否应该继续基于“弱智”前端来设计?


答案当然也是否定的。“富客户端系统”已经和原始的“动态网页”不是一个层次的东西,“富客户端系统”界面的强交互性,使用户界面编程空前复杂,这种客户端的复杂如果由服务器端来解决,只能使问题更加复杂。因此理想的Web层模型应该是:

-----------------------------------
浏览器完全负责界面构造和流转(服务器对界面构造和流转只提供HTML服务,即由www服务器提供静态HTML页面,而不是由应用服务器提供动态页面);而应用服务器只提供业务服务,即只接受业务请求(http Request的含义与传统不同,服务器不参与界面层功能)。
------------------------------------

在这种新的模型中,应用服务器从界面构造和流转控制的繁重任务中解脱出来,专注于业务服务,MVC的控制器被自然废除,后端只需编写业务服务代码,这也刚好与WebService、SOA的概念吻合。这种模型比Struts、JSF、.net,都要漂亮得多。


最后,总结一下:很多人还认为Ajax只是相当于网页的花边装饰,或者是Web程序的局部效果;在我看来,整个应用都应该基于Ajax构造。可以预测,Ajax+SOA将颠覆传统的Web程序结构,Web应用将走出“服务器动态网页”时代,进入“富客户端”+“面向服务编程”的光明未来。

 

 

我预测web开发的下一个革命:基于富客户端+业务服务的“企业应用开发技术”与基于动态网页的“动态网站开发技术”彻底决裂(就像当年c/s结构与终端/主机结构彻底决裂一样),企业应用开发技术将进入第四代。在这场革命中,ajax和webservice(指概念,不指标准)只是两个导火索,真正的大变革还在后面。

这场革命完成的标志有两个:

一是出现专门的“业务服务器”,或者目前的应用服务器演变成“业务服务器”。为什么这么说呢?因为目前的应用服务器是为“生成动态网页”服务的,在架构上处于Web服务器的后面,用来处理web服务器不能处理的所谓“动态内容”,因为是做为web服务器的一个下家,所以要考虑HTTP协议的所有规范,比如各种HTTP请求方法、各种HTTP头标,各种BODY数据格式,HTTP缓存逻辑,编码规范,等等等。而如果未来的后台服务器只需要提供“业务服务”,那么HTTP协议至少80%以上的spec可以不考虑,不实现(比如请求方法,我看只支持POST就够了),这样后台服务器的体系结构可以精简,也会带来更高的运行效率;另外,后台服务器还可以专门针对“业务服务”进行增强,比如session跟踪,用户访问监控,权限管理等等目前需要由应用程序自身来实现的功能,完全可以在“业务服务器”中做通用的实现。这种服务器端架构重新设计的结果就是:目前应用服务器的“Web容器”和“业务(EJB)容器”,很可能整合成“业务服务器”中单一的“业务容器”。这也是为什么7wxAop要把Jetty服务器作为部件嵌入框架的原因之一,我认为只有我们对“服务器”本身的架构有变革的能力,才可以在这场革命中占据有利的位置。


二是粗粒度界面组件(像Treeview,Listview,EidtableGrid等等)成为浏览器的标准支持。如今DHTML/DOM已经很成熟,基于HTML/DHTML/DOM/CSS的应用的用户界面,可以做得比以往任何类型的应用的界面都漂亮,都富于交互功能,以前从来没有一种界面技术能给开发者提供如此细粒度的控制可能。但问题也恰恰出现在这种过于细粒度的界面构造方式,它导致了严重的界面生产效率问题。目前大部分的Ajax框架都在做这样的工作:将这种细粒度技术的基础上构造粗粒度的界面组件,比如国内的dorado,我这个7wxAop中的7wx也是;另一种工作是设计全新的粗粒度界面组件,如adobe的Flex;还有一种工作做得很早,估计已经被大部分人忘记了,就是在IE中直接使用ActiveX界面组件。我认为,不管是哪种粗粒度界面组件实现,最好都由浏览器厂家联合来做,做出标准、通用、有持久生命力的界面组件。微软推出.net的时候,粗看简介我还以为是理想中的界面层技术,细看代码原来还是“服务器动态页面”,后来SUN的JSF也这么学,我们公司一个项目组现在在用的SAP的webDypro也是,因此我都有点怀疑:业界大佬们之所以不愿意在客户端组件上下功夫,之所以不想变革目前的Web应用架构,不是因为他们没看到技术需求,而是因为,他们的根本利益在于利润丰厚的各种服务器端产品;Web开发之所以搞得这么复杂,里面说不定有什么惊天大阴谋;或者说,这些业界大佬们睁一只眼闭一只眼地看着广大Web开发者累得死去活来,看着Web独立开发商和集成商一个个倒下去,却背过身去窃笑着点着大把的钞票----扯远了:),这问题有空发个专贴,反正做了6年IBM独立开发商就给我这种感觉。


建议所有Web开发者都关注这两个方向的进展,搞技术的也要有一定的前瞻性,否则老跟在别人屁股后面跑,实在没有意思。

 

摘录自jdon web层下一个王者

http://www.xjawa.org/xjawa/kontent/80039.html

 

分享到:
评论

相关推荐

    WEB层设计模式

    WEB层设计模式 简述不同的设计模式的思想

    ASP.NET编程思想大汇总

    asp.net编程思想,面向对象的编程思想在ASP.NET中的运用,在ASP.NET中面向对象的编程思想-NET教程,面向对象编程,面向对象的编程思想在ASP.NET中的运用b,Duwamish 7.0 结构分为四个逻辑层: • Web 层 Web 层为客户端...

    基于ASP.NET的Web应用系统架构探讨

    提出了一种基于ASP.NET开发方式的四层架构的Web应用系统构造思想。其基本内容是:将面向对象的UML建模与Web应用系统开发相结合,将整个系统分成适合ASP.NET开发方式的应用表示层、业务逻辑层、数据访问层和数据...

    JavaWeb三层架构和五层架构介绍

    开发业务应用角度对程序的划分,其分层逻辑来源于“高内聚低耦合”的思想,在开发中针对这种有三层架构和五层架构

    Spring Web Flow权威指南.pdf

    尤其弥足珍贵的是,作者从框架设计者角度深入阐述了Spring Web Flow的设计思想和实现方式。更能让读者掌握其核心本质。此外,书中还清楚地讲述了SpringWeb Flow 1和Spring Web Flow 2在设计和使用上的差异。 ...

    基于J2EE构架的三层Web开发应用

    传统的客户机/服务器计算方式已经不能适应实际应用的需要,而J2EE架构正是适合Internet上的Web计算特点而产生和发展的,与传统的客户机/服务器计算模型相比,J2EE架构采用组件的思想,从而带来了开发、维护和使用时的...

    asp.net构建三层式web应用程序高清pdf

    对于已经学习了一段时间还不是大牛的人可以看一下,了解一下实现机制和思想

    asp.net三层编程思想

    asp.net三层编程思想

    基于java_web的个人通讯录.zip

    三层架构思想实现用户登录、注册以及好友的添加、查看、删除。创建数据库ch11,创建用户表user和朋友表friend。搭建项目开发环境。建立User,Friend类用于封装信息 按照数据层、业务层、web层的顺序实现各各功能

    论文研究-一种基于P2P网支持QoS的语义Web服务的匹配模型.pdf

    模型首先分析了P2P网络的特点,在扩展UDDI的基础上,结合目前语义Web服务匹配的多层匹配思想,提出一个三层次的匹配筛选算法,并对基本描述、语义Web服务匹配、服务质量各层的匹配算法进行了深入讨论,用相似函数来...

    Ext+ASP.NET 基于WEB的实时聊天

    本系统是采用Ext和ASP.NET编写的一个基于WEB的实时聊天系统,采购.NET三层架构思想写的一个简单聊天工具,关键是Ext与ASP.NET的交互,采用的软件是Microsoft Visual Studio 2008和SQL SERVER2005,内有数据库备份...

    第四层交换的技术原理及解决方案

    第四层交换的主要作用是提高服务器和服务器群的可靠性和可扩性。第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将...在本方案中,通过采用Alteon的第四层交换机来实现Web Server的负载均衡。

    MVC设计思想 用户登陆注册注销

    约束在各自的模块(层)当中的,而当属于某一层的对象、方法“入侵”到了其他层,如将web层的ServletContext对象传入service层,或service层调用XMLDao独有的方法,就会导致层与层之间的关系过于“紧密”,当需要...

    PHP+MySQL三层模式演示源码

    PHP三层标准版,PHP5.0以上,运用分层设计思想,分层情况:Model+BLL+IDAL+DAL+WebUI。 __autoload 加载所需的类。IDAL层是业务接口,DAL层实现接口,使用mysqli扩展库, SQL参数命令操作数据。添加记录成功后返回自动...

    在线生成的三层结构例子

    它可以生成:实体Model,DAL(数据访问层),IDAL(接口层),DALFactory(类工厂),BLL(业务逻辑层),WEB层等多层的代码,可以节省大量的时间来做业务逻辑的代码,那些重复的代码就交给它去做吧,1分钟生成一个架构所有...

    ExtJS+Web应用程序开发指南

    主要包括data、widget、form、grid、dd、menu,其中最强大的应该算grid了,编程思想是基于面向对象编程(oop),扩展性相当的好。可以自己写扩展,自己定义命名空间。 主要包括三个大的文件:ext-all.css,ext-base.js,...

    基于 Web 的自动化测试框架

    Web 的自动化测试框架,借鉴测试脚本模块化思想,对测试脚本进行分层次嵌套管理,并实现测试数据与测试脚本的分离。仿真实验结果 表明,该框架具有良好的独立性及可扩展性。 关键词:自动化测试;测试框架;Web 测试

    PHPWeb开发技术指南——pdf格式

    第4章 Web应用程序思想 93 4.1 HTTP和“会话” 93 4.1.1 保持状态 93 4.1.2 用cookies进行“会话”ID传输 95 4.1.3 URL手工改写 95 4.1.4 动态路径 96 4.1.5 DNS技巧 98 4.1.6 实际应用中的折衷方案 99 4.1.7 PHP的...

    轻量级Web应用开发宝典.part1.rar

    以入门级的实例为起点 充分考虑初学者的需要 以实例讲解为基础 探索组件的设计思想 书中实例都来源于真实的项目开发 力争与实际工作紧密结合 内容讲解由浅入深 循序渐进 可以满足不同层次读者的需求本书详细讲解了...

Global site tag (gtag.js) - Google Analytics