`
shangtang004
  • 浏览: 32456 次
  • 性别: 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层设计模式 简述不同的设计模式的思想

    Web标准思想

    在Web开发领域,"Web标准思想"是一个至关重要的概念,它旨在提升网站的可访问性、可维护性和性能。本章将深入探讨这一主题,帮助开发者理解并掌握符合Web标准的PHP网站架构以及如何将这种思想融入到传统的网站开发中...

    Web 2.0 编程思想

    Web 2.0 编程思想是互联网发展的一个重要阶段,它强调了用户参与、互动性和数据共享。以下是对这16条法则的详细解读: 1. 设定明确目标:在构建Web 2.0应用时,首先要设定简单、明确的目标,确保应用易于理解和使用...

    三层架构思想

    此外,现代Web开发框架如Spring Boot、ASP.NET Core等也提供了对三层架构的支持,使得开发者可以更加便捷地构建和管理复杂的软件系统。 总之,三层架构思想是软件工程中的一项基本设计理念,通过合理地组织和分层,...

    关于三种主流WEB架构思想

    在探讨三种主流WEB架构思想之前,我们先简要回顾一下WEB架构的发展历程。自万维网诞生以来,WEB架构经历了从静态页面到动态交互、再到分布式微服务的演变过程。在这个过程中,不同的架构思想应运而生,为解决特定...

    三层架构的设计思想

    ### 三层架构的设计思想 #### 一、引言 三层架构是一种常见的软件系统设计模式,主要应用于企业级应用开发中,特别是在ASP.NET等Web应用程序中非常流行。它将应用程序分为三个逻辑层:表示层(Presentation Layer...

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

    JavaWeb 开发中,程序的划分是基于“高内聚低耦合”的思想,主要体现在三层架构和五层架构中。下面将详细介绍这两种架构的结构、特点和优缺点。 三层架构 三层架构是从整个业务应用角度对程序的划分,包括表现层、...

    C#三层结构增删改查WEB程序

    1. **三层架构**:三层架构的核心思想是将应用程序的组件分为三个独立的层,分别是用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这样的设计提高了代码的可重用性、可维护性和可扩展性。在这个项目中,...

    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开发方式的应用表示层、业务逻辑层、数据访问层和数据...

    Web 2.0编程思想:16条法则

    Web 2.0编程思想是构建现代互联网应用的核心原则,其目标是创造更互动、用户中心和数据驱动的网络体验。以下16条法则详细解释了这一编程思想的关键要素: 1. **设定简单目标**:无论是开发还是使用Web 2.0应用,...

    小型web程序实例DAO

    这样,Web层与数据库之间的直接依赖被解耦,Service层可以独立于Web层存在,有利于模块化和扩展。 3. **事务管理**: DAO操作通常涉及数据库事务,尤其是在涉及多条记录更改时。Service层需要管理这些事务,确保...

    asp.net三层编程思想

    总结来说,ASP.NET三层编程思想是构建高效、可维护的Web应用的一种重要方法。它将应用程序逻辑划分为表现层、业务逻辑层和数据访问层,每个层都有其特定的职责,从而提高了代码的可读性、可测试性和可扩展性。在开发...

    高级asp.net三层编程思想

    总之,高级 ASP.NET 三层编程思想是构建大型、复杂Web应用的关键,它通过分离关注点,提高了系统的可维护性和可扩展性。理解和熟练掌握这一思想对于提升ASP.NET开发能力至关重要。在实际项目中,开发者应根据项目...

    asp.net三层编程思想.zip

    ASP.NET三层架构是一种常见的软件设计模式,用于组织和构建复杂的Web应用程序。这种架构将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access ...

Global site tag (gtag.js) - Google Analytics