一个单独的web服务器能够处理很多种类的程序。这些应用程序可以是动态的,把它们放置到适当的目录下就可以加载到服务器。web服务器的工作是:解释请求方的URL并调用服务器端应用程序来处理这些请求消息。构建web服务器上应用程序的方法主要是有两种:一种是使用脚本,另一种是使用服务器页面。脚本形式是一个程序,通常,调用函数或方法来处理http的请求调用。如CGI脚本和Java servlet。程序文本可以很好的完成一个程序可以做的任何事情,并且脚本可以分解成多个子程序,还可以创建和使用其他服务。通过检查http请求对象,可以从web网页中获得数据,这里的http请求对象是一个字符串。在一些环境中,可以通过对请求字符串进行正则表达式搜索获得数据。另外一些平台(如java servlet),通过为开发人员解析来获得数据,它允许开发人员通过关键字接口从请求中获得信息。这至少意味着开发人员可以处理不太规范的表达式。web服务器方的输出是另一个字符串---响应,脚本通过程序语言中常用的write stream操作输出这个字符串。通过流命令来编写html的响应对于程序员来说不太舒服,对于那些非程序员来说几乎不可能。这就产生了服务器页面的思想,在服务器页面中,我们把程序和返回的文本组合在一起。可以在html中编写返回页面,并且把脚本代码插入其中,使它在某个地方执行。如PHP。在仅需要对响应进行少量的处理时,服务器页面可以工作的很好。因为脚本方式非常适合于解释请求消息,服务器页面非常适合于格式化应答消息,所以,应该使用脚本语言来解释请求消息,用服务器页面来格式化应答消息。这种用法的分离事实上是一个老观点,它首次出现在使用 模型---视图---控制器 模式的用户界面中。'把非表现层逻辑剥离出来'。更喜欢用'输入控制器'来替代 模型---视图---控制器 中的控制器。一条消息进入输入控制器,输入控制器从中得到消息。它随后把业务逻辑传递给一个合适的模型对象。这个模型对象和数据源交互,并且按照请求消息的要求进行处理,应答并收集信息。当做完这些后,它再把控制器交给输入控制器,输入控制器察看结果并且决定采用什么样的视图来显示应答消息。输入控制器不是直接传递给视图,通常,这是一个包括把数据放在某种http会话对象中合适位置的过程,这个http会话对象在输入控制器和视图之间共享。这也是最重要的使用 模型---视图---控制器 的理由是要保证模型和web表现层的完全分离。这使得修改表现层以及加入其它的表现层会很容易。同样,把处理过程放到分离的事务脚本或分离的领域模型对象中也会使得它们容易测试。这里我们看看'控制器'的第二种用法。许多用户界面设计通过应用控制器对象的中间过渡层来分离表现层和领域对象。应用控制器的目的是处理应用程序流,决定视图应该按什么次序出现。它可能表现为表现层的一部分,或者也可以把它当成一个在表现层和领域层之间作为中介的隔离层。应用控制器可能独立于任何特定的表现层,在这种情况下,它们能在表现层之间重复使用。如果不同的表现层共用相同的基本流和导航,通常没有什么问题,不过最好给每个不同的表现层一个不同的流。并不是所有的系统都需要应用控制器。如果你的系统在屏幕的次序和屏幕之间的导航上有丰富的逻辑关系,那么这些应用控制器非常有用。如果你的网页与领域上的行为没有一个简单映射,则这个应用控制器也很有用。但是,如果有人可以很好的以任何次序观看任何屏幕,你就不需要控制器了。1.视图模式在视图方面,可以考虑三种模式:转换视图,模本视图和两步视图。这就带来了两种选择:第一,使用转换视图还是模板视图;第二,无论使用哪一种,使用一个阶段,还是两步视图。转换视图和模板视图的基本模式还是单阶段的,但也可以把两步视图应用于它们其中任何一个。首先,在转换视图和模板视图之间进行选择。模板视图允许你在网页的结构中编写表现层,并允许在网页中嵌入标签,用以指明网页中的动态内容需要导向哪里。不少流行的平台都基于这种模式,它们允许你在网页中输入程序语言代码。这种方式提供了强大的功能和灵活性,但是,也会导致代码的混乱难以维护。一种解决办法是:在使用服务器页面技术时,必须非常小心使程序的逻辑独立于网页的结构(通常使用一个辅助对象)。转换视图使用程序的一种转换风格。常见的例子如XSLT。如果领域数据是以xml格式存在的,或者很容易转换成这种格式,那么使用转换视图将是非常有效的。如果使用程序脚本作为视图,可以在转换视图,模板视图或者两者的结合方式中编写代码。其次,要决定是选择单阶视图还是选择两步视图。第一种方式通常在应用程序中为每个屏幕都准备一个视图组件。视图提取领域数据并把它放回到html网页中。这里,'通常'是指类似的逻辑屏幕还是可以共享同一个视图的。两阶视图把这一过程分解成两个阶段:由领域数据产生一个逻辑屏幕,然后把它发送到html网页中。其中,每个屏幕都有一个第一阶段的视图,而整个程序中只有一个第二阶段的视图。两步视图的优点是它可以决定把什么样的html网页用在一个地方。这使得全局改变html网页变得容易,因为如果要改变每个屏幕的内容,只需对一个目标对象进行修改。当然,如果逻辑表现层是一样的,它仅仅能带给你这些好处,因此当不同位置的屏幕使用相同的基本设计时,它可以很好的工作。如果web应用程序提供的服务是由多种前端用户来使用,那么运用两步视图将更加得心应手。类似的,还可以使用两步视图来处理不同的输出设备。例如,可以用不同的第二阶段区分web浏览器或者掌上电脑。2.输入控制器模式输入控制器有两种模式。为web站点上的每一个页面都准备一个输入控制器时一种最常用的模式。在最简单的情况下,这个页面控制器可能就是一个包含视图功能和输入控制器功能的服务器页面本身。在许多实现中,将输入控制器分离成单独的对象。输入控制器再创建适当的对象来完成处理,并实例化适当的视图来返回结果。通常情况下,在页面控制器和视图之间并没有完全的一一对应。更为准确的观点是:为每一个动作准备一个页面控制器,这个动作可能是一个按钮动作或者是一个链接。在大部分的时间里,动作和显示的页面相对应,但偶尔也不是。任何输入控制器都有两个责任----处理http的请求消息,根据请求的消息来决定下一步做什么---把它们分开是很有意义的。一个服务器页面可以处理请求消息,使用一个分离的辅助对象来决定下一步做什么。前端控制器则是把这种分离的思想惯窃的更加彻底一些,它通过单个对象处理所有的请求消息。这一单一的处理程序解释url来计算出它正在处理哪种类型的请求消息,然后创建一个分离的对象来处理它。通过这种方法,可以用一个单一的对象处理所有的http页面。这一,当站点行为结构有所改变的时候,就可以避免重新配置web服务器了。

https://juejin.im/post/5c4c6688f265da615064ceaa

4.企业应用架构模式 --- Web表现层相关推荐

  1. 第十四天-企业应用架构模式-Web表现模式

    模型-视图-控制器(Model View Controller) 页面控制器(Page Controller) 前端控制器(Front Controller) 模板试图(Template View) ...

  2. 企业应用架构模式笔记

    1 企业应用模式概述 1.1 企业应用的模式 企业应用领域要解决的问题在某些方面要比做一个工具软件.或者一个电信通信软件等复杂的得多,比如纷杂的企业数据,各具特色的业务规则,变化莫测的用户需求.因此企 ...

  3. [201004][企业应用架构模式][王怀民][周斌][译]

    [201004][企业应用架构模式][王怀民][周斌][译] 模式列表 引言 0.1 架构 0.2 企业应用 0.3 企业应用的种类 0.4 关于性能的考虑 0.5 模式 0.5.1 模式的结构 0. ...

  4. 企业应用架构模式学习笔记

    1.概述 2.分层 表现逻辑处理用户与软件间的交互.表现层的主要职责是向用户显示信息并把从用户那里获取的信息解释成领域层或数据源层上的各种动作. 数据源逻辑主要关注与其他系统的交互,这些系统将代表应用 ...

  5. 企业应用架构模式-30天阅读计划

    构建计算机系统并非易事.随着系统复杂性的增大,构建相应软件的难度将呈指数增大. 同其他行业一样,我们只有在不断的学习中进步,从成功经验中学习,从失败教训中学习,才有望克服这些困难. 这本书的内容就是这 ...

  6. 《企业应用架构模式》30天阅读计划

    构建计算机系统并非易事.随着系统复杂性的增大,构建相应软件的难度将呈指数增大. 同其他行业一样,我们只有在不断的学习中进步,从成功经验中学习,从失败教训中学习,才有望克服这些困难. 这本书的内容就是这 ...

  7. 软件开发大师谈企业应用架构模式

    <企业应用架构模式(英文版)> --作者:Martin Fowler 多年来,Martin Fowler --这位享誉世界的软件开发大师--见证了许多企业级应用项目.这些项目通常都包含相似 ...

  8. 三层架构理解(表现层、业务层、持久层)

    三层架构:即表现层.业务层.持久层. 大话一下这三个层. 举例1+1=? 你输入1+1=?的地方就是表现层,业务层把1+1=?拆成"1","+","1 ...

  9. 图书推荐5:《企业应用架构模式》

    文章目录 基本介绍 推荐理由 总结 延续 基本介绍 书名 企业应用架构模式 作者 (美)Martin Fower 译者 王怀民 周斌 出版社 机械工业出版社 出版时间 2004年12月 页数 363 ...

  10. 以太网的分层架构_读《企业应用架构模式》记录-分层

    复杂软件系统中,分层理念使用最多,具体例子: 软件体系中, 从包含了操作系统调用的程序设计语言到设备驱动程序和CPU指令集再到芯片内部的各种逻辑门:网络互联中,FTP层架构在TCP上,TCP架构在IP ...

