【发布时间】:2010-11-17 03:47:42
【问题描述】:
场景: 对 WCF 服务使用分层方法:业务服务将域/DTO 对象返回给客户端。仍在开发中,因此我们可以解除合同。
Person 对象有名字和姓氏。会员对象有税号和出生日期。这是因为,在我们的域中,只有会员才能获得税号和出生日期。当使用这种结构从服务中取回数据时,可以清楚地知道哪些属性是适用的。
现在,我们介绍另一种用于个人的服务 - 比如说员工。在这种用法中,person 对象需要附加属性税号和出生日期。
最好的方法是什么?
1) 将 Person 对象视为通用 Person 并包含所有属性。这会将 Person 映射到现实世界的人,不一定基于使用情况。这意味着返回 Person 的服务将包括税号和出生日期,即使它们可能不相关。
2) 将附加字段复制到 Employee 中。这使 Person 保持原样,并以重复为代价保持服务调用的特定性。
3) 在名为 PersonWithDOBTFN 的对象之间创建另一个我们从 Member 和 Employee 继承的对象。这消除了重复,使事情保持具体,但引入了复杂性。
我真的在寻找设计这些对象的最佳实践方法。
【问题讨论】:
标签: wcf web-services domain-driven-design soa