首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

ASP.NET MVC是什么东西解决方案

2012-06-22 
ASP.NET MVC是什么东西ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架.

ASP.NET MVC是什么东西
ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架.已于2009年3月19日正式发布. 

MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller). 

搞这么多模式都学不完了.
有谁知道它有什么好处?跟三层架构有什么区别吗?
就听说测试方便......

[解决办法]
MVC就是三层架构http://blog.sina.com.cn/s/blog_5ea9354f0100dea0.html

不是测试方便 是修改业务逻辑和换数据库方便
[解决办法]
都是差不多的……
跟三层打同小异
叫asp.net群交流83847699
[解决办法]
为了让 ASP.NET 适合中大型项目,能统一规划、控管整个网站系统的 
流程 (Controller Layer)、分工、方便日后维护,

因此需要改变过去,很多有的没的全写在 Code-Behind 的撰写习惯,
仿照 Java / Struts 一些 Framework 的观念。

[解决办法]
没必要盲目跟风,基本功扎实了什么模式也是信手拈来
[解决办法]
就是三层
[解决办法]
不是三层,楼上的不要误导。
和asp.net web是两个方向。
正式版已经出来了,下载安装后试用一下就明白了。asp.net web做习惯了,刚开始会很不习惯。
有点是可以精确控制页面。
如果页面要求很高,如web2.0,可以用asp.net mvc;如果偏向应用系统,可以考虑asp.net web,开发效率更高一些。
[解决办法]
ASP.NET MVC——螺旋进步的产物

对于微软为什么要推出ASP.NET MVC,我们是无从得知的,也许是因为JavaEE平台上有Struts,也许是因为MVC太流行,也许微软是想使得自己的Web App平台更完善,总之我们只能猜测。但是如果回顾一下微软的Web App平台进化过程,还是很有意思的。

ASP——微软最早为Web开发做出的贡献可能就是ASP了,这个动态语言把动态网页开发的难度空前降低了。但是,在很多人兴奋的用ASP写着一个又一个动态网页时,它的缺点渐渐暴露:语言过于简单,没有面向对象支持、没有好的IDE支持、动态脚本和静态HTML杂糅在一起,使得修改及维护极为困难。

Web Form——说实话,即使是用现在的眼光看,微软推出的Web Form编程模型确实是很有创意,也很实用。微软开创性地将桌面应用的开发模式引入Web应用开发:拖控件、写事件处理、运行...一切都那么美好,而且前段静态代码和后端程序完全隔离在两个文件里,并且用户可以使用.NET平台上任意一种语言进行后端编程。对程序员来说,使用C#进行编程比使用ASP实在是舒服太多了。所以,Web Form模型可以说成为.NET Web App开发的代名词,所有基于.NET平台的Web开发人员都熟悉并接受了这种模型。

ASP.NET MVC——就在Web Form大行其道时,微软推出了ASP.NET MVC。严格说,ASP.NET MVC和Web Form是不具有可比性的,Web Form是一个完整的新型模型,从顶层到底层是一整套的东西,而ASP.NET MVC只是给Web Form穿了件MVC样子的外套,它应该是基于Web Form的一种编程方式模型扩展。但是,从开发人员看,ASP.NET MVC的推出确实大大改变了我们的开发方式,很多Web Form下的方式不被提倡了(你仍可以用,因为ASP.NET MVC也是基于Web Form的),例如,曾饱受赞扬的服务器端控件再度被抛弃,转而再次使用客户端控件,事件驱动模型被抛弃,转而使用了类似传统的Url跳转处理模型。而且在数据验证等方式上与Web Form下提倡的方式有了很大变化。

如此看来,真像是一个轮回,似乎ASP.NET MVC又把我们带回到了ASP时代:服务器端模型不让用、事件驱动机制不让用、类似Desktop App的开发方式不让用...我们似乎从Web Form回到了传统的ASP时代。但是,真的是这样吗?当然不是!

只要稍微用一下,就知道虽然ASP.NET MVC提倡我们废除Web Form下的很多东西和习惯,但是绝不是让我们“回归原始”,如果非要说是一个轮回,那也应该说是一个螺旋式的轮回,是上升式的轮回。

记得马克思主义哲学中有个很经典的命题:对于新事物来说,道路是曲折的,前途是光明的。也许,Web App模型的发展就印证了这个观点吧。也许,服务器端控件、事件驱动模型这些东西一开始就是不适合Web App的,微软走了很多弯路,现在找到了正确的方向。抛弃的痛苦的,我们要抛弃曾经认为多么习惯并且倾注了大量心血的东西,但是,事物被否定后,剩下的的一个蜕变出的新事物,是一个更优秀的东西。

例如,我们抛弃了用了多年的务器端控件、事件驱动模型……但是我们得到了低耦合的、关注被分离的、符合MVC模型的新的Web模型。要敢于否定,才能获得新生。微软是,我们也是。

ASP.NET MVC带来的变化

下面,我们看看ASP.NET MVC到底让我们否定什么?又能得到什么。

1.服务器端表单控件。

由于ASP.NET MVC的特质,服务器端的表单控件不再被提倡使用,例如我们的文本框,不再使用asp:TextBox,而是使用传统的input,或直接让Html.TextBox生成。总之,很多服务器端控件被我们废止了。甚至GridView这样曾给我们带来无限快感的老朋友,也不再被提倡使用。但是,并不是说不能用任何服务器端控件,例如,为了实现母版,我们的ContentPlaceHolder还是必须要使用的。

2.事件驱动模型。

既然服务器端表单控件已经不提倡使用了,事件驱动模型自然也不被提倡,两者本来就是相辅相成的。在ASP.NET MVC中,当某个按钮被点击,你不要再习惯性想到应该在相应的aspx.cs中有个时间处理方法,你应该想到的是该有某个Controller中有个Action来处理这个事件。实际上,在ASP.NET MVC中,提倡不要在aspx.cs中写任何逻辑代码。甚至应该当他们不存在。

3.数据绑定

对于列表式表格数据,你一定习惯了GridView的数据绑定,可是,从你使用ASP.NET MVC开始,这不在被提倡了。你应该自己处理数据的显示。当然,我们也可以期待未来的ASP.NET MVC正式版中会有一个强大的Helper来帮我们做数据显示。

ASP.NET MVC的收益

你一定想知道,我们为使用ASP.NET付出了如此惨烈的代价,那么我们能得到什么?从我个人认为,你至少得到了以下东西:

1.清晰的、关注被分离的代码;

2.更容易的测试及维护;

3.更符合MVC的表示层;

4.你可以向Java程序员自豪的说:我现在也用MVC模式了,而且不用写任何XML!


[解决办法]
mvc三层架构一种
http://www.cnblogs.com/Terrylee/archive/2008/01/01/aspnet-mvc-framework-vs-wcsf-mvp.html


[解决办法]

探讨
ASP.NET MVC——螺旋进步的产物

对于微软为什么要推出ASP.NET MVC,我们是无从得知的,也许是因为JavaEE平台上有Struts,也许是因为MVC太流行,也许微软是想使得自己的Web App平台更完善,总之我们只能猜测。但是如果回顾一下微软的Web App平台进化过程,还是很有意思的。

ASP——微软最早为Web开发做出的贡献可能就是ASP了,这个动态语言把动态网页开发的难度空前降低了。但是,在很多人兴奋的用ASP写着一个又一个动态网页时…

[解决办法]
控制器。。。。怎么有点像JAVA的。。。监听器
[解决办法]
关注
[解决办法]
up
[解决办法]
3楼把水源的贴子COPY过来了:-)



[解决办法]
我也在学,他完全颠覆了我们以往的习惯。
[解决办法]
三层的一种
[解决办法]
你下载这个用用--《动软.Net代码生成器》--
这个工具很好的哦~~~里面三层的代码都有,功能强大!
[解决办法]
MVC并不是三层架构, 它是一种表示层框架, 适合做中大型的项目, 它的好处是数据模型没有被格式化, 所以它可以被多个视图灵活的共用, 这给表示层展示带来了福音.
[解决办法]
MVC就是三层架构啊。主要方便扩展,团队开发合成。业务逻辑清晰。
[解决办法]
3-tier or N-tier is :
WebPage -- BLL -- DAL

MVC is:
Model (cover BLL and DAL)
View (WebPage)
Controller (control the workflow and web logic)

you can read some articles and books talking about JSP/Struts.

为了让 ASP.NET 适合中大型项目,能统一规划、控管整个网站系统的
流程 (Controller Layer)、分工、方便日后维护,

因此需要改变过去,很多有的没的全写在 Code-Behind 的撰写习惯,
仿照 Java / Struts 一些 Framework 的观念。 

-------------------------------------------------------


MVC (Model-View-Controller) 的网站应用程序开发架构,在 Java / JSP / J2EE 已行之多年,并曾衍生出 Struts 等开放源码的 Framework (框架)。其主要目的是为了在开发复杂的大型网站时,能将不同的功能作切割、提高程序代码的可读性,以及组件的可重用性,其结构如下:


● View (JSP) 只纯粹用来显示数据,不涉及数据来源的捞取、各种逻辑处理和运算工作。这层完全由美工人员负责制作。此层如同 ASP.NET 中的 .aspx 前端页面。

● Model (JavaBean、EJB 组件) 用来存放独立且可重复使用的组件,包括:数据来源 (数据库) 的存取、商业逻辑的程序代码,并应与 View 作完整的切割,以便保留系统日后扩充时的弹性。此层如同 ASP.NET 2.0 中的 App_Code 系统数据夹中存放的自订类、DataSet,或是自订的 .cs 或 .vb 类库。

● Controller (Java Servlet) 用来控制整个网站处理的「流程」,负责协调 View 和 Model 之间的流程传递和转向,也要管理和指派由谁去接收使用者所提出的「请求 (request)」。当使用者在 View 里送出 request (Form 中控件的选项或输入数据后 submit、URL 网址、点选超级链接…等等) 后,Controller 里定义的某些 method 会判断,要交由 Model 中的哪些运算逻辑去处理,然后再判断要将处理结果传回哪一个 View 去显示出来。Controller 也是目前 ASP.NET 1.x / 2.0 所欠缺的部分 。


事实上在 Java / JSP 常引用的网站开发架构中,还可分为 Model 1 与 Model 2。Model 1 还可分为二至三种,如下:
第一种是将 HTML 和 .NET (Java) code 混在一起,俗称意大利面式的写法,如:ASP。这种 Inline code 最为人垢病的问题是程序可读性低、难以维护。

第二种是由与 .aspx 一对一对应的 Code-Behind code 直接存取数据库,亦即二层式的架构。但这样的缺点是程序代码难以重复使用,且因为逻辑已经写死在固定的页面中,会造成系统日后扩充困难。

第三种是经由自订类别库、App_Code 数据夹中的自订类或软件组件,去存取数据库,或做商业逻辑的运算 (JSP + JavaBean)。但此种做法仍缺乏流程的统一控管,导致每一支 ASPX (JSP) 都要验证使用者身份、验证 request 的参数、处理 Session、做例外处理,甚至包括 View 里的编码原则、语系设定,都得在每一支 ASPX 对应的 Code-Behind 去处理,也因此不适合大型系统的开发、扩充和维护。这种架构虽然也能做到虚拟式的三层式或多层式架构,但也是目前 ASP.NET 2.0 的极限。

至于 Model 2,即俗称的 MVC Framework,则加入了 Controller 的部分,将流程及事件交由中心控管,除了可让整个系统的运作流程更为明确,有效切开各层的工作,亦可避免让 View 里的 Code-Behind 去处理 Model 中的数据库存取、商业逻辑运算,也不必再到处撰写「流程传递和转向」的程序代码,而改由中央的 Controller 程序代码 (action method) 来统一控管。

但 MVC 架构也有其缺点,例如开发人员需要另外花时间转换观念及学习 Framework,尤其是 .NET 的开发人员或团队,因为过去较没有 Controller 统一协调流程的观念,势必得重新习惯,将很多原本写死在各个页面中的程序代码,改写进 Controller 里面。而且系统在设计阶段时,即要先协调好各个类别对象彼此间数据交换的格式及做法,因此势必得拉长系统事先的分析、规划时程。但若能有像 Struts 或 .NET MVC Framework 这样现成的框架可套用,则日后开发大型系统时,即可望达到事半功倍的效果。

------解决方案--------------------


学习!
[解决办法]
概念大家都知道,用起来也很顺手,就是开发成本比较高!
微软在气候推出的几种设计模式更是让人头疼,都是最基本的代码糅合成的,看起来朴实无华,用起来奇妙无穷!
http://www.uml.org.cn/sjms/sjms.asp
看看
[解决办法]
要是MVC 的推出能够超过JAVA 就好了 ,我就不用转来转去了
[解决办法]
晕哦mvc三层不知道???泪奔。。。。。。
[解决办法]
受教了,自己一直想去学习这个框架
[解决办法]
webform也好,mvc也好,c#,js等基础知识学好,用什么都无所谓的

热点排行