你可以使用Visual Studio 2005來導入服務元數據并且生成一個代理。假如服務是自宿主的,那么首先要啟動該服務,然后從客戶端工程的上下文菜單中選擇"Add Service Reference…"。假如服務宿主在IIS或WAS上,那么就不需要預啟動該服務了。
有趣的是,假如服務是自宿主在與客戶端工程同一個方案中的另一個工程中,那么你可以在Visual Studio 2005中啟動宿主并且仍然添加參考,因為不同于大多數工程設置,這個選項是無法禁止的(見圖6)。這會導致調出"Add Service Reference"對話框,你需要在其中提供服務的基地址(或一個基地址和一個MEX URI)以及包含代理的命名空間。
圖6.你可以使用Visual Studio 2005生成一個代理。
Visual Studio 2005使用SvcUtil.exe命令行工具,并且你可以自己使用它。主要理由是,你可以使用SvcUtil開關所提供的眾多的選項。為了直接使用SvcUtil,你可以提供給它MEX地址并且,作為選擇,還可以提供一個代理文件名。默認的代理文件名是實現該服務的服務端類的名字。例如,當把服務MyService宿主在IIS中時,簡單地運行下列命令行:
public class ClientBase<T> : IDisposable { protected ClientBase(string endpointConfigurationName); protected ClientBase(Binding binding,EndpointAddress remoteAddress); public void Close(); public void Dispose(); protected T InnerProxy{get;} //其它成員 } 這個InnerProxy屬性是客戶端需要消費的合同類型,并且SvcUtil生成的ClientBase<T>的子類簡單地把它代理到方法調用(見列表5)。客戶端需要實例化一個代理對象并且提供給其構造器端點信息-或者是來自配置文件的端點節名(見列表6)或者是在不使用一個配置文件時的端點地址和綁定對象。然后,該客戶端可以使用代理方法來調用該服務,并且客戶端完成后,它需要關閉該代理實例:
MyContractProxy proxy = new MyContractProxy("MyEndpoint"); proxy.MyMethod(); proxy.Close(); 關閉代理將終止與服務的會話并且關閉連接。作為選擇,你可以使用代理的Dispose()方法來關閉它。Dispose()方法的優點在于,你可以使用using語句來調用它,即使在面臨異常處理時:
using(MyContractProxy proxy = new MyContractProxy("MyEndpoint")) { proxy.MyMethod(); } 在客戶端配置文件中的每個合同類型的一個端點可以被指派為一個默認端點。默認端點是一個沒有名字標志或只有一個空名("")的端點節:
WCF的第一個發行版本為開發服務(例如宿主,服務實例治理,異步調用,可靠性,事務治理,非連接性隊列調用和安全性)提供了許多有用的工具。在WCF的第二個發行版本中將添加服務發現以及事件出版和訂閱。WCF要求.NET 2.0環境并將同Windows Vista一同發行。另外,你可以在Windows xp SP2和Windows Server 2003 SP1環境下使用它。