代码之家  ›  专栏  ›  技术社区  ›  Pablo Fernandez

使用本地http调用的开销

  •  4
  • Pablo Fernandez  · 技术社区  · 15 年前

    我正在开发一个 wrapper 围绕现有的restful api。基本上,我必须做一些预处理,调用底层API,以及一些预处理,中间有一点缓存。api是专门为通过http进行restful访问而设计的。

    我的问题是,我应该重构api以便通过代码调用它,还是应该对它进行本地http调用。第二个选项看起来不错,因为它增加了分离,但我担心创建http请求/响应会严重影响性能。我听说过 couchDB 做类似的事情(它的api是restful的,通过http访问)。

    4 回复  |  直到 11 年前
        1
  •  4
  •   Arjan Tijms Mike Van    11 年前

    没有人可以为您解答这个问题,因为这将在很大程度上取决于您当前的restful api是如何实现的。例如,您可以编写一个相对较短的C程序,该程序将监听套接字并处理HTTP请求—如果它响应不同的HTTP方法执行restful操作,那么它是restful API的实现,并且只需调用底层的fu就可以获得很少的开销。直接连接(不带http)。另一方面,您可以编写程序作为臃肿、沉重的Java EE怪物——在这种情况下,开销可能相当大。

    因此,斯卡夫曼所说的“测量一下看”是正确的——这确实是获得有意义答案的唯一途径。

    尽管如此,如果你问这个问题,很有可能你并没有真正面临google规模的问题,所以如果重构需要做很多工作,而且拦截http请求对你来说很容易,那么我建议你首先使用http包装器获得所需的功能。只有当你有一个工作的产品开始担心性能优化。

        2
  •  2
  •   Darrel Miller    15 年前

    查看中的第5.1.6节 REST Dissertation 关于分层系统。您实际上描述的内容非常符合分层体系结构的概念。实际上,您正在构建一个http代理,它将拦截传入的请求,做一些工作,然后将其传递到下一层。

        3
  •  0
  •   John Saunders Tony    15 年前

    我要重构它。您以前有一组由restful api公开的功能。现在有了一组由restful api和包装器公开的功能。您应该重构代码,以便它可以同时执行这两个操作。如果您的代码组织得相当好,那应该很容易。

        4
  •  0
  •   Mark Bessey    15 年前

    当有疑问时,不要做太多的工作。编写包装器并测试它。如果必须重构。