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 类

转载于:https://www.cnblogs.com/JsonBlog/archive/2011/05/17/2049351.html

WCF与AJAX编程开发实践(2):支持ASP.NET AJAX的Web Service相关推荐

  1. WCF与AJAX编程开发实践(1):AJAX基础概念和纯AJAX示例

    [0]开篇序言:     在<WCF分布式安全开发实践>系列文章之后,很想重新开启一个系列文章,来完善WCF的学习知识.思考很久,决定写一下WCF和AJAX学习的文章,取名为<WCF ...

  2. 《ASP.NET AJAX程序设计 第I卷 服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit》目录(最终定稿)...

    第一二卷都比较简单,特别是第一卷,讲的都是服务器端控件.第二卷是客户端部分,第三卷是高级内容,包括调试.性能.部署.控件开发.源代码结构.用户体验.心理学模型等等-- 第一卷争取在四月份出版,谢谢各位 ...

  3. Processing互动编程开发实践之动态文字打乱功能(别嫌长,代码多,图片多)

    这篇文章有什么价值? 简单介绍Processing编程 提供一份基于鼠标响应的动画的Processing代码 重头戏:描述动态文字打乱功能实现的重要细节,并将源码公开 1.什么是Processing编 ...

  4. 错误: asp.net ajax 客户端框架未能加载.,ASP.NET Ajax 客户端框架未能加载、Sys未定义...

    在Windows Server 2003 系统上部署asp.net项目出现以下问题: IIS为6.0 导致菜单控件的图片显示不出来: WebSite:程序中的图片显示正常. 但用到ASP.net 2. ...

  5. 《PYTHON3网络爬虫开发实践》——第六章 Ajax数据爬取

    第六章 Ajax数据爬取 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:这是因为requests 获取的都是原始的HTML文档,而浏览器中的页面则是经过Java ...

  6. asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析

    代码下载 说明:数据库连接字符串在web.config文件中,为方便运行使用的是官方的Northwind数据库. 参考(向其作者致敬): ² http://www.loveweb8.com/plus/ ...

  7. c++ python混合编程 restful_How to use Python to build a RESTful Web Service

    由于知乎目前限制单人仅能开通单个专栏,所以关于文章主题的所有文字都会写在该单篇文章中(避免污染专栏),目前处于长篇连载且停滞状态,待续.. Github Repo: nekocode/tornaRES ...

  8. addeventlistener不支持ajax_好程序员web前端学习路线分享了解AJAX是什么

    好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1. ...

  9. ASP.NET AJAX 在Web开发中的应用

    摘 要 ASP.NET AJAX 实现了Web页面丰富的部分刷新效果.本文通过介绍AJAX原理,引申到ASP.NET AJAX原理,并总结了在Web 开发应用中要注意的若干问题.合理地利用ASP.NE ...

  10. ASP.NET AJAX(开发代号Atlas)重要参考资源大收集

    英文网站部分 http://www.google.com 或者http://search.msn.com :不必多说 ASP.NET AJAX官方网站:不用多说了-- ASP.NET AJAX Con ...

最新文章

  1. You must define TF_LIB_GTL_ALIGNED_CHAR_ARRAY for your compiler
  2. 互相引用 spring_巧夺天工,这样理解Spring的IOC、DI下来,真的很清晰了
  3. CDATA和转义字符
  4. Unix/Linux/BSD 它们之间的关系以及各自派系的介绍
  5. 关于apache的虚拟主机配置
  6. 计算机开机不正常运行,win7 64位旗舰版电脑开机启动不正常怎么办
  7. 题解:子矩阵(NOIP2014普及组T4)
  8. CF739E Gosha is hunting
  9. 深度学习图像识别笔记(二):红外图像
  10. LoadRunner安装时没法注册DLL文件的问题
  11. 异步FIFO中格雷码和二进制数据的转换
  12. 对话系统-口语理解-意图检测和槽填充:A Co-interactive Transformer for joint Slot Filling and Intent Detection
  13. psn注册什么服务器,psn港服注册图文教程
  14. nas做服务器虚拟化共享存储,NAS虚拟化的部署及实现解析
  15. 什么是项目风险?如何做好项目风险管理
  16. java横线_java 字体 加横线
  17. 基于can总线的A2L文件解析(1)
  18. python实现txt转word
  19. sprintf与snprintf区别
  20. 【分布式微服务】消息中心初步搭建

热门文章

  1. reids高可用(灾难备份-持久化)
  2. iOS开发第三方篇——友盟的哪些坑
  3. OkHttp 官方Wiki之【使用案例】
  4. RedHat Linux设置yum软件源为本地ISO
  5. CXF(2.7.10) - RESTful Services, JSON Support
  6. Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类
  7. poj3233Matrix Power Series
  8. 用正则验证用户输入文本框的内容是否是中文汉字
  9. vue-awesome-swiper 的安装和使用
  10. 关于软件测试的5个误传