最新文章

  1. 小规模网络数据公开数据_大规模的在线公开课程曾经是100%免费的。 但是他们没有那样做。...
  2. Java:十六进制转换成十进制
  3. 机器学习理论《统计学习方法》学习笔记:第四章 朴素贝叶斯法
  4. CyclicBarrier-同步辅助类
  5. 延边大学计算机金小峰,第九届中国信息安全博士论坛在我校开幕
  6. Linux 内核设备属性
  7. 修改mysql编_修改mysql编码
  8. FaceDetector(人脸识别)
  9. NASM汇编语言与计算机系统09-8086实模式的内存分配图
  10. 李航统计学习方法笔记第一章
  11. 为ASP.NET AJAX 1.0 Beta补充trace和dump功能
  12. Android Multimedia框架总结(二十三)MediaCodec补充及MediaMuxer引入(附案例)
  13. Java连接MySQL数据库及简单操作代码
  14. BP神经网络及其app设计
  15. 高可用的分布式Hadoop大数据平台搭建,超详细,附代码。
  16. 用FFmpeg快捷加文字水印
  17. Html中 发光字体 的CSS属性
  18. Ubuntu安装Clang\Clang版本切换
  19. Go关键字--type
  20. 数独游戏开发——计时器实现

热门文章

  1. 201809-1 卖菜
  2. Navicat使用教程:获取MySQL中的行数(第1部分)
  3. 对接门禁分享门禁二维码图片报错
  4. HTML5缓存之 WebStorage
  5. C++学习笔记3:一些错误
  6. Jmeter中Websocket协议支持包的使用 (转)
  7. HDU1847 博弈论 水题
  8. “七”待已久,“夕”望是你,“快”来学习,“乐”在其中!
  9. 信息图表是如何炼成的(二):图标与线条
  10. CSDN发布:AI技术人才成长路线图