【问题标题】:Business Logic Layer Design业务逻辑层设计
【发布时间】:2013-02-18 08:44:24
【问题描述】:

我觉得问这个问题真是个菜鸟,但它已经困扰了我一段时间了。

在设计分层应用程序的 BLL 时,您是否会将所有实体类放在一个命名空间中?例如:如果您有一个包含客户及其车辆的数据库,并且这些车辆按月进行维修。我认为可以将客户及其车辆保存在与“服务模块”不同的“模块”中(这样,如果您需要更新服务的完成方式或数据的存储位置,则无需触摸Customer\Vehicle 模块)。

我的这种想法是正确的还是应该改变我的设计思路?

这让我在使用 LINQ to SQL 时遇到了问题。如果表的实体类的一半包含在“模块”A 中,另一个包含在“模块”B 中,那么您将在某个地方使用“模块”A 引用“模块”B,反之亦然,以适应 2 个表之间的关联与“模块”接壤。

或者(现在才想到这一点)您是否会在“模块”中重叠 1 个表的实体类(在两个模块中具有相同的类)?

任何建议将不胜感激。

【问题讨论】:

  • 避免修改命名空间的目的是什么?我会理解组装。请注意,您在引号中使用了名称模块,这意味着您也不太确定这些类的边界是什么。
  • 真正的设计模式专家也将 BLL 与 DAL 分开。因此,他们不必担心具体的数据访问技术、其局限性和实施细节。

标签: c# .net linq-to-sql architecture bll


【解决方案1】:

尚不完全清楚您是否还有数据访问层,因为您提到“因此,如果您需要更新服务完成方式或数据存储位置,则无需接触客户\车辆模块”。 DAL 将负责处理检索和存储数据,无论何时何地。

当然,车辆可能必须更新,如果更新这些规则需要在一个地方完成,那将是最方便的。您可以使用这些规则简单地创建一个客户和车辆 BLL。然后,您只需添加一个使用 Customer 和 Vehicle 的 CustomerVehicleService。没有你做不到的规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2022-11-24
    • 2011-12-03
    • 2011-11-26
    • 2017-04-29
    • 2016-08-12
    相关资源
    最近更新 更多