如何:实现异步服务操作
在 Windows Communication Foundation (WCF) 应用程序中,服务操作可以按同步方式或异步方式实现,而无需指示客户端如何调用它。例如,异步服务操作可以同步调用,而同步服务操作可以异步调用。有关如何在客户端应用程序中异步调用操作的示例,请参见如何:以异步方式调用 WCF 服务操作。有关 同步操作和异步操作的更多信息,请参见设计服务协定和同步和异步操作。
按异步方式实现服务操作
在服务协定中,按照 .NET 异步设计准则声明一个异步方法对。Begin 方法采用一个参数、一个回调对象和一个状态对象作为参数,并且返回一个 System.IAsyncResult 和一个匹配的 End 方法,该方法采用一个 System.IAsyncResult 作为参数并将返回值返回。有关异步调用的更多信息,请参见Asynchronous Programming Design Patterns。
使用 System.ServiceModel.OperationContractAttribute 属性 (attribute) 标记该异步方法对的 Begin 方法,并将 System.ServiceModel.OperationContractAttribute.AsyncPattern 属性 (property) 设置为 true。例如,下面的代码执行步骤 1 和 2。
按照异步设计准则在服务类中实现 Begin/End 方法对。例如,下面的代码示例演示一个实现,在此实现中,异步服务操作的 Begin 和 End 部分都向控制台写入一个字符串,并且将 End 操作的返回值返回到客户端。有关完整的代码示例,请参见“示例”部分。
示例
下面的代码示例演示以下各项:
- 与下列各项之间的服务协定接口:
- 同步
SampleMethod
操作。 - 异步
BeginSampleMethod
操作。 - 异步
BeginServiceAsyncMethod
/EndServiceAsyncMethod
操作对。
- 同步
- 使用 System.IAsyncResult 对象的服务实现。