在制作agument可选项时,是否需要更新WCF服务引用?

时间:2016-06-09 06:30:28

标签: c# web-services wcf

我们有许多其他流程使用的Web服务。 它需要一个对象(由XSD制作)作为参数。此对象中的一个属性(日期时间)现在可以为空。

问题是:我现在必须找到引用此Web服务的所有流程并更新其引用,以便它们继续工作吗?

感谢。

2 个答案:

答案 0 :(得分:0)

这是一个棘手的问题。

我认为你应该没事,因为你没有删除或添加新参数到界面。

这只是对现有参数的简单更改,在我看来,您只是放松了约束。而不是强制参数不能接受null,你现在说它是。

我相信现有流程必须已经为该dateTime属性设置了不可为空的值?因此,对于利用更改的新流程,他们必须更新引用,否则不需要进行任何更改。

尽管如此,改变服务合同通常是一个坏主意。您是否考虑过在发布说明中包含更改?这样您的客户就会意识到并且可以采取适当的措施。

这是另一个可能给您带来麻烦的重大变化列表。

  • 删除操作
  • 更改操作名称
  • 删除操作参数
  • 添加操作参数
  • 更改操作参数名称或数据类型
  • 更改操作的返回值类型
  • 通过显式使用.NET属性或自定义序列化代码更改参数类型(数据协定)或操作(消息协定)的序列化XML格式
  • 修改服务操作编码格式(RPC编码与文档文字)

答案 1 :(得分:0)

更改服务合同,如果只使一个属性可以从非可空变为可空,则需要更新服务引用。

您可以创建一个维护服务引用的共享项目,而不是每个项目都使用该服务来创建自己的引用。这样,您就不需要遍历所有项目和应用程序,并为每个项目和应用程序执行此过程。

更好的解决方案仍然是将您的POCO定义在单独的项目/程序集中,并在服务和客户端引用它。 WCF和VS足够聪明,它不需要为服务类创建代理类,而是使用来自单独程序集的POCO。如果更改服务公开的类中的属性,只有在添加/删除类或更改服务接口时,您甚至不必更新服务引用。