Domain driven design 使用外部系统';在域驱动设计中使用包装类的s api

Domain driven design 使用外部系统';在域驱动设计中使用包装类的s api,domain-driven-design,Domain Driven Design,有时,如果你想使用facebook或twitter的api,你必须使用第三方的服务。然后我们必须创建各种包装器类,这些包装器类使用所需参数调用外部api的函数并返回所需结果 我的问题是将这个包装类放在应用层本身的哪里,并创建一个调用包装类函数的服务类,或者在基础结构层的单独类库中 我是将包装器类放在底层还是应用层中?您在这里主要尝试的是编写一个反腐败层。换句话说,你正试图保护你的内心世界不受外部影响 有很多方法可以做到这一点,但本质上你最保持你的领域积分。我们要做的是定义一个“契约”(即接口),

有时,如果你想使用facebook或twitter的api,你必须使用第三方的服务。然后我们必须创建各种包装器类,这些包装器类使用所需参数调用外部api的函数并返回所需结果

我的问题是将这个包装类放在应用层本身的哪里,并创建一个调用包装类函数的服务类,或者在基础结构层的单独类库中


我是将包装器类放在底层还是应用层中?

您在这里主要尝试的是编写一个反腐败层。换句话说,你正试图保护你的内心世界不受外部影响

有很多方法可以做到这一点,但本质上你最保持你的领域积分。我们要做的是定义一个“契约”(即接口),它定义了您的域对象是什么。此接口在您的域中随处可见

然后是反腐败层代码(即您提到的包装器类)。我们将这些包装类保存在名为WhateverPrefix.AntiCorruptionLayer的程序集中。包装器实现域中定义的“契约”。域不引用反腐败层程序集,但反腐败层程序集引用域

在反腐败层程序集本身中,我们通常会在每个反腐败层的根目录下指定一个特定的描述性文件夹


这不是一门精确的科学,我只是概述了在我的经验中我所看到的一种方法。希望这有助于…

所以你的意思是我添加了另一个名为“反腐败”的层,听起来不错。是的。它将所有反腐败代码放在一起。这种方法对usCan很有效,我们说,支付网关是一个遗留系统