我陷入困境,想知道可以应用的最佳实践。我正在开发一个处理订单,发货,发票等的电子商务网站。
除了在我的应用程序中创建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改变第一种方法,但是需要更改此代码。
请就此提出建议。哪种方法最适合这种情况,通用数据库配置或硬编码的独立供应商服务?
答案 0 :(得分:0)
首先为代码编写单元测试。这很可能会让您问自己是什么导致了更可测试和可维护的应用程序,以及以最优质的方式解决问题的原因。答案可能是#1和#2的组合。硬编码“魔术”值绝不是一个很好的选择。并且,在性能和/或可伸缩性方面,不得不调用繁重的持久层并不是很好。
我建议:
优点:
最后注意:作为一种有趣的想法,您可以使用工厂模式动态生成供应商对象,以允许添加和删除正在运行的系统的供应商,而无需重新编码系统。这涉及更多,但可能是一个选择。
答案 1 :(得分:0)