DORADO v5 原理 Model 3 开发模式

DORADO v5 原理 Model 3开发模式

Web开发技术的发展
       Web的最大优势在于部署成本低,接入范围广,一个浏览器作为终端可以访问若干个应用系统,而无需为每个应用系统事先安装客户端程序。获得这种好处也付出了牺牲操作性和展现力的代价,不争的事实是,处理同样的业务,操作Web界面比客户端要慢很多,影响工作效率。因而,Web开发技术从一开始就着力于解决用户体验这一问题。
       CGI:通用网关接口(common gate interface),最早的Web应用技术。用于定Web服务器与外部程序之间通信方式的标准,使得外部程序能生成HTML、图像或者其他内容,因此CGI程序不仅能生成静态内容同时又能生成动态内容。
早期的CGI程序主要使用C或C++编写,由于开发太不方便,90年代末逐渐有了PHP、ASP、JSP这一类服务端动态脚本技术。
PHP、ASP、JSP相对于CGI的特点是将动态的逻辑代码嵌入在大量的输出文本中,而不是将大量的输出文本嵌入在逻辑代码中,大大减少了编程的工作量。PHP、ASP都是解释执行的脚本语言,而JSP是编译执行的。所以一般而言,JSP的执行期效率略高于前两者。
       Applet和ActiveX是最早出现的用于改善Web应用交互性的技术。但是Applet和ActiveX与C/S应用一样存在着部署和维护不便的弊端,严格意义上讲也不算作Web应用的范畴。在解决驱动外部设备问题时常用到Applet和ActiveX。

开发模式Model 1(JSP + Bean)
       随着服务端逻辑复杂度的逐步提高PHP、ASP、JSP中的代码量开始急剧的增加,动态脚本不便于管理的弊端开始暴露。于是基于PHP、ASP、JSP的编程技术从数据与展现的分离,展现与逻辑的分离两个方面开始分化。
       数据与展现的分离:随着主流浏览器开始支持CSS(Cascading Style Sheet级联样式单),出现了HTML+CSS的页面定义方式,这实现了初步的数据与展现的分离。但是HTML本身是非严谨的标记语言,并不适合用于描述数据。所以后来又有了XML+XSLT的页面定义方式,XML用于描述纯粹的数据,而XSLT(eXtensible Stylesheet Language)用于定义数据展现方式。
       展现与逻辑的分离:为了实现展现与逻辑分离,开始出现了ASP+COM、JSP+Bean的编程模式。其主旨是将主要的逻辑代码从页面中剥离出来,并封装为可重用的组件。这种开发模式也被成为Model1。


开发模式Model 2(MVC)
       随着Web应用复杂度的进一步提高,页面间的协作关系开始变得越来越复杂。于是又有了Model 2的设计模式。Model 2也被称为MVC,这期间涌现出了大量优秀的Web框架(Struts、WebWork等)。
       MVC是三个单词的缩写:模型(Model)视图(View)和控制(Controller)。MVC模式的目的就是实现Web系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
       最初的Web应用是为内容发布服务的,很自然地采用了这样一种基本假设,并发展为基于Model 2的MVC开发模式。该假设认为Web应用的运行逻辑是由一系列的页面切换构成的,每一个页面都不是特别复杂,往往有着非常特定的功能和目的,同时页面对于浏览器而言又是不可分割的最小单元,要更新页面中的数据必须对页面进行整体刷新。采用这种方案的应用中有着大量的页面流,我们需要一种有效的机制对它进行管理。同时由于表现层的功能相对非常薄弱,控制器往往还要承担起为表现层准备数据的工作。这些在控制器中准备好的数据一般都是利用上下文(如Request的Attributes)以推的方式交给表现层,即推模式(Push Mode)。
       这种模式用来处理单向的信息发布,或者简单的互交式操作是可行的,但用来实现操作频繁的管理信息系统时,就显得力不从心,很难进一步提高系统可用性与开发效率。

开发模式Model 3(AJAX + MVC)
       AJAX(Asynchronous JavaScript And XML,异步JavaScript 与 XML)强调的是减少页面的整体刷新,代之以局部数据刷新。当一个局部数据刷新的请求从客户端被发起时,表现层必须有能力主动的获得所需要的数据。这种操作类似于客户端通过表现层从后端的数据模型中的拉取数据,即拉模式(Pull Mode)。
       狭义的AJAX是指通信机制,广义的AJAX至少还包括一套与AJAX通讯机制结合的Widget(UI组件)。
       Model2的MVC假设需要通过一系列的页面转化来完成一笔业务,每张页面通常比较简单,功能单一,页面转换是通过页面刷新完成的,因而每次页面转化都要将前面几步的数据带到下一个页面,直接导致的结果是服务器端出现臃肿、繁琐的数据传递代码,离散的页面通过业务逻辑的约束被序列化,这种运行时的序列化是被服务器端管理的,Controller和Model层非常复杂,服务器端代码随着业务需求的复杂而越来越臃肿。
在传统MVC的基础上,加上AJAX无刷新的与服务器端交互的能力与强大的Widget(UI组件),使得可以轻松制作出更加复杂的界面。这种复杂程度的界面通常可以独立完成一笔业务,消除了页面间的数据传递,更能保证业务操作的原始性,客户端的AJAX请求代替了页面刷新请求,业务逻辑中对规范客户操作的约束放到了客户端,可以提前验证客户操作的合法性,提高了向服务器端传递的数据质量。服务器端的View层更加专注于AJAX通信;Model层集中精力处理核心业务逻辑,负担锐减;由于已无必要进行大量的页面跳转,Controller层也随之简化。
      这种AJAX + MVC的开发模式称之为Model 3。


26174942_TvLY.png
(图:Model 1至Model 2到 Model 3开发模式的演进)


转载于:https://my.oschina.net/u/2339999/blog/471342

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值