soap有哪些常用的协议和规范

【626】舞蹈 2024-05-28 16:06:38
最佳回答
soap协议规范1. 简介soap以xml形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。soap本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使soap能够被用于从消息传递到rpc的各种系统。soap包括三个部分soap封装(见第4节)结构定义了一个整体框架用来表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。soap编码规则(见第5节)定义了用以交换应用程序定义的数据类型的实例的一系列机制。soap rpc表示(见第7节)定义了一个用来表示远程过程调用和应答的协定。虽然这三个部分都作为soap的一部分一起描述,但它们在功能上是相交的。特别的,封装和编码规则是在不同的名域中定义的,这种模块性的定义方法增加了简单性。在soap封装,soap编码规则和soaprpc协定之外,这个规范还定义了两个协议的绑定,描述了在有或没有http扩展框架[6]的情况下,soap消息如何包含在http消息[5]中被传送。1.1 设计目标soap的主要设计目标是简单性和可扩展性,这意味着传统的消息系统和分布对象系统的某些性质不是soap规范的一部分。这些性质包括:分布式碎片收集成批传送消息对象引用(要求分布式碎片收集)激活机制(要求对象引用)1.2 符号约定这篇文章中的** "must", "must not", "required", "shall", "shall not","should", "should not", "recommended", "may", 和"optional"的解释在rfc-2119 [2]中。 这篇文章中用到的名域前缀 "soap-env" 和"soap-enc"分别与"" 和""关联。整篇文档中,名域前缀“xsi”被假定为与uri"“(在xmlschema规范[11]定义)相连。类似的,名域前缀”xsd“被假定为与uri""(在[10]中定义)相连。名域前缀”tns“用来表示任意名域。所有其它的名域前缀都只是例子。 名域uri的基本形式”some-uri“表示某些依赖于应用程序或上下文的uri[4]。这个规范用扩展bnf(在rfc-2616[5] 描述)描述某些结构。1.3 soap消息举例在这个例子中,getlasttradeprice soap 请求被发往stockquote服务。这个请求携带一个字符串参数和ticker符号,在soap应答中返回一个浮点数。xml名域用来区分soap标志符和应用程序特定的标志符。这个例子说明了在第6节中定义的http绑定。如果soap中管理xml负载的规则完全独立于http是没有意义的,因为事实上该负载是由http携带的。在appendix a中有更多的例子。例1 在http请求中嵌入soap消息post /stockquote http/1.1 host: content-type: text/xml; charset="utf-8" content-length: nnnn soapaction: "some-uri" <soap-env:envelope xmlns:soap-env="" soap-env:encodingstyle=""> <soap-env:body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>d**</symbol> </m:getlasttradeprice> </soap-env:body> </soap-env:envelope>下面是一条应答消息,包括http消息,soap消息是其具体内容 :例2 在http应答中嵌入soap消息http/1.1 200 ok content-type: text/xml; charset="utf-8" content-length: nnnn <soap-env:envelope xmlns:soap-env="" soap-env:encodingstyle=""/> <soap-env:body> <m:getlasttradepriceresponse xmlns:m="some-uri"> <price>34.5</price> </m:getlasttradepriceresponse> </soap-env:body> </soap-env:envelope>. soap消息交换模型soap消息从发送方到接收方是单向传送,但正如上面显示的,soap消息经常以请求/应答的方式实现。soap实现可以通过开发特定网络系统的特性来优化。例如,http绑定(见第6节)使soap应答消息以http应答的方式传输,并使用同一个连接返回请求。不管soap被绑定到哪个协议,soap消息采用所谓的”消息路径“发送,这使在终节点之外的中间节点可以处理消息。一个接收soap消息的soap应用程序必须按顺序执行以下的动作来处理消息:识别应用程序想要的soap消息的所有部分 (见4.2.2节)检验应用程序是否支持第一步中识别的消息中所有必需部分并处理它。如果不支持,则丢弃消息(见4.4节)。在不影响处理结果的情况下,处理器可能忽略第一步中识别出的可选部分。如果这个soap应用程序不是这个消息的最终目的地,则在转发消息之前删除第一步中识别出来的所有部分。为了正确处理一条消息或者消息的一部分,soap处理器需要理解:所用的交换方式(单向,请求/应答,多路发送等等),这种方式下接收者的任务,rpc机制(如果有的话)的使用(如第7节中所述),数据的表现方法或编码,还有其它必需的语义。尽管属性(比如soap encodingstyle,见4.1.1节)可以用于描述一个消息的某些方面,但这个规范并不 强制所有的接收方也必须有同样的属性并取同样的属性值。举个例子,某一特定的应用可能知道一个元素表示一条遵循第7节约定的rpc请求,但是另外一些应用可能认为指向该元素的所有消息都用单向传输,而不是类似第7节的请求应答模式。 (译者注:交互双方的soap消息并不一定要遵循同样的格式设定,而只需要以一种双方可理解的格式交换信息就可以了)3. 与xml的关系所有的soap消息都使用xml形式编码(更多有关xml的信息请见[7])一个soap应用程序产生的消息中,所有由soap定义的元素和属性中必须包括正确的名域。soap应用程序必须能够处理它接收到的消息中的soap名域(见4.4节),并且它可以处理没有soap名域的soap消息,就象它们有正确的名域一样。soap定义了两个名域(更多有关xml名域的信息请见[8])soap封装的名域标志符是""soap的编码规则的名域标志符是""soap消息中不能包含文档类型声明,也不能包括消息处理指令。[7] soap使用"id"类型"id"属性来指定一个元素的唯一的标志符,同时该属性是局部的和无需校验的。soap使用"uri-reference"类型的"href"属性指定对这个值的引用,同时该属性是局部的和无需校验的。这样就遵从了xml规范[7],xmlschema规范[11]和xml连接语言规范[9]的风格。除了soap mustunderstand 属性(见4.2.3节)和soapactor属性(见4.2.2节)之外,一般允许属性和它们的值出现在xml文档实例或schema中(两者效果相同)。也就是说,在dtd或schema中声明一个缺省值或固定值和在xml文档实例中设置它的值在语义上相同。4. soap封装soap消息是一个xml文档,包括一个必需的soap封装,一个可选的soap头和一个必需的soap体。在这篇规范剩余部分中,提到soap消息时就是指这个xml文档。这一节中定义的元素和属性的名域标志符为:"" 。一个soap消息包括以下部分:1.在表示这个消息的xml文档中,封装是顶层元素。2.应用soap交换信息的各方是分散的且没有预先协定,soap头提供了向soap消息中添加关于这条soap消息的某些要素(feature)的机制。soap定义了少量的属性用来表明这项要素(feature)是否可选以及由谁来处理。(见4.2节)3.soap体是包含消息的最终接收者想要的信息的容器(见4.3节)。soap为soap体定义了一个fault元素用来报告错误信息。语法规则如下所示:封装元素名是 "envelope"在soap消息中必须出现。可以包含名域声明和附加属性。如果包含附加属性,这些属性必须限定名域。类似的,"envelope"可以包含附加子元素,这些也必须限定名域且跟在soap体元素之后。soap头 (见4.2节)元素名是"header"在soap消息中可能出现。如果出现的话,必须是soap封装元素的第一个直接子元素。soap头可以包含多个条目,每个都是soap头元素的直接子元素。所有soap头的直接子元素都必须限定名域。soap体 (见4.3节)元素名是"body"在soap消息中必须出现且必须是soap封装元素的直接子元素。它必须直接跟在soap头元素(如果有)之后。否则它必须是soap封装元素的第一个直接子元素。soap体可以包括多个条目,每个条目必须是soap体元素的直接子元素。soap体元素的直接子元素可以限定名域。soap定义了soapfault元素来表示错误信息。4.1.1 soap encodingstyle属性encodingstyle全局属性用来表示soap消息的序列化规则。这个属性可以在任何元素中出现,作用范围与名域声明的作用范围很相似,为这个元素的内容和它的所有没有重载此属性的子元素。soap消息没有定义缺省编码。属性值是一个或多个uri的顺序列表,每个uri确定了一种或多种序列化规则,用来不同程度反序列化soap消息,举例如下:"" " " ""第5节中定义的序列化规则由uri"" 确定。使用这个特定序列化规则的消息应该用encodingstyle属性说明这一点。另外,所有以""开头的uri中的序列化规则与第5节中定义的soap编码规则相一致。一个零长度的uri("")明确显示所含元素没有任何编码形式。这可以用来取消上一级元素的所有编码声明。4.1.2 封装版本模型soap没有定义常规的基于主版本号和辅版本号的版本形式。soap消息必须有一个封装元素与名域""关联。如果soap应用程序接收到的soap消息中的soap封装元素与其他的名域关联,则视为版本错误,应用程序必须丢弃这个消息。如果消息是通过http之类的请求/应答协议收到的,应用程序必须回答一个soap versio**match 错误信息(见4.4节)。4.2 soap头soap为相互通信的团体之间提供了一种很灵活的机制:在无须预先协定的情况下,以分散但标准的方式扩展消息。可以在soap头中添加条目实现这种扩展,典型的例子有认证,事务管理,支付等等。头元素编码为soap封装元素的第一个直接子元素。头元素的所有直接子元素称作条目。条目的编码规则如下:一个条目有它的完整的元素名(包括名域uri和局部名)确定。soap头的直接子元素必须有名域限制。soap encodingstyle属性可以用来指示条目所用的编码形式(见4.1.1节)soap mustunderstand属性(见4.2.3节)和soapactor属性(见4.2.2节)可以用来指示如何处理这个条目以及由谁来处理。(见4.2.1节)4.2.1 使用头属性这一节中定义的soap头属性确定了soap消息的接收者应该怎样按第2节中所述的方式处理消息。产生soap消息的soap应用程序,应该仅仅在soap头元素的直接子元素中使用这些soap头属性。soap消息的接收者必须忽略所有不在soap头元素的直接子元素中soap头属性。下面的例子是一个soap头,包括一个元素标志符"transaction","mustunderstand"取值为"1"和数值5。这应该以如下方式编码:<soap-env:header> <t:transaction xmlns:t="some-uri" soap-env:mustunderstand="1"> 5 </t:transaction> </soap-env:header>4.2.2 soap actor属性一个soap消息从始节点到终节点的过程中,可能沿着消息路径经过一系列soap中间节点。一个soap中间节点是一个可以接收转发soap消息的应用程序。中间节点和终节点由uri区分。可能soap消息的终节点并不需要所有部分,而在消息路径上的一个和几个中间节点可能需要这些内容。头元素的接收者扮演的角色类似于一个过滤器,防止这些只发给本接受者的消息部分扩散到其它节点。即一个头元素的接收者必须不转发这些头元素到soap消息路径上的下一个应用程序。同样的,接收者可能插入一个相似的头元素。soap actor全局属性可以用于指示头元素的接收者。soap actor属性的值是一个uri。uri ""指出了第一个处理这个消息的soap应用程序需要这个头元素。这类似于http头中用connection域表示hop-by-hop范围模型。省略soap actor属性表示接收者是soap消息的终节点。如果这个属性要生效,它必须出现在soap消息实例中。(见第3节和4.2.1节)4.2.3 soap mustunderstand属性soap mustunderstand全局属性用来指示接受者在处理消息时这个条目是否必须处理。条目的接收者由soap actor属性定义(见4.2.2节)。mustunderstand属性的值是"1" 或 "0"。缺少soap mustunderstand属性在语义上等同于它的值为"0"。如果一个头元素的soap mustunderstand属性的值是"1",那么条目的接受者必须或者遵守语义(如以元素的全名传送)并按照语义正确的处理,或者放弃处理消息(见4.4节)。soap mustunderstand 属性考虑了消息演变的准确性(robust evolution)。必须假定包含soap mustunderstand属性且值为"1"的元素以某种方式修改了它们的父元素或同层元素的语义。以这种方式连接元素确保了语义上的变化不会被那些不能完全理解它的接收者忽略。如果这个属性要生效,它必须出现在soap消息实例中。(见第3节和4.2.1节)4.3 soap体soap体元素提供了一个简单的机制,使消息的最终接收者能交换必要的信息。使用体元素的典型情况包括配置rpc请求和错误报告。体元素编码为soap封装元素的直接子元素。如果已经有一个头元素,那么体元素必须紧跟在头元素之后,否则它必须是soap封装元素的第一个直接子元素。体元素的所有直接子元素称作体条目,每个体条目在soap体元素中编码为一个独立的元素。条目的编码规则如下:一个条目由它的元素全名(包括名域uri和局部名)确定。soap体元素的直接子元素可能是名域限制的。soap encodingstyle属性可能用来指示条目(见4.1.1节)的编码方式。soap定义了一个fault条目用来报告错误信息。(见4.4节)4.3.1 soap头和体的关系虽然头和体定义为独立的元素,它们实际上是有关系的。体条目和头条目的关系如下:体条目在语义上等同于actor属性为缺省值且mustunderstand属性值为"1"的头条目。不使用actor属性则表示缺省的actor。 20210311
汇率兑换计算器

