2013-03-04 176 views
4

我对这个问题感觉像这样一个小菜鸟,但它现在一直在困扰着我。业务逻辑层设计

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

我正确地思考这种方式还是应该改变我的设计思路?

这给我带来了使用LINQ to SQL的问题。如果一半表的实体类包含在'模块'A中,另一部分包含在'模块'B中,那么你将有一个'模块'引用'模块'B,反之亦然,以适应2个表之间的关联与“模块”边界。

或者(现在想想这个)你会在'模块'中有1个表的实体类重叠吗?(在两个模块中都有相同的类)?

任何意见,将不胜感激。

+0

避免修改命名空间的目的是什么?我会理解为汇编。请注意,您在引号中使用了名称模块,这意味着您也不太确定这些类的边界是什么。 – 2013-03-04 09:48:47

+1

真正的设计模式 - 家伙也将BLL与DAL分开。所以,他们并不担心具体的数据访问技术,它的局限性和实现细节。 – Dennis 2013-03-04 09:53:34

回答

1

由于您提到“如果您需要更新服务完成方式或数据存储位置,您是否还拥有数据访问层并不完全清楚,因此您无需触摸客户\车辆模块“。 DAL会负责处理检索和存储数据的地方,尽管这可能是。

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