如果我们必须在.Net中为Web应用程序选择任何一种架构模式,哪一个是最好的,MVC或3层,如何决定?
答案 0 :(得分:10)
杰文,
我认为你很遗憾地接受了一系列的想法,许多刚接触MVC的开发人员认为,因为你已经'喂'认为mvc(模型)中的'M'纯粹是一个linq2sql平面实现,而且它适用于模型。不是这样......在我们的应用程序中,我们必须提供Web /桌面和手持设备的混合,所有这些都使用其中的各种常见功能。因此,我们创建了一个'BLL / DAL'dll,其中包含我们mvc应用程序中引用为“M”的所有业务逻辑。我们的网络表单应用程序以及桌面应用程序中使用了相同的“bll / dal”。在一个当前的应用程序中,我们使用我们的bll / dal dll挂接到oracle后端,并使用MVC纯粹作为RESTful服务充当两个遗留系统之间的中介。鉴于我们的bll / dal dll的设计,我们可以轻松地将其切换到sqlserver,应该(当时和何时)业务需要。
所以简而言之,选择MVC或3层的命题(我实际上认为你意味着分层,而不是分层[更多地涉及功能/服务的物理分离])完全没有实际意义,因为它们是融合,而不是不同的技术。
希望这会有所帮助 - 我会尝试在今天晚些时候通过谷歌先生提供一些例子来举例说明我的方法的完整性。
[edit] - 来自SO的类似问题; N层只是指实现的物理结构。这两个有时会混淆,因为MVC设计通常使用N层架构实现。
简而言之 ,一个是对象/ API设计,一个是系统架构;两个人都可以幸福地生活在一起。
答案 1 :(得分:1)
两者都是相当高级别的概念,并且所有高级概念都没有确定的答案。而且,你可以非常成功地混合它们。例如,在表示层上有多层应用程序,提供的应用程序足够大,这是必需的(例如,您有大型数据集+分析层+报告层)。
每当你在这两者之间做出选择时,我建议你考虑这些方面:
这个列表当然可以继续,但我认为这4件事将使你走上正轨。
根据我的经验,或多或少复杂的体系结构,现实生活系统(不是学术幻想系统)从来都不是MVC或3层,但总是很多东西的混合:)