创建一个';中间件后端';在客户后端和我的前端之间


Is it a good idea to create a 'middleware backend' between customer backend and my frontend?

问题是,我有几个项目的客户有一个可怕的后端定义,以几种格式返回数据,其中有很多我不需要的东西。由于我在做移动网络应用程序,我使用slimframework(www.slimframework.com)在php中创建了一个中间层,这基本上给了我一个RESTFUL语法,还删除了我不需要的所有数据,并采用了我想要的格式(JSON)。当然,这个中间层将部署在客户后端,所以即使让我在前端实现上如此轻松,我也有点担心性能,同时也为"链"增加了另一个断点。为了提高性能,我对我的slimframework的每次调用都会保存在一个唯一的JSON数据中作为缓存,并且我有一个文本文件,可以在其中轻松配置每次请愿的最大秒数。

更严格地说,我用curl阅读真实的web服务,转换为PHP对象,删除和更改我需要的所有数据,然后制作一个json_encode。。。此外,我还想到了另一个想法,比如在cron中创建一个批处理过程,从客户那里提取所有web服务并生成本地json。。。不要担心没有得到最新的数据,因为这是一个视频追赶应用程序,所以我缓存每个WS,但最终的url没有缓存。

对于我的工作流程,有什么更简单的解决方案吗?

听起来不错。

当然,你增加了一个新的潜在失败点,但你也增加了一种新的地方,可以抓住问题并弹性地处理问题—这听起来像是现有的后端不能被信任自己做这件事。单元/压力测试你的拦截层,并获得所有的信心,你没有添加不适当的新风险。

至于性能?好吧,和任何事情一样,你需要对其进行基准测试,然后平衡结果与其他好处。我喜欢一个好的抽象层,只要你没有看到拒绝服务的性能水平下降(我不明白你为什么要这样做),这几乎肯定是值得的。

如果你没有其他东西来抽象这个你似乎无法控制的数据后端,这将有效地允许你在某一天完全灵活地将其切换到其他地方。

如果后端自发发生变化?好吧,至少您只需要调整截取层的一些孤立部分,而不是调整依赖于第三方数据的面向客户的前端的每一部分。

总之,在我看来,这是一个非常强大的解决方案,我认为你绝对应该继续使用它


&匕首当然,你不想要太多。合适的数量由我们决定。我通常发现是一个不可接受的答案。:)