当有其他提供者时,如何在消费者端为 1 个提供者添加元素到 WS 操作?
Posted
技术标签:
【中文标题】当有其他提供者时,如何在消费者端为 1 个提供者添加元素到 WS 操作?【英文标题】:How to add an element to WS-operation in consumer end for 1 provider when there's other providers? 【发布时间】:2016-12-18 03:45:43 【问题描述】:我编写了一个 WSDL 和实现 AddCar 操作的消费者/客户端,该操作具有模型和颜色的数据。现在,一个 WS 生产者/服务器也希望有长度数据。我假设其他生产者由于实施外包而难以适应这种变化。我的选择包括:
-
进行新操作 AddCarWithLength
使用相同的操作制作 2 个版本的 WSDL 和使用者代码
只需将 WSDL 更新为 可选 长度,并仅包含需要它的生产者的操作数据。
只需使用 0-N 名称-值对元素更新 WSDL,并仅包含需要它的生产者的操作数据。
要求客户让实施 WS 生产者的公司对其进行更新。
选项:
-
不可能
我在消费者/客户端中生成了 C# 类,因此会有两个代码集。我仍然需要知道(可能使用配置参数或 smthn)生产者/服务器使用哪个版本
意味着我只需要知道我与哪个生产者/服务器交谈。
与 3 相同,但允许未来扩展
可能有问题
问题: 当要求更新所有生产者可能不现实时,正确/最佳的方法是什么?
【问题讨论】:
【参考方案1】:WSDL 以宝贵的定义而闻名。起初,服务的设计应始终清楚地了解使用情况和未来。无论如何,现在我的理解是向您现有的 WCF 服务添加一个属性(数据元素 - 长度)。我的建议是,
-
分析并添加您的自定义类并将其命名为数据协定,然后添加到您的 WCF 操作中并将其公开为新的接口/操作协定。
例如。
在 Class car 中,有一个数据成员作为属性。
使用 in 属性定义所有分析结果元素,如长度、宽度、颜色、重量等。
还要添加一个Dictionary<string,string> CustomAttributes;
,以便您以后可以使用它。
-
与上述类似,但如果您没有太多时间。
无需任何分析,只需添加
Dictionary<string,string> Parameters;
并公开新合约并加以利用。
【讨论】:
谢谢!我使用 Top->Down 开发,所以我在 WSDL 中进行更改并在之后生成代码。您建议我的选择:“4. 只需使用 0-N 名称-值对元素更新 WSDL,并仅包含需要它的生产者的操作数据。”但是,您没有解决主要问题,即我应该如何处理生产者 A.K.A.无法适应变化的 Web 服务。以上是关于当有其他提供者时,如何在消费者端为 1 个提供者添加元素到 WS 操作?的主要内容,如果未能解决你的问题,请参考以下文章