rest架构:REST软件Software架构



种思维方式影响了软件Software行业发展REST软件Software架构是当今世界上最成功互联网超媒体分布式系统它让人们真正理解我们网络协议HTTP本来面貌它正在成为网络服务主流技术同时也正在改变互联网网络软件Software开发全新思维方式AJAX技术和Rails框架把REST软件Software架构思想真正地在实际中很好表现出来今天微软也已经应用REST并且提出把我们现有网络变成为个语义网这种网络将会使得搜索更加智能化


REST和HTTP协议
REST软件Software架构是由RoyThomasFielding博士在2000年首次提出他为我们描绘了开发基于互联网网络软件Software蓝图REST软件Software架构是个抽象概念种为了实现这互联网超媒体分布式系统行动指南利用任何技术都可以实现这种理念而实现这软件Software架构最著名就是HTTP协议通常我们把REST也写作为REST/HTTP在实际中往往把REST理解为基于HTTPREST软件Software架构或者更进步把REST和HTTP看作为等同概念

今天HTTP是互联网上应用最广泛计算机协议HTTP不是个简单运载数据协议而是个具有丰富内涵网络软件Software协议它不仅仅能够对于互联网资源进行唯定位而且还能告诉我们对于该资源进行怎样运作这也是REST软件Software架构当中最重要两个理念而REST软件Software架构理念是真正理解HTTP协议而形成有了REST软件Software架构理念出现才使得软件Software业避免了对HTTP协议片面理解只有正确理论指导才能避免在软件Software开发实际工作过程中少走弯路

REST和URI(资源定位)
REST软件Software架构的所以是个超媒体系统它可以把网络上所有资源进行唯定位不管你文件是图片、文件Word还是视频文件也不管你文件是txt文件格式、xml文件格式还是其它文本文件格式它利用支持HTTPTCP/IP协议来确定互联网上资源

REST和CRUD原则
REST软件Software架构遵循了CRUD原则该原则告诉我们对于资源(包括网络资源)只需要 4种行为:创建(Create)、获取(Read)、更新(Update)和销毁(DELETE)就可以完成对其操作和处理了其实世界万物都是遵循这规律:生、变、见、灭所以计算机世界也不例外这个原则是源自于我们对于数据库表数据操作:insert(生)、select(见)、update(变)和delete(灭)所以有时候CRUD也写作为RUDI其中I就是insert这 4个操作是种原子操作种无法再分操作通过它们可以构造复杂操作过程正如数学上 4则运算是数字最基本运算

REST和网络服务
尽管在Java语言世界中网络服务目前是以SOAP技术为主但是REST将是是网络服务选择并且是真正意义上网络服务基于REST思想网络服务不久将来也会成为是网络服务主流技术REST不仅仅把HTTP作为自己数据运输协议而且也作为直接进行数据处理工具而当前网络服务技术都需要使用其它手段来完成数据处理工作它们完全独立于HTTP协议来进行这样增加了大量复杂软件Software架构设计工作REST思想充分利用了现有HTTP技术网络能力在德国电视台上曾经出现过个这样 5十万欧元智力题:如何实现网络服务才能充分利用现有HTTP协议?该问题给出了 4个答案:去问微软;WSDL2.0/SOAP1.2;WS-Transfer;根本没有这个问题告诉我们HTTP并不是个简单数据传来传去协议而是个聪明会表现自己协议这也许是REST=RepresentationalStateTransfer真正含义

实际上目前很多大公司已经采用了REST技术作为网络服务如Google、Amazon等在Java语言中重要两个以SOAP技术开始网络服务框架XFire和Axis也把REST作为自己种选择它们项目分别是ApacheCXF和Axis2Java语言也制定有关REST网络服务规范标准:JAX-RS:JavaAPIforRESTfulWebServices(JSR311)相信还会出现更多和REST相关激动人心信息

REST和AJAX技术
尽管AJAX技术出现才不到两年时间但是AJAX技术遵循了REST些重要原则AJAX技术充分利用了HTTP来获取网络资源并且实现了HTTP没有对于异步数据进行传输功能AJAX技术还使得软件Software更好地实现分布性功能个企业内只要个人下载了AJAX引擎其它企业内部人员就可以共享该资源了AJAX技术遵守REST准则应用中简单和可伸缩架构凡是采用AJAX技术页面简洁而又丰富个页面表现了丰富多彩形态[Page]

AJAX技术还使用了种区别于XML格式JSON文件格式这个意义在哪里呢?在REST软件Software架构下我们不能对于XML文件进行序列化处理这样员必须要使用自己XML绑定框架而以序列化JavaScript对象为基础JSON已经获得了广泛认可它被认为能以远比XML更好方式来序列化和传输简单数据结构而且它更简洁这对REST是个极大贡献和补充

当前网络应用软件Software还违背了REST“无状态服务器”约束REST服务器只知道自己状态REST不关心客户端状态客户端状态自己来管理这是AJAX技术应用的地通过AJAX技术可以发挥有状态网络客户机优势而REST服务器关心是从所有网络客户端发送到服务器操作顺序这样使得互联网这样个巨大网络得到有序管理

REST和Rails框架
RubyonRails框架(简称Rails或者Rails框架)是个基于Ruby语言越来越流行网络应用软件Software开发框架它提供了有关REST最好支持也是当今应用REST最成功个软件Software开发框架Rails框架(从版本1.2.x起)成为了第个引入REST作为核心思想主流网络软件Software开发框架在Rails框架充分利用了REST软件Software架构的后人们更加坚信REST重要性和必要性Rails利用REST软件Software架构思想对网络服务也提供了支持从最直观角度看待REST它是网络服务最理想手段但是Rails框架把REST带到了网络应用软件Software开发框架这是次飞跃让REST思想从网络服务应用提升到了网络应用软件Software开发利用REST思想simply_restful插件已经成为了Rails框架核心内容



REST安全性
我们把现有基于SOAP网络服务和基于REST/HTTP网络服务作个比喻前者是种传统寄信方式而后者是现代网络电子邮件方式要是是寄信和电子邮件都有病毒存在传统寄信被送到对方就很危险而电子邮件是开发电子邮件供应商比如Google为我们检查了电子邮件是否有病毒这里并不是介绍说明SOAP网络服务消息包含义病毒而是介绍说明HTTP是无法处理SOAP信息包究竟好不好需要额外软件Software工具解决这问题包括防火墙也用不上和管不了

REST/HTTP网络服务信息包可以被防火墙理解和控制你可以按照操作和链接进行过滤信息包如你可以规定从外部来只能读取(GET操作)自己服务器资源这样对于系统管理员而言使得软件Software管理更为简单REST安全性还可以利用传输安全协议SSL/TLS、基本和摘要式认证(BasicundDigestAuthentication)除了这些REST自身安全性功能外还可以利用像基于信息WebServicesSecurity(JSR155)作为REST不错补充
Tags:  软件架构图 软件架构设计 软件架构 rest架构

延伸阅读

最新评论

发表评论