类似问答
  • 常见的网络通信协议有哪些?
    • 2024-05-28 00:28:01
    • 提问者: 未知
    常用几种通讯协议modbus modbus技术已成为一种工业标准。它是由modicon公司制定并开发的。其通讯主要采用rs232,rs485等其他通讯媒介。它为用户提供了一种开放、灵活和标准的通讯技术,降低了开发和维护成本。modbus通讯协议由主设备先建立消息格式,格式包括设备地址、功能代码、数据地址和出错校验。从设备必需用modbus协议建立答复消息,其格式包含确认的功能代码,返回数据和出错校...
  • 关于混凝土的标准和规范有哪些
    • 2024-05-28 13:04:51
    • 提问者: 未知
    混凝土结构设计 gb50010混凝土强度检测评定 gbj107-87混凝土结构工程施工质量验收规范 gb50204普通混凝土力学性能试验标准方法 gb50081普通混凝土配合比设计规程 jgj55-2002现用标准有:i. 水泥:• 通用硅酸盐水泥gb175—2007• 水泥胶砂强度检验方法gb/t17671—1999• 水泥细度检验方法gb/t1345—2005• 水泥密度测定方法gb/t241...
  • 常用涂料的应用范围有哪些?
    • 2024-05-28 21:12:39
    • 提问者: 未知
    聚氨酯涂料用于各种化工防腐蚀、海上设备、飞机、车辆、仪表等的涂 装。广泛用于外防腐面漆的涂装。元素有机涂料用于制造耐高温涂料、耐候涂料。橡胶涂料用于船舶、水闸和...
  • 遗嘱财产分割协议书范本内容有哪些?
    • 2024-05-28 23:26:19
    • 提问者: 未知
    遗嘱财产分割协议书范本应当包含所有的继承人**号码,还有被继承人的详细资料,被继承人 于 年 月 日意外身亡,留下遗产尚未分割,继承人在平等自愿的基础上协商一致,达成如下遗产分割协议...
  • 要写离婚协议,请问谁有最新的离婚协议范本
    • 2024-05-28 12:42:58
    • 提问者: 未知
    你好,离婚协议书主要包括以下几个部分。第一部分是双方当事人的具体信息,还要写清楚双方于何时结婚,现在应该情破裂,所以协商一致而离婚。第二部分要明确的约定,双方现在的夫妻共同财产包括...
  • 关于互联网金融规范发展的相关建议有哪些
    • 2024-05-28 22:40:25
    • 提问者: 未知
    互联网金融蓬勃发展的同时也亟待**在法律法规、规章制度、行业标准等方面进行规范,建议做好以下几点:1、加快互联网金融立法进程2、构建监管体制,明确监管主体3、行业自律组织的设立4、征信体系的纳入5、消费者权益保护与信息安全
  • 工厂合伙协议书范本包括哪些内容?
    • 2024-05-28 14:35:46
    • 提问者: 未知
    下面我们通过这篇 工厂合伙协议书范本,来具体了解下。工厂合伙协议书范本 甲方: 乙方: 甲乙双方本着自愿合作、平等友好、共同投资、共同受益、风险共担、利益共享的原则...
  • 分销协议范本
    • 2024-05-28 14:09:02
    • 提问者: 未知
    模板: 甲方: 乙方62616964757a686964616fe58685e5aeb931333365666165: 甲乙双方本着平等、互利、互惠的原则,依照合同法及泰珠公司关于产品代理经销及营销管理制度的相应规定,经协商同意按下列条款签订本协议。第一条 授权和法律关系 1.1 授权产品:产品 1.2 授权区域: 1.3 授权方式:...
  • 协议书范本
    • 2024-05-28 10:45:03
    • 提问者: 未知
    你好,我国的合同法是私法,以意思自治为原则,你表哥的房屋基金转让协议书中需要有双方当事人的主要信息,比如姓名、**号等,还需要约定金额和付款的方式,还可以约定...
  • 投资协议合同的范本有没有
    • 2024-05-28 12:05:07
    • 提问者: 未知
    股东是投资者的一种类别。...如果一个公司需要发展那么就必须要引入外来资金,这个就需要其他人员来进行投资了那么在投资的情况有三方的时候是如何进行签订协议定了?...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。