2012-07-27 47 views
1

我在Web服務新我開發是從另一家公司調用外部服務得到一些客戶的數據(例如C#WCF服務:姓名,地址,電話等),這部分工作到目前爲止還不錯。添加類似於Web服務到.NET C#應用程序

外部服務是基於標準的XML Schema和其他企業將不得不很快從相同的XML模式生成相同的服務,使用相同的名稱的方法和返回同一類型的XML文件。

我的第一個問題是,在我完成這個第一個實現後,有任何方法可以動態地添加其他外部公司服務,具有URL/Ports/etc的信息,還是必須插入他們手動作爲我的內部服務項目中的服務引用每當我需要添加一個新的,然後編譯和重新部署?

我的第二個問題是與數據合同/成員的關係,我的理解是,即使他們返回相同的XML文件,它們的數據合約/成員將是不同的,是真的嗎?因此,我必須制定一個特定的代碼,從每個新的外部公司的數據合同中讀取我需要的信息。如果這是真的,我一直在考慮做一個通用的代碼來讀取原始的XML,這是最好的選擇?

回答

1

儘管C#是一種編譯語言,但它通過MEF支持插件架構。您可以使用它併爲每個源添加一個小插件.dll。

話雖這麼說,這很可能是你所需要的是包含爲您的每個源連接的詳細信息,並連接到他們動態的配置列表。這隻有在他們使用完全相同的模式時纔有效,以便他們所服務的對象將序列化所有來源的相同。當然,您必須通過使用該配置的代碼動態地實例化代理。

我應該爲你的第二個問題添加一些東西。只要你是定義合同的人,他們的實際對象是不同的並不重要。您關心的所有內容都是他們所服務的xml,並且您可以使用您的表示進行連接。實際上,您可以將合同生成爲.wsdl文檔。每個服務實現者都可以從中生成域對象。另一方面,如果你不是「擁有」合同的人,那麼一些來源可能會做出稍微不同的決定,這會讓你頭痛。但希望這不是你的情況。

祝你好運! :)

+0

非常感謝你,這裏有很多非常有用的信息! – user1558528 2012-07-27 20:16:20

+0

@ user1558528非常歡迎。爲您添加了一些獎勵信息。 :) – Mithon 2012-07-27 21:30:17

0

我的第一個問題是,我完成這個首次實施後,有什麼辦法增加「動態」的其他外部公司服務,有他們的網址/端口/信息等

不幸的是,是的,你將有附加服務,編譯和部署每

我的第二個問題是與數據合同/成員相關的時間,我的理解是,即使他們返回相同的XML文件,其數據合同/成員將有所不同,即那是真的嗎?

如果要使用自動生成的每個服務將創建不同的合同。我會考慮創建你自己的類並使用反射和擴展方法轉換外部類

+0

謝謝你的回答! – user1558528 2012-07-27 20:17:31

相關問題