首页 > 解决方案 > 如何强制使用域服务?

问题描述

在有关域服务的在线文档(“ https://aspnetboilerplate.com/Pages/Documents/Domain-Services ”)中,您有一个名为“我们如何强制使用域服务?”的部分。

在那里,您暗示有很多外部文档围绕将一种“策略”服务注入实体的概念作为这样做的一种方式,但是关于该类的实现的文章有点模糊,以及应该在哪里注射以及如何使用。我一直在互联网上搜索这种设计以强制使用域服务的示例,但没有找到任何东西。

只是浏览该文档会留下太多问题..

此外,我希望我能找到一个简单的 Abp 实现,它提供了一个示例,但找不到任何东西。

我对此非常好奇,因为我发现它是过去大型项目的一个大问题:开发人员在应用程序服务层编写自己的代码,不知道这些功能已经在某些域驱动的“管理器”中提供服务。

您能否提供一个完全实施的这个概念的快速小样本?使用 Abp 会很棒,但一个通用的例子也可以。

小心,

杰森

标签: domain-driven-designaspnetboilerplate

解决方案


一些想法:

  • 该代码中的策略模式在强制使用域服务方面没有任何作用。它只是使任务分配更加模块化和更加符合 SRP。

  • 防御性编程只能为您做很多事情。当然,将AssignedPersonIdprotected 设置为不能直接赋值是一件好事,但程序员也可以将其改回 public。不要过度依赖技术代码来防止不良的开发人员行为——共享实践和团队文化效率更高。

  • 质疑应用程序示例或模板代码(就像您所做的那样)是合理的。不要把那个代码当作福音真理——它从一开始就不是为了示范。尝试自己的东西并从错误中吸取教训。经验不是可以通过这样的文件传递的东西。


推荐阅读