MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式,好象最早是在Smaltalk中出现。MVC包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。 
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 
1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。 MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性 早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂及难以维护。很多VB,Delphi等RAD程序都有这种问题。甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象 管MVC设计模式很早就提出,但在Web项目的开发中引入MVC却是步履维艰。主要原因:一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。CGI程序以字符串输出的形式动态地生成HTML内容。后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。直到基于J2EE的JSP Model 2问世时才得以改观。它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能 JSP Model 1 与 JSP Model 2 SUN在JSP出现早期制定了两种规范,称为Model1和Model2。虽然Model2在一定程度上实现了MVC,但是它的应用用并不尽如人意 
JSP Model 1 
JSP Model 2 model2 容易使系统出现多个Controller,并且对页面导航的处理比较复杂 有些人觉得model2仍不够好,于是Craig R. McClanahan 2000年5月提交了一个WEB framework给Java Community.这就是后来的Struts. 2001年7月,Struts1.0,正式发布。该项目也成为了Apache Jakarta的子项目之一 Struts 质上就是在Model2的基础上实现的一个MVC架构。它只有一个中心控制器,他采用XML定制转向的URL。采用Action来处理逻辑

解决方案 »

  1.   

    mvc,重用性很好,方便了程序员,呵呵
      

  2.   

    MVC是基于URL请求的,感觉有些像JSP了。
      

  3.   

    对于在.net中用MVC,这几层怎么明确分开,一起完成功能?
      

  4.   

    MVC好像可以清晰的体现在java中,.NET有点混乱,大家看法如何?
      

  5.   

    模型-视图-控制器(MVC) 
    1、模型(Model) 
    模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 
    2、视图(View) 
    视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 
    3、控制器(controller) 
    控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。 
    MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。
    MVC的优点体现在以下几个方面: 
      (1) 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。  
      (2) 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。  
      (3) 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 
      (4) 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。 
    MVC的不足之处 
    MVC的不足体现在以下几个方面: 
      (1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 
      (2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 
      (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 
      (4) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。
      

  6.   

    ASP.NET MVC框架包含一个Visual Studio项目模板,方便你创建新的MVC web应用。选择文件->新项目菜单,选择“ASP.NET MVC Web 应用”模板,用它创建一个新web应用。在默认情形下,当你使用该选项生成一个新应用时,Visual Studio 将为你创建一个新的解决方案,然后往里面加2个项目。第一个项目是web项目,在其中你实现你的web应用的功能。第二个项目是个测试项目,你可以在其中编写单元测试,来测试你的应用代码。ASP.NET MVC 应用的默认目录结构有三个顶层目录:/Controllers 
    /Models 
    /Views
    你大概可以猜出来,我们建议把控制器类置于 /Controllers 目录之中,你的数据模型类置于/Models目录之中,你的视图模板置于 /Views 目录之中。太多了,看作者的博客吧,
    http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx
      

  7.   

    非三层,其实.net的控件和aspx、aspx.cs就是mvc模式
      

  8.   

    ASP.NET MVC框架这个哪里有?
      

  9.   

    我也想知道,还是自己架设?
    还有个问题就是在web上能用不~~
      

  10.   

    3层结构反正第一次写3层的时候,老板说SQL语句单独放到数据库操作类里。。
    业务逻辑写成类
    表示层绝对不写SQL语句
      

  11.   

    据说MVC是显示模式.
    三层是架构模式
      

  12.   


    下载地址:
    http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=11833
      

  13.   

    Microsoft的自带的MVC最近貌似才出来
      

  14.   

    .net中的三层架构,确实没有java里面分的清楚,不过如果你能将表示层,业务逻辑层,数据访问层和持久化层分开来做的话,系统的可移植性和可重用性会明显提高的,还有就是条件清楚,给读程序的人一种愉悦的感觉。
      

  15.   

    views部分支持多层目录吗?目前,看到的示例好像都是2层。
      

  16.   

    ASP.NET MVC 1.0今年发布的 去网站上下一个ASP.NET MVC 1.0组建 就可以在vs上创建MVC项目工程 具体案例自己去找吧 我在公司开发的B2B平台就是MVC架构的 个人感觉很好 很牛 很强大
      

  17.   

    欢迎各位加入ASP.NET MVC框架超级群!让我们共同学习、进步!QQ群号:40985466 非常乐意为大家提供一个良好的交流平台!
      

  18.   

    MVC解决问题的能力高低在于Controller,
    而Controller的关键又在于如何推送,
      

  19.   

    [color=#FF0000]晕,以后再也不会这种陈贴了!!切记!!!![/color]
      

  20.   

    个人感觉MVC还不错,不要拘泥与形式,可灵活变通。在以前我看的资料里,最多的是三层架构,
    1、显示层
    2、业务逻辑层
    3、数据访问层
    还有一个模型层。我看大多资料中,把SQL语句写在数据访问层,而我经常把SQL写在业务逻辑层,做一个小型的项目时,直接把DAL层拷贝一下,操作数据的方法都不用写了。直接调用就OK了。                    
    这只是个人见解,俄刚毕业,对三层的理解还有点浅。
      

  21.   

    学习中!!! 
       .net公司 好像在mvc框架 ,在vs2008里
      

  22.   

    有项目管理经验的.NET开发的朋友,可以加上限500人的QQ群28720769,一起交流。
      

  23.   

    举个小例子来解释一下MVC 与三层架构的区别,看了很多人分不清楚,心里觉得不爽 大家应该对 WebForm 都比较了解假如 有一个文件 叫作 index.aspx 就会有一个  index.aspx.cs 相对应
    页面显示内容都显示在 index.aspx  里面 ,而代码都写在 index.aspx.cs 里面
    是页面和代码捆绑在一起的,事件都是用回发方式处理,假如说index.aspx 里面的一个按妞Button,并有他的Button_Click()事件,当我们发现我们错了,不再需要这个按妞的时候,那么我们在删除Button的时候同时也要删除Button_Click()事件,那么当我们发现,有大量的这种错误时,那么我们不管是 index.aspx和index.aspx.cs都要重写,那么当你废除index.aspx的同时,基本上 index.aspx.cs 也被废除了,也就是说实际上这种模式并没有做到"显示"和"代码"分离机制,有的只是表面上的把二种代码分开写而于,而MVC恰恰可以解决这个问题,
    而在MVC里面若有一个index.aspx文件 只作显示用,而代码呢?不再是相对应的一个index.aspx.cs文件了,而是集中放置在同一个类文件中(即控制器中),用一个方法过程对应这个 index.aspx 页面,当你请求这个index.aspx文件时,会默认提前请求这个方法处理数据,并把所有 index.aspx页面中要显示的数据都提前取好,并且存放在 例示于 Session 的 ViewData  中,然后再回转到index.aspx页面,这时index.aspx显面只要取出 Session 或 ViewData 里面的数据就可以了,也就是这个时候 index.aspx 才真真意义是只是显示而于了.所有事件都用提交方式交给 控制器处理 控制器处理好后 再跳转到我们所需要的页面中来,即 MVC 中的 V 和 C 只是用来取代 WebForm 中的 aspx 及 aspx.cs 文件的处理方式而于
    对于M ( MOdel ) ,它即可以是空也可以包罗万象,可以把所谓的三层架构, N层架构,什么BLL,DAL 等等都通通的放在 MOdel里面来所前面有位童鞋说的很好 MVC 只是显示模式 和 三层架构根本不搭架,如果有需要 你可以把三层架构加进来如果你再不明白,那你就记住 MVC 在结构上等同于 "aspx 和aspx.cx"地位 与三层结构无关
    或者说 MVC 充当了 三层架构中的 "显示层"
    (这话很牵强,但是可以让人很好区分和理解三层架构和MVC的区别)
      

  24.   

    上世纪70年代出来的表现模式吧(MVP老赵说的)
    对企业的意义:
    开发速度相对WEBFORM慢,成本相对会增大很多,页面很干净,代码基本属于混写!给混写入ASP.NET提供新参考。