获得合同

时间:2010-04-03 08:28:51

标签: wcf contract discovery

有没有办法以编程方式从正在运行的服务中获得合同?我想比较客户端引用的合同中正在运行的服务的合同。

例如,我有两个Service1实例在不同的机器上运行,这些机器具有不同的实现。 它们都有一个名为IService1的合同,但实现方式不同。 我有一个Console1,它引用了IService1(第一个实例)。 Console1具有2个端点地址的集合。 Console1想要检查哪个正在运行的服务是他正在使用的合同(第一个实例)的正确服务。

我想在这里做的是使用地址以编程方式从服务中获取合同,并将其与我所引用的合同进行比较。

1 个答案:

答案 0 :(得分:1)

如果服务公开元数据,则可能是。究竟如何取决于使用的绑定,如果它是普通的http绑定,您可以使用http://myserver/myservice.svc?WSDL。要比较合同,您必须使用普通的http API下载WSDL,然后将其与存储的引用WSDL进行比较。

在实施比较之前,我认为还应该考虑一些事项:

  • 如果合同不匹配,WCF将抛出错误。
  • 在某个名称空间中发布的某个合同不应该存在于不同的版本中。这是一个例行问题,而不是技术问题。在像你这样的情况下,不同的服务实施相同的合同需要一个良好的合同变更程序。