ASP.NET服务器端多线程设计——异步Web Service
来源:互联网 发布:windows live mail 编辑:程序博客网 时间:2024/06/04 19:08
在上一章介绍过异步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,这样可以使系统配合得更完美。
使用服务器端异步Web服务的目的是提高服务器效率,使服务器的线程池压力得到缓解。可惜的是,微软还没有一个完美的异步ADO.NET调用机制;而只是将 SQL 调用包装到异步委托调用中对提高效率没有什么帮助。
个人建议可以尝试使用 Microsoft SQL Server Web Services Toolkit将您的数据库发布为 Web 服务。
总结:
ASP.NET Web 服务中提供了一个有效的机制,可以异步调用后端服务,使线程池中的宝贵线程及时得到释放。通过结合对后端资源的异步请求,服务器可以使用自己的 Web 方法使同时处理的请求数目达到最大。您应该考虑使用此方法开发高性能的 Web 服务应用程序。
ASP.NET服务器端多线程设计——异步Web服务
ASP.NET服务器端多线程设计——异步IHttpHandler
- ASP.NET服务器端多线程设计——异步Web Service
- ASP.NET服务器端多线程设计——异步IHttpHandler
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(7):服务器端和客户端数据类型的自动转换:泛型集合类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- ASP.NET Web Service
- ASP.NET Web Service
- ASP.NET Web Service
- asp.net(Web Service)
- asp.net 创建 xml web service 设计指南
- MattPowell介绍了如何在服务器端使用异步Web方法,来创建高性能的 Microsoft ASP.NET Web 服务
- ASP.NET 常用WEB SERVICE
- asp.net web service实例
- ASP.NET Ajax Web Service
- 冒泡排序——C++
- 第二十五章 离线并发与锁机制
- 分析国内IT各领域软件企业的挣钱实力
- Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection. [SQLSTATE 28000] (Error 18452). The st
- 以Mime方式列印Excel
- ASP.NET服务器端多线程设计——异步Web Service
- 移动通信的频段、频率与频点
- Android Dialog用法
- 自旋锁及其衍生的锁,值得看看
- C#发邮件
- C# D3D中2D的使用,做小游戏。。。。半年前写的东西了,拿出来分享,现在看来代码写的乱七八糟的,将就一下吧。。。
- 更新-清理sga组件
- 人生与电路设计 相同之处
- 数字地和模拟地的区别