我正在围绕现有的RESTful API开发wrapper。我基本上必须做一些预处理,调用底层API,以及一些预处理,中间有一点缓存。该API专为通过http。
进行RESTful访问而设计我的问题是,我应该重构API,以便我可以通过代码调用它,或者我应该对它进行本地http调用。第二个选项似乎很好,因为它增加了解耦,但我担心创建http请求/响应会严重影响性能。我听说couchDB做了类似的事情(它的api是RESTful并通过http访问)。
答案 0 :(得分:4)
没有人可以为您解答这个问题,因为它将在很大程度上取决于您当前的RESTful API的实现方式。例如,您可以编写一个相对较短的C程序,它将侦听套接字并处理HTTP请求 - 如果它响应不同的HTTP方法执行RESTful事务,那么它就是RESTful API的实现,并且可以获得非常小的开销。只是直接调用底层函数(没有HTTP)。另一方面,您可以将程序编写为这个臃肿,沉重的Java EE怪物 - 在这种情况下,开销可能非常大。
因此,skaffman说“测量并看到”是正确的 - 这实际上是获得有意义答案的唯一方法。
所有这一切,如果你问这个问题,你可能没有真正面对谷歌规模的问题,所以如果重构要做很多工作并且只是拦截HTTP请求很容易然后,我建议您首先使用HTTP包装器获得所需的功能,并且只有在您有工作产品时才开始担心性能优化。
答案 1 :(得分:2)
请参阅REST Dissertation中有关分层系统的第5.1.6节。你实际描述的内容非常适合这种分层架构的想法。实际上,您正在构建一个HTTP代理,它将拦截传入的请求,执行一些工作,然后将其传递到下一层。
答案 2 :(得分:0)
我会重构它。您曾经拥有RESTful API公开的一些功能。您现在已经获得了RESTful API和包装器公开的一组功能。您应该重构代码,以便它可以同时执行这两个操作。如果您的代码组织得合理,那应该很容易。
答案 3 :(得分:0)
如果有疑问,那么就要做更少的工作。编写包装并测试它。如果必须,重构。