这些MVC模式的变化反映了客户端-服务器架构风格的基本性质优先于Web。视图平台(客户端)被物理地与其他组件分离开,因此视图组件在结构与操作方面与控制器和模型变得不那么紧密。同时,视图承担了一些模型的任务以便提供一个更具响应式的用户界面。控制新增加的任务(前端控制器的函数和视图测序)是必须的,因为需要显示的管理固有的用户体验控制流。
4.MVC-WEB设计模式
MVC-Web设计模式在这一节中描述了一个MVC模式中的模型在web应用程序框架中是如何被解释的。MVC-Web反映了MVC设计模式已经在web框架中实现了的革命性的变化。
MVC-Web模型组件同程负责保留应用程序的状态。它的职责包括: ? 数据呈现:维护一个数据库或一个抽象的数据接口 ? 事务处理:执行在应用程序状态上操作的的程序逻辑
? 外部接口:管理与外部代理的互动,例如web服务或者遗留系统 ? 查询处理:为视图和控制器在响应查询是提供信息
MVC-Web视图组件呈现了用户界面,包括数据呈现和输入设备。它的职责包括: ? 信息检索和显示:呈现信息给用户;必要时查询模型以获得信息用来显示 ? 用户输入:呈现输入表单和允许用户与程序交互的控件
? 客户端动态行为:为用户提供交互式的客户端体验(用JavaScript,Ajax,或者其他方式);这可能
包含输入实现,输入验证或其他应用程序特定规则和函数的实现,否则这将由模型来完成。
MVC-Web控制器组件有三个主要职责:
? 前端控制器:接受传入的请求并把它们路由到相应的处理程序
? 方法处理:接受请求参数;验证请求参数的语法(这可能通过视图元素进行了重复验证);通过
调用模型元素来编排请求的处理程序
? 控制流:调用相应的视图元素作为一个对请求正在被处理的响应,根据方法的结果来调用。
MVC-Web模式的组件之间的交互有以下方式:
? 模型-视图:视图元素会查询模型以获取信息用来显示给用户
? 模型-控制器:控制器方法元素要求模型元素传送请求交易。模型函数可以包括执行程序逻辑,
更新数据库,以及调用外部代理的服务。控制器元素会从模型请求数据并传递给视图元素 ? 控制器-视图:控制器元素对来自视图元素的请求做出响应。控制器也决定了哪一个视图元素
会被呈现给用户以响应请求。控制器会通过视图元素为用户准备信息。
这个版本的MVC不同于原始版本(Smalltalk)有以下几几个重要方面:
? 观察者模式不是用来吧模型的更新通知给视图和控制器。控制器具有更突出的作用而不是用
来传播更新
? 视图和控制器之间没有一对一的对于关系了。现在已经是多对多的关系了。
? 控制器必须能够从多个视图元素(前端控制模式)那里路由请求并能管理程序在响应中的流。控
制器作为这个功能的一部分可能会从模型传送信息给视图。
? 同样的程序逻辑(例如验证或者数据输入完成)可以被呈现在视图和控制器组件。这个可能分离
的关注点,但是通过给用户提供更快的响应来提高了应用程序的效率。
这个MVC-Web模式是为了反映当前的MVC在web应用程序中的实现。模式不要求稳定,然而,MVC-Web模式的改进一直在继续,例如在基于Ajax的用户界面中变得更加丰富更具响应效果。这些改变也许会模糊MVC-Web各个组件之间的界限并且降低这种模式提供的模块化的程度。
参考
1. 2. 3. 4. 5. 6. 7. 8. 9.
Barrett, R., Delany, S., 2004, openMVC: A Nonproprietary Component-based Framework for Web Applications, WWW2004. Chun, L., Yanhua, W., Hanhong, L., 2003, A Novel Web Application Frame Developed by MVC, Software Engineering Notes, 28(2). Esposito, D., 2010. Programming Microsoft ASP.NET MVC, Microsoft Press.
Fowler, M., 2003. Patterns of Enterprise Application Architecture, Addison-Wesley, Boston.
Gamma, E., Helm, R., Johnson, R., Vlissides, J.,1995. Design Patterns, Addison Wesley, Reading, MA. Goldberg, A., Robson, D., 1985. Smalltalk-80 : the language and its implementation, Addison-Wesley.
Krasner, G.E., Pope, S.T., 1988. A Cookbook for Using the Model-View Controller User Interface Paradigm in Smalltalk-80. Journal of Object-Oriented Programming, 1(3), 26-49.
Mahmoud, Q., 2003. Servlets and JSP Pages Best Practices, http://www.oracle.com/technetwork/articles/javase/servlets-jsp-140445.html. Thomas, D., Hansson, D.H., 2007. Agile Web Development with Rails. The Pragmatic Bookshelf.
相关推荐: