概述ASP.NET AJAX框架
创始人
2024-04-19 11:10:19
0

如何在客户端直接调用WebService中的方法?

1.Web.config中需要配置好运行ASP.NET AJAX框架相应的配置项,当然,建立一个ASP.NET AJAX Enabled Web Site项目时,Web.config已经配置好了。

2.想让某个WebService可以被JS调用,需要做一下几步:
◆在这个WebService文件里用“using System.Web.Script.Services;”引入这个命名空间。
◆在这个类的上面添加“[ScriptService]”属性。
◆在需要被调用的方法上添加“[WebMethod]”属性。

具体例子可以参考《ASP.NET AJAX客户端编程之旅(一)——Hello!ASP.NET AJAX》中的SayHelloService.cs的代码。

3.调用WebService的客户端页面也要做相应准备。首先就是页面中要有一个ScriptManager控件,然后需要在其中指明WebService文件的位置。如:

  1. <Services>  
  2. <asp:ServiceReference Path="~/SayHelloService.asmx" />  
  3. </Services> 

将这段代码放在和标签之间,就可以使得这个页面中的JS可以直接调用SayHelloService.asmx中的方法。

做好以上三项准备,这个页面中的JS代码就可以使用我们熟悉的“类名.方法名”的方法直接调用WebService中的方法了。

魔法背后的故事

我们知道,虽然我们一直说是“直接调用”,但这是指在语法层面上“直接调用”。而实际上,JavaScript代码是不可能真正直接调用后台程序的,这中间一定使用了XMLHttpRequest对象。那么,到底是谁给我们实施了“障眼法”?答案就在下面这张图上:

上图就是这个所谓“直接调用”真正的秘密。如图,现在假设有个WebService类,名为Class1,有两个方法:Method1和Method2。当这个WebService被我们用上面提到的方法处理过后,ASP.NET AJAX框架就会自动分析这个类,并且在客户端生成一个这个类的客户端代理(Proxy),这个代理类是一个JavaScript对象,其类名、方法名都和后台类一致。而当我们从客户端的JS脚本调用时,实际上调用的是这个代理类,而代理类则使用XMLHttpRequest对象,通过传统的Ajax方式,调用后台类。这样,我们就感觉好像在前台直接调用后台类似的。

可是……哪里似乎还是不一样……

通过上面的分析,我们知道,ASP.NET AJAX调用后台方法,说到底还是使用的XMLHttpRequest对象,这样传统Ajax的限制,就使得我们不可能真的像在后台调用方法一样方便。

例如,我们在后台都是用“变量=类名.方法名”或者“变量=对象名.方法名”的方式调用,这样变量就直接获取了这个方法的返回值,但是Ajax不行,它必须通过回调函数获取返回值,这一点也体现在了ASP.NET AJAX的使用方法上。看上一篇文章的例子就知道,即使使用了ASP.NET AJAX框架,仍然还是需要用回调函数的,只不过是语法上简化了。

【编辑推荐】

  1. 浅谈ASP.NET MVC框架
  2. 介绍ASP.NET MVC中的MvcAjaxPanel
  3. ASP.NET MVC框架拯救UpdatePanel
  4. 用ASP.NET MVC源代码寻找解决方案
  5. ASP.NET MVC框架的ActionInvoker

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...