Web 服务应该验证输入数据并写入数据库。稍后,其他服务应该读取数据并从中创建一个 xml 文件。
所以服务只是进行数据传输和转换(WS-* Parameter => Database)。
“动态”webservice 还应该包含一组可变参数(“容器”),导致客户端变化很多且很快,这不应该以修改接口和底层实现而告终。
如何做以及在哪里处理验证?
初步想法:
只需发送一个文件作为附件,并在 web 服务中使用 .xsd 模式验证它,“固定”部分使用 .xsd 模式,“容器”部分使用 .xsd 模式。如果可变部分更改,则只有用于验证的“容器”.xsd 必须更改。容器可以是 base64 编码的 xml。如果发生验证错误,Web 服务会以错误响应。
使用所有标准项作为 WSD 参数并传递 base64 编码的容器。WS-* 对标准参数进行验证,并且仅针对另一个 .xsd 验证容器。
没有对值进行逻辑/语义评估,这应该在以后完成。仅需要字段类型验证。
容器应该是 xml,如:
... standard elements xml ...
<embeddedContainer>
<customItemsFromWSClientOne>
<reallyCustomItemA>
<substructure>
<itemABC></itemABC>
</substructure>
<anotherStructure></anotherStructure>
</reallyCustomItemA>
</customItemsFromWSClientOne>
</embeddedContainer>
... standard elements xml ...
另一个客户端可能会发送其他参数,例如具有完全不同结构的“customItemsFromWSClientTwo”。所以服务会变得非常通用。