异步调用WebSerice 的几种方法
2008-01-14 14:06
295 查看
通常的WEB服务中对WEB方法的调用都是在客户端发出请求后将一直等待,直到得到返回的结果为止,这样如果某些WEB方法的处理需要很长一段时间才能处理完成的话,将会大大降低程序的效率。但是如果采用异步调用的方式将能使这个问题得到有效的解决,让客户端在发出请求之后的等待时间里去做其他的事情而不是一直在那里呆呆在等待。
对异步调用的理解:
说白了异步调用其实就是调用者线程和执行被调用过程的线程并行执行。
实现WEB服务方法异步调用有四种方法可以实现
使用回调
使用这种方式来进行WEB服务方法的异步调用关键是在启动异步调用时传入一个代理实例作为调用结束时的回调方法。这样用以回调的方法调用结束异步调用的方法获得异步调用的结果。若调用方要跟异步调用同步,则需要在启动异步调用时传入一个同步对象[作为最后一个参数],然后在回调方法中通过IAsyncResult的AsyncState成员获得该对象。
第一个例子:
假如有下面一个WEB服务方法
复制 保存[WebMethod]
public string GetName(string name)
class Client
第二种方法使用轮询
轮询就是不断检查异步调用启动后获得的IasyncResult变量的IsCompleted属性,以等待异步调用结束。而一般在判断异步调用还未结束时,调用Thread类的静态方法Sleep(0)迫使当前线程由运行状态转入就绪状态。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
第三种方法是:开始调用,结束调用
这种方式在启动异步调用后用结束异步调用的方式获取结果,如果异步调用没有结束,当前线成被阻塞。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
最后一种方法是:开始调用,等待处理,结束调用
在我们启动异步调用后,客户获得了返回的IasyncResult成员,调用线成在IasyncResult 的AsyncWaitHandle属性表示的同步对象上等待,最后结束异步调用以获得结果。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
ps: 在产生的代理类中系统已经自动为我们创建了异步调用接口,不需要我们去再次实现。如Begin***,End***等。如上面的WEB方法GetName在代理类中的异步接口应该是下面这样:
复制 保存public System.IasyncResult BeginGetName(string name,System.AsycnCallback callback,object asyncState)
public string EndGetName(System.IasyncResult reult)
对于其他的函数可以查阅MSDN
原文出处:http://www.chenjiliang.com/Article/View.aspx?ArticleID=1988&TypeID=98
对异步调用的理解:
说白了异步调用其实就是调用者线程和执行被调用过程的线程并行执行。
实现WEB服务方法异步调用有四种方法可以实现
使用回调
使用这种方式来进行WEB服务方法的异步调用关键是在启动异步调用时传入一个代理实例作为调用结束时的回调方法。这样用以回调的方法调用结束异步调用的方法获得异步调用的结果。若调用方要跟异步调用同步,则需要在启动异步调用时传入一个同步对象[作为最后一个参数],然后在回调方法中通过IAsyncResult的AsyncState成员获得该对象。
第一个例子:
假如有下面一个WEB服务方法
复制 保存[WebMethod]
public string GetName(string name)
class Client
第二种方法使用轮询
轮询就是不断检查异步调用启动后获得的IasyncResult变量的IsCompleted属性,以等待异步调用结束。而一般在判断异步调用还未结束时,调用Thread类的静态方法Sleep(0)迫使当前线程由运行状态转入就绪状态。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
第三种方法是:开始调用,结束调用
这种方式在启动异步调用后用结束异步调用的方式获取结果,如果异步调用没有结束,当前线成被阻塞。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
最后一种方法是:开始调用,等待处理,结束调用
在我们启动异步调用后,客户获得了返回的IasyncResult成员,调用线成在IasyncResult 的AsyncWaitHandle属性表示的同步对象上等待,最后结束异步调用以获得结果。
如:
WEB服务方法还是以上面的例子为例:
客户端实现:
复制 保存class Client
ps: 在产生的代理类中系统已经自动为我们创建了异步调用接口,不需要我们去再次实现。如Begin***,End***等。如上面的WEB方法GetName在代理类中的异步接口应该是下面这样:
复制 保存public System.IasyncResult BeginGetName(string name,System.AsycnCallback callback,object asyncState)
public string EndGetName(System.IasyncResult reult)
对于其他的函数可以查阅MSDN
原文出处:http://www.chenjiliang.com/Article/View.aspx?ArticleID=1988&TypeID=98
相关文章推荐
- 开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
- NET应用程序中异步调用Web Service的几种方法
- Webservic -客户端异步调用Webservic 与Webservic服务器异步Web方法
- 开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
- android webView调用js函数的几种方法
- NET应用程序中异步调用Web Service的几种方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- net ajax 异步调用的几种实现方法(jquery)
- 有关AJAX异步调用web服务中带参数的方法的心得
- (.net)C#动态调用Web服务的几种方法
- NET应用程序中异步调用Web Service的几种方法
- WebView与Java的交互,WebView调用Java方法的几种方式
- 关于AJAX应用于web网页,如何弹出对话框的几种常用方法【用的时候直接调用即可】
- .net ajax 异步调用的几种实现方法(jquery)
- NET应用程序中异步调用Web Service的几种方法
- Ajax异步调用的几种方法
- .net ajax 异步调用的几种实现方法(jquery)
- 异步调用js的几种方法
- NET应用程序中异步调用Web Service的几种方法 作者:veryhappy(wx.net),http://blog.csdn.net/veryhappy,转载请注明
- android webView调用js函数的几种方法