MVC更多是一种架构模式,而不是完整应用的解决方案。MVC主要涉及应用程序的UI/交互层。您仍然需要业务逻辑层、可能还有一些服务层和数据访问层。也就是说,如果您采用n层方法。
为什么其中一个必须是真的?
根据不同的视角,两者都可以是真的。
如果MVC是应用程序架构的基础,则它可以成为一种架构模式。
它也可以被视为一个设计模式,一个适用于任何应用程序的抽象概念。
设计模式告诉我们如何有效地编写代码(考虑 代码指标)。
一些好处:
架构模式告诉我们如何有效地利用资源。
在MVC中, a). 可以使用JavaScript模板创建视图,也可以使用HTML b). 控制器可以使用.NET框架编写 c). 模型可以使用Java编写 - 可以使用返回仅JSON数据的Java服务。
而在设计模式中,不能实现多种技术编写代码的模式,例如Java中的AdminUser类、C#中的Customer类、Php中的Partners类以及Ruby中的工厂模式 :); 嗯..太容易了吧? :)
我知道这个问题已经在一段时间前得到了回答,但是还没有人提到使MVC模式著名的书籍:《面向模式的软件架构》(POSA),作者是Buschmann等人,于1996年出版。虽然POSA没有像Gamma等人的《设计模式》一书那样广为人知,但它是模式社区使用的基础性书籍之一。
另外,POSA非常清楚地将MVC识别为一种架构模式。我的直觉是,微软和Sun只是粗心地把每个模式都称为“设计模式”。
我认为两者都是正确的。如果你在像Ruby on Rails这样的框架中查看MVC的特定实例化,那么该实例化更多地是一种设计模式。如果你将MVC视为一个通用概念,则它更多地是一种架构模式。
如果你把十个软件架构师放在一起讨论什么是模型-视图-控制器模式,你最终会得到十二种不同的意见。...一些纯粹主义者肯定会对我所说的“MVC”有所疑虑。欢迎在本网页底部的留言板上发表激烈的评论。我很乐意听取不同的MVC定义,但请记住我并不关心它们。
Josh Smith
根据Martin Fowler的说法,它们是GUI架构: Martin Fowler-GUI architectures
这取决于应用程序的大小,因为它只影响与GUI相关的类,在小型应用程序(主要是GUI)中,它可以被视为一种架构模式,而在大型应用程序中,它只是一个应用于GUI代码的设计模式(可能占应用程序代码的10%)。
MVC在软件架构书籍中通常被提及和介绍为/作为演示层。
阅读以下书籍:
面向企业的Microsoft.NET解决方案架构(Microsoft出版社)
专业ASP.NET设计模式(Wrox)
使用Microsoft.NET的企业解决方案模式(Microsoft出版社)
企业应用程序架构模式(Addison Wesley)
企业架构实践指南(Prentice Hall)
MVC是一种架构模式。非常清晰地阐述和展示在http://molecularsciences.org/zend/mvc_model_view_controller