将标准化协议 (MIME) 的外部库用作域模型的一部分是否有效?

Would it be valid to use external libraries for standardized protocols (MIME) as a part of the domain model?

我目前正在开发一个应用程序来解析和操作 MIME 消息,其中这些消息是域模型的核心部分。虽然我已经实现了所需的功能,但就目前而言,为了解析这些消息,似乎没有必要重新发明轮子,因为我将来需要添加额外的 MIME 功能。我可以简单地使用一个可用的库,例如 MimeKit,它可能会更有效地完成工作,并且看起来是更可靠的方式。同时,出于以下几个原因,我对这个想法犹豫不决:

  1. 我对软件架构还很陌生,但从我在网上收集到的信息来看,共识似乎是领域对象不应该有任何外部依赖性,因为它们模拟了一个特定于这生意。因此,如果业务规则发生变化,让您的域模型依赖于外部库并不是一个好主意。然而,由于 MIME 是一种标准化协议,这应该不是问题,但这导致了第二点。

  2. 虽然 MIME 是一种标准化协议,但据我所知,我的应用程序从中接收这些消息的客户端并不总是完全符合 RFC 规范。我还没有遇到过关于消息的 MIME 格式的问题,但考虑到这一点,我觉得好像不能保证我不会遇到问题。

  3. 我可能必须添加有关消息解析的其他自定义功能。然而,这可以通过在导入的 classes.

  4. 之上添加该功能来解决

所以我的问题是:

在正常情况下,将标准化协议的外部库用作域模型的一部分是否是一种有效的替代方案?用外部依赖来玷污我的域和应用层似乎是不对的。

根据我的情况,我应该如何解决这个问题?我是否应该为域模型创建一个接口,以便将来需要时可以将其替换为另一个实现?这将需要隔离 class 中的外部依赖项并映射所有数据以适应应用程序层的合同,这似乎比我自己实现协议的工作量更大。还是我应该自己实现它并依次添加新功能以确保我完全控制领域模型?

非常感谢您的意见。

你的整个问题归结为以下有缺陷的想法:

I am fairly new to software architecture but what from what I've gathered online the consensus seems to be...

为什么要让共识为您做决定?

组成这个 "consensus" 的这些人是谁?

你怎么知道他们知道他们在说什么?

相信未知来源的共识似乎是一种糟糕的项目决策方式。

您想编写解决实际问题的软件吗?或者你想迷失在理想主义的杂草中,让你的项目甚至在设计阶段结束之前就失败了吗?

做对有意义的事。