【问题标题】:System Integration: Which system typically stores ids in an integration?系统集成:哪个系统通常在集成中存储 ID?
【发布时间】:2020-07-21 17:23:25
【问题描述】:

我和另一位开发人员正在集成两个系统,这两个系统对客户来说是私有的并且具有重复的功能,因此我们希望节省用户将相同数据输入两个系统的时间。他的系统在客户端站点的 localhost 上运行,而我的系统在云上运行,因此我们计划让我的系统公开一个 REST API 供他的系统调用。在很多情况下,他的系统会在我的系统上保存数据。例如,客户记录。

我看到了两种工作方式:

选项 1:他向我的系统发送一个 id 以与新的客户记录相关联 - 例如 {client_name: 'Ballmart', id: 'FD23949fsad293fa2'},然后在他想要引用它时发送相同的 id - 例如在添加新订单时:{orderNumber: 2393, clientId: 'FD23949fsad293fa2'}

选项 2:他发送一个没有 id 的客户记录,我用我的 id 回应他的请求。他将我的 id 保存在他的数据库中,并在需要参考客户记录时将其发送过来。所以他会发送{client_name: 'Ballmart'},我会回复{id: 'FD23949fsad293fa2'},然后他会像以前一样发送{orderNumber: 2393, clientId: 'FD23949fsad293fa2'},为客户记录新订单。

我的直觉是选项 2 更好,但我正在努力解释原因。

他的系统更大,功能也更多。他也是一名全职员工,而我的合同即将到期,届时他将需要承担更多管理我的系统的责任。

【问题讨论】:

    标签: architecture integration system-design system-integration


    【解决方案1】:

    我会说负责数据的系统(“master”)是应该创建 ID 的系统(例如,为了避免重复,或者不为取消的创建预订 ID)

    而且,第二个选项看起来更像是一个 REST POST 请求,现在是一种理解 API 的标准

    *** 经cmets讨论后:***

    如果下一阶段是主系统拥有所有数据,请在设计解决方案时牢记这一点。 选择选项 1,不要在主系统(尤其是数据结构)上进行集成工作,您以后必须从那里删除它。

    此外,您描述的交换看起来像是单向复制。在这种情况下,我认为目标表上的“来源”或“参考”列是最好的方法,尤其是当主系统必须在其他系统上复制时。

    【讨论】:

    • 您能否澄清一下“现在是理解 API 的一种标准”是什么意思?
    • 选项 2 是更好的 REST,但您可以调整选项 1。真正的问题是谁是这些数据的主人?数据是特定于您的子系统的,还是只是主系统的副本?拥有数据的系统应该定义 ID,其他系统应该接受它。
    • 长期目标是让其他系统拥有数据。现在两个系统都拥有它 - 我的系统具有尚未被主系统吸收的功能。另外,我的系统到现在都是独立使用的,管理着自己唯一的id系统,所以如果只是接受主系统的id,可能会有重复。
    • 在这种情况下,我会说让主系统定义 id。您的系统应将此 ID 保存在“参考 ID”字段中。
    • 这是选项 1。尽管如此,您仍然可以尝试遵循 REST 规范并返回您自己的 id,即使它现在没有被主系统使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2019-04-24
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多