domain-driven-design - 如何强制使用域服务?
问题描述
在有关域服务的在线文档(“ https://aspnetboilerplate.com/Pages/Documents/Domain-Services ”)中,您有一个名为“我们如何强制使用域服务?”的部分。
在那里,您暗示有很多外部文档围绕将一种“策略”服务注入实体的概念作为这样做的一种方式,但是关于该类的实现的文章有点模糊,以及应该在哪里注射以及如何使用。我一直在互联网上搜索这种设计以强制使用域服务的示例,但没有找到任何东西。
只是浏览该文档会留下太多问题..
此外,我希望我能找到一个简单的 Abp 实现,它提供了一个示例,但找不到任何东西。
我对此非常好奇,因为我发现它是过去大型项目的一个大问题:开发人员在应用程序服务层编写自己的代码,不知道这些功能已经在某些域驱动的“管理器”中提供服务。
您能否提供一个完全实施的这个概念的快速小样本?使用 Abp 会很棒,但一个通用的例子也可以。
小心,
杰森
解决方案
一些想法:
该代码中的策略模式在强制使用域服务方面没有任何作用。它只是使任务分配更加模块化和更加符合 SRP。
防御性编程只能为您做很多事情。当然,将
AssignedPersonId
protected 设置为不能直接赋值是一件好事,但程序员也可以将其改回 public。不要过度依赖技术代码来防止不良的开发人员行为——共享实践和团队文化效率更高。质疑应用程序示例或模板代码(就像您所做的那样)是合理的。不要把那个代码当作福音真理——它从一开始就不是为了示范。尝试自己的东西并从错误中吸取教训。经验不是可以通过这样的文件传递的东西。
推荐阅读
- asp.net-mvc - 显示上传文件列表
- visual-studio-code - 是否可以在 VSCode 中放置代码折叠图标?
- python - Python 3 使用 urlretrive () 和嵌套循环下载 pdf
- excel - 将 SUMIF 函数插入单元格 VBA。预期的语句结束
- php - Laravel - 从 laravel 中的 MongoDB 集合中获取数组
- java - 无法使用 java 从 Amazon S3 中删除对象?
- android - 如何在 Linux 上获取 androiddeployqt
- snmp - 网络 SNMP 主机 snmpwalk
- python - 向现有 conda 环境添加新库
- python - 简单的python tensorflow InternalError:无法将元素作为字节获取