WebService如何异步返回?
我现在有这样一个架构,一个异步的IOCP Server(C++)作为服务器,然后一个WebService(C#),在Web客户端调用WebService提供的接口后,需要通过Socket接口从IOCPServer读取数据然后返回给Web客户端,问题是IOCP Server是异步的,那么WebService能不能做到在收到IOCP Server的返回后在将收到的数据发送给Web客户端呢?如果可以如何实现?不太明白WebService和Web编程请各位大侠指教???
[解决办法]
参考
messageWebServers.findMessageInfoCompleted += new findMessageInfoCompletedEventHandler(messageWS_findMessageCompleted); messageWS.findMessageAsync(query, currPage, pageSize); void messageWebServers_findMessageInfoCompleted(object sender, findMessageCompletedEventArgs e) { if (e.Error == null) { if (e.Result != null) { if (e.Result.data != null) {}}}
[解决办法]
webservice从iocpserver获取数据时,可以使用AutoResetEvent.WaitOne进行阻塞,当socket接收到数据后,执行AutoResetEvent.Set,然后返回结果。
或者webservice从iocpserver接收数据时,不采用异步接收,顺序执行connect、send、receive,直到返回socket接收的数据后返回结果。
也可以为web客户端编写插件或者使用silverlight直接与iocpserver通信,越过webservice。