• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET服务器端多线程设计——异步Web Service

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在上一章介绍过异步IHttpHandler后,大家应该了解到异步操作带来的好处。它可以及时释放服务器线程池里面的线程,当完成外部操作再使用回调函数进行数据获取。

下面为大家介绍一下异步Web Service的操作,其实它与异步IHttpHandler的原理是十分相似的,记得在介绍IHttpHandler里面以Stream异步作为例子,下面以SqlCommand作为例子。(还说一句老话,我这里指的是服务器端的异步方式,而并非客户端异步调用)

[ISerializable]

public class User{....}

public class Service1:System.Web.Service.WebSerivce

{

      //系统会自动识别BeginMethod(参数,AsyncCallback,object),EndMethod(IAsyncResult)方法

      //并把它作为异步方法处理

      [WebMethod]
  public IAsyncResult BeginGetList(int age,  AsyncCallback cb, object o)

     {          

           SqlConnection conn = new SqlConnection("Data Source=...;...;Asynchronous Processing=true");

           string commandString="Select * From User as t1 Where t1.age>"+age.ToString();
           SqlCommand command = new SqlCommand(commandString, conn);
           conn.Open();
           return this.m_cmd.BeginExecuteRead(cb, command);

           //此时,服务器的线程会被释放,等待Command完成时Callback唤醒

      }

  [WebMethod]
  public List<User> EndGetList(IAsyncResult result)

      {

            Sqlcommand command=(SqlCommand) result.AsyncState;    

            SqlDataRead read=command.EndExecuteRead(result);

            ............  //数据转换

            return users;

      }

}

在客户端调用的时候,由于信息是通过SOAP方便传递,系统可以自动识别GetList(int age)方法。你也可以在客户端使用异步调用的方式,来调用WebService,这样可以使系统配合得更完美。

可惜的是,微软还没有一个完美的异步ADO.NET调用机制;而只是将 SQL 调用包装到异步委托调用中对提高效率没有什么帮助。

个人建议可以尝试使用 Microsoft SQL Server  Web Services Toolkit将您的数据库发布为 Web 服务。

 

总结:

ASP.NET Web 服务中提供了一个有效的机制,可以异步调用后端服务,使线程池中的宝贵线程及时得到释放。通过结合对后端资源的异步请求,服务器可以使用自己的 Web 方法使同时处理的请求数目达到最大。您应该考虑使用此方法开发高性能的 Web 服务应用程序。

 

ASP.NET服务器端多线程设计——异步Web服务

ASP.NET服务器端多线程设计——异步IHttpHandler

 

对 JAVA 开发有兴趣的朋友欢迎加入QQ群:174850571 共同探讨!
对 .NET  开发有兴趣的朋友欢迎加入QQ群:162338858 共同探讨 !


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.Net资料收集发布时间:2022-07-10
下一篇:
ASP.NET AJAX Sys未定义的解决方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap