我在几个集成项目中观察到了这种情况,我不确定是否有一种标准方法来处理这个问题。
假设我们有一个系统 A ,它与系统 B 集成。两个系统共享数据并需要同步。假设A使用“队列”,这些队列大致映射到系统B中的“组”。因此,当在任何“票证”中创建队列在A中,该票据被发送到B中的相应组。
问题是,哪个系统应该维护队列的队列? A还是B?
答案 0 :(得分:2)
1)一般的答案是,客户端始终应负责以适当的形式准备数据以调用服务。如果您设计系统 B ,那么将有关将使用 B 的每个可能客户端系统的知识纳入其中似乎是不合理的。为了获得良好的设计,你应该以低耦合为目标。
从较小的角度考虑相同的情况 - 通常,实用程序类提供一些特定的接口,并且不公开每个接口成员的 N 版本以匹配每个可能的调用者。
2)有时候,创建公开的接口以适应不同的输入结构(例如Python中的numpy
库,它可以对本机列表,数组和矩阵执行线性代数运算透明)。这似乎仅限于可能的输入结构相似且定义良好的情况。
3)在大型系统集成中经常使用的第三个选项是创建名为 Feeders 的中间应用程序,它们负责在系统之间转换数据。在这个解决方案中,每个系统都保持清晰"不需要的依赖。