大家来讨论一下asp.net的mvc吧!

yasire 2010-03-30 10:54:16
我是先接触三层架构,根本不知道mvc是怎么一回事。
前些天asp.net的mvc2.0发布了,我看了一下入门教程,感觉mvc2.0是个好东西,再加上我比较喜新厌旧(mvc不新,但是asp.net mvc2.0比较新),感觉普通的asp.net相比mvc2.0没有任何优势了!
1. 三层架构请求的是aspx,而mvc请求的是控制器,所以网址上www.*.com/a.aspx和www.*.com/a就有很大区别。感觉上mvc安全一些(只是感觉,不要问原因)。
2. 三层架构用服务器控件,mvc直接在aspx里面写代码,没有aspx.cs,没有服务器控件就没有服务器控件的生命周期,我是不是就可以断定mvc效率更高些?!
3. 或许三层架构的开发效率更高些(mvc只是看了点入门,并没有实际使用)。

小弟才疏学浅,没法从根本上做比较,都是些浅显的感觉,望大家踊跃发言!
...全文
445 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
愚知 2011-09-21
  • 打赏
  • 举报
回复
学习ing
yasire 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 qqhahazxxqq 的回复:]
引用楼主 yasire 的回复:
mvc直接在aspx里面写代码,没有aspx.cs,没有服务器控件就没有服务器控件的生命周期,我是不是就可以断定mvc效率更高些?

肯定不是了。
[/Quote]
为什么啊?
OOOqqqOOO 2010-03-30
  • 打赏
  • 举报
回复
只能说非常好。
ILOVE_ASPNET 2010-03-30
  • 打赏
  • 举报
回复
这个帖子中学到好多东西,本来是打算午睡的结果这贴太好,赞一个。
ILOVE_ASPNET 2010-03-30
  • 打赏
  • 举报
回复
楼上的几位说的很道理,我也该好好的思考思考啦。。
wuyq11 2010-03-30
  • 打赏
  • 举报
回复
asp.net mvc是asp.net技术的继承
.aspx文件,已经不再是一个可被独立请求的页面了
qqhahazxxqq 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 yasire 的回复:]
mvc直接在aspx里面写代码,没有aspx.cs,没有服务器控件就没有服务器控件的生命周期,我是不是就可以断定mvc效率更高些?
[/Quote]
肯定不是了。
段传涛 2010-03-30
  • 打赏
  • 举报
回复
三层是垂直依赖的
而MVC是松耦合的
三层没有设计模式基础一般也能整体把握
MVC的话必须有设计模式基础才能比较好的全局掌握,但是如果是只做Controller/Views的一部分的话就不用那么多,这样便于分离
三层结构清晰MVC使用得当易于复用,而且开发速度很快
段传涛 2010-03-30
  • 打赏
  • 举报
回复
MVC和三层架构,是不一样的。
三层架构中,DAL、BLL、WEB层各司其职,意在职责分离。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。
段传涛 2010-03-30
  • 打赏
  • 举报
回复
又mvc 讨论,
MVC的缺点
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。
根据我个人经验,由于我们将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。
MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
amandag 2010-03-30
  • 打赏
  • 举报
回复
只有一个项目用过MVC的飘过
a278342801 2010-03-30
  • 打赏
  • 举报
回复
学习中。。。
丰云 2010-03-30
  • 打赏
  • 举报
回复
MVC和三层架构之间,在逻辑上,是横向并列关系吗?
这个比较不妥当吧!

个人观点:
MVC是一个实现了三层架构的框架。
也就是说,MVC是三层架构的一个实例而已。

关于第2个问题,MVC不是没有.cs,
而是把这个功能集中到控制文件中去了,
把同一个功能模块的后台代码集中起来管理,
提高代码重用性和简洁性,同时符合面向对象编程的思想。
这是一个进步。

第三个问题,我觉得要具体需求,
有些小需求,MVC未必有速度优势。
但大型的、复杂的需求,开发速度肯定要快很多。
而且代码管理简洁方便。
yasire 2010-03-30
  • 打赏
  • 举报
回复
MVC框架具有很强的优越性,而WebForm也不是一无是处,在简单的应用中更加容易开发。WebForm也是可以实现和MVC一样的分层方式,只是处理时需要多写一些代码而已。
  使用ASP.NET MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的。对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了System.Web.Routing类库(MVC2中,MVC1怎么用的忘记了。)而这部分类库被包装在.NET Framework3.5 SP1中,MVC2需要SP1支持也就理所当然了。SP1提供的System.Web.Routing类库可以方便地进行地址请求拦截,对编码处理方面也很优秀。UrlRoutingModule类拦截请求,在这之前,Application_Start的时候,会给RouteTable的全局对象一个拦截的设置。而这个设置使用RouteCollection对象进行保存,MVC对这个类进行了扩展——RouteCollectionExtensions。这些可以不考虑,接下来,当用户访问页面时,UrlRoutingModule类拦截请求,在RouteTable中查看是否符合规则,符合的话,就会调用MvcHandler,这个调用在httpHandlers配置节点被注册,条件是地址符合“*.mvc”规则。MvcHandler的ProcessRequest方法就会调用Controller来执行。事实上整个过程都是黑盒子,用户感觉不到。在Controller中某方法执行后,返回结果,再进入具体的aspx页面。

  分析了MVC的工作工程,就可以对比其与WebForm的区别了。我们知道,MVC模式的业务被放置到Controller中去执行,而aspx页面只负责显示。那么在MVC中的业务实际执行时间被提前到了HttpMolde中,而WebForm的请求只在httpHandler容器中被执行。也就是说MVC中Controller与View的分离是使用的ASP.Net请求管道隔离的,这样的话无疑在不影响效率(一次请求,而Response.Redirect是二次请求)的情况下达成了代码的逻辑层次的分离。

  MVC工作的优点是显然的,更加有利于理解分层逻辑,把握代码的层次感。Controller到aspx页面之间的过程,已经被框架隔离。至于Controller或者View页面与Model调用的过程,还是需要自己来把握。ASP.NET的MVC框架实现了Controller代码的单独管理。

  而看WebForm开发模型,则只在HttpHandler容器中执行,对其进行分层,在大的方面缺乏支持,而只能依靠逻辑上分离。并不是不能分离,而是由一定的局限性。HttpHandler的拦截,是跟访问后缀名有关的。当请求一个页面时,那就是一个Handler,而WebForm模型实现显示与逻辑分离,才有的是WinForm的事件驱动。显然,事件必须被注册到页面里,比如Button1_Click这样的代码。而在Button1_Click执行之前,Page_Load方法会被执行。

  显示代码被写入Page_Load方法中,那么就会造成需要写额外的废代码,比如if (!Page.IsPostBack)这样的判定。而在Button1_Click执行后需要显示的部分,则比较难处理,写出另一个方法,也是必须要在Button1_Click里调用的。替代的解决方案是使用Response.Redirect,在一个aspx页面中处理逻辑,处理完就跳转到另外一个显示的页面。这样做的坏处是,在两个页面中数据很难共享,而跳转是通过标记302来实现,因此多一次请求。而另外还可以通过Server.Execute,Server.Transfer或者Context.RewritePath这样的处理方式,则两个页面转换是在服务器端完成,可以共享数据,可以说和MVC框架的处理方式大同小异,缺点是需要手动配置这些重新定向的属性。

  从以上分析可以看出,MVC框架具有很强的优越性,而WebForm也不是一无是处,在简单的应用中更加容易开发。WebForm也是可以实现和MVC一样的分层方式,只是处理时需要多写一些代码而已。而我认为,在用WebForm开发分层遇到的最大问题是页面与页面之间数据的传递问题,而掌握好WebForm中使用服务器端跳转的应用技巧(Server.Execute,Server.Transfer或者Context.RewritePath)进行开发就可以解决数据传输问题,ASP.NET MVC与WebForm比较起来,WebForm更容易理解,不会产生复杂的配置,也是一个很不错的选择。
区别ASP.NET MVC框架与WebForm
yasire 2010-03-30
  • 打赏
  • 举报
回复
1.传统WebForm开发中存在的一些问题



传统的ASP.NET开发中,微软的开发团队为开发者设计了一个在可视化设计器中拖放控件,编写代码响应事件的快速开发环境。然而,它所带来的负面效应是:

由于控件封装了很多东西,开发者很难了解这背后的HTML是如何运作的
容易得到一个包含大量ViewState的页面,使得页面尺寸远远超过所需的内容,使得页面的打开速度较慢
不容易被测试


2.什么是MVC?


MVC(Model-View-Controller,模型-视图-控制器模式)是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。



3.什么是ASP.NET MVC?



ASP.NET MVC是微软的开发团队基于MVC开发的一个易于被测试的框架。它具有以下特性:

没有数据回传
没有在页面中保存视图状态
开发者可以完全掌控页面的呈现过程
易于单元测试
易于测试驱动开发
可扩展、可替换
支持WebForm中的有关特性,如:用户控件、母版页、数据绑定、本地化等
不在基于文件目录结构,而是将URL映射到控制器中



4. 为什么使用ASP.NET MVC?



易于进行单元测试
易于进行测试驱动开发
避免了WebForm中大量的ViewState导致页面文件变得臃肿


5. MVC与三层架构?

正确认识WebForm与Asp.NET MVC
Dream_Hunter_ 2010-03-30
  • 打赏
  • 举报
回复
开发起来不一定mvc快
比如,有个功能强大的表格,传统的用datagridview就可以了,而mvc就没这么方便了。
ailin84 2010-03-30
  • 打赏
  • 举报
回复
效率=开发效率=运行效率?

要综合来看吧,asp.net webform机制的好处在于开发迅速,门槛低。

sxiaohui8709253 2010-03-30
  • 打赏
  • 举报
回复
关注 学习
jenny0810 2010-03-30
  • 打赏
  • 举报
回复
友情帮顶
puzhichen 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 foren_whb 的回复:]
个人观点:
MVC是一个实现了三层架构的框架。
也就是说,MVC是三层架构的一个实例而已。
[/Quote]
同意!
加载更多回复(16)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