`
shangtang004
  • 浏览: 32364 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mvc与三层架构

阅读更多

转自:http://www.cn-java.com/www1/?631851/viewspace-56402
先说说Web三层架构这个古老话题。地球人都知道web三层架构是指:
>用户接口层(UI Layer) >业务逻辑层(Bussiness Layer) >持久化层 关于业务逻辑和用户接口 
在早期的web开发中,因为业务比较简单,并没有这三层的划分。用户数据的呈现及输入的接收、封装、验证、处理、以及对数据库的操作,都放在jsp页面中。这时的开发,好比盘古尚未开天辟地,整个web开发就是一片“混沌”。随着业务越来越复杂,人们开始考虑更好的利用OOP这把利刃来解决问题。于是有人发现把业务逻辑抽取出来并形成与显示和持久化无关的一层,能够让业务逻辑清晰,产品更便于维护。这就是SUN当初倡导的JSP Model 1开发方式。
关于持久化
JSP M1开发方式中,并没有对数据如何持久化给出建议。在许多公司中,它们的产品是以数据库为中心进行架构和设计的。在他们的产品里,虽然也有DAO层,但是职责不清。为什么这么说呢,因为我发现在许多人眼里,DAO层的指责很简单——增删改查。但我认为,这样理解实际上是本末倒置了。对于简单数据的管理来说,这样理解无可厚非。但随着业务逻辑变得日益复杂。我们实在是被复杂的对象关系搞头疼了,如果这时我们还要考虑如何把数据存储起来(通常的情况下是存到关系型数据库中),我们开始抱怨自己软件的架构太恶心,一团糟。面向对象设计思想教会我们——如果我们不想做这件事,就交给别人做吧!这时聪明的架构师们提出了一个概念——持久化。如果我们在自己的应用中添加一个新的层——专门负责对象状态的持久化保存及同步,那不就可以全心全意的“搞对象”了吗?持久化概念的产生,代表着我们对关系型数据库的依赖降低了。因此甚至有人推断——数据库已死。同时,关系型数据库这个新的概念也不断形成,并演化成理论,又由理论衍生出产品。因此一个意识良好的程序员,至少应该认同,持久化并不是产品中最重要的环节——最重要的环节是清晰正确的业务逻辑。
灰色地带
是的,从理论上看,web三层架构很美了。但在实际开发产品的时候,我们发现了很多问题。主要问题就是用UI层和业务层之间有许多灰色地带。这些灰色地带业务逻辑层不想管,UI层也不想管。让我们举一些例子:
例子1, 难以管理的页面跳转关系

上图是我在讲JSP课程时,一个简单案例的页面跳转关系图。这是一个十分简单的例子,但页面跳转关系已经挺复杂了。试想,如果你正在做一个有上百张表,十几个核心模块,几百个页面的产品时,这张图将变得多么复杂!而问题是,这些页面跳转关系分散在JSP和Servlet中,非常难以管理。
 
例子2,表单数据的验证及封装:
假设我们正在做一个简单的表单提交,我们希望对用户数据的数据进行验证和封装,最终交给业务逻辑层一个实体对象。从三层架构分析,我们想要做的事情是这样的:

但是该把验证和封装数据的工作交给谁来做呢?UI层还是业务逻辑层?都不太合适!
例子3,国际化:
如果我们想为不同国家和地区的人提供不同的语言,无疑需要国际化的支持。那么,我们需要在JSP页面上根据用户的配置或请求信息判断应该为该用户呈现哪国文字。而这些判断和显示的逻辑应该划分到业务逻辑层还是UI层呢?
用MVC的思路解决问题
对于纠缠不清的问题,我们总要想办法将其分解。MVC是一种设计思想。这种思想强调实现模型(Model)、视图(View)和控制器的分离。这种思想是如何作用于web的呢?实际上,我们在web开发中引入MVC思想,想要达到的目的是: 实现UI层和业务逻辑层分离——控制器是为了实现上述目的而存在的!
在解决了持久化的问题后,我们发现,我们的所说的业务逻辑层和MVC中的Model指的是一回事,我们所说的UI层和MVC中的View是一回事。MVC提供了让模型和视图相分离的思路——引入控制器。我们把页面跳转关系管理、表单数据的封装及验证、国际化等任务交给控制器处理。因此,也不难理解为什么流行的MVC框架都具有管理页面跳转关系、表单数据的封装及验证、国际化等特性。
总结
在Java web开发中,MVC框架充当了UI层和业务逻辑层的适配器的作用。MVC框架实现了UI层和业务逻辑层最大程度的分离。

 

分享到:
评论

相关推荐

    MVC与三层架构

    标题:“MVC与三层架构” 描述:“MVC与三层架构的区别以及三层架构和MVC的搭建过程” 在软件开发领域,MVC(Model-View-Controller)架构模式和三层架构(UI-BLL-DAL)是两种广泛采用的设计模式,它们分别在不同...

    基于MVC 加三层架构 EF数据框架 招聘网

    《基于MVC与三层架构的EF数据框架:构建招聘网站》 在当今信息化社会,招聘网站已经成为企业和求职者沟通的重要桥梁。本项目“基于MVC加三层架构的EF数据框架招聘网”旨在模拟拉钩网的功能,提供发布、浏览简历,...

    MVC模式与三层架构区别

    ### MVC模式与三层架构区别详解 #### 一、引言 在软件开发过程中,合理的设计模式和架构能够显著提升系统的可维护性和扩展性。本文旨在深入解析MVC(Model-View-Controller)模式与三层架构(3-tier architecture...

    MVC三层架构

    MVC三层架构基础介绍简单来说,Design Patten 就是一个常用的方案。 在我们的开发过程中,经常会遇到一些相同或者相近的问题,每次我们都会去寻找一个新的解决方法,为了节省时间提高效率,我们提供一些能够解决这些...

    基于mvc的三层架构例子

    **基于MVC的三层架构详解** MVC(Model-View-Controller)模式是一种常见的软件设计模式,广泛应用于Web开发中,以实现业务逻辑、数据处理和用户界面的分离。在这个三层架构的例子中,我们将深入探讨每一层的作用...

    EF+MVC+三层(MVC +三层架构+EF对数据库对数据库进行增删改查小案例).zip

    在本项目中,"EF+MVC+三层(MVC +三层架构+EF对数据库对数据库进行增删改查小案例).zip"是一个综合性的示例,它演示了如何利用Entity Framework(EF)、Model-View-Controller(MVC)架构以及三层架构来实现对...

    基于ASP.NET MVC的三层架构博客网站系统源码

    资源名:基于ASP.NET MVC的三层架构博客网站系统源码 资源类型:程序源代码 源码说明: 使用ASP.NET写的三层架构博客系统 带SEO优化 完整代码 适合学习使用 适合人群:新手及有一定经验的开发人员

    基于MVC与三层架构的商城项目

    基于MVC与三层架构的商城项目,前台页面使用的主要为jspeljstlajaxvalidatejson,主要具有用户注册验证码,邮箱激活,ajax的用户名是否可用,validate的验证,以及自定义的验证方法,登陆自动登陆,记住用户名,...

    MVC+三层架构+EF的增删改查操作(连接数据库的).rar

    在提供的示例中,"MVC+三层架构+EF的增删改查操作(连接数据库的)"是一个实际的应用程序演示,它结合了MVC模式和三层架构,用于展示如何使用ASP.NET MVC、三层架构和Entity Framework进行数据库操作。这个demo可能...

    mvc+三层开发示例

    **三、MVC与三层架构的结合** 在"mvcdemo"项目中,我们可能会看到以下结构: - **模型层(Model)**:包含实体类和业务接口,用于封装数据和业务逻辑。 - **控制器层(Controller)**:对应MVC中的Controller,处理...

    C#本科期末大作业MVC三层架构亮灯的仓库管理系统源码.zip

    C#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+EasyuiC#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+EasyuiC#本科期末大作业MVC三层架构亮灯的仓库管理系统源码。MVC+MYSQL+...

    MVC 三层架构示例

    **MVC 三层架构示例** 在软件开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,尤其在Web开发领域。MVC架构将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),...

    基于ASP.NET MVC3与三层架构的电子商城源码2012929

    基于ASP.NET MVC3与三层架构的电子商城源码 功能介绍: 本代码完全基于ASP.NET MVC3+EF+三层构架,主要功能分为: 所有页面美工均为作者独立完成,系统开发于1年前,稳定运行良好。 系统目前通过几乎所有PC端...

    mvc与三层架构代码实现

    **三层架构与MVC的关系** 三层架构(Presentation Layer, Business Logic Layer, Data Access Layer)是一种更通用的设计模式,它将应用程序分为表现层、业务逻辑层和数据访问层。MVC可以看作是三层架构中表现层的一...

    茶叶MVC 三层架构

    总的来说,茶叶MVC项目利用三层架构实现了业务逻辑与用户界面的分离,提供了良好的组织结构和可扩展性,使得在Visual Studio 2013环境下进行Web应用开发更为高效和灵活。通过深入理解每一层的功能和交互方式,开发者...

    C#MVC 三层架构 ,清晰明了 bootsrap

    【C# MVC 三层架构详解】 C# MVC(Model-View-Controller)是一种设计模式,广泛应用于.NET框架下的Web应用程序开发。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller),以实现...

    asp.net MVC三层架构

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。 View(视图)是应用程序中处理数据显示的部分。...这个适合刚接触三层架构的来学习,比较简单。

    asp.net MVC3三层架构demo

    在这个“asp.net MVC3三层架构demo”中,开发者已经构建了一个使用MVC3的示例项目,展示了如何在实际开发中实现业务逻辑、数据访问以及用户界面的分离,以达到良好的代码组织和可维护性。 1. **MVC模式**:MVC模式...

    MVC及三层结构资料

    **MVC模式与三层架构详解** 在软件开发领域,MVC(Model-View-Controller)模式和三层架构是两种常见的设计模式,它们主要用于构建可维护、可扩展的应用程序。这两种模式各有特点,适用于不同的场景,但都旨在提高...

    UML图设计模式、三层架构、MVC.EAP

    UML图设计模式、三层架构、MVC.EAP

Global site tag (gtag.js) - Google Analytics