2011-09-16 44 views
1

问: WCF异步服务调用和异步客户端调用之间的客户端有任何区别吗?WCF签约异步服务vs异步客户端

现在我有一份合同,看起来像这样

​​

我想将它重构到这样的事情(和叫它异步后来从一个WPF客户端)。

[ServiceContract] 
public interface IFoo 
{   
    [OperationContract] 
    FooResult GetFoo(); 

    ... 
} 

原因是我想简化客户端的服务合同。

回答

1

有本质上没有区别(如果它的正确写入 - 请注意下面的更正签名:在开始操作需要采取AsyncCallbackobject参数,并结束操作不能与[OperationContract]装饰)。如果你想自己处理线程,那么可以自由地声明它是一个同步操作;如果你想让WCF处理它,那么就使用异步模式。但是客户端发送给服务器的请求在两种情况下都是相同的。

[ServiceContract] 
public interface IFoo 
{   
    [OperationContract(AsyncPattern = true)] 
    IAsyncResult BeginGetFoo(AsyncCallback callback, object state); 
    FooResult EndGetFoo(IAsyncResult asyncResult); 

    ... 
} 
+0

感谢这有意义 – oleksii

+0

有没有类似的方式利用基于任务的异步执行,当有客户端一个“简单”的界面(即当操作声明返回类型为任务)。不同之处在于,我所看到的所有示例只有一个为操作声明的方法(而不是上面的2),而且一个方法的返回类型为任务 - 这似乎意味着客户端将要收到我想要避免的任务的结果。 –