REST(Representational State Transfer)是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为 简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。 REST架构遵循了CRUD原则,CRUD原则对于资源只需要四种行为:Create(创建)、Read(读取)、Update(更新)和 Delete(删除)就可以完成对其操作和处理。这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正 如数学上四则运算是数字的最基本的运算一样。 REST架构让人们真正理解我们的网络协议HTTP本来面貌,对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议 提供的GET、POST、PUT和DELETE方法,因此REST把HTTP对一个URL资源的操作限制在GET、POST、PUT和DELETE这四个之内。 这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。 REST的设计准则 REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则: 网络上的所有事物都被抽象为资源(resource); 每个资源对应一个唯一的资源标识符(resource identifier); 通过通用的连接器接口(generic connector interface)对资源进行操作; 对资源的各种操作不会改变资源标识符; 所有的操作都是无状态的(stateless)。

先前我曾经介绍过利用Apache Axis实现基于SOAP的Web Service实现技术和相关代码,总的来说,SOAP的Web Service解决方案虽 然较为成熟,且安全性较好,但是使用门槛较高,在大并发情况下会有性能问题,在互联网上使用不太普及,因此并不太适合Web 2.0网站 服务使用,目前大量的Web 2.0网站使用另外一种解决方案——REST。

平时做PHP比较多,特别总结一下PHP开发的趋势。目前在PHP开发中,我们最常用的是基于“文件”的架构,其实也就是一种“面向过 程”的开发方式。通常我们写PHP程序的目的就是“快点上线,让程序跑起来”。而且大多数PHP程序员还要和HTML、CSS做近身搏 斗,所以如果程序太抽象,调整视觉效果就比较困难。所以对于小项目,这是一个最好的选择。 但越来越多人认识到,面向对象和MVC框架更能促进代码的复用和分享,而且程序易于扩展,随着程序复杂性的增加这个趋势越明显。所 以OO框架层出不穷。目前PHP框架当中最有前景的是CakePHP、Symphony和Zend Framework,各自拥有活跃的社区和庞大的用户 群,都在快速成长当中。PHP的框架都避免走Java框架庞大臃肿的老路,致力于快速开发,而且主动模仿和吸收RoR这些优秀框架的新特 性。随着PHP5的普及和这些框架的成熟,加上PHP原本开发社区的庞大人数,将来也许又会再产生出一些行业性的标准。 这种选择适合于中大型项目,特别是需要较大的团队合作和需要长期维护和二次开发情况。个人认为这是将来PHP开发的趋势。 而对于基于组件和事件驱动的开发方式大多数PHP程序员都不感兴趣。但是也有不少人在做这方面的努力,例如Codegear的Delphi for PHP,就吸引了很多人的关注。如果有强大的商业支持,也许将来在开发市场也会占一席之地。 我会在下一篇文章介绍D4P的新特性并作评测。 WEB开发的未来展望: 随着更贴近HTTP的REST的流行,我觉得像Java中的抽象组件的方式会受到冲击。因为这些组件并不如它们所承诺的那么方便。未 来MVCRESTRIA的模式应该会比较流行。 AJAX是一把双刃剑,尽管事件驱动的架构看起来非常适合于处理异步的请求(可以想像页面中存在几个组件,每个组件都可以触发异步请 求,对应对服务器端的某个事件处理器,看起来是很理想的一个处理方式),但要为客户端自动生成良好的JavaScript代码是很不容易的, 要满足各种浏览器的兼容性要求,还要能够自己进行扩展,以满足项目中千奇百怪的需求。 很多时候我更倾向于使用一些JS框架如 Prototype来自己开发各种效果,而不是在服务器端生成。在服务器端生成JS的两个结果,一是对生成的代码不信任,二是人变傻,因为你 并不知道真正发生了什么。 (一点牢骚也贴上来) 关于WEB开发的个人疑惑: l 为了让开发更简单,我们不得不学习使用复杂的开发工具和框架,这到底是一个进步,还是退步? l IDE让程序员变聪明还是变傻? 当我们在服务器代码里面就可以设计客户端界面,这是一个进步还是退步? 举个例子说,微软的ASP.NET AJAX,让我们可以在服务器端设计各种异步的控件。那么程序员甚至可以不会Javascript,不懂AJAX就设 计出各种客户端效果。要是哪一天项目需要设计稍复杂的效果,靠IDE和框架无法自动完成,你要怎么办?到这个时候再来学JS,也许就 迟了。更可怕的是,技术在更新和淘汰,可能十年之后,你会发现自己除了各种IDE之后,真正精通的技术很少,脱离了IDE你写一个小程序 都要查半天API手册,因为你平时都是依赖“自动补齐”来写代码的! 这样的情景,我想没有人愿意发生。 也许对于短期开发的项目来说,是一个进步,但对于程序员个人的成长来说,这并不是好事。对工具的依赖,导致了我们对于底层和核心技 术的不求甚解,限制了个人的成长。

做WEB好几年了,各种语言和技术都稍有涉猎。今天心血来潮,突然想总结一下。其实不论什么技术,什么需求,通常WEB开发就是通过 WEB前端管理一个或大或小或独立或分布式的关系型数据库,很多东西都是相通的。这里说的WEB架构,是指WEB应用开发中每种技术独 有的资源组织形式(包括文件,数据库,HTTP请求处理等。注意并非OO的开发方式才有架构一说),也许说开发方式更容易让人理解一 些。 以下想法主要以PHP实现为示例,但很多体会我想Java,.NET,Ruby开发者应该也很容易理解。最后是我对于刚面世就引起无数人关注的 Delphi fo PHP的评测。

对于开发人员来说,关心的是如何使用REST架构,这里我们来简单谈谈这个问题。REST不仅仅是一种崭新的架构,它带来的更是一 种全新的Web开发过程中的思维方式:通过URL来设计系统结构。REST是一套简单的设计原则、一种架构风格(或模式),不是一种具体 的标准或架构。REST有很多成功的使用案例,著名的Delicious和Flickr都提供基于REST风格的API使用,客户端调用也极其方便,下面是 我用ASP写的一个很简单的REST举。

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注