讨论技术问题,杨光认为因为REST是基于文本来进行通信,所以其性能肯定不如基于二进制格式的通信协议好。因为这是一个对于REST的明显的误解,所以我觉得有必要专门在这里澄清一下。以下是我们的讨论内容,David是我,Allen是杨光。
David: RMI是RPC的风格,中间传输二进制数据,性能应该比HTTP的纯文本稍微高一些,但是这样做有很多的代价。
David: 那篇论文将来我们都需要反复多看几次,实际上REST是权衡很多种架构风格之后的结果,已经能够得到最佳的性能了。
David: 性能不单纯取决于传输数据是二进制还是纯文本。我告诉你为什么。
David: 因为二进制数据的语义对于中间组件是不可见的,它就无法做有效的缓存,当然也无法确定此数据是否会对安全构成威胁。
David: REST强调通信语义对于中间组件的可见性,这样可以改善性能和可伸缩性。
David: 所谓的中间组件,浏览器就是一种。浏览器可以根据通信的语义来确定数据有没有发生改变,从而进行有效的缓存。
David: RMI传输数据再有效,它的数据也无法做有效的缓存。因此RMI的性能未必比REST好,况且不能缓存会带来严重的可伸缩性问题。
David: 这些思想其实在论文中都有很详细的描述,你再看一遍就全明白了。