你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
为Windows应用创建简单的异步调用模式(1)
 
简介

  最近我编写了很多智能客户端应用,总结了一些能够使应用程序在后台调用Web Service时不冻结前台界面的异步调用方法。虽然当前.NET Framework本身已经提供了异步调用的机制,但我发现在Windows应用中这一机制比较难于把握,因为这时你需要正确的控制用户界面线程处理。

  在这篇文章中,我将教给您一种在Windows应用程序中实现异步调用Web服务的简单方法,通过这一方法,您不用再考虑后台线程与前台界面线程的交互关系了。

  服务代理

  Visual Studio® .NET会生成较好的Web服务代理类,通过它可以异步的使用Web服务,但是这个代理类实现的是.NET Framework本身的异步调用机制,如上所述,这一机制对于Windows应用来说并不十分方便。由于这个原因,我一般不直接使用生成的代理类,而是在中间增加服务代理类。

  服务代理类就是增加了额外功能的类,这些功能可以帮助客户端程序与Web服务进行交互。服务代理类实现了许多有用的功能,包括数据缓存,安全身份管理,离线操作支持等等。本文中创建的服务代理类比.NET Framework本身的普通代理类实现了更简便的异步调用模式。

  用户界面线程

  应用程序从一个创建和管理用户界面的线程起始,这一线程被称为用户界面线程。大多数开发者本能的会使用用户界面线程完成所有的工作,包括进行Web服务调用,远程对象调用,访问数据库等等,大多数使用和性能方面的问题是由这一不恰当的方法引起的。

  问题的本质是你永远不可能精确的预知访问Web服务,远程对象,或者数据库所需的时间。而且当你在用户界面线程中进行这类的调用时,用户界面就有可能会产生令人恼怒的冻结。

  自然而然的,你会把这一类的调用放置在一个单独的线程中,但我更进了一步,建议您把所有的非用户界面工作坊制在一个分离的线程中。我的观点是,用户界面线程只用来管理用户界面,而所有那些你不能保证良好响应时间的对象调用都应该是异步的,无论是进程内的,跨进程的,还是跨计算机的。

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089