2009-09-25 51 views
0

我的WCF和ADO.NET数据服务相当重的用户。我在很多不同系统之间的链接中使用它们。现在有时我会更新这样一个链接的一面,并忘记另一面。另一方面会崩溃,大部分时间都会出现一些无法找到的类似错误。检查WCF/ADO.NET服务定义

是否有可能以比较实际的服务定义生成的代理来检查服务可能已被更新?这样我可以抛出一个更有用的错误,指出定义不同步,并且任何一方都应该更新以再次匹配正确的定义。

这同样适用于WCF服务,以及ADO.NET数据服务,所以我正在寻找一种方式来比较两者。

回答

0

一种方法,很多专家呼吁将基于你的方法和数据合同的命名空间正在使用的版本。

E.g.你原来的第一个版本是这样的:

[ServiceContract(Namespace="http://services.yourcompany.com/YourService/2009/09")] 
interface IMyService 
{ 
... 
} 

,然后如果你改变你的月服务定义,你会命名空间更改为:

[ServiceContract(Namespace="http://services.yourcompany.com/YourService/2009/10")] 
interface IMyService2 
{ 
... 
} 

这样的话,你一定会客户永远不会意外地调用过时的服务,因为名称空间不匹配。

另一个想法可能是对每个服务的“GetVersion”的方法,并调用开始打电话给你的实际服务方法,以检查一种新的服务版本是否已部署之前。但是对于这一点,你是独立存在的 - WCF或ADO.NET DataServices中没有内在的东西来促成这一点。

Marc

+0

嗯,太糟糕了。一个ValidateServiceDefinition方法或类似的东西会很棒。 – Jasper 2009-09-28 10:06:10