【问题标题】:.net application architecture guidance.net 应用程序架构指南
【发布时间】:2011-02-18 08:21:45
【问题描述】:

我很困惑。请指导我。

看,我有 .net 应用程序(比如 Web 应用程序)。这是 n-trier 。基本上它是3层。照常。它有表示层、业务层、数据访问层。当我在发现复杂的数据集和数据表中的数据层中获取记录时。但是当我将数据从数据层传递到业​​务层时,我必须在那里使用什么。因为根据我的想法,在业务层中使用 System.Data 是不合适的。万一它可能会损害性能。那么在这两层之间传输数据的媒体应该是什么?

同一场景中的另一个问题是,假设我的数据库中有存储过程,具有用户信息插入功能。我想稍后通过业务层将数据从表示层传递给数据。在层之间传递数据的正确方法是什么,反之亦然。我可以使用用户对象。但是在架构级别,如果我使用用户对象然后传递数据,我需要访问所有层中的用户对象。那么用户对象在应用程序的层中应该放在哪里?

【问题讨论】:

    标签: .net architecture


    【解决方案1】:

    问题一:课程。创建一个User类,在从users表读取的时候,从数据层返回一个IList<User>给业务层。

    问题 2:我使用一个单独的程序集/类库来定义所有业务对象。

    【讨论】:

    • 好的,但是如果我使用单独的程序集,并且如果我在业务上有小的变化然后是对象级别的功能,那么我总是需要更改对象。我知道我可以通过部分扩展对象。但是如果我想使用接口来扩展我的类/对象,那么如何使用接口来实现类的扩展呢?
    • 如果您不想强制所有使用 BO 的类更改,您也可以针对 BO 的接口工作。 IUser、IUserWithExtraInfo 等。让User 类实现它们,在单独的程序集中没有User,而是在数据层中。始终针对 BL 中的接口工作。
    • 无法得到你的最后一句话。
    • 我也没有。世界有时很奇怪。尤其是当你筋疲力尽的时候。
    【解决方案2】:

    您可以使用DTOs,它们是设计用于在层之间传输数据的类

    【讨论】:

      【解决方案3】:

      我会向您指出领域驱动设计。但由于学习曲线,它可能不适合您/您的团队。你手头可能没有足够的时间。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2014-10-19
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多