打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WCF与AJAX编程开发实践(2):支持ASP.NET AJAX的Web Service
userphoto

2013.08.29

关注

 WCF与AJAX编程开发实践(1):AJAX基础概念和纯AJAX示例.已经完成了很久,中间忙其他的时候,就搁置的这个系列的文章,现在打算把这个系列完成,接着《WCF与AJAX编程开发实践》(2):支持ASP.NET AJAX的Web Service 。

     上一节我们学习了AJAX的基本概念和原理。这次我们重点学习如何使用ASP.NET AJAX访问Web Service。全文会涉及一下几个主题:【1】ASP.NET AJAX框架【2】ASP.NET Web Service【3】示例代码分析【4】总结。

     全文会介绍ASP.NET AJAX框架涉及的主要类库,以及主要对象封装。Web Service在支持客户端脚本的一些机制。最后会给出一个简单的示例代码。

    我们知道,在借助 ASP.NET AJAX 功能,可以使用客户端脚本来调用 ASP.NET Web 服务 (.asmx) 和 Windows Communication Foundation (WCF) 服务 (.svc)。借助ASP.NET AJAX 框架我们可以轻松访问Web服务,更加方便快捷地开发出完美AJAX应用。节省我们不少开发时间。

【1】ASP.NET AJAX框架:

【1.1】ASP.NET AJAX基本概念:

       简单理解,ASP.NET AJAX是微软为支持AJAX在.NET平台的实现的一个框架,包括服务端和客户端脚本两个部分。

       Microsoft Ajax 用于创建完全基于客户端的 Ajax 应用程序。还可以使用 Microsoft Ajax 功能来增强基于服务器的 ASP.NET Web 窗体和 MVC 应用程序,做法是使用 Microsoft Ajax Library 和支持 Microsoft Ajax 的服务器端 ASP.NET 控件(如 UpdatePanel 控件)。

Microsoft Ajax Library 是用于生成客户端 Web 应用程序的 JavaScript 框架。Microsoft Ajax Library 的最新版本独立于 ASP.NET Framework 和 Visual Studio 发行。可以通过访问 Microsoft Ajax 网站来下载 Microsoft Ajax Library 的最新版本。

      在支持 AJAX 的网页中,浏览器向服务器发出对页面的初始请求,然后向 Web 服务发出对数据的后续异步请求。客户端通信元素采用代理类(从服务器下载)和核心客户端脚本库的形式。服务器通信元素是处理程序和自定义服务。下图显示了客户端与服务器之间的通信中涉及的元素。

 

AJAX 客户端的客户端-服务器通信

【1.2】ASP.NET AJAX类库:
      Microsoft AJAX Library 中包括两个主要的文件:MicrosoftAjax.js 和 MicrosoftAjaxWebForms.js。MicrosoftAjax.js 定义 Microsoft AJAX Library 支持的语言扩展,包括命名空间、接口、枚举和继承。MicrosoftAjaxWebForms.js 则定义部分呈现引擎和整个网络堆栈。

【1.3】XMLHttpRequest封装:

         Microsoft AJAX Library里封装的XMLHttpRequest对象,这里有一个类型我们可以看下:Sys.Net.XMLHttpExecutor。

它的作用是什么呢?就是XmlHttpExecutor 类充当默认执行器,而且是 WebRequestExecutor 抽象类的实现。

由于已设置了默认执行器,因此不必创建该类的实例并将其与 Web 请求进行关联。但是,如果定义自定义执行器,则必须创建该执行器的实例,并将其设置为 Web 请求的默认执行器。在完成网络调用后,XmlHttpExecutor 对象应仅用于获取响应数据,在此之后应丢弃该对象。

        本质上,和服务器的交互过程还是由XMLHttpRequest对象来完成,XmlHttpExecutor 只是做了一次封装,内部还是要调用XMLHttpRequest对象进行异步的请求。

