问题:我试图找到一种更好的方法来管理对多个网站(域/ips)共享的多个 SOAP 客户端/服务器的更改。幸运的是,我可以控制所有 SOAP 服务器/客户端,但是我偶尔需要为某些复杂类型添加一两个新字段。
添加字段会导致相关站点之间发生依赖性问题。SOAP 服务器中没有新字段会导致发生错误。部署到这些站点的开发、演示、生产版本会导致依赖噩梦的发生。
我已经看到 SugarCRM 设置其复杂类型的方式,并注意到它们具有名称/值对列表。我正在考虑采用类似的方法,但想从 Stackoverflow 上的人们那里获得一些反馈。我主要使用 PHP/MySQL。
这种方法有问题吗?我认为这将允许我定义任意数量的名称/值对。我认为它可能会导致 SOAPClient 类映射存在问题?
<xsd:complexType name="name_value">
<xsd:all>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="value" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="name_value_list">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:name_value[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="name_value_lists">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:name_value_list[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>