RESTFul基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格, rest是Representational State Transfer的缩写html
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。windows
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它能够是一段文本、一张图片、一种服务,总之就是一个具体的实在。你能够用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就能够,所以URI就成了每个资源的地址或独一无二的识别符。安全
所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。服务器
"资源"是一种信息实体,它能够有多种外在表现形式。咱们把"资源"具体呈现出来的形式,叫作它的"表现层"(Representation)。restful
好比,文本能够用txt格式表现,也能够用HTML格式、XML格式、JSON格式表现,甚至能够采用二进制格式;图片能够用JPG格式表现,也能够用PNG格式表现。网络
URI只表明资源的实体,不表明它的形式。严格地说,有些网址最后的".html"后缀名是没必要要的,由于这个后缀名表示格式,属于"表现层"范畴,而URI应该只表明"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。架构
访问一个网站,就表明了客户端和服务器的一个互动过程。在这个过程当中,势必涉及到数据和状态的变化。网站
互联网通讯协议HTTP协议,是一个无状态协议。这意味着,全部的状态都保存在服务器端。所以,若是客户端想要操做服务器,必须经过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是创建在表现层之上的,因此就是"表现层状态转化"。spa
客户端用到的手段,只能是HTTP协议。具体来讲,就是HTTP协议里面,经常使用四个动词:GET、POST、PUT、DELETE。它们分别对应四种基本操做:GET用来获取资源,POST用来新建资源(也能够用于更新资源),PUT用来更新资源,DELETE用来删除资源。设计
(1)每个URI表明一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端经过HTTP动词,对服务器端资源进行操做,实现"表现层状态转化"。
在现实世界中,服务是一种咱们花费购买到的一种预期的服务。
例1 (来自真实世界) :你去餐馆订餐,您的订单首先进入到柜台,而后在厨房进行食物准备,最后服务员提供的食物。所以,为了实现一个餐厅订购服务,您须要三个逻辑部门/服务协同工做(计账,厨房和服务员)。在软件世界一样的方法称为业务服务。
例2 (软件世界) :你去亚马逊订购了一本书,有不一样的服务,如支付网关,库存系统,货运系统等共同完成一本书的订购。
全部的服务是自包含的,合乎逻辑。他们就像黑盒子。总之,咱们并不须要了解业务服务的内部工做细节。对于外部世界,它只是一个可以使用消息交互的黑盒子。例如在“支付网关”业务服务得到消息“检查信贷”后会给出输出:这个客户的信贷有或没有。对于“订单系统”,“支付网关”的服务是一个黑盒子。
(1) SOA组件是松耦合的。当咱们说松耦合,这意味着每个服务是自包含单独存在的逻辑。举例来讲,咱们采起了“支付网关”的服务,并将它附加到不一样的系统。
(2) SOA服务是黑匣子。在SOA中,服务隐藏有内在的复杂性。他们只使用交互消息,服务接受和发送消息。经过虚拟化一个服务为黑盒子,服务变得更松散的耦合。
(3) SOA服务应该是自定义
(4)SOA服务维持在一个列表中: SOA服务保持在一个中央存储库。应用程序能够在中央存储库中搜索服务,并调用相应服务。
(5) SOA服务能够编排和连接实现一个特定功能: SOA服务可使用了即插即用的方式。例如,“业务流程”中有两个服务“安全服务”和“订单处理服务” 。从它的业务流程能够实现两种类型:一,您能够先检查用户,而后处理订单,或反之亦然。是的,你猜对了,使用SOA能够松散耦合的方式管理服务之间的工做流。
(1)不一样厂商服务互操做,前提依赖开放的标准(soap消息通讯技术)
(2)跨平台
(3)服务插拔(可组合)
(4)服务重用
(5)松耦合
(1)统一的服务契约接口与服务接口
(2)松散的耦合。
(3)只要有权限均可以进行访问
(1)REST风格下的,只有一种协议,那就是HTTP。而SOA下的WCF就和多种协议了。如:TCP、HTTP、MSMQ等多种协议
(2)使用方式上的不一样。REST只要客户端可以模拟HTTP请求,经过标准的HTTP动做,均可以进行访问。它使用的是HTTPChannel管道,而SOA下的WCF因为
协议的多样性,使用的管道有HTTPChannel、TcpChannel、RPC等多种。
(3)REST寄宿时,虽然能够选择多种寄宿方式,但必须有IIS的支持。SOA下的WCF却没有这个限制,寄宿方式有不少种,能够是控制台应用,windows应用或者寄宿于iis。
对于这两种架构,一直想参考具体的实例来理解,发现越思考越困惑! 实际这就陷入了一个误区。架构是一种很抽象的东西,很难说某个项目彻底符合restful或者彻底符合soa,
只能说符合restful风格或soa风格。这对于我这种较真的人来讲应该是一个很好的理解方式。