数据访问层应该包含业务逻辑吗?

20

我注意到一种趋势,即将业务逻辑从数据访问层(如存储过程、LINQ等)移至业务逻辑组件层(例如C#对象)。

这是否被视为现在“正确”的做法?如果是这样,这是否意味着一些数据库开发人员职位可能会被取代,转而更多地聘用中间层编码人员?(例如更多的C#代码,而不是更长的存储过程。)


相关:https://sites.google.com/site/unclebobconsultingllc/active-record-vs-objects - jaco0646
12个回答

0

数据层中很可能会存在一定程度的业务逻辑。数据本身就是这些逻辑的一种表现形式。例如,基于业务逻辑规则通常会创建主键。

例如,如果您的系统不允许一个订单有多个客户,这是业务逻辑的一部分,并且也存在于数据层中(或者应该存在于数据层中)。

此外,出于效率原因,某些类型的业务规则最好在数据库中处理。这些通常是存储过程,因此存在于数据层中。例如,在客户在一年内花费超过$X或收货地址与账单地址不同的情况下触发的触发器。

许多这些规则也可以在业务层中处理,但它们也需要一个数据层组件。这取决于您的错误处理位置。


0

在客户端/服务器应用程序中,数据层中的业务逻辑很常见,因为实际上并没有一个专门的业务逻辑层(除非你真的、严肃地防止任何人连接到应用程序外的数据库)。现在,随着Web应用程序变得更加普遍,你会看到更多的3层和4层应用程序(客户端+Web服务器+应用服务器+数据库服务器),越来越多的公司正在遵循最佳实践,并将业务逻辑整合到自己的层中。我认为数据库开发人员的工作不会减少,他们可能只是成为编写业务逻辑层的人(并让ORM工具编写大部分数据库层)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接