WCF客戶端編程經(jīng)驗分享
WCF開發(fā)框架在開發(fā)人員眼中是一個非常有用的工具。在這里我們將會了解到WCF客戶端編程的一些相關(guān)技巧,希望對大家有所幫助。#t#
客戶端編程是很重要的部分,WCF經(jīng)過長時間的發(fā)展,很多用戶都很了解WCF了,這里我發(fā)表一下個人理解,和大家討論討論。為了調(diào)用服務(wù)上的操作,WCF客戶端首先需要把服務(wù)合同導(dǎo)入到客戶端的本地描述中。
這意味著,該服務(wù)需要客戶端暴露一個標(biāo)準(zhǔn)方法以檢索它的元數(shù)據(jù)-這是通過讓服務(wù)暴露一個元數(shù)據(jù)交換(MEX)端點來實現(xiàn)的。只要服務(wù)在宿主上注冊至少一個TCP、HTTP或IPC基地址,那么,這個基于WCF的服務(wù)就能夠自動地暴露一個MEX端點。
如果使用WCF客戶端編程,那么調(diào)用操作的普通方法是使用一個代理。這個代理是一個CLR類,它暴露單個描述服務(wù)合同的CLR接口。注意,如果該服務(wù)支持若干合同,那么WCF客戶端需要對于每一種合同類型都創(chuàng)建一個相應(yīng)代理。
代理負責(zé)提供與服務(wù)的合同相同的操作,而且還提供其它方法來管理代理的生命周期和到服務(wù)的連接。該代理完整地封裝該服務(wù)的每一個方面:服務(wù)的位置,服務(wù)的實現(xiàn)技術(shù)及其運行時刻平臺和通訊傳輸。
你可以使用Visual Studio 2005來導(dǎo)入服務(wù)元數(shù)據(jù)并且生成一個代理。如果服務(wù)是自宿主的,那么首先要啟動該服務(wù),然后從WCF客戶端編程的上下文菜單中選擇"Add Service Reference…"。如果服務(wù)宿主在IIS或WAS上,那么就不需要預(yù)啟動該服務(wù)了。
有趣的是,如果服務(wù)是自宿主在與客戶端工程同一個方案中的另一個工程中,那么你可以在Visual Studio 2005中啟動宿主并且仍然添加參考,因為不同于大多數(shù)工程設(shè)置,這個選項是無法禁止的。這會導(dǎo)致調(diào)出"Add Service Reference"對話框,你需要在其中提供服務(wù)的基地址(或一個基地址和一個MEX URI)以及包含代理的命名空間。
Visual Studio 2005使用SvcUtil.exe命令行工具,并且你可以自己使用WCF客戶端編程。主要理由是,你可以使用SvcUtil開關(guān)所提供的眾多的選項。為了直接使用 SvcUtil,你可以提供給它MEX地址并且,作為選擇,還可以提供一個代理文件名。默認的代理文件名是實現(xiàn)該服務(wù)的服務(wù)端類的名字。例如,當(dāng)把服務(wù)MyService宿主在IIS中時,簡單地運行下列命令行:
vcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs