我的开发方法一直是从Visual Studio服务引用的自动生成的代理类(在WCF项目中)中获取数据,并使用它来保护我自己的自定义业务对象。然后,业务对象将从一个类传递到另一个类,在一个大型解决方案中投射到项目,而不是由Visual Studio创建的自动生成的类。
我受到了挑战:为什么要这么麻烦?为什么不通过自动生成的类,如果我们所做的只是一个愚蠢的数据转换?你知道我得到了24克拉的争论获胜答案。
有任何帮助吗?为什么不绕过那些代理类并节省时间?
答案 0 :(得分:2)
它是一个抽象层。您不希望将业务逻辑直接与服务绑定。如果您决定不使用WCF,如果服务端发生更改,该怎么办?这与你为DTO做的原因相同。
您可能想要编写自定义代理
您希望能够在不需要WCF包装器的情况下测试业务对象
自动映射器使这几乎无痛。
答案 1 :(得分:0)
从域驱动设计
了解反腐败层的概念反腐败层(ACL)是另一种鼓励的DDD模式 您可以创建有效防止非域概念的守门员 从泄漏到你的模型。他们保持模型清洁。
从本质上讲,存储库实际上是一种ACL。他们保留SQL 或模型外部的对象关系映射(ORM)构造。 ACL是一种很好的技术,用于介绍Michael Feathers在他的书“Working Effectively With Legacy Code”一书中所称的内容。
接缝是一个可以开始切割一些遗留代码的区域 并开始引入变化。找到接缝,以及隔离 您的核心域,在使用DDD技术时非常有价值 重构和收紧代码中最高价值的部分。