2011-12-31 30 views
1

在使用MSMQ傳輸的WCF服務的大多數示例中,始終傾向於在Visual Studio命令提示符下使用svcutil手動創建代理,而不是簡單地添加Service Reference。當你可以通過在Visual Studio的「添加服務引用」對話框中提供它的端點地址來引用服務時,爲什麼你想用VS命令提示符創建一個代理(因爲它稍微費力)?我只是碰到這個在閱讀WCF 4 Step by Step手動創建客戶端代理和引用MSMQ WCF服務之間的區別?

請注意,你不能輕易使用 Visual Studio中的添加服務引用嚮導添加一個引用到使用MSMQ 運輸WCF服務。

爲什麼它很難?前一種WCF服務轉換方法的好處(如果有的話)究竟是什麼?在我看來,手動創建代理只是不必要地使任務複雜化。

+0

我不知道會有什麼區別,除非在msmq上有mex問題。 – 2011-12-31 20:02:33

回答

1

只要您有定義服務接口,操作和數據協定的程序集引用,就不需要預先生成代理。然後您可以使用ChannelFactory即時創建代理。

var factory = new ChannelFactory<IMyServiceInterface>("MyServiceNameInAppConfig"); 
var proxy = factory.CreateChannel(); 

這比使用svcutil簡單得多。但是,如果服務是遠程的並且您無法訪問類型程序集,那麼除了生成代理外,別無選擇。

關於你爲什麼更容易使用svcutil而不是VS來生成代理代碼,而沒有看到實際的書很難評論,但在Visual Studio中使用svcutil無論如何生成的代碼,所以我看不出有什麼更好或更糟。當你手動執行這個操作時,你可以更好地控制我猜測得到的結果。

相關問題