Ash*_*her 15 entity domain-driven-design value-type bounded-contexts
我试图了解实体如何在多个有界上下文中运行.
给予公司员工.在(例如)人力资源上下文中,此人具有姓名,地址,工资参考编号和银行帐户.但在会计方面,所有相关的是工资参考编号和银行账户.
您是否在HR上下文中有Employee实体,SalariedEmployee在Accounting上下文中有Value-Type(例如)?
class Employee
{
public BankAccount BankAcountDetails { get; set; }
public string FullName { get; set; }
public Address ResidentialAddress { get; set; }
public string SalaryRef { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
SalariedEmployee class(??):Employee的值类型
class SalariedEmployee
{
public SalariedEmployee(string salaryRef, BankAccount bankAcountDetails)
{
...
}
public string SalaryRef { get; }
public BankAccount BankAcountDetails { get; }
}
Run Code Online (Sandbox Code Playgroud)
有界上下文中的HRService是否返回此信息?或者你在两种情况下都使用Employee类?
Moh*_*ani 14
来自http://msdn.microsoft.com/en-us/library/jj554200.aspx:
有界上下文是自治组件,具有自己的域模型和自己的无处不在的语言.它们在运行时不应该彼此依赖,并且应该能够单独运行.但是它们是同一整体系统的一部分,并且需要彼此交换数据.
如果要在有界上下文中实现CQRS模式,则应该使用事件进行此类通信:有界上下文可以响应在有界上下文之外引发的事件,并且有界上下文可以发布其他有界上下文可能发生的事件订阅.事件(发布有关已发生事件的信息的单向异步消息)使您能够保持有界上下文之间的松散耦合.
如果它们是严格分开的,我会让它们严格分开。不同命名空间中的两个不同类。每个都有不同的属性。
如果 HR 创建一个 HRM.Employee,则可以引发一个事件,Accounting 会选择并创建一个 Accounting.Employee。