【1.4】ScriptManager:

      提到ASP.NET AJAX,就不能不提这个服务器控件,它的作用非常重要。在 ASP.NET AJAX 应用程序中,无需直接引用或嵌入这两个文件中的任何一个。这是 ScriptManager 控件为您完成。

     ScriptManager 控件是 ASP.NET 中 AJAX 功能的中心。该控件可管理一个页面上的所有 ASP.NET AJAX 资源。其中包括将 Microsoft AJAX Library 脚本下载到浏览器和协调通过使用 UpdatePanel 控件启用的部分页面更新。(更多内容大家可以自己阅读http://msdn.microsoft.com/zh-cn/library/system.web.ui.scriptmanager.aspx页面的介绍)

【2】ASP.NET Web Service :

       为了方便大家的学习,这里来简单介绍一下ASP.NET Web Service

【2.1】ASP.NET Web 服务基本概念:

         Web 服务是 Web 服务器上的一些组件,客户端应用程序可通过 Web 发出 HTTP 请求来调用这些服务。 通过 ASP.NET 您可以创建自定义的 Web 服务或使用内置的应用程序服务,并从任何客户端应用程序调用这些服务。

        微软在.NET里提供的开发Web服务的一个框架。属于.NET Framework的一部分。这个遵守WS-*规范。在.NET平台下开发松耦合面向服务应用系统可以使用的技术。这个支持SOAP1.1规范,目前呢,WCF的出现,使得开发人员有了更多的选择。WCF为了兼容Web服务客户端,也提供了特定的绑定,比如BasicHttpBinding。更多关于ASP.NET Web Service 的介绍,大家可以看看MSDN:XML Web 服务基础结构

【2.2】ScriptService属性:

        如果我们想开发支持客户端JavaScript脚本的Web服务,就必须给服务类添加这个属性标记[ScriptService].当我们添加了这个属性时,代理生成脚本将创建一个与该 Web 服务类相对应的代理对象。供我们访问调用这个服务。

【2.5】ScriptMethod属性:

        为了支持客户端脚本程序,我们需要给特定的服务方法添加[ScriptMethod]标记,使用此属性可以指定可用于调用方法的 HTTP 谓词(GET 或 POST)。它还使您可以指定是要使用 JavaScript 对象符号 (JSON) 还是 XML 对响应进行格式设置。

      ScriptMethodAttribute 属性是可选的。(但是,可从客户端脚本调用的方法必须应用 System.Web.Services..::.WebMethodAttribute 属性)。如果方法未使用 ScriptMethodAttribute 标记,则此方法将通过使用 HTTP POST 命令调用,并且响应将序列化为 JSON。

【3】示例代码分析:

       这里我们使用ASP.NET AJAX调用Web服务的开发过程比较方便,直接使用Visual Studio创建一个Website,另外也可以把ASP.NET Web Service独立为一个项目,这里两个放在一个Website里:AjaxWebService.asmx和Default.aspx。

       这里主要的部分一个是Web Service,另外一个就是aspx页面。下面我们非别来看看看两个部分的实现代码:

【3.1】ASP.NET Web Service:

      这里我们定义了一个简单的Web服务:AjaxWebService ,包含一个服务方法SayHelloWorld。这个方法简单的作用就是返回一个字符串给客户端。

      这里Web服务类要添加[ScriptService]属性标记,表示此Web服务,可以被脚本调用。

服务方法,为了支持对于AJAX客户端脚本的调用请求的支持,加上了一个属性标记[ScriptMethod]。在这个属性里,我们可以指定是否使用HttpGet,另外也可以指定返回数据的格式,比如XML,JSON等等。这个可以根据自己的需要来决定。

      使用此属性可以指定可用于调用方法的 HTTP 谓词(GET 或 POST)。它还使您可以指定是要使用 JavaScript 对象符号 (JSON) 还是 XML 对响应进行格式设置。

      ScriptMethodAttribute 属性是可选的。(但是,可从客户端脚本调用的方法必须应用 System.Web.Services..::.WebMethodAttribute 属性)。如果方法未使用 ScriptMethodAttribute 标记,则此方法将通过使用 HTTP POST 命令调用,并且响应将序列化为 JSON。无法在脚本中重写此设置。

<script type="text/javascript"> 
function aspnetAjaxSearch() 

    
var name = $get("UserName").value; //获取输入的名字

    AjaxWebService.SayHelloWorld(name,AjaxCallBack);
//调用服务方法 

//回调方法
function AjaxCallBack(result) 

        alert(result); 
        
// Assign the result 
        $get("AjaxResult").value = result.toString();//显示结果 

    
</script>

 

 

【3.3】运行结果:

     我们可以部署以后来查看效果,也可以直接在Visual Studio里浏览aspx网页,这里使用的是Visual Studio2008,当然也可以使用Visual Studio2010。

      我们输入姓名,点击Search按钮,运行的结果如下图:

 

【4】总结:

      

      其实大家都知道,AJAX是多重共已有技术的融合。其实.NET Framework早有支持。许多网站中我们都能看到AJAX应用的身影。不管是大的门户网站,还是小的网络应用,都可以用它来给我们的客户端带来非常好的用户体验。

       而Visual Studio2010的发布,也使得开发支持AJAX的应用程序更加的方便。

      AJAX调用WebService的文章就到这里。这一节里我们系统学习了ASP.NET AJAX框架、ASP.NET Web Service的概念。

      作为这个《WCF与AJAX编程开发实践》系列文章的第二篇,将会对大家这个系列知识体系的学习,起到很好的辅助作用。微软技术平台的升级,都是循序渐进的。下一节,我们会继续介绍,如何开发支持AJAX的WCF服务。

     最后给出本文的示例代码,供大家参考:/Files/frank_xl/2.AspNetAjaxCallWebServiceTest.rar

 

参考资料:

0.http://www.asp.net/AJAX/

1.http://msdn.microsoft.com/zh-cn/magazine/cc163300.aspx

2.http://msdn.microsoft.com/zh-cn/library/bb398874.aspx

3.http://blog.csdn.net/zwseaman/archive/2009/02/11/3877095.aspx

4.http://www.singingeels.com/Articles/Consuming_Web_Services_With_ASPNET_AJAX.aspx

5.http://msdn.microsoft.com/zh-cn/library/bb397459(VS.90).aspx

6.http://msdn.microsoft.com/zh-cn/library/bb515101(VS.90).aspx

7.Microsoft Ajax 概述

8.XML Web 服务基础结构

9.ScriptServiceAttribute 类

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ScriptManager控件
ASP.NET 3.5 and Visual Studio 2008
ASP.NET Ajax调用WCF服务的代码示例
本周ASP.NET英文技术文章推荐[04/29 - 05/05]
WCF、Net remoting、Web service概念及区别
如何:启用 WCF 身份验证服务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服