我是 web 服务的新手,我面临一个设计问题,我们想要创建一个 web 服务(最好是基于 SOAP),它将接收 2 个参数:
- 字符串变量(客户端名称);
- XML 数据。
目前此 Web 服务有 2 个不同的消费者,但他们的数量将会增加。所有消费者都有将要发送的单独 XSD 数据,例如:
消费者1:
<ConData>
<Customer>
<FirstName>FirName</FirstName>
<LastName>LasName</LastName>
</Customer>
<Acocunt>
<Number>112971</Number>
</Account>
<Order>
<OrderNum>0092123</OrderNum>
</Order>
<ConData>
消费者2:
<ConData>
<SysData>
<CustomerFirstName>Name</CustomerFirstName>
<CustomerLastName>Name</CustomerLastName>
<AccountNumber>Au1o2n</AccountNumber>
<OrderNum>koo912</OrderNum>
</SysData>
<ConData>
该 Web 服务应该从这些客户端获取 XML 数据,并根据消费者名称将其存储到数据库中。我们不需要进行任何处理来验证 XML,我们只需将其存储在数据库中即可。
不过,作为一个好的设计,我想用显式参数定义我的 Web 服务。问题是,由于它们的 XML 数据格式不同,我无法在我的 WSDL 中使用单个 XSD 模式作为参数。我可以想到 2 个选项来解决这个问题:
1. 让他们在我的 Web 服务中将 XML 数据作为字符串而不是 XSD 映射参数传递。虽然这是一种有效的方法,但根据我目前在论坛上所读到的内容,这似乎是一个糟糕的设计,因为它使验证无效,并且需要大量的手动编组和解组以及其他问题。另外,我的 WSDL 将无法向我的客户定义预期的格式等。
2. 创建 2 个单独的 Web 服务,它们将使用自己的 XSD 处理不同的个人消费者。这似乎不太可行,因为将来如果我们添加更多消费者,我们将不得不为相同的操作添加具有重复代码的新 Web 服务等。
我正在寻找是否有一种方法可以在单个 Web 服务 WSDL 中定义多个 XSD,或者可能是解决此问题的更好方法。
附带说明一下,我更喜欢使用基于 SOAP 的 Web 服务,但如果使用 RESTful Web 服务以更好的方式解决了这个问题,那么我也可以考虑这一点。