【发布时间】:2015-10-03 15:56:03
【问题描述】:
我陷入了一个想知道可以应用于此的最佳实践的场景中。我在一个电子商务网站上工作,处理订单、发货、发票等。
除了在我的应用程序中创建 UI 之外,我还能够发送/接收来自不同供应商的数据(通过供应商 apis xml/json)。该应用程序可以向在我的应用程序中创建的供应商发布订单/发货,或者从供应商处获取所有订单/发货以导入我的应用程序。场景因供应商而异。
我的问题是处理这个问题的最佳方法是什么。以下是我想到的两种方法。我现在正在使用第一种方法,但我正在考虑它是否适合在这种情况下使用。
1.) 我创建了一个通用代码来基于 XPATH 生成 JSON/XML。例如,对于下面的 XML 生成,我使用 XPATH 作为 Orders.order.orderNumber
<Orders><order><orderNumber>testorder</orderNumber></order></Orders>
XPATH 存储在数据库中,根据数据库中配置的不同 XPATH,生成完整的 JSON/XML 并发送给供应商(数据库中也配置了 GET/POST)。
我认为这种方法的优点是将新供应商添加到系统中的工作量最少。 我认为它的缺点是 XML/JSON 生成会经历大循环。由于要为供应商调用的 API(订单 GET 等)大多是固定的,这似乎是一个缺点。
2.) 我创建单独的服务来处理每个供应商的调用,创建处理每个调用的方法,并将 XML 硬编码到应用程序中(无需通过 XPATH 在 DB 中进行配置)。 例如,对于 2 个供应商 SuppA 和 SuppB。对于 SuppA 的订单列表将被下载,对于 SuppB 的发货将被张贴。 因此,我的应用程序中将有 2 个服务相互独立地处理每个供应商调用,1 个用于 SuppA,另一个用于 SuppB。 SuppA 服务将调用订单 GET api,SuppB 服务将调用 Shipments POST api。
我认为这样做的好处是它会很快,因为不需要生成 XML/JSON,因为只有所需的调用将被编码在每个供应商的服务代码中。 我认为它的缺点是只能调用固定服务。我的第一种方法可以通过 DB 更改任何内容,但在此代码中需要更改。
请就此提出建议。哪种方法最适合这种情况,通用数据库配置还是硬编码的单独供应商服务?
【问题讨论】:
-
每个供应商的数据模型或模式是否彼此不同?
-
是的,每个供应商的数据模型都不同。它们通过其服务 API 公开。我们可能会向一个供应商发送一组特定的字段,但向另一个供应商发送一组不同的字段,具体取决于他们支持的请求 xml/json。
标签: java json xml web-services e-commerce