Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design DDD、外部数据和存储库_Domain Driven Design_Ddd Repositories_Ddd Service - Fatal编程技术网

Domain driven design DDD、外部数据和存储库

Domain driven design DDD、外部数据和存储库,domain-driven-design,ddd-repositories,ddd-service,Domain Driven Design,Ddd Repositories,Ddd Service,我想在下一个应用程序中使用DDD。我已经找到了很多有趣的论文和答案,但无法找到解决问题的方法: 我们有一个SOA。体系结构,其中一些服务被称为其数据的主服务。这很好,但我不知道如何在DDD中很好地使用它们 如果服务“employees”是employees数据的主人,那么它是对几个简单值(名字和姓氏、出生日期、地址)的crud。 我的新应用程序应该跟踪为这些员工提供的培训。因此我有了参与者的概念,参与者与员工具有相同的价值观,再加上一系列培训和一项技能 我们可以假设“trainings”应用程序

我想在下一个应用程序中使用DDD。我已经找到了很多有趣的论文和答案,但无法找到解决问题的方法:

我们有一个SOA。体系结构,其中一些服务被称为其数据的主服务。这很好,但我不知道如何在DDD中很好地使用它们

如果服务“employees”是
employees
数据的主人,那么它是对几个简单值(名字和姓氏、出生日期、地址)的crud。 我的新应用程序应该跟踪为这些员工提供的培训。因此我有了
参与者
的概念,
参与者
员工
具有相同的价值观,再加上一系列培训和一项技能

我们可以假设“trainings”应用程序有一个包含参与者表的数据库,其中包含一个
参与者id
技能
和一个
员工id
,用于检索名字和姓氏

我说得对吗

但是现在,我可以使用哪个组件来称“员工”服务?是不是因为
participatentrepository
,所以当我得到一个参与者时,我有他的名字。或者是应用程序服务在使用参与者数据之前完成了参与者数据。或者我可以在需要的时候直接给员工服务部打电话吗


非常感谢。

在您的培训应用程序中(我的意思是在您的应用程序域中),员工的概念可能不作为外部参考而存在。正如你所说的,这将是一个参与者

我知道您需要从员工服务获取一些数据来填充参与者。我想不出什么办法

1) ParticipantRepository生成一个参与者,它是一个聚合根,其中一些数据可能位于
PersonalDetails
value对象中。此值对象是通过调用employee应用程序构建的。这种方法很简单,但可能不是最好的。这就是您提到的方法,其中ParticipantRepository调用接口
PersonalDetailsService
,该接口的实现实际调用员工服务。通过这种方式,您的域不知道正在与员工打交道,因为它只看到个人详细信息

2) 通过复制员工服务中的数据实现最终一致性:如果员工服务可以在员工更新时发送通知(例如,通过消息),则您可以侦听这些事件并拥有数据的只读副本。这样做的好处是,即使员工服务宕机,你的应用程序也能正常工作。问题是您可能需要构建一些东西来重新发送可能丢失的数据


这两种方法在书中都有很好的解释

非常好的答案。如果现有系统允许的话,我可能会同意。