3层拱。在不同的项目中

时间:2012-07-12 10:31:41

标签: c#

这就是解决方案。

enter image description here

BOL。业务对象层。 BL。业务层。 DAL。数据层。 (解决方案中没有网页,因为它将是在后续过程中开发的php)

BOL 引用 BL - 然后 BL 引用 DAL

我猜你知道每个.cs文件里面有什么。所以我真的很喜欢这种3层架构并保持分离(第一次以这种方式工作)。 现在,当涉及通过层发送和获取数据时,我遇到了一些问题。

例如:BL(methods.cs)

  public class Methods
    {
        LineaDAL obj = new LineaDAL();
        public DataSet GetLinea()
        {
            var ds = new DataSet();
            ds = obj.GetLineaDAL();
            return ds;
        }
     ////more code
     }

这很好用,从DAL创建一个对象(被引用),然后调用DAL并通过DataSet检索数据。 这很酷,它可以很好地从DAL / SQL中获取一些东西。

但是现在我正在进行更新,我希望BL调用一个DAL函数向它发送一个参数。我尝试过这个参数的第一件事当然是BOL的一个对象。由于明显的原因是不可能的,BL不知道BOL。

当发生这种情况时,我开始阅读并找到了一些好的方法。其中之一就是创建一个DTO ......我不太喜欢这个,因为我真的很喜欢层级和层次中自上而下的分离环境。因此,我一直在寻找并发现与EventArgs和一些Interfaces相关的内容,但我仍在摸不着头脑,看看我是否走在正确的道路上。

我通过DAL,DataSet和其他东西很酷地工作BL。 但有没有办法在顶层使用 BOL 对象?如果为了保存自上而下的参考文献而无法做到这一点,我应该将DataSets用于BOL< - > BL还没? EventArgs是可行的吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我需要一堆可以在层之间引用和共享的实体,然后这些实体应该存在于一个独立的项目中,所有其他项目都可以参考。

如果您的不同应用程序层分布在不同的机器中,则实体库可以随每层分布。 EventArgs绝对不是最佳选择。

答案 1 :(得分:1)

如果你拆分机器,那么你将有一些数据合同通过网络发送。因此,您最有可能需要在此时引入DTO。

当您进行选择(读取)时,DL层将返回什么?由于您声明的原因,您无法为选择返回BOL对象(BL没有引用BOL)。

对于我来说,将一个DataSet(这是一种数据层概念)返回到BL似乎有点麻烦。因此,我建议您创建一个从DataSet映射到的BL对象(DTO),然后将该对象暴露给BOL。这会对您的参考文献进行排序,并更清楚地调整每一层的责任。