您的位置:首页 > 其它

WCF 服务端的异步

2015-09-17 15:03 183 查看
WCF的异步可分为客户端和服务端这篇文章介绍服务端的异步实现

        自己碰到了这样的一个问题, 我们系统的服务端数据量特别大,程序执行时间长,导致客户端请求会中断链接,这样客户端就得不到回应,所以因这个问题对WCF的异步做了一些研究,但是发现它并不是解决这个问题的办法。下面我讲下服务端异步。

        服务端异步,WCF技术内幕这本书中就简单的几句话。操作中执行I/O的操作,这样可以用异步,因为这样可以带来更多的伸缩性。如果只单纯的执行计算任务,没必要使用异步,因为这会导致性能问题。

        在这里,我以个人的了解,解释下服务端异步的作用和使用的情况。异步操作是释放当前线程,让另一个线程去执行任务。对于服务端的程序而言,接收请求的线程有限,所以如果当前线程在执行任务,这样就没有办法去处理新的请求,而降低了请求的并发量。如果释放了这个线程,那它又可以去处理新进来的请求,从而提高请求的并发量。当然线程的切换会消耗时间和资源。所以一般在I/O请求等耗时的操作上使用服务端异步。

        至于服务端的异步实现方式,网上有很多,在这里我推荐几个网址给大家。

点击打开链接

点击打开链接

        经过我的测试,必须要根据约定定义方法,返回值必须为IAsyncResult的子类

public IAsyncResult BeginGetData(string fileName, AsyncCallback userCallback, object stateObject)
public string EndGetData(IAsyncResult ar)
        这样,WCF框架才能帮你调用BeginGetData,等执行完成后,再帮你调用EndGetData,返回值给客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: