与其他语言相比,为什么n层在.NET中是不同的

时间:2014-06-22 15:03:01

标签: .net asp.net-mvc asp.net-mvc-4 n-tier-architecture

我所做的所有项目都有ui层和域数据访问层。 例如,ruby项目在模型项目文件夹中存储数据访问。 Asp mvc具有与ruby相同的mvc结构,但我们仍然使用单独的程序集进行数据访问,并为视图模型使用模型。

为什么? 为什么.net开发人员总是为dal创建单独的程序集将dal放在项目的模型文件夹中是不对的?

1 个答案:

答案 0 :(得分:4)

一个可能的原因是ui层需要知道模型,而不是如何从数据库服务器检索模型的细节。 数据库访问层肯定需要了解模型。因此,您需要一种方法来跨两个或更多物理层(n层)共享这些知识。

最简单的方法是将模型放在单独的程序集中。 ui层可以具有对模型组件的引用,并且数据访问层也可以具有对模型组件的引用。

这样做的好处是,当您部署应用程序时,如果它部署在不同的物理层,那么您可以只部署所需的程序集。如果模型是dal程序集的一部分,反之亦然,那么你将把db代码部署到没有用处的ui服务器。

有许多部署架构可供选择,每个架构都有其优点和缺点,因此没有一种正确的方法可以做到:它取决于它。一个单独的模型简化了跨多个层共享模型的过程,而这些层又可能是同一解决方案中的单独项目

因此,您不必总是将模型放在不同的程序集中,但它方便,有助于降低代码复杂性和一般的良好实践。