首页 新闻 会员 周边 捐助

WCF的回调能够异步调用么?

0
悬赏园豆:10 [已解决问题] 解决于 2010-11-16 14:42

目前开发的一个WCF服务端,里面有回调客户端的功能,但是如果客户端卡住的话,就会连服务端一起卡在那里,想问问大家,服务端可以异步回调客户端的方法么?

问题补充: 可以,和服务端异步契约定义是一样的,如下: public interface IMarketFeedServiceCallback { [OperationContract(Action = "Notify", IsOneWay = true)] void Notify(StockQuote stockQuote); [OperationContract(Action = "Notify", AsyncPattern = true, IsOneWay = true)] IAsyncResult BeginNotify(StockQuote stockQuote, AsyncCallback callback, object state); void EndNotify(IAsyncResult ar); } 回调的时候,你就可以使用 BeginNotify来异步调用. 那如果是这样子,客户端的回调契约不是暴露了BeginNotify接口,那客户端需要实现BeginNotify接口吗?
garry的主页 garry | 菜鸟二级 | 园豆:495
提问于:2010-10-20 11:36
< >
分享
最佳答案
0

可以,和服务端异步契约定义是一样的,如下:

    public interface IMarketFeedServiceCallback
    {
        [OperationContract(Action = "Notify", IsOneWay = true)]
        void Notify(StockQuote stockQuote);

        [OperationContract(Action = "Notify", AsyncPattern = true, IsOneWay = true)]
        IAsyncResult BeginNotify(StockQuote stockQuote, AsyncCallback callback, object state);
        void EndNotify(IAsyncResult ar);
    }

回调的时候,你就可以使用 BeginNotify来异步调用.

收获园豆:10
Launcher | 高人七级 |园豆:45050 | 2010-10-20 15:30
那如果是这样子,客户端的回调契约不是暴露了BeginNotify接口,那客户端需要实现BeginNotify接口吗?
garry | 园豆:495 (菜鸟二级) | 2010-11-16 14:37
其他回答(2)
0

可以,参考这里:

WCF中的异步调用

HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-10-20 12:31
^_^这个是由客户端发起的异步调用,我想实现的是服务端的!
支持(0) 反对(0) garry | 园豆:495 (菜鸟二级) | 2010-11-16 14:41
0

你这个设计有问题啊。

服务端怎么可以回调客户端呢?

服务端原则上是和客户端是两回事。

服务端不知道有没有客户端存在。不知道客户端的系统。不知道客户端的事情。你这个设计违反了规则。

服务端是被调用端,是接受调用的,返回数据用的。不是主动调用别人用的。

Virus-BeautyCode | 园豆:1619 (小虾三级) | 2010-10-20 13:13
WCF设计里面的双向调用很常见的,TCP SOCKET服务端也可以向客户端推送数据的.
支持(0) 反对(0) garry | 园豆:495 (菜鸟二级) | 2010-11-16 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册