服务不是面向对象的。假设我有一个基于OOAD的设计。我们可以使用转换层将其转换为DTO (没有任何行为)。但这会导致代码数量的大幅度增加。在WCF (通过C#)中,有什么替代的想法?
请评论一下,在SOA和OOAD之间进行这样的转换是否是个好主意。当我们拥有SOA或使用这样的映射技术时,我们应该完全避免OOAD吗?
创建“特定操作DTO”而不是“删除行为后直接从域创建DTO”是一个好主意吗?是否有“特定DTO行动”的工具?
AutoMapper是从没有行为的域产生“特定操作DTO”或"DTO“吗?
注意:操作特定的DTO方法可以在“不要在设计中使用抽象基类,而在建模/分析中使用抽象基类”中的答案中引用
服务层指南提取液
设计在业务实体和数据契约之间转换的转换对象。
参考资料
发布于 2012-02-29 01:24:24
与软件开发(尤其是体系结构)中的其他一切一样,这些问题没有一个正确的答案。它取决于体系结构的目标和约束。
WCF与DTO合作。虽然可以降到更原始的层并直接处理消息,但对于所有实际问题,DTO是使用WCF的一个基本部分。由于WCF似乎是这种情况下的体系结构约束之一,因此实际上没有避免DTO的实际方法。
接下来的问题是:是否应该有一个映射层?
如果我们能回答另一个问题,这个问题很容易回答:从什么映射?
如果您已经有了一个现有系统,则需要在现有系统和WCF边界之间进行转换。在这种情况下,需要一个翻译层。
如果您正在构建一个全新的系统,也许不进行翻译会更容易一些。
发布于 2012-02-28 03:20:34
看看自动机,我们使用它来完成相同的任务。
https://stackoverflow.com/questions/9480869
复制