2011-05-25 53 views
1

在過去的2年中,我一直在使用WCF在TCP/IP協議的通信層上開發c#3.5中的分佈式應用程序;到目前爲止,我一直使用集成的Add Service Reference ...來在客戶端生成服務代理,但我也知道使用通道工廠創建通信通道(從而訪問服務契約方法)是一種可行的方法。WCF自動生成的代理與自定義代理:要走哪條路,何時以及爲什麼?

的問題是非常簡單(請論點的答案):

  • 哪些利弊兩種方法的缺點&?
  • 在大多數情況下,「自動」生成方法應該是首選,如果是這樣,爲什麼?
  • 在什麼情況下(如果有的話)是「自定義」方法是否合理/需要?

(請告訴我,如果需要更多的情境來回答)

回答

1

對我來說,一個理由使用自定義代理是能夠使用相同的接口【類型】和域類型都在客戶端上和服務器。自動生成會創建相當多的類,這將不可避免地增加程序集的大小,因此如果您正在構建一個Silverlight應用程序,其中下載時間很關鍵,或者如果您有一個很大的內存限制,渠道工廠可能就是要走的路。

我也喜歡channel factory的DRY-ness,因爲我通常都有我的域對象,爲什麼要再次生成它們?特別是如果我有一堆buisness邏輯在他們。當然,這實際上只適用於wcf-to-wcf通信,如果你正在與其他服務通話,你想要生成域對象

(我也在這裏假設域類型和接口在自己的程序集中,與實際的後端持久代碼分開)