分布式的系统并不仅仅只有一种方法。REST是一种,SOA是另一种,分布式的对象和RPC也是。任何人认为REST是唯一的方法都是天真的
REST是一种方法论,软件总是用一套思想去模拟和重建世界,例如,面向对象实际上是一种拟人化的理论;而REST,把世界都看作资源以及对资源的原子访问操作,定义了通用的访问资源的方法。至于管用不管用,理论如能够完美诠释某些业务场景,套得上去,就管用,否则就不管用。如此而已。
REST不仅仅是http一个时髦词而存在。
REST对是一种分布式架构,其核心是基于服务器,代理服务器和缓存的基础体系架构和无状态的约束。
REST另一个重要特性是基于URI的访问方式。类似于远程对象引用,URI提供了描述对象的一种方便方式,而这种方式可以被很多技术体系所引用。
http提供了对rest良好支持,单rest并不仅仅限于http。
当今的Web就是按照或者说大部分按照REST的架构风格来设计的。而且文中也提到了“将URI[21]作为资源标识符来使用”,那么URI本身就具有标识能力。另外,“更精确地说,资源R是一个随时间变化的成员函数MR(t),该函数将时间t映射到等价的一个实体或值的集合,集合中的值可能是资源的表述和/或资源的标识符。”“对于一个资源来说,唯一必须是静态的是映射的语义,因为语义才是区别资源的关键。”我觉得对于url设计在于区分语义,而非book/restinaction之类的url,我认为可以是book?isdn=??,甚至是Struts Action一类的东西,因为我们可以把book.do理解为函数MR。
为了完全遵循REST的准则,把资源划分得很细,结果就是产生了大量的controller。
比如说,有n个tab的页面,每个tab里面又有多种排序方式,定义资源就够烦的了。
老实说还是觉得以前的MVC使用起来比较直观一些。
不过考虑到stateless和缓存将来在性能优化的时候可能会带来的好处,不妨先试一下看看会不会累死人。
REST就是HTTP和URI这两个Web架构基础协议背后的设计原理,基于REST风格来设计应用的架构,就是最大限度利用HTTP和URI潜力的最佳实践。
关于这篇论文,我们有一些需要深入探讨的问题:
1 什么是资源?什么又是表现?资源和表现的关系是什么?
2 为何Fielding认为RPC和分布式对象两种架构风格都不适合Web。
3 为何Fielding说HTTP不是RPC。
4 为何Fielding说HTTP不是一种传输协议。
5 为何Fielding要强调HTTP语义的可见性。
6 为何Fielding要强调数据格式应该支持增量的呈现。
7 在HTTP中内容协商机制是如何来实现的?
8 HTTP为安全提供了那些机制?
阅读(1195) | 评论(0) | 转发(0) |