我是WCF和ADO.NET数据服务的重要用户。我在不同系统之间的链接中使用它们很多。现在有时候我会更新这样一个链接的一面并忘记另一面。另一方将崩溃,并且大多数时候对于某些未找到的类型或类似的东西给出了相当无用的错误。
是否可以将生成的代理与实际服务定义进行比较,以检查服务是否已更新?这样我就可以抛出一个更有用的错误,该错误表明定义不同步,并且应该更新其中一个侧面以再次匹配正确的定义。
这适用于WCF服务以及ADO.NET数据服务,所以我正在寻找一种方法来比较它们。
答案 0 :(得分:0)
许多专家要求的一种方法是使用基于方法和数据协定命名空间的版本控制。
E.g。你原来的第一个版本是这样的:
[ServiceContract(Namespace="http://services.yourcompany.com/YourService/2009/09")]
interface IMyService
{
...
}
然后如果在10月更改服务定义,则将命名空间更改为:
[ServiceContract(Namespace="http://services.yourcompany.com/YourService/2009/10")]
interface IMyService2
{
...
}
这样,您就可以确保客户端永远不会意外地调用过时的服务,因为命名空间不匹配。
另一个想法可能是在每个服务上都有一个“GetVersion”方法,并在开始调用实际服务方法之前调用它,以检查是否已部署新服务版本。但是对于这个,你是独立的 - 在WCF或ADO.NET DataServices中没有任何内容可以促进这一点。
马克