没有合适的资源?快使用搜索试试~ 我知道了~
asp.net MVC4构建三层代码示例
需积分: 10 10 下载量 83 浏览量
2015-08-05
20:54:28
上传
评论
收藏 782KB DOC 举报
温馨提示
试读
23页
常见的asp.net mvc4框架开发一般都是搭载entity framework但是entity framework的缺点有很多,最明显的就是linq语句让人用着很不顺手,本文档在运用asp.net mvc4开发框架的基础上搭载了ado.net数据库技术以及实现了三层架构开发模式
资源推荐
资源详情
资源评论
1 理解几个概念
MVC模式与三层架构
首先对这个题目,本身是存在问题的,“XX结构”与“XX模式”的区别?请问中国社会制度
与美国人生活方式有什么区别?
这两者本身讲的是不同方向与角度的问题,在实际应用中他们的确存在一些相似的特点,
在很多书籍中也没有深入讲解,以致于造成困惑,为了更好的理解他们,姑且来说说区别吧。
首先N层结构是一种软件抽象的层次结构,是对复杂软件的一种纵向切分,每一层次中
完成同一类型的操作,以便将各种代码以其完成的使命作为依据来分割,以将低软件的复杂
度,提高其可维护性。一般来说,层次之间是向下依赖的,下层代码未确定其接口(契约)
前,上层代码是无法开发的,下层代码接口(契约)的变化将使上层的代码一起变化。三层
结构是N层结构的一种,是人产在长时间使用中得出来的一种应用场合广泛的N层结构,被
当作一种典型的软件层次结构而广为流传甚至写入教科书。
MVC模式是一种复合设计模式,一种在特定场合用于解决某种实际问题来得出的可以
反复实践的解决方案。巧合的是他也有三个事物组成,于是乎人们就有了一种想当然的对应
关系:展示层-View;业务逻辑层-Control;持久层-Model。首先MVC中的三个事物之间
并不存在明显的层次结构,没有明显的向下依赖关系,相反的,View和Model往往是比较
独立的,而Control是连接两者的桥梁,他们更像是横向的切分。这样一来就出现一个结果,
MVC中每个块都是可以独立测试的,而三层结构中,上层模块的运行测试势必要提供 下层
代码或者提供相同接口的桩。相对来说,MVC复杂得多,但是结构更清晰,耦合性更低。
另外,MVC中每一块内部特别是Model内部经常被设计为多层的。在我认为的一个良
好的MVC模式构建的结构中,Control是核心,小且较为稳定的,可以作为一个核心框架来
提供,有扩展点,但基本上可以简单配置不需要任何代码就可以运行。而View则可能是一
套或多种可选择的视图引擎,决定了软件展示给用于的界面,使用时的主要工作量在于扩展
点以及根据需要而数量不同的视图模板。Model则是业务提供者,决定了软件提供的功能,
其内部可能是一些普通的类或者是实现了某些接口的类,在这一块当中可能根据业务的不同
而色彩缤纷,对于复杂的软件可能会分成很多层,如业务逻辑层、业务提供层、系统提供层 、
数据提供层、数据访问层等。
用于比喻MVC的例子是小时候玩的那种卡带式游戏机,Control是主机,一般来说我买
一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。View则是电视机和游戏
手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只
管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显
示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,要遥杆还是带震动的 。
Model则是游戏卡带,他绝定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主
机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏
代码和存储单元,都根据游戏的需要而设计。
有朋友提到游戏主机提供的卡带插槽的接口,在设计中,有时也由 Control提供一组接
口,以用于Model或View的实现,这样就形成了依赖。一般来说这样设计也没有太大的问
题,只是会提高模块间的耦合度,也会带来一些侵入性。为了更完美,可以不用接口来提供
契约,可以用配置信息(或称元数据信息)+反射来提供契约,那么这个类接口就可以退化
到只要符合CLS就可以了,也就是普通的类,就像现在的计算机接口广泛采用USB,无论是
U盘、打印机、扫描仪或者是加密狗,他们都是普通的USB设备而已。
三层架构中,DAL(数据访问层)、BLL(业务逻辑层)、UI层各司其职,其目的在于职责
分离。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,
也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部
分,控制器完成页面逻辑,通过实体来与界面层完成通话;控制器直接与三层中的BLL进行
对话。
Asp.NET MVC 是微软新发布的一种网站开发架构。为了解决传统Asp.NET开发中不
能分离Model,View和Controller而设计的。
普通的网站为了解决可移植,可维护,可扩展等问题,会把网站设计成三个独立的模块,
Model负责数据库部分,View负责网页的界面,而Controller负责界面与数据的交互及业
务逻辑,这样设计的网站如果想设计或者重新开发某一个模块对其他的模块是没有影响的。
但是Asp.NET的页面后台代码与每个页面代码都是一一对应的,业务逻辑在某些情况下不可
避免的被写到了与View关联的后台代码中。这样就不能保证View与Controller的分离,也
就很难实现网站的重写和升级。
而在MVC中页面代码并不是与后台代码一一对应,而是分别被存放成 Controller和
View两个部分,彻底的解决了View和Controller不能独立的问题。从而改善网站的重写和
升级过程。
但是MVC也有其缺点,由于在页面代码中不再可以使用服务器控件,因此给某些
Asp.NET服务器端控件的使用带来了麻烦,而且MVC也给页面的设计工作带来了很多障碍。
ASP.NET MVC 是 微 软 在 2009 年 4 月 份 发 布 的 一 种 新 的 网 站 开 发 架 构 ,
http://msdn.microsoft.com/en-us/library/dd394709.aspx , 它 是 把 传 统 意 义 上 的
MVC开发思想融合到了ASP.NET的开发当中。
EF开发模式
Entity Framework架构原理回顾
EntityFramework EF是微软一个开源的ORM(对象关系映射)框架,是微软主推
的数据存储技术,常用于构建数据存储层,使应用程序以对象模型的方式访问关系数据库的
内容。
EF的架构和原理 EF的核心内容是EDM(Entity Data Model)。可以理解为它是一个
ADO.NET的增强版,它的底层是ADO.NET provider,上层则是应用程序,它提供了更灵
活,更简单方便的数据存取方式。
EF的优点 它是一个开源框架,支持多种数据库(目前看来最稳定的是SQL Server,
而Oracle的支持一直不太完美),将应用程序和数据库结构很好的分隔开,支持多种开发
模式。
EF的缺点 它是在ADO.NET的基础上做的扩展,性能比ADO.NET有所损失,但是只要
合理的利用EF,避免一些劣质查询语句带来的损耗,还是能有效提高EF性能。
Entity Framework开发模式
EF提供了四种开发模式,具体如下:
Code First(New DataBase):在代码中定义类和映射关系,并通过model生成数据
库,使用迁移技术更新数据库。
Code First(Existing DataBase):在代码中定义类和映射关系,给逆向工程提供工具。
Model First:在设计器中创建Model,并用Model生成数据库。所有的类由Model自
动生成。
DateBase First:在设计器中逆向生成Model,并有Model自动生成所有的类。
这四种开发模式究竟如何使用,在那些地方使用,下面来一一分析。
DataBase First 模式
是EF最早使用的开发模式,也是最简单的开发模式,它通过已存在的数据库逆向分析
出Model,并获取Class信息。这种方式的好处是开发简单,便于管理,不便之处是限制了
开发人员对Model的修改,当然,为此EF在4.0版本也提供了新的功能,支持POCOs,让
开发人员能够方便的对数据库进行操作。
鼠标右击MVCStudent项目名称,选择“选择 > 新建项”菜单项。
弹出“添加新项”对话框,如下:
选择“数据 > ADO.NET实体数据模型”,然后点击“添加”按钮。
剩余22页未读,继续阅读
资源评论
哥是筱彤
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功