OperationContractAttribute.AsyncPattern 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指示操作是使用服务协定中的 Begin
<methodName> 和 End
<methodName> 方法对异步实现的。
public:
property bool AsyncPattern { bool get(); void set(bool value); };
public bool AsyncPattern { get; set; }
member this.AsyncPattern : bool with get, set
Public Property AsyncPattern As Boolean
属性值
true
Begin
<如果 methodNamemethod 与 End
<methodName>> 方法匹配,并且可由基础结构视为在服务接口上实现为异步方法对的操作,则为 ;否则为 false
。 默认值为 false
。
示例
下面的代码示例演示服务协定的客户端信道,该协定包含 Add
的同步版本和异步版本。 如果客户端使用协定接口,则 BeginAdd
和 Add
操作都会调用服务器上可能同步也可能不同步的方法。 如果该协定用于实现服务,则默认将传入请求调度至同步方法。
[ServiceContract]
public interface IAddTwoNumbers
{
// If the asynchronous method pair
// appears on the client channel, the client can call
// them asynchronously to prevent blocking.
[OperationContract (AsyncPattern=true)]
IAsyncResult BeginAdd(int a, int b, AsyncCallback cb, AsyncState s);
[OperationContract]
int EndAdd(IAsyncResult r);
// This is a synchronous version of the BeginAdd/EndAdd pair.
// It appears in the client channel code by default.
[OperationContract]
int Add(int a, int b);
}
注解
使用 AsyncPattern 属性生成可在服务器和/或客户端异步调用的服务操作。 AsyncPattern 属性通知运行库 Begin
方法有一个符合 .NET Framework 异步方法设计模式的匹配的 End
方法。 生成用以实现服务操作的服务器异步方法可增强服务器的可伸缩性和性能,而不会影响服务的客户端。如果服务操作在执行完可异步执行的较长操作后,必须将某些内容返回至客户端,建议使用此方法。
这不会影响客户端,因为服务器上的异步方法对是实现详细信息,该信息不会影响操作的基础 Web 服务描述语言 (WSDL) 描述。 此类方法将客户端显示为单个操作,其中包含 <input>
相关消息和关联 <output>
消息。 WCF 会自动将入站消息路由到 Begin
<methodName> 该方法,并将调用结果 End
<methodName> 路由到出站消息。 因此,客户端信道可将方法对表示为单个同步操作或一个异步操作对。 客户端表示形式在任何情况下都不会以任何方式影响服务器上的异步实现。
客户端协定可使用 AsyncPattern 属性指示异步方法对,即客户端可使用该方法对异步调用操作。 通常,客户端应用程序使用 ServiceModel 元数据实用工具 (Svcutil.exe) 工具和 /async
选项生成 Begin
<methodName> 客户端可用于异步调用操作的和 End
<methodName> 方法对。
备注
如果服务操作具有异步和同步两个版本,则服务上的默认行为是调用同步版本。