0

就目前而言,这是解决方案。

在此处输入图像描述

波尔。业务对象层。BL。业务层。达尔。数据层。(解决方案中没有网页,因为它将是在以后的过程中开发的 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……我不太喜欢这个,因为我真的很喜欢层层叠叠的自上而下的分离环境。所以我一直在寻找和发现一些相关的东西EventArgsInterfaces但我仍然在摸索,看看我是否走在正确的道路上。

我通过 DAL、DataSets 和其他东西工作 BL 很酷。但是有没有办法在顶层使用BOL对象?如果无法保存自上而下的引用,我是否也应该使用DataSetsBOL <-> BL?是EventArgs要走的路吗?

谢谢你。

4

2 回答 2

1

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

如果你的不同应用层分布在不同的机器上,实体库可以分布在每一层上。EventArgs 绝对不是要走的路。

于 2012-07-12T10:39:42.847 回答
1

如果您跨机器拆分,那么您将有某种数据合约通过网络发送。因此,此时您很可能需要引入 DTO。

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

将 DataSet(这是一种数据层概念)返回给 BL 对我来说似乎有点混乱。因此,我建议创建一个从 DataSet 映射到的 BL 对象 (DTO),然后将该对象公开给 BOL。这会整理出您的参考资料,并更清楚地调整每一层的职责。

于 2012-07-12T11:33:17.560 回答