`
H_eaven
  • 浏览: 31384 次
  • 性别: Icon_minigender_1
  • 来自: 鲨堡
文章分类
社区版块
存档分类
最新评论
阅读更多
MVC 把用户界面交互拆分到不同的三种角色中.
Model View Controller
之所以这样做的原因:1,你可能要使用数个不同的用户界面来表现相同的业务逻辑,如果同时承担两种责任,用户界面会变得过分复杂
                   2,与GUI隔离之后,domain Objects的维护和演化更容易,甚至可以让不同的开发者负责不同部分的开发.
用过MVC后,替换视图才成为可能,如果没有用MVC则没有这种可能.

Web开发的挑战
   1.Web接口经常变化. 修改页面显示代码,无需修改业务对象甚至于Web 层控制代码.
   2.Web 接口牵涉到复杂的标签.
   3.Web 接口与GUI  有极大的差别.
   4.HTTP请求只能携带字符串参数。
   5.Web  接口使确认用户输入变得困难,因为我们对客户浏览器只有有限的控制权.GUI则有完全的控制权.
   6.HTML只提供UI控制的有限选择.
   7.保证web站点看起来正确并在所有常见浏览器中都正确工作会很困难.
   8.存在许多效率考虑因素.
   9.Web  接口的测试相当困难.
服务器小程序和视图技术都是建立可维护J2EEWEB应用所必需的。服务器小程序和助手类应该用来处理控制流和启动业务操作;JSP只应该用来再现内容.

MVC流程(Front Controller流程):
一条请求消息进入输入控制器,输入控制器从中取得信息,它随后把业务逻辑传送给一个合适的模型对象。这个模型对象和数据源交互,并且按照请求消息的要求进行处理,应答并收集信息,当做完这些后,它再把控制权交给输入控制器,输入控制器察看结果并且决定采用什么样的视图来显示应答消息。输入控制器不是直接传递给视图,通常,这是一个包括把数据放在某种HTTP会话对象中合适位置的过程,这个HTTP会话对象在输入控制器和视图之间共享.
  好处:1.首先也是最重要的使用模型-视图-控制器的理由是要保证模型和WEB表现层的完全分离,这使得修改表现层以及加入其它的表现层都会容易。
       2.同样把处理过程放到分离的事务脚本或分离的领域模型对象中也会使得它们容易测试。如果你正在使用服务器页面(JSP)作为视图,这一点很理要.
       3.增加代码的重用性,切换视图代码,理想状态可以不用动控制代码和模型代码.

WEB层的设计目标。  两个目标:1.可维护性,2.可扩展性. 也仍包括软件的设计目标.要重用性,可测试性.
  A:干净的WEB层把控制流和业务对象调用(Java对象处理)与表示(JSP页之类的视图构件处理)分隔开.(模块化思想)
  B:细薄WEB层。意味着除了用户动作中启动业务处理和显示结果所必需的Java代码之外,Web 层不应该再含有任何Java代码.这也意味着WEB层只应该含有与WEB特定相关的控制逻辑

(如选择数据应该被显示在里面的布局),不应该含有业务逻辑(如数据检索).

考虑MVC时,关注两个主要的分离:从模型中分离表现和从视图中分离控制器.
视图的考虑:富客户, WEB浏览器,远程API和命令行界面.甚至同一应用程序的几个不同点上有不同的用户界面.
模型中分离表现是必需的,因为两者的责任不同,视图中分离控制器在WEB应用中是分离的,在富客户应用中则并不需要进行分离.

业务逻辑束缚于WEB层的应用的坏处:
   1.可测试性.测试起来困难,业务逻辑依赖WEB环境.但事实上业务组件应该能被单独测试而不依赖环境.整体测试WEB接口来测试业务逻辑,这是相当困难的.
   2.可重用性.降低重用业务逻辑代码的可能性.Model View Controller ,Model封装业务逻辑代码,有重用性,理想情况下可以用不同的View来显示Model的结果.MVC 使这种可能变为现实.
   3.可扩展性.没有OO的设计,使得代码的可插入性为零.
在一个设计完善的J2EE 应用中,WEB层应该是一个以定义明确的业务接口为建立基础的细薄层.它应该只负责把用户动作转换成应用事件,以及把用户输入的结果处理成由WEB 接口的结果.

一个细薄的WEB层和一个干净的WEB层一样重要.  干净的Web层指Web层代码指模型与表示的分离. 细薄指Web层代码只应去调用业务代码而不是去实现业务代码,要把业务代码封装到后端业务对象中去.

MVC三者的职责.:
Controller 负责与业务对象交互,向业务对象传递必要的数据,然后获得业务对象计算的结果,包装为值对象,通过request对象(request.setAttribute()方法)传递到页面.包括必要的异常处理.
View负责显示由Controller发过来的值对象,包括必要的页面显示逻辑.
Model狭义说是值对象,广义指业务对象及业务对象计算的结果.

视图技术的三种选择:
1.转换视图 2.模板视图 3.两步视图
控制器
1.Front Controller 2.Page Controller.


Front Controller一般由两部分组成:一个Web处理程序和一个Command层次结构.
WEB处理程序是一个实际上接收来自Web服务器的POST或GET请求的对象。它从URL中得到信息,并且决定下一步的动作是什么,分发请求但不处理请求,请求委托给Command执行动

作.

Web处理程序可以动态或静态地决定运行哪一个Command,其中的静态行为包括解析URL并使用条件逻辑.
动态行为包括提取URL中的某个标准部分和用动态实例化去创建一个Command类.
  静态方法的好处.1,2,3.  1.简明清晰的逻辑.2.在调度时可以执行编译时错误检查.3.在分析URL的时候可以拥有更多的灵活性.
  动态方法的好处.允许你在不改动WEB处理程序的情况下增加新的Command.


MVC与Observer模式的关系. GUI的MVC是一种推模式,由模型对象生成事件去通知视图(监听器). Web层MVC是一种拉模式,由视图去获得模型数据,通过控制器做中间人.
MVC  实现方式.  Front Controller 模式,Page Controller模式.
MVC的任务.
不同的客户端:富客户端,Web 浏览器,远程API,命令行界面,PDA. 其中最重要的MVC的实现差别富客户端和Web前端的差别.在于视图和控制器的是否完全分离.
Web可选的视图:模板视图,转换视图,两步视图.
分享到:
评论

相关推荐

    ASP.NET MVC项目实例

    ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...

    精通Spring MVC 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    ASP.NET MVC企业实战源代码Chapter12.rar

    本书共分为12章,以符合初学者思维的方式系统地介绍ASP.NET MVC的应用技巧,并结合实际项目详细地介绍如何基于ASP.NET MVC构建企业项目。通过本书的学习,读者可以全面掌握ASP.NET MVC的开发,并从代码中获取软件...

    【免费】ASP.NET MVC5 高级编程[附源码].rar

    ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...

    ASP.NETMVC5网站开发之美【高清PDF】

    第1章 MVC概述 第2章 与数据的对话:Model与ADO.NET 第3章 LINQ:驱动数据的查询功能 第4章 EF 第5章 路由(Routing) 第6章 控制器(Controller) 第7章 异步程序设计 第8章 View:摇曳生姿的美人 第9章 Bootstrap ...

    Pro ASP.NET MVC 5 Platform(Apress,Adam.Freeman,2014)

    The power of ASP.NET MVC 5 stems from the underlying ASP.NET platform. To make your ASP.NET MVC applications the best they can be, you need to fully understand the platform features and know how they ...

    JavaWeb基于MVC模式开发的简易购物车系统

    该系统主要采用MVC(JSP+JavaBean+Servlet)模式开发,非常适合初学者了解并掌握MVC开发模式,具有如下主要功能: 1.用户登录,注册(用户注册后才能登录) 2.显示所有书籍基本信息(编号,书名,价格等) 3.添加...

    基于ASP.NET MVC项目源码完整下载(含Aspose.Cells、Aspose.Words、NPOI、MvcPaper及在线预览Word、Excel等文档

    基于ASP.NET MVC框架的学习项目,包含MVC的框架的设计思路,通俗易懂学习MVC框架,项目中包含NPOI控件的使用方法(优点:导出几万条数据几秒即可下载下来)以及NPOI导出Excel表到数据库,Aspose.Cells的使用(导入、...

    Programming Microsoft ASP.NET MVC, 3rd Edition

    Develop next-generation web applications with ASP.NET MVC Go deep into the architecture and features of ASP.NET MVC 5, and learn how to build web applications that work well on both the desktop and ...

    ASP.NET MVC实战

    《ASP.NET MVC实战》适合于对MVC框架感兴趣的ASP.NET开发人员,其中的许多设计原则和最佳实践则可以适合于各种开发人员。MVC作为一种流行的应用程序开发框架已经存在多年。现在,Microsoft公司也加入了这个社区,ASP...

    MVC国际化,MVC多语言,.NET多语言

    MVC国际化,MVC多语言,.NET多语言 中英文切换

    Aspnet Mvc教程 11.重定向、Redirect

    Aspnet Mvc教程 1.说明 01:06 Aspnet Mvc教程 2.准备工作 02:37 Aspnet Mvc教程 3. 建立并运行 02:46 Aspnet Mvc教程 4.默认程序结构 04:18 Aspnet Mvc教程 5. 基本工作流程 05:13 Aspnet Mvc教程 6.mvc理论讲解...

    Aspnet Mvc教程 5. 基本工作流程

    Aspnet Mvc教程 1.说明 01:06 Aspnet Mvc教程 2.准备工作 02:37 Aspnet Mvc教程 3. 建立并运行 02:46 Aspnet Mvc教程 4.默认程序结构 04:18 Aspnet Mvc教程 5. 基本工作流程 05:13 Aspnet Mvc教程 6.mvc理论讲解...

    经典MVC登录实例代码

    mvc入门——经典MVC登录实例

    MVC架构(模式)

    主要包括MVC的设计思想、实现和原理,以及和其他人的理解。 一、MVC设计思想 二、MVC设计模式的实现 三、MVC设计模式的扩展 四、MVC的优点 五、MVC的不足

    mvc3,4,5区别于联系

    mvc3.mvc4/mvc5区别于联系,1.use new features like 'Tilde slash'. 2.Syntex:Razor Syntax and 'Tilde Slash'i.e 3.Chart,WebGrid,Crypto,WebImage,WebMail Controls 4.ViewBag is not onle available but it is ...

    Asp.net MVC快速开发框架源码 mvc+Bootstrap

    Asp.net MVC快速开发框架源码 mvc+Bootstrap 框架使用场景:OA、ERP、BPM、CRM、WMS、TMS、MIS等业务管理系统及后台系统

    vue项目demo(asp.net mvc5+vue2.5)

    本项目是asp.net mvc5+vue2.5的项目,花了很长时间做的。 实现的功能如下: 1.不仅有vue的基本功能,而且设计到vue的组件功能。 2.实现了增删改查的功能,而且是一对多的。 3.后台使用了EF进行操作数据库,EF使用的...

    mvc框架性比较

    对目前主力mvc框架进行性能比价,包括struts,spring mvc等

    MVC 微软范例源码

    MVC微软范例源码,MVC music项目源码

Global site tag (gtag.js) - Google Analytics