C# WCF异步服务器端-正确的实现
我正在编写一些WCF服务,我希望以最有效的方式编写它们。这意味着服务器端和客户端都将公开异步操作 客户端 我知道,在客户端契约中,我可以通过添加Assync后缀来公开异步操作:C# WCF异步服务器端-正确的实现,c#,wcf,async-await,C#,Wcf,Async Await,我正在编写一些WCF服务,我希望以最有效的方式编写它们。这意味着服务器端和客户端都将公开异步操作 客户端 我知道,在客户端契约中,我可以通过添加Assync后缀来公开异步操作: [ServiceContract] public interface IService1 { [OperationContract] string GetData(int value); [OperationContract] Task<string> GetDataAsyn
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
Task<string> GetDataAsync(int value);
}
然而,这似乎很乏味
为什么使用IAssyncResult而不是基于任务的异步操作?在WCF中实现异步服务器端的正确方法是什么?如果您查看重点:
异步编程模型APM模式也称为IAsyncResult模式,其中异步操作需要Begin和End方法,例如,异步写入操作的BEGINWITE和ENDWITE。这种模式不再推荐用于新开发。有关详细信息,请参阅
对
基于任务的异步模式TAP,它使用单个方法表示异步操作的启动和完成。TAP是在.NET Framework 4中引入的,是.NET Framework中异步编程的推荐方法。C中的async和await关键字以及Visual Basic语言中的async和await运算符为TAP添加了语言支持。有关详细信息,请参阅
因此:
您正在阅读的这篇文章来自.NET4.0之前的时代,因此它相当古老。使用任务并忘记IAsyncResult的存在
[ServiceContract]
public interface IService1
{
[OperationContract]
Task<string> GetDataAsync(int value);
}
[OperationContractAttribute(AsyncPattern=true)]
IAsyncResult BeginServiceAsyncMethod(string msg, AsyncCallback callback, object asyncState);