2008-09-03 72 views

回答

2

這是WCF的一個更偉大的方面。你可以動態創建一個channelfactory,但只能使用已知的類型。

我想出了一個解決方案,它並不完美,但沒有工作:

創建一個接口,「IFoo的」,其中包含了一個方法,說Execute()。在您的ESB中,爲要連接的端點動態創建ChannelFactory<IFoo>。設置連接屬性(URI等)。

現在,您可以動態地將服務附加到ESB,前提是它們始終實施「IFoo」接口。

2

我很早以前就用SOAP Web服務完成了這個工作。 GotDotNet上有一個工具,我認爲它已成爲Web Services Studio Express,它具有檢查/解析WSDL文件並允許您調用它的代碼。

我認爲這個假設是WSDL在客戶端創建時已知,並且您不需要在運行時連接起來。如果您在運行時檢查WSDL,則仍然需要某種邏輯來決定如何生成代理。爲什麼你不能在運行時使用WSDL? Web服務應該是相當靜態的,一旦發佈就不會改變。

您可以使用.NET CodeDom生成代碼來執行和使用WSDL描述的Web服務。 WSDL可以使用標準的.NET XML類進行分析。

+0

Becouse Web服務正在用於與第三方數據饋送進行交互,客戶希望能夠在無需等待下一版本軟件的情況下進行設置。例如,Excel可以在沒有Microsoft的情況下從Web服務導入數據,而他們在編寫Excel時就會知道WSDL! – 2010-03-11 09:13:07

0

我實際上正在考慮製作一個小ESB,其中用戶可以在運行時添加一個web服務來路由到。 所以我無法靜態添加WSDL