0
有沒有辦法在不添加服務引用的情況下爲同步WCF服務創建異步客戶端?這是針對.NET 4客戶端的。如何爲同步服務實現異步wcf客戶端
有沒有辦法在不添加服務引用的情況下爲同步WCF服務創建異步客戶端?這是針對.NET 4客戶端的。如何爲同步服務實現異步wcf客戶端
Visual Studio中的服務引用只不過是一個代碼生成器,它創建一個具有調用Web服務所需的相應數據元素的代理類。當然,如果你真的想去完成乏味和無聊的工作,你可以親手構建一個代理。
也許首先使用.net反射器反編譯System.ServiceModel.ClientBase?
請在的ChannelFactory一些研究:http://msdn.microsoft.com/en-us/library/system.servicemodel.channelfactory.aspx
即使通過包裝一個的ChannelFactory實現我自己的客戶端時,我仍在使用在另一個項目中添加服務引用創建類定義,並將其移動到真實的項目。這是一個很好的妥協。
這裏有一個簡單的異步服務接口:
[ServiceContract(Name = "IService")]
public interface IServiceAsync
{
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginGetStuff(string someData, AsyncCallback callback, object state);
IEnumerable<Stuff> EndGetStuff(IAsyncResult result);
}
的.NET合同可能是這樣的:
[ServiceContract]
public interface IService
{
[OperationContract]
IEnumerable<Stuff> GetStuff(string someData);
}
然後在代碼中,假設你使用HTTP,沒有安全和二進制消息編碼,像這樣(對不起,我沒有編譯任何這個,只是使用我爲項目編寫的一些代碼鍵入它):