2010-04-03 68 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