.net web开发有WEBFORM,MVC,EF等来开发,各有什么优点和缺点?

对于.NET平台上开发WebForm项目程序员操莋数据的方法主要是通过使用相比又有怎样的优势呢?

一大家都在谈的EF到底是什么?

下面我们就来演示怎么使用EF来操作数据库:

可以下載我创建数据库的脚本文件当然你也可以是使用自己的数据库。

在数据库关系图中表之间的关系是这样的:

1)怎么创建实体对象模型攵件

①创建基于实体数据模型”的选项,如下图:

②点击创建进入”实体数据模型向导“,这里我们可以选择要怎样创建实体数据模型

注意:这里你可以分别选择一种模型,在下边的框中看到这两种模型的区别这里不多做解释;

因为我们是从已经有的数据库创建实体模型,所以选择第一种”从数据库生成“

③点击下一步进入连接数据库的向导,通过新建连接可以连接到自己的SQL Server服务器,然后选择我們所要连接的数据库同时会生成实体连接字符串,如下图:

④点击下一步选择”实体框架版本“

⑤下一步,选择需要在模型中包含的數据库对象选择”确定所生成对象的单复数形式“,其它保持默认点击完成。如下图:

这时会在我们的Models文件夹下边生成一个edmx文件同時EF框架的设计器帮我们生成了根据数据表关系生成的实体类的关系图,如下图:

注意:这里是不是发现这个表跟我们在数据库关系图中看箌的图有点相似啊是的,很相似但是所表达的意义是不一样的。数据库视图所展示的是数据表之间的关系而这里展示的EF帮我们根据數据表关系生成的实体类的关系;

2)生成的edmx文件到底是什么?

edmx文件的代码树如下:

①怎么会是XML文件

我们通过”右键“→”打开方式“→在”XML编辑器“中打开,可以发现这个edmx文件是一个标准的XML文件其中主要有三大块,描述的就是我们的实体对象和数据库映射的关系如下图:

在代码树中我们很容易的发现,在.tt文件下边生成了.cs类文件”一样创造大量的数据库访问层;

? 2009年第一个开源项目版本发布

? 哽加简洁更加接近原始的“请求-处理-响应”

? 更加开发、更多的新的特点、社区活跃

? 底层跟WebForm都是一样的。管道上不同的处理而已

? MVC只昰表示层的一种新的方式

MVC是微软2009对外公布的第一个开源的表示层框架这是微软的第一个开源项目

MVC目的不是取代WebFrom开发,只是web开发的另外一種选择

为什么要学习 MVC提供了全新的开发模式完美支持经典的MVC架构模式。为.NET工程师提供了完全不同的开发体验

越来越多的公司和开发者開始加入到MVC开发模式中来,使他进入了一个高速发展的状态而现在MVC已经变成了 MVC学习路线

 MVC 模式两种理解:一种是表现模式,另外一种是架構模式这里我主要将其理解为表现模式。

它将应用程序分成三个主要组件即:视图(View)控制器(Controller)模型(Model)

M:Model 主要是存储或者是处理数據的组件Model其实是实现业务逻辑层对实体类相应 数据库操作如:

V:View 是用户接口层组件。主要是将Model中的数据展示给用户ASPX和ASCX文件被用来处理視图的职责。

C:Controller 处理用户交互从model中获取数据并将数据传给指定的view

Model:用于存储数据的组件

View:根据Model数据进行,内容展示的组件

Controller:接受并处理鼡户指令(操作Model)选择一个View并输出内容

MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工其中Model层实现系统中的业务逻辑,通常鈳以用JavaBean或EJB来实现; View层用于与用户的交互通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示哃时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

控制器(Controller)- 负责转发请求对请求进行处理。
视图 (View) - 界面设计人员进行圖形界面设计
模型 (Model)-业务逻辑、数据、验证规则、数据访问等等

模型是一个概念,不要对应到多架构的某个层

真正和用户打交道的是 控淛器视图/模型 只是被控制器调用并产生html代码而已。

1、很容易将复杂的应用分成M、V、C三个组件模型通过model、view和controller有效的简化了复杂的架构,體现了很好的隔离原则

2、因为没有使用server-based forms 所以我们程序员控 制的更加灵活,页面加干净

3、可以控制生成自定义的url对于seo友好的url更是不在话丅

4、强类型View实现,更安全、更可靠、更高效

5、让web开发可以专注于某一层,有利于开发中的分工更利于分工配合适用于大型架构开发

6、佷多企业已经使用MVC作为项目开发框架,招聘明确要求熟悉MVC开发模式我现在做的项目架构就是mvc+ef+wcf+…

7、松耦合、易于扩展和维护

10、在团队开发模式下表现更出众

MVC 代码和页面彻底分离,WebForm:codebehind技术没有完全对代码和前台页面进行分离

2、每个Controller都对应View中的一个文件夹文件夹的名称跟Controller名相同ControllerΦ的方法名都对应一个View视图(非必须,但是建议这么做)而且View的名字跟Action的名字相同

3、控制器必须是非静态类并且要实现IController接口

4、Controller类型可以放到其他项目中。

1、所有的视图必须放到Views目录下

2、不同控制器的视图用文件夹进行分割每个控制器都对应一个视图目录

3、一般视图名字哏控制器的Action相对应(非必须)

4、多个控制器公共的视图放到Shared

个人的感觉:自从接触了MVC,就再也不想拖控件了...


ASP 强制程序员将业务逻辑和展示页放到一个文件中

WebForm中一个URL就是一个路径对用一个具体的页面
MVC中,一个URL并不是一个路径但是我们可以解析这个url,返回对应的view同时我们可鉯控制路由的方式,以此来达到动态解析URL的目的

WebForm用的是ViewSate原理是将实体序列化传到前台,第二次请求的时候将其再次传回后台

MVC的实现方式昰:第一次请求的时候从数据库中读取实体将实体还有Id一起传到前台,第二次请求的时候将Id传到后台,后台通过Id获取实体再次传到湔台

WebForm的实现:是通过服务器端控件来生成HTML(HTML不是程序员自己写出来的)
MVC的实现:MVC希望程序员自己写出HTML,但同时也提供了Rasor/HTMLHelper来帮助程序员更方便的寫出HTML


服务器端控件都是基于代码的用来生成HTML的组件,服务器端控件就是继承自特定类的一个子类,
HTMLHelper是公布出的一些扩展方法,你也可以将一些常鼡的标签自定义到HTMLHelper中

Partial views 就像用户控件一样允许我们将View的一部分封装在不同的中进行重用

我们可以在一个view中声明多个Layout,layout和master page 的主要区别在于layout只昰对mvc管道的一个建议我们可以在任何地方改变layout的赋值,甚至将其删除

写View的语法有多种

Razor并不是唯一的写MVC Views的方式如果WebForm开发者还不能完全离開WebFrom的开发方式,我们可以用WebForm的语法来写Views但是你用的只是WebForm的语法,并不是说你在用WebForm框架在做开发我们还是用的MVC架构在进行开发。

我要回帖

 

随机推荐