2013-10-18 133 views
0

當您向項目添加WCF服務引用在Visual Studio中,指定url http://domain/MyService.svchttp://url/MyService.svc?wsdl之間是否有區別?在目標服務是https還是目標服務需要身份驗證的情況下,有什麼特別的區別嗎?WCF服務參考和使用「?wsdl」

在「添加服務引用」窗口中,如果單擊「高級...」按鈕,它將落在「引用服務」窗口中,在後者中,我們找到複選框「引用程序集中的重用類型」。我想知道這個複選框的含義。 根據我的測試,當選中此複選框時,對於服務使用的每個DataContract,Visual Studio將在項目引用的程序集中搜索相應的DataContract類,如果它找到一個對應的類,那麼它將使用它創建一個新的DataContract類。如果未選中複選框,Visual Studio將爲該服務使用的每個DataContract創建一個新類。所有情況下都會創建ServiceContract接口和代理類(複選框是否被選中)。這是真的嗎?

回答

0

要回答的問題:

是否有指定的URL http://domain/MyService.svchttp://url/MyService.svc?wsdl

沒有任何區別 - 如果你不指定?wsdl URL,嚮導將獲取WSDL通過在URL上附加?wsdl來檢索wsdl。

「在引用程序集中重用類型」。我想知道這個複選框

的意義。如果你能夠訪問包含在服務(如DataContracts)使用的類的組件,並從客戶端引用它們,那麼此複選框可以讓你重用這些類型而不在客戶端上創建新的代理類型。

如果你真的不想在客戶端上創建代理服務接口和數據傳輸類,那麼看看ChannelFactory。這樣你根本不需要添加服務引用(但你需要服務的ServiceContract接口和數據傳輸組件)

+0

等一下,你的意思是如果複選框被選中並且我的項目引用了ServiceContract接口,該接口不會被創建?那麼代理類(從System.ServiceModel.ClientBase繼承的類)呢? – DadyFuji

+0

不,我的意思是如果你添加一個直接引用到你的客戶端項目中包含'Service Contract'接口和'DataContract'類的程序集,你可以完全避免使用'Add Service Reference'步驟(並且避免將來必須更新服務參考等)。你仍然需要調整客戶端的'*。config'文件(或以編程方式進行) – StuartLC