zoukankan      html  css  js  c++  java
  • REST WebServices学习

        围绕面向服务的体系结构SOAService Oriented ArchitectureSOA)的讨论很多,围绕如何正确实现SOA的讨论很多。如何构建灵活的异构系统,如何集成现有的系统,如何让异构系统进行通信?虽然当前主流的方式明显地集中在基于SOAPWSDLWS-*规范的Web Services领域,但也有少数人主张更好的方式是RESTRestful WebService,或者RESTful HTTP。那什么是REST

    RESTRepresentational State Transfer (表述性状态转移)的缩写。为什么提这个名字?

    Client application transfers state with each resource representation. This is REST.

    通过超文本传输协议(HTTP)发送简单的消息来实现 SOA,这基本上就是 REST Web 服务 (RESTful Web services) 的工作方式。REST并不是一个协议或技术;它是一种体系结构风格

    REST SOAP 轻量型替代品,它是面向资源的,而不是面向操作的。它常常被归结为远程过程使用 HTTP 调用 GETPOSTPUT DELETE 语句。我认为,这只是第二个重要的步骤。 (第一个(也是最重要的)步骤是把所有资源建模为 URL 形式。)

    (*) REST比较简单朴素,在安全性,可靠消息传输,或标准化的业务过程自动化上还没有定义。(REST很适合面向数据的应用,但对于面向服务/面向方法的应用,比如需要事务、严密的安全性等等这些更高级的操作的应用来说,采用基于WS-*的方案显得更有道理。)

          从基本原理层次上说,REST 样式和 SOAP 样式 Web Service的区别取决于应用程序是面向资源的还是面向活动的。例如,在传统的WebService中,一个获得天气预报的webservice会暴露一个WebMethodstring GetCityWetherstring city)。而RESTful WebService暴露的不是方法,而是对象(资源),通过Http GET, PUT, POST 或者 DELETE来对请求的资源进行操作。在 REST 的定义中,一个 Web Service总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源。可以说这是一种全新的思维模式:使用唯一资源定位地址 URI,加上 HTTP 请求方法从而达到对一个发布于互联网资源的唯一描述和操作。

       RESTful HTTP核心操作包括:

    • GET - 该操作返回已标识资源的状态表示。您可以通过大量的上下文要素来确定状态,例如谁正在提交请求、操作的参数(传入的参数如 HTTP 头或者查询字符串参数)和服务提供方维护的当前会话状态。
    • POST - 该操作执行对已标识资源的一些特定于应用程序形式的更新。该操作行为完全依赖于实现它的服务。由该操作返回的数据也完全依赖于应用程序。举例来说,像 GET 操作一样,它可以返回一个状态表示,它还可以选择根本不返回任何数据。
    • PUT - 该操作在已标识位置(URI)创建新资源。操作输入必须包括一个资源的状态表示。它完全依赖服务来创建基于这个状态表示的资源。
    • DELETE - DELETE 操作销毁已标识位置(URI)的资源。

         REST是无状态的,服务器无需知道当前操作的上下文,或者上一次操作的情况。这能够提高系统的可伸缩性,是因为它强制所有操作都是stateless的,这样就没有context的约束,如果要做分布式、做集群,就不需要考虑context的问题了。同时,它令系统可以有效地使用poolREST对性能的另一个提升来自其对clientserver任务的分配: server只负责提供resource以及操作resource的服务,而client要根据resource中的datarepresentation自己做render。这就减少了服务器的开销。

       在设计 REST WebService时,可以采用以下四个步骤:

    1. 决定资源及其描述性 URL(通过url来设计系统的结构则整个系统就是由这些resource组成的,注意设计思维方式的不同)
    2. 为每个 URL 上的通信选择一种数据格式。
    3. 指定每个资源上的方法。
    4. 指定返回的数据和状态码。

    具体示例点击此处参考IBM developworks的文章。


    WCF 3.5
    REST的支持

    微软提供的例子: Windows CardSpace Samples

    WCF REST 快速上手: WCF REST over HTTP Service

    新闻:The new WCF Web Programming Model supports REST Design

    IBM孵化器项目ProjectZero:
        
          SOA中的RESTful应用程序(1)
          SOA中的RESTful应用程序(2)

    以下这篇文章深入浅出的讲述了什么是REST web service, 以及和传统Web service的区别: Everything about REST web services - What and How

    Part I
    Part II
    Part III...(Coming soon)

    其他文章和资源:

    A Brief Introduction to REST

    How to Create a REST Protocol

    Building Web Services the REST Way 

    InfoQ:深入浅出Rest  

  • 相关阅读:
    金蝶 kis一些功能的内部逻辑和个人技巧
    mysql横向和纵向合并sql数据用于展示,快递导出导入海量数据
    laravel carbon时间处理组件开发文档-中文版
    金蝶kis数据库说明(转载)
    java微信支付,对账单下载
    RabbitMQ中文文档PHP版本(七)--发布者确认
    RabbitMQ中文文档PHP版本(六)--远程过程调用(RPC)
    RabbitMQ中文文档PHP版本(五)--主题
    RabbitMQ中文文档PHP版本(四)--路由
    RabbitMQ中文文档PHP版本(二)--发布/订阅
  • 原文地址:https://www.cnblogs.com/Mainz/p/1097559.html
Copyright © 2011-2022 走看看