zoukankan      html  css  js  c++  java
  • Soap和Rest 转载

    http://blog.csdn.net/andyxhua/archive/2008/03/24/2212562.aspx

    记录下来,证明自己度过

    一直想比较一下这两种风格,却不知如何落笔,最终写成了如下的FAQ形式。

    什么是SOAP?
    简单对象访问协议,基于XML,是一种应用协议,可以跨多种传输协议来传递消息(比如HTTP、SMTP),Soap是针对RPC的解决方案。
    Soap的初衷是作为一种轻量级解决方案出现的,采用xml格式定义过程调用和返回,一个Soap消息就是一个特定格式和内容的XML文档。

    什么是Restful web service?
    Rest是针对Web提出的一种架构风格,Restful web service本质上就是Web,任意一个URL地址,一个HTTP网页都可以称作是Restful web service。Rest把网络上的所有事物抽象为资源,把对资源的操作抽象为CRUD,对应HTTP的PUT,Get,Post,Delete。注意此处的资源不是静态的数据,而是数据加上状态,是随时间变化的,每个资源有一个唯一的标识,URL。

    Rest提出了一些设计概念和准则:
          1、网络上的所有事物都被抽象为资源(resource);
            2、每个资源有一个唯一的资源标识(resource identifier);
            3、通过通用的连接器接口(generic connector interface)对资源进行操作;
          4、  对资源的各种操作不会改变资源标识;
            5、所有的操作都是无状态的(stateless)。
    什么是架构风格?
    来自Roy Thomas Fielding博士的定义:
    一种架构风格是一组协作的架构约束,这些约束限制了架构元素的角色和功能,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。我觉得可以这么来理解:
    架构风格是接口
    如果说架构是一个对象, 那么架构风格就好比是一组接口,一个特定的架构可能实现了多种架构风格,一种架构风格也可能是继承了多个基本架构风格的混合风格。
    架构风格是模式
    存在一组基本的架构风格,每个基本风格适用于特定的设计场景,设计师可以根据具体的应用需求进行取舍,对基本风格进行取舍、组合,确定适用于具体的需求的架构设计。而实际的软件架构就是架构设计的具体实现。

    Soap是Rest风格的一种实现吗?
    当然不是。
    1、Soap也可以看作是一种风格,面对的应用需求是RPC,而Rest面对的应用需求是分布式超媒体系统(Web)。
    2、Rest架构风格更强调数据,请求和响应消息都是数据的封装。而Soap风格更强调接口,Soap消息封装的是过程调用。REST是面向资源的,而Soap是面向接口的。
    3、REST架构下,HTTP是承载协议,也是应用协议,而Soap架构下,HTTP只是承载协议,Soap才是应用协议。

    什么时候用Soap?什么时候用REST?
    1、过程调用用soap。如果服务是作为一种功能提供,客户端调用服务是为了执行一个功能,用Soap,比如常见的认证授权。而数据服务用REST。
    2、可以定义清晰明了的正式接口的情况下,用Soap,比如在企业应用中,系统间的耦合采用面向接口的方式。
    3、要更多的考虑非功能需求,比如安全、传输、协作等需求,使用Soap。
    4、低带宽,客户端的处理能力受限的场合,比如在PDA,手机上消费服务,用REST。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/andyxhua/archive/2008/03/24/2212562.aspx

  • 相关阅读:
    error C2065: 'IDD_DIALOG1' : undeclared identifier
    MySQL API函数
    MFC连接MySQL C API方法
    MFC连接MySQL
    MFC连接MySQL数据库方法
    error C4430: error 2141
    GetLastError
    char与CString相互转换
    处理图片(获取图片详细信息)大小 格式
    RGB颜色值 十六进制颜色码 转换
  • 原文地址:https://www.cnblogs.com/hl3292/p/2094331.html
Copyright © 2011-2022 走看看