Pra*_*bhu 4 .net c# asp.net 3-tier n-tier-architecture
假设我有一个3层架构(UI,业务和数据).通常,我创建一个名为"Model"或"Common"的第4个项目来保存我的数据访问对象,然后每个其他项目都会使用这个项目.
现在我正在开发一个项目,其中我的一些数据访问对象具有需要访问Data项目的Save()等方法.所以,如果我试图在Data项目中使用Model/Common项目,我会有一个循环引用.
在这种情况下,保留数据访问对象的最佳位置在哪里?我可以将它保存在Data项目本身中,但是我需要知道数据访问对象的UI项目需要访问Data层,这是不好的.
我不认为你的n层非常正确.听起来你正在构建更多的2层系统.
在真正的3层项目中,只允许您的数据层与数据库通信.您可以使用"模型"或"常见"项目.这些项目是您的数据层.但是,你偏离的地方是只允许业务层与他们交谈.不应允许您的演示代码与数据层项目进行通信.
当你有超过3个"层"时,n-Tier会进来,但是相同的原理应用程序:每个层只知道如何使用(并且只需要引用)它下面的那个,然后为上面的层提供api它.在我自己的项目中,我采用典型的演示文稿,业务和数据层,并在业务和数据之间提供第4个"翻译"层.这样,数据层可以返回泛型类型,如dataset,datatable和datarow,而业务层只需要处理强类型业务对象.转换层仅在通用数据对象和强类型对象之间进行转换.这样,对传统层之一的更改不太可能需要对另一层进行更改.