2010-04-03 63 views
1

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

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

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

回答

1

如果服务公开元数据,那么可以。究竟如何取决于所使用的绑定,如果它是一个正常的http绑定,你可以使用http://myserver/myservice.svc?WSDL。要比较合约,您必须使用普通的http API下载WSDL,然后将其与已存储的参考WSDL进行比较。

也有几件事情我想你应该考虑实施一个比较之前:

  • 如果合同不符,WCF会引发错误。
  • 在某个名称空间中发布的某个契约不应该存在于不同的版本中。这比常规问题更像一个技术问题。在您的情况下,如果您的服务由不同的服务实施相同的合同,则需要合同更改的良好例行程序。
+0

如何以编程方式执行此操作(http://myserver/myservice.svc?WSDL)? – Lance 2010-04-03 08:39:33

+0

如果它公开元数据,我该如何使用它? – Lance 2010-04-03 08:40:18