1. REST Service虽然实现简单, 但也功能丰富, 可以用来实现各种基于Web的服务(service)。

2. REST Service的一些特点:

1)平台无关

2) 语言无关

3)基于HTTP标准

4)即使有防火墙存在的情况下也可以方便使用。

3. REST 没有提供内建的Security features, encryption, session management, QoS guarantees, etc.

但是在提供REST Service的时候,可以使用基于Http之上的安全措施:

OAuth

HTTPS

etc.

4. REST和SOAP相比的简单之处:

SOAP的请求信息

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:body pb="http://www.acme.com/phonebook">
<pb:GetUserDetails>
<pb:UserID>12345</pb:UserID>
</pb:GetUserDetails>
</soap:Body>
</soap:Envelope>

通常包含在Envelope之中,这需要我们先解析Envelop中的信息。

对于SOAP只需要

http://www.acme.com/phonebook/UserDetails/12345

REST的一些优势

  • It's easy to see why Web Services are often used with libraries that create the SOAP/HTTP request and send it over, and then parse the SOAP response.
  • With REST, a simple network connection is all you need. You can even test the API directly, using your browser

一个形象的例子:

SOAP就好像是邮递信件需要信封将信件wrap起来。

而是用REST就好像是一个明信片(每次请求是用更少的带宽,因为减少了信封(SOAP的包装信息)), 当然在安全性上可以使用任何加密手段保证安全。

5. 复杂请求, 前文说到只读信息推荐使用GET请求, 但是对于复杂请求,需要很多参数和信息的情况下 (HTTP协议本身未指定任何对URL长度要求。它只是建议不要超过255个字符), 这种情况下可以使用POST请求来得到资源的Representation。

6. 不同于SOAP, REST的相应不局限在XML, 可以使用JSON, CSV等其他格式。可以针对不同情况利用这些文档的优势。

XML更易于扩展。

CSV具有更好的压缩性。

JSON更易于Java Script处理。

HTML推荐作为REST的返回格式,出了在需要Human-Readable的情况下, 大部分情况返回信息是用程序来处理的。

7. REST的核心架构:

资源(Resource)

A web of resources(返回信息不能过大, 必要时使用分页paging),之前做过的一个项目就发生过返回信息过大而time out的情况。

无连接状态(No Connection state)

必要时缓存 (使用 Http cache-control Header)

使用代理服务改善性能。

8. REST设计纲领:

1)不要使用物理URL,例如指向具体的问题文件,https://csdn.net/profile.xml

2) 返回信息不能过大(分页)

3) 完善返回信息文档(例如返回信息xml的DTD

4) 返回列表具体resource的URI, https://csdn.net/users

返回所有用户信息, 例如

<users>

<user>https://csdn.net/users/onehao </user>

.....

</users>

5) GET请求不能引起资源(Resource)状态变化。

9. ROA vs.SOA, REST vs. SOAP

1) 基于SOAP based的SOA相对于ROA可能有更多成熟的工具的支持。(这种情况可能随着时间的推移而改变)

2) ROA更易于实现

3) ROA具有更好的性能, -- 更好的Cache支持, 更轻量级的Request和Response。

上一篇: REST Service 基础

Reference:

http://blog.csdn.net/onehao/article/details/9269819

http://rest.elkstein.org/

REST Service 基础 A further step.的更多相关文章

  1. Service基础使用

    Service基础使用 之前的文章一直介绍Activity的使用,很多知识和用法单一的配合Activity使用,这次将总结Android四大组件之二--Service. 本文将要介绍以下内容: Ser ...

  2. Android Service基础

    Service Service 是一个组件,用来执行长时间的后台操作,不提供用户界面. 另一个应用组件可以启动一个Service,它将持续地在后台运行,即便是用户转移到另一个应用它也不会停止. 另外, ...

  3. C# Windows Service 基础

    Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...

  4. Web Service基础——规范及三要素

    1. Java中的Web Service规范 Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC).JAX-RS.JAXM&SAAJ(废弃). 1.1 JAX- ...

  5. Web Service基础——基础概念

    1. Web Service基本概念 Web Service(Web服务)是一种远程调用技术,他的作用就是从远程系统中获取业务数据.具体来说,Web Service可以让你的网站使用其他网站的资源,比 ...

  6. Android笔记之 Web Service 基础

    一.Web Service是什么? 就是网络服务.依据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包括.自描写叙述和模块化的应用程序,它能 ...

  7. xBIM 基础06 将STEP物理文件转换为XML

    系列目录    [已更新最新开发文章,点击查看详细]  一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...

  8. Web service基础

    Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...

  9. Android Service 基础

    启动方式 startService(Intent) 这种方式启动的Service可以在后台无限期的运行,与启动它的组件没有关系. bindService 绑定Service.它提供了一种类似C/S结构 ...

随机推荐

  1. poj1189 简单dp

    http://poj.org/problem?id=1189 Description 有一个三角形木板,竖直立放.上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1).每颗钉子和周 ...

  2. ZigBee研究之旅(一)

    *********************************************************************** 以下有引用webee公司的文档的内容,版权属于webee ...

  3. 工信部表态支持Linux,可是Linux又是什么呢?

    近日,工信部高层官员出面表态:工信部大力支持发展国产Linux操作系统,可是,Linux又是什么呢?假设依照工信部的说法,发展所谓"国产Linux".恐怕要给国家带来麻烦. 大家知 ...

  4. UML基本架构建模--类概述

     Classes 类 Classes are the most important building block of any object-oriented system. A class is ...

  5. uva 1415 - Gauss Prime(高斯素数)

    题目链接:uva 1415 - Gauss Prime 题目大意:给出一个a,b,表示高斯数a+bi(i=−2‾‾‾√,推断该数是否为高斯素数. 解题思路: a = 0 时.肯定不是高斯素数 a != ...

  6. 一int考虑什么类型的多少字节

    一int表示的字节数? 问题是,我们经常得到的答案4. 但int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes mat ...

  7. My Emacs For Common Lisp

    My Emacs For Common Lisp My Emacs For Common Lisp

  8. 百度GPSutil

    ================================================= package com.qcar.benz.biz.common; import com.aliba ...

  9. 使用CocoaPods出现 The `master` repo requires CocoaPods 0.32.1 - 问题解决

    近期在使用CocoaPods为project配置第三方类库时出现了例如以下问题: [!] The `master` repo requires CocoaPods 0.32.1 - 明显是由于Coco ...

  10. 高度关注!国务院对A股发出强烈信号↓

    高度关注!国务院对A股发出强烈信号↓http://dwz.cn/2qHBd1郎咸平:中国股市存在一大隐疾 使其成为全球市场的一个另类!http://dwz.cn/2qHBVy一不小心,马云又完成了四场 ...