如果您更改WCF服务,您还需要更改客户端吗?

时间:2011-10-05 13:10:59

标签: wcf

如果我有一个web服务器和一个使用tis webservice的客户端,然后我更改了服务位置,或者我添加了另一个参数,那么更改客户端的常用方法是什么? 您是否需要更新客户端/ UDDI在这种情况下是否有帮助?

3 个答案:

答案 0 :(得分:1)

你一定要阅读Service Versioning - 它有你需要的信息。

但问题的答案是:也许

有两种类型的变化:破坏和不破坏。不幸的是,有时它并不明显什么是破坏性或非破坏性的变化,因为它可能取决于客户端正在做什么(并且您可能不知道如何使用您的服务)。

在改变服务地点方面,这通常是一个突破性的变化。但是,正如您所提到的,如果客户端使用UDDI,那么他们应该能够检索新的端点位置,并且该更改不会是一个重大变化。

如果你添加另一个参数,那么这可能是一个重大改变(或者可能不是)。如果参数是可选的并且客户端正在使用不严格的版本控制(例如WCF,.asmx),则更改不应该是破坏的。但可能是客户端期望一种非常特定的格式,或者他们正在进行一些模式验证等,可选参数可能会导致失败。

答案 1 :(得分:0)

嘿,如果没有完全理解你的问题,并且从你的questino中我可以得到的话,你需要在客户端上更新你的网络参考。

如果您更新了参考文献,请不要更改位置: 因此,加载您的客户端解决方案,然后找到您的引用(不是DLL引用),但Web /服务引用,然后右键单击并选择“更新Web引用”

如果您更改了位置,则可以在转到属性时更改端点,但我只是删除现有端点并使用新位置创建新端点。

希望它有所帮助。

有关详细信息,请查看http://msdn.microsoft.com/en-us/library/bb628652.aspx

答案 2 :(得分:0)

这取决于您在服务定义中应用的更改的性质。如果添加一些可选但只有新客户端可以使用的东西但旧客户端可以省略,则引入了向后兼容的更改,因此除非客户决定使用此新功能,否则不应更新客户端。任何影响现有客户端使用服务的方式的更改都需要客户端更新,因为它代表了一个重大变化。

对于WCF,如果您使用最新的4.0版本,它会引入一个新的协议实现WS-Discovery,它可以帮助客户找到服务URL和他们可以使用的正确版本。使用此方法,您可以例如在不同的URL中部署新版本,客户端应用程序可以自动发现它。

此致 巴勃罗。