加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Web服务互操作性 – wsdl复杂类型扩展

发布时间:2020-12-16 09:37:34 所属栏目:asp.Net 来源:网络整理
导读:假设我们有一个使用WSDL复杂类型扩展的Web服务.考虑下面的(有效的WSDL)示例,其中Vechicle是抽象的.汽车和自行车两种类型继承自: xs:complexType name="Vehicle" abstract="true" xs:sequence xs:element name="common1" type="xs:string" minOccurs="0"/ xs
假设我们有一个使用WSDL复杂类型扩展的Web服务.考虑下面的(有效的WSDL)示例,其中Vechicle是抽象的.汽车和自行车两种类型继承自:

<xs:complexType name="Vehicle" abstract="true">
  <xs:sequence>
    <xs:element name="common1" type="xs:string" minOccurs="0"/>
    <xs:element name="common2" type="xs:string" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="Car">
  <xs:complexContent>
    <xs:extension base="tns:Vehicle">
      <xs:sequence>
        <xs:element name="carValue1" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
<xs:complexType name="Bike">
  <xs:complexContent>
    <xs:extension base="tns:Vehicle">
      <xs:sequence>
        <xs:element name="bikeValue1" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

以及使用Vehicle类型作为其元素的类型Transport:

<xs:complexType name="Transport">
  <xs:sequence>
      <xs:choice>
        <xs:element ref="tns:Car"/>
        <xs:element ref="tns:Bike"/>
      </xs:choice>
    <xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:complexType>

请注意,Vehicle本身不是Transport中可能的类型,当然因为Vehicle是抽象的.很容易在Java Metro堆栈中生成以上内容. Blaise Doughan’s blogs在这里给了我一些宝贵的意见.

我的问题是这将如何在Web服务互操作性方面起作用,特别是与WS-I Basic Profile相关.我能否确定符合WS-I的Web服务框架能够使用这样的Web服务?据我所知,WS-I基本上只指定了WSDL中允许的子集.我已经尝试阅读WS-I规范来理解这个问题,但没有真正的运气.这种语言对我来说太难了.我发现article from 2004引起了一些担忧:

这种担忧的根本原因是扩展的使用
值对象继承的机制在WS-I基础之外
简介,虽然没有明确排除它.目前,有
没有提到在WS-I基本配置文件中使用扩展构造
此外,WS-I一致性测试套件不包括此内容
案件.

…但那是在2004年,显然与WS-I Basic Profile v1.0有关.从那时起,WS-I Basic配置文件1.1,1.2和2.0规范已经发布.

所以问题是:使用WSDL值类型扩展功能的Web服务(即< xs:complexType name =“xxx”abstract =“true”>和< xs:extension base =“xxx”>)是否正常工作在所有声称符合WS-I Basic Profile标准的框架中?他们可以使用这种网络服务吗?

解决方法

WS-I Basic Profile说下面关于xml:

The Profile uses Web Services Description Language (WSDL) to enable the description of services as sets of endpoints operating on messages. This section of the Profile incorporates the following specifications by reference (…): 07001

因此它将XML Schema引用为它所基于的东西. In there,you’ll find:

Abstract complex types can be used as {base type definition}s,or even as the {type definition}s of element declarations,provided in every case a concrete derived type definition is used for ·validation·,either via xsi:type (§2.6.1) or the operation of a substitution group.

此外,it defines构造<扩展基数=“QName”>该文件有很多话要说.

但所有这些都是概念层面的,不一定直接将它与对象继承联系起来.虽然制作这样的映射可能并不太困难(并且您的链接确实显示了这一点),但它也没有严格定义.我猜这是他们在提出问题时所谈论的内容.

从技术和语法上讲,构造是标准的一部分,但实现可能会以不可预见的方式处理它.另一方面,遵循标准的工具应该能够接受和输出有效的WS-I XML,并执行XML standard中规定的验证.

总而言之,我会说任何无法以某种方式处理构造的工具都不是有效的WS-I实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读