何時使用Channel Factory以及何時在WCF中使用Service Proxy?Channel Factory vs Service Proxy
我的綁定是NetNamedPipeBinding。我打算使用雙面連接。
何時使用Channel Factory以及何時在WCF中使用Service Proxy?Channel Factory vs Service Proxy
我的綁定是NetNamedPipeBinding。我打算使用雙面連接。
渠道工廠和服務代理是獲取一個目標的相同功能 - 消耗您的服務。通常,如果您在客戶端和服務器上都控制服務契約接口,則最好使用ChannelFactory,因爲它更容易管理。如果您僅管理客戶端部分 - 代理服務器是一種可行的方法,因爲您無法控制服務器端所做的更改。除了代理給你一個很好的工具,爲您的服務生成異步方法:)
何時使用代理?
我們使用svcutil.exe創建代理。該工具的輸出提供了一個代理類,並對應用程序配置文件進行了相應的更改。如果你有一個你知道的服務將被多個應用程序使用,或者通用性足以在幾個地方使用,那麼你會想繼續使用生成的代理類。我們在WCF中使用代理以便能夠與客戶端共享服務合同和實體。代理有幾個限制,比如它們需要獲取和設置,構造函數不能被公開,服務合約以外的方法不能被暴露,重複代碼,每當我們添加/修改服務合同/數據合同/消息合同時,我們需要重新生成客戶端的代理。
何時使用的ChannelFactory
另一種選擇是使用的ChannelFactory類構建客戶端和服務之間的信道,而不需要一個代理的。在某些情況下,您可能擁有與客戶端應用程序緊密綁定的服務。在這種情況下,直接引用接口DLL並使用ChannelFactory來調用您的方法是有意義的。 ChannelFactory路由的一個顯着優點是,它使您可以訪問如果您使用svcutil.exe時無法訪問的方法。
何時使用ChannelFactory與Proxy類?
DLL是有益的,如果客戶端代碼是在你控制,你想不只是與客戶端的服務合同,以分享更多 - 比如與實體相關的一些實用方法,使客戶&服務代碼更緊密地綁定。如果你知道你的實體變化不大,客戶端代碼更少,那麼DLL會比代理更好。如果您的服務的客戶端在系統外部(如API),則使用代理服務器是有意義的,因爲它通過提供代碼文件而不是DLL來使共享合同變得更容易。
在NetNamedPipeBinding
的情況下,我們推薦使用的ChannelFactory以下兩個原因:
在雙面連接的情況下有什麼更好的選擇? – 2013-04-11 13:10:01
@ m.samy Duplex(和NetNamedPipeBinding)通常表示您管理客戶端和服務器。在你的情況下,我會選擇ChannelFactory。 – Alex 2013-04-11 13:25:08