我在IIS上部署了一個WCF。現在通過添加它的Web引用我在我的應用程序中使用它。消費WCF的不同方法
所以我有兩個問題:
- 它是消費WCF的最佳方法。
- 如果第一個問題的答案是肯定的,那麼svcutil.exc的作用是什麼,我的意思是創建wcf代理類有什麼用處。如果答案是「否」,那爲什麼?
我在IIS上部署了一個WCF。現在通過添加它的Web引用我在我的應用程序中使用它。消費WCF的不同方法
所以我有兩個問題:
對於WCF,您應該在Visual Studio中使用「添加服務參考」(在Visual Studio中不添加Web引用)。
這是最簡單的方法 - 因爲你可以直接在Visual Studio中做到這一點。它的功能基本上是svcutil.exe
(或者你可以自己手動執行),然後創建一個服務代理類用於客戶端。
svcutil.exe
的使用有很多摺疊 - 您可以從正在運行的服務(或來自現有的WSDL/XSD文件)創建客戶端代理類,您可以驗證服務,可以從服務中導出元數據以供客戶使用,還有更多的選擇。這是WCF工具的「瑞士軍刀」。
WCF使用一個概念,你的服務的所有調用都必須通過客戶端代理 - 這是地方整個WCF運行時的生活,並在所有的WCF擴展點的位置。此代理將您的調用轉換爲客戶端上的方法,並將其轉換爲序列化的消息,並通過網絡發送到服務器進行處理,同時還處理將客戶端上的類和對象回調的「解包」響應使用。
這是最簡單的解決方案,如果你使用Visual Studio開發,並獲得遠程WCF服務。
如果你使用的是其他IDE開發,則可能需要使用SvcUtil工具生成您的代理。
如果你喜歡有一個包含生成的客戶端簡單的CS文件,你也可以選擇使用SvcUtil工具生成它。
您也可以完全忽略SvcUtil工具和服務參考嚮導和使用的ChannelFactory類動態生成代理。
謝謝,使用Channel Factory類有什麼好處。動態生成代理是什麼意思? – 2010-09-20 08:48:45
添加服務引用是最快最簡單的方法,但並不總是最好的方法。如果你想要表演,那麼使用ChannelFactory<T>
是一種方法。您應該瞭解創建客戶端代理的不同方法以及您可以執行的自定義操作。
優秀的資源是WcfGuidanceForWpf。不要讓WPF嚇到你,因爲它對於一般的WCF來說確實是一個很好的指導。
感謝您的回答。好的我從你那裏瞭解到,消費wcf方法之間沒有顯着差異。我對嗎 ? – 2010-09-17 10:47:32
使用「添加服務引用」或使用「svcutil.exe」基本上給你同樣的結果,是的。使用最適合你的方式。 – 2010-09-17 12:44:38