我正在構建一個WCF路由器,它需要充當許多內部Web服務(WCF和ASMX)的代理。路由部分相當直接,但我無法理解服務元數據交換如何在此解決方案中工作。WCF路由和服務元數據
換句話說:客戶端如何獲取路由器後面的內部服務的元數據?我是否需要手動向消費者提供WSDL文件?我能以某種方式設置路由器以返回適當的內部服務的元數據嗎?
或者,也許我的架構是完全錯誤的?
我正在構建一個WCF路由器,它需要充當許多內部Web服務(WCF和ASMX)的代理。路由部分相當直接,但我無法理解服務元數據交換如何在此解決方案中工作。WCF路由和服務元數據
換句話說:客戶端如何獲取路由器後面的內部服務的元數據?我是否需要手動向消費者提供WSDL文件?我能以某種方式設置路由器以返回適當的內部服務的元數據嗎?
或者,也許我的架構是完全錯誤的?
我看到2個選項在這裏:
參考:
這如何幫助獲取路由器後面的內部服務的元數據?你提供了不錯的信息,但我不太明白這是如何回答這個問題的? – Jeroen
我想說的是,你可以用外部端點替換內部端點(它也適用於所描述的體系結構OP),或者你可以即時重寫WSDL,用外部替換內部鏈接在需要的地方。您可以路由元數據,但只有客戶端才能連接到WCF路由器,而無需從原始服務中提取WSDL,則需要執行一些額外的步驟。 – DarkWanderer
實際上,IWsdlExportExtension比消息檢查器更好。回答編輯。 – DarkWanderer
你有沒有考慮使用一個簡單的HTTP代理服務器呢?所有使用REST或SOAP的WCF都在其核心HTTP請求。看起來像路由功能(我假設你是基於主機名,URL路徑或參數)可以通過代理HTTP請求來執行,而不需要了解內容。 ASP.Net將自行完成傳入請求的清理工作,但您可以根據需要添加其他自定義篩選。
也可以使用相同的「路由器服務」來獲取路由器後面的內部服務的單個WSDL。
沒有足夠的信心將它張貼作爲一個答案,但我不相信手動提供的WSDL文件是要走的路; AFAIK沒有簡單的方法直接路由元數據。有人問[關於MSDN的一個類似問題](http://social.msdn.microsoft.com/Forums/en/wcf/thread/b31891be-98d3-4440-a617-f584435b01aa),並得到了類似的答案(也許你已經看到了)。 – Jeroen
是的,我見過這些答案中的大部分。實際上,我成功地獲得了一條額外的路徑來直接從服務中提取元數據,但是這引發了新的困難 - 例如,從服務點到內部服務地址的WSDL。我正在研究更多的選擇,並且一旦我擁有了一些東西,就會在這裏發佈。 –