2011-05-17 164 views
1

我期待在實現一個WCF服務,將依次調用一個(或者更)外部WCF服務(或至少,網絡服務,我會從代碼中使用WCF服務的參考文獻中調用)WCF服務調用WCF服務 - 在哪裏放置客戶端服務引用?

我的解決方案被分解成ServiceLayer,BusinessLogicLayer,DomainLayer,DtoObjects等

我的問題是:
圍繞客戶端的邏輯都將在BusinessLogicLayer - 但如果我把ServiceReferences在那裏,然後我還需要將服務配置放在ServiceLayer中 - 因爲這是發起呼叫的地方。

這是正確的事情嗎?

或者:
在ServiceLayer中創建客戶端並將其傳遞給BLL。
不知道我喜歡這個想法......但它意味着只有一個配置。

或者:
還有別的辦法嗎?

回答

0

你可以將它看作是任何調用WCF服務的代碼都是WCF客戶端,即使這恰好是本身作爲WCF服務託管的另一部分代碼。正因爲如此,您需要客戶端配置才能在呼叫正在進行時出現並可用。我不知道是否有共享配置的好方法,或者甚至是可取的...我會選擇在每個地方單獨配置文件。不會有太多的重複,因爲你在一個地方有服務端配置,而在另一個地方有客戶端配置。

如果您可以使用WCF發現(http://msdn.microsoft.com/en-us/library/dd456782.aspx),它可以減少您必須創建的配置數量。此外,使用接口和ChannelFactory<T>而不是ServiceReferences會給你一個更清潔的設置。

希望這會有所幫助。

+0

它沒有那麼多實例化客戶端代理服務,更多的是在哪一層完成。我認爲最好在BLL中這樣做,這樣其他任何東西都可以以相同的方式調用外部服務 - 但這意味着要複製BLL項目和WCF項目中的配置部分。 – BlueChippy 2011-05-18 07:18:30