服务器_服务器端异步 Web 方法,何时采用异步 Web 方法 在确
localhost.UserInfoQuery proxy
cb,
何时采用异步 Web 方法
public int EndGetAge(IAsyncResult res)
现在,许多 Web 服务都访问后端的多个资源并为前端的 Web 服务聚合信息。尽管调用多个后端资源会增加异步 Web 方法模型的复杂性,但最终还是能够显着提高效率。
{
proxy);
// 调用异步 Web 服务调用。
// 在此对 Web 服务的结果进行其他
}
假设您的 Web 方法调用两个后端 Web 服务:服务 A 和服务 B。从您的 BeginXXX 函数,您可以异步调用服务 A 和服务 B。您应该向每个异步调用传递自己的回调函数。在从服务 A 和服务 B 接收到结果后,为触发 Web 方法的完成,您提供的回调函数将验证所有的请求都已完成,在返回的数据上进行所有的处理,然后调用传递到 BeginXXX 函数的回调函数。这将触发对 EndXXX 函数的调用,此函数的返回将导致异步 Web 方法的完成。
[WebMethod]
return proxy.BeginGetUserInfo("用户名",
[WebMethod]
{
return age;
对于前面提到的大多数异步操作,使用异步 Web 方法包装后端异步调用很有意义,可以使 Web 服务代码更有效。但使用委托进行异步方法调用时除外。委托会导致异步方法调用占用进程线程池中的某个线程。不幸的是,ASMX 处理程序为进入的请求提供服务时同样要使用这些线程。所以与对硬件或网络资源执行真正 I/O 操作的调用不同,使用委托的异步方法调用在执行时仍将占用其中一个进程线程。您也可以占用原来的线程,同步运行您的 Web 方法。
public class GetMyInfo : System.Web.Services.WebService
通过 Web 服务调用访问 SQL 时,需要注意众多的后端资源。如果您使用了 TCP 套接字与 Unix 计算机通信,或者通过专用的数据库驱动程序访问其他一些可用的 SQL 平台,甚至具有使用 DCOM 访问的资源,您都可以考虑使用众多的 Web 服务工具包将这些资源发布为 Web 服务。
在确定是否适合在您的应用程序中采用异步 Web 方法时,有几个问题需要考虑。首先,调用的 BeginXXX 函数必须返回一个 IAsyncResult 接口。IAsyncResult 是从多个异步 I/O 操作返回的,这些操作包括访问数据流、进行 Microsoft® Windows® 套接字调用、执行文件 I/O、与其他硬件设备交互、调用异步方法,当然也包括调用其他 Web 服务。您可以从这些异步操作中得到 IAsyncResult,以便从 BeginXXX 函数返回它。您也可以创建自己的类以实现 IAsyncResult 接口,但随后可能需要以某种方式包装前面提到的某个 I/O 操作。
public IAsyncResult BeginGetAge(AsyncCallback cb, Object state)
发生在 Web 方法中的最常见的 I/O 操作类型之一是对 SQL 数据库的调用。不幸的是,目前 Microsoft® ADO.NET 尚未定义一个完好的异步调用机制;而只是将 SQL 调用包装到异步委托调用中对提高效率没有什么帮助。虽然有时可以选择缓存结果,但是也应当考虑使用 Microsoft SQL Server 2000 Web Services Toolkit(英文)将您的数据库发布为 Web 服务。这样您就可以利用 .NET Framework 中的支持,异步调用 Web 服务以查询或更新数据库。
= (localhost.UserInfoQuery)res.AsyncState;
[WebService]
使用这种方法的优点之一是您可以利用客户端 Web 服务结构的优势,例如使用 .NET Framework 的异步 Web 服务调用。这样您将免费获得异步调用能力,而您的客户端访问机制会与异步 Web 方法高效率地配合工作。
int age = proxy.EndGetUserInfo(res).age;
// 处理。
本文作者:下面的示例显示了一个调用后端 Web 服务的异步 Web 方法。它已经使用 WebMethod 属性标识了 BeginGetAge 和 EndGetAge 方法,以便异步运行。此异步 Web 方法的代码调用名为 UserInfoQuery 的后端 Web 方法,以获得它需要返回的信息。对 UserInfoQuery 的调用被异步执行,并被传递到 AsyncCallback 函数,后者被传递到 BeginGetAge 方法。这将导致当后端请求完成时,调用内部回调函数。然后,回调函数将调用 EndGetAge 方法以完成请求。此示例中的代码比前面示例中的代码简单得多,并且还具有另外一个优点,即没有在与为中间层 Web 方法请求提供服务的相同线程池中启动后端处理。
使用异步 Web 方法聚合数据
小结
}
}
localhost.UserInfoQuery proxy
异步 Web 方法在 ASP.NET Web 服务中提供了一个有效的机制,可以调用后端服务,而不会导致占用却不利用进程线程池中的宝贵线程。通过结合对后端资源的异步请求,服务器可以使用自己的 Web 方法使同时处理的请求数目达到最大。您应该考虑使用此方法开发高性能的 Web 服务应用程序。
= new localhost.UserInfoQuery();
{
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/yun/5861.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
租用云服务器后的备案问
时间:2021-01-05
-
百度云服务器bcc有什么优
时间:2021-01-05
-
什么是云服务器cvm?怎么
时间:2021-01-05
-
云服务器怎么保证信息安
时间:2021-01-05
-
云服务器怎么预防被攻击
时间:2021-01-05
-
阿里云ECS实例设置用户r
时间:2020-12-29
-
阿里云ECS服务器入门使用
时间:2020-12-29
-
怎么配置云服务器
时间:2020-12-28
热门文章
-
租用云服务器后的备案问题你真的了解吗
时间:2021-01-05
-
选择美国云服务器需要关注什么?
时间:2020-12-27
-
阿里云服务器怎么买?阿里云服务器购买
时间:2020-12-25
-
运维必须知道的关于云服务器的十个问题
时间:2020-12-24
-
如何快速搭建一个阿里云服务器
时间:2020-12-24
-
什么是云?什么是云服务?什么是云主机
时间:2020-12-25
-
云服务器网站承载量一般有多大?一个云
时间:2020-12-28
-
浅谈云服务器和独立服务器的八大差异
时间:2020-12-24
-
SugarHosts云服务器如何开启访问端口和使用
时间:2020-12-24
-
云服务器是什么,云主机干什么用的?
时间:2020-12-28
