域驱动设计中有限上下文中的实体

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模式,则应该使用事件进行此类通信:有界上下文可以响应在有界上下文之外引发的事件,并且有界上下文可以发布其他有界上下文可能发生的事件订阅.事件(发布有关已发生事件的信息的单向异步消息)使您能够保持有界上下文之间的松散耦合.


Jer*_*oen 6

如果它们是严格分开的,我会让它们严格分开。不同命名空间中的两个不同类。每个都有不同的属性。

如果 HR 创建一个 HRM.Employee,则可以引发一个事件,Accounting 会选择并创建一个 Accounting.Employee。