我见过ASP.NET社区对MVC的嗡嗡声.我知道它的起源的基础知识,并且有很多站点(除非我错了,堆栈溢出本身)基于ASP.NET MVC.
从我听过的所有关于MVC的内容中可以看出,它似乎是ASP.NET开发的未来.但由于我通常不会涉及.NET Web开发,所以我想知道以下内容:何时使用MVC是合适的,何时不适用,为什么?MVC的伟大(和可怕)使用的例子将是令人着迷的.
虽然我意识到MVC的其他实现还有其他语言如RoR,但我对它对.NET程序员的影响更感兴趣.
如果这已经过去了,我道歉!
以下是关于Web应用程序MVC的2美分.对于最初打算使用MVC的GUI应用程序,需要"侦听器"代码,以便在事件更改模型数据时更新UI.
在Web的MVC中,这是不必要的,您可以免费获得监听器:Web服务器,HTTP请求是事件.所以真正的网络MVC应该更简单.实际上,它可以归结为Mediator模式,Controller在模型和视图之间进行调解.
有两件事情有很多混乱.无论传统的"智慧"如何:
框架!= MVC
数据库数据!="模型"
"完整堆栈"Web开发框架通常会添加许多功能,并且可能或可能不是面向MVC的核心.许多框架添加的功能之一是数据库访问或对象关系映射功能,并且由于框架和MVC混淆,随后数据库数据和MVC的模型方面也会混淆.通常可以将模型视为应用程序的基础数据,但它不必来自数据库.一个很好的例子可能是维基,其中底层模型/数据由文件修订数据组成,例如,来自RCS.
希望这会有所帮助,我相信其他人会有很多补充.
我想说一个非常引人注目的使用MVC的场景是,如果你有一群经验丰富的.NET开发人员,他们没有 WebForms的经验.
从我自己的这种情况(很少的网络体验)我发现它使用MVC而不是WebForms更高效和舒适.
由于前面提到的抽象,我发现拾取WebForms非常困难 - (我认为WebForms复杂性的证据是我从来没有见过任何我认为是WebForms"guru"的人"即知道页面生命周期的关键/数据绑定回来 - - 前面等).
使用MVC实际上允许我使用我的.NET和软件体验,而无需大量投资学习WebForms框架.不仅如此,我对HTTP有了更好的理解,我认为这将允许更高质量的解决方案.
IMHO MVC允许您比WebForms更好地考虑代码,因此我认为具有大量"模式"体验的开发人员在MVC中会更加舒适.
ASP.NET MVC不是ASP.NET开发的未来,它只是一种用ASP.NET开发网站的新方法.微软已经明确表示他们将来会继续支持和改进WebForms和MVC.
我想不出任何网站,如果使用MVC是不合适的.您也可以为WebForms争论相同.
您是否选择其中一个是个人选择,并且取决于开发团队的经验和偏好.
在几个大项目中使用MVC后,我个人永远不会回到WebForms开发.在我看来,WebForms在http和html上放置了一个不必要的抽象层.对于快速原型,您可以使用WebForms更快地将拼凑在一起的东西拼凑在一起,但在此之后,抽象的复杂性使事情变得更难而不是更容易.在我看来,使用WebForms的唯一令人信服的理由是当前可用的丰富级别的第三方控件.但是你可以混合使用WebForms和MVC,因此它很容易实现两全其美.