【发布时间】:2012-10-12 12:35:10
【问题描述】:
在开发过程中考虑以下场景 -
- 我们非常频繁地更改 WCF 服务合同。
- 有一个使用这些服务的 Web 应用程序。
- 我们经常在 Web 应用程序中更新、服务参考。
但有时当我们忘记这样做时,我们必须调试整个 Web 应用程序,最终发现服务合同已更改。
我们能否在调用服务之前在运行时检测到过时的代理。
【问题讨论】:
标签: wcf web-services
在开发过程中考虑以下场景 -
但有时当我们忘记这样做时,我们必须调试整个 Web 应用程序,最终发现服务合同已更改。
我们能否在调用服务之前在运行时检测到过时的代理。
【问题讨论】:
标签: wcf web-services
最佳做法是对您的服务进行版本控制,以允许客户端连接到其熟悉的界面。通常,您在线保留一两个较旧的版本,并将任何重大更改添加为服务的升级版本。 (例如/myservice/2012/01 然后/myservice/2012/06)。然后随着新版本的创建,您可以弃用以前的版本。
第二种做法是实现一个GetVersion()(或类似的)方法,您可以调用并用于测试目的。对服务进行初始调用并查看它正在运行什么,然后针对本地存储的版本号进行测试并查看是否存在冲突。
有关这方面的更多详细信息,Yoav Helfman 有一篇很好的文章介绍了处理版本更改和更新。
【讨论】:
我已经在before发过这种事了。
基本上处理这种情况的一种方法是要求您的服务使用者声明他们期望每个请求的服务接口版本。
然后在您的服务上公开一个故障合同,该合同将允许您识别发生了服务版本不匹配的情况。这意味着消费者可以捕获并相应地处理这个特定问题。
【讨论】: