0

我目前正在开发一个解析和操作 MIME 消息的应用程序,其中这些消息是域模型的中心部分。尽管目前我已经实现了解析这些消息所需的功能,但似乎没有必要重新发明轮子,我将来是否需要添加额外的 MIME 功能。我可以简单地使用诸如 MimeKit 之类的可用库,它可能更有效地完成这项工作,并且似乎是更强大的方法。同时,我对这个想法犹豫不决,原因有两个:

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

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

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

所以我的问题是:

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

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

我非常感谢您的意见。

4

1 回答 1

0

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

我对软件架构相当陌生,但从我在网上收集的信息来看,共识似乎是......

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

这些构成这个“共识”的人是谁?

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

相信未知来源的共识似乎是为您的项目做出决策的糟糕方式。

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

做对你有意义的事。

于 2020-03-20T13:35:32.560 回答