2

我已经构建了一个简单的客户端-服务器应用程序。当我对服务器进行更改时,我会删除服务引用并重新创建它以反映我对服务器应用程序所做的更改。

每次更改服务器应用程序时都必须重新创建它,还是有什么方法可以自动更新服务引用?

谢谢

4

3 回答 3

2

基本答案可能是:是的。

WCF 和分布式应用程序的美妙之处在于客户端和服务器可以分开发展。更新客户端以利用更新版本的服务应该是一个有意识的选择。

当然,在开发过程中,这可能会很痛苦。有几种方法可以缓解这个问题,这里有一些我能想到的:

  • 使用 Visual Studio 管理您的服务引用。如果您已经更新了服务,只需右键单击并选择“更新服务参考”,这应该不会花费太多精力。
  • 使用测试驱动的方法来创建您的服务。这使您可以专注于完成服务中的业务逻辑,而无需客户端访问它。一旦你有了“绿灯”,你就创建了客户端。这种方法可以最大限度地减少您需要更新客户端的次数。
  • 自动使用svcutil在您需要/需要时创建新的客户端代码。

当然还有更多(甚至可能更好)的方法,但这些方法可能已经对您有所帮助。

于 2012-10-22T20:58:18.820 回答
2

这取决于,

如果您所做的只是在不更改现有功能的情况下添加功能,并且客户端不需要新功能,那么答案是否定的。

这就是“IsRequired”DataMember 属性背后的想法。如果您将新字段添加到数据合约但将其标记为 IsRequired = false 则现有系统仍可以使用旧合约与服务器交互。

显然添加新方法也不会破坏旧合同,客户不会知道新方法。

于 2012-10-22T23:10:20.607 回答
1

目前我在我的项目中遇到了同样类型的问题。

当我在服务中添加一些方法或更改数据成员的属性时,我必须更新服务引用,否则我的客户端无法使用更新的内容。

Basically if you add any method in the service and you are not updating the service reference then its fine your code will not crash, it will work as it did previously, but if you change a property (data member) you are bound to take a update of the service reference otherwise your code will break.

于 2014-01-07T07:01:35.533 回答