目前开发的一个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来异步调用.
你这个设计有问题啊。
服务端怎么可以回调客户端呢?
服务端原则上是和客户端是两回事。
服务端不知道有没有客户端存在。不知道客户端的系统。不知道客户端的事情。你这个设计违反了规则。
服务端是被调用端,是接受调用的,返回数据用的。不是主动调用别人用的。