sjb*_*101 7 service domain-driven-design infrastructure repository
在使用域驱动设计开发的博客应用程序中,"Post"实体具有相关的标签实体集合.
在创建帖子(例如,从UI填充对象)时,我想通过REST调用第三方API,该API获取帖子的内容并提取语义标签(链接文本)以进行关联.
主要问题:设计这个的最佳方法是什么......
它是否设计得最好,以便Post实体可以调用域服务,如PostServices.GetTags(Postcontent)传递其内容并检索标签列表.
**PostServices.GetTags将通过另一个包装类与REST API接口.
或者第三方API是否应该作为存储库包装?
函数Post.GenerateTags()应该不存在于域实体中吗?
更多问题:
1:我还读过,让域实体与域服务交谈是不好的做法.这是真的?
2:通过工厂创建方法获取对PostServices域服务的引用是否可以.例如..
IPostService PostService = ServiceUtil.GetPostService(); return PostService.GetTags(Post.content);
3:域服务是否可以与第三方API连接?
4:域实体是否应该只知道如何处理通过调用REST API的应用层接收的标签.
慢慢地试图让我的头围绕DDD,但我似乎无法找到任何如何实现这种事情的例子.
在博客应用程序中,帖子是实体,标签是值对象。标签没有身份。你应该有:
帖子有一个标签列表。
问题:
1:我还了解到,让域实体与域服务进行对话并不是一个好的做法。这是真的?
是的,这不是一个好的做法。您的实体不想与域服务耦合。如果您这样做,那么以后就无法重复使用它们。您是否考虑过触发域事件?你可以告诉你的服务域做一些触发域事件的事情。
2. : 通过工厂创建方法获取PostServices域服务的引用可以吗?例如.IPostService PostService = ServiceUtil.GetPostService(); 返回 PostService.GetTags(Post.content);
是的,这是可能的。工厂方法可以返回抽象类或接口。这是一个很好的软件设计原则“为接口编码而不是为实现编码”。如果您这样做,您以后将能够更改您的实现,而不必更改您的客户端代码。
3:域服务耦合第三方API是否可以接受?
我不推荐你这样做,但这是可以接受的。
抱歉,我不明白问题4。
看这个链接。我希望它对你有帮助。
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |