• WCF与AJAX编程开发实践(3):支持ASP.NET AJAX的WCF服务


    在前2节里,我们分别依次学习了《AJAX基础概念和纯AJAX示例》和《支持ASP.NET AJAX的Web Service》。今天继续学习WCF与AJAX编程开发实践(3):支持ASP.NET AJAX的WCF服务。这一节里,我们会讲解如何开发一个WCF服务,来支持ASP.NET Ajax客户端的调用,并给出详细的开发过程和示例代码。

      以下是这个系列的文章结构,虽然是为了学习WCF与AJAX编程,但是为了我们更够更好地理解和掌握这一框架,所以文章从最基本的概念开始,然后逐步引入到AJAX和WCF开发的内容上。

         这些在第一节里有过介绍。这里开发一个支持AJAX的WCF服务十分的容易,主要原因呢,得益于Visual Studio功能的完善。我们可以轻而易举地创建一个WCF服务,来支持客户端AJAX的调用。本节里大致介绍的顺序从创建网站开始,然后是创建WCF服务,最后是客户端的开发工作。依次给出详细的介绍,并配有截图。这里以Visual Studio2008 英文版为例。截图部分会配以文字说明。中文版开发过程一样。

    【1】创建ASP.NET 网站:

           首先这里要求你安装了Visual Studio2008 开发环境。

      创建一个普通的ASP.NET 网站,步骤很简单,也就是在New ->Web Site 选择网站即可,如下图所示:

     

    【2】创建WCF Service:

           【2.1】其次创建一个支持AJAX的WCF服务。

        这里与之前的ASP.NET Web Service不同,我们需要自己创建一个支持AJAX的WCF Service即可,如图所示:

          

     【2.2】服务类定义:

       AjaxWCFService服务类型定义了一个操作,和普通的WCF服务操作没有区别,需要标注[OperationContract]。这个操作的代码很简单,就是接受一个name参数,然后返回一个字符串。具体实现如下:

        [ServiceContract(Namespace="AjaxFrankXuLei")]
        [AspNetCompatibilityRequirements(RequirementsMode 
    = AspNetCompatibilityRequirementsMode.Allowed)]
        
    public class AjaxWCFService
        {
            
    // Add [WebGet] attribute to use HTTP GET
            [OperationContract]
            
    public String SayHello(String name)
            {
                
    return String.Format("Ajax, Hello {0}", name);
            }
            
    // Add more operations here and mark them with [OperationContract]
        }

       这里比较关键的一个服务属性标注就是:

     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]应它的作用就是表示WCF服务能否在 ASP.NET 兼容模式下运行。我们这里设置为允许。

         添加AjaxEnabledWCFService,Visual Studio会自动为我们加上这些标注。

           【2.3】配置文件Web.Config:

         Visual Studio会帮助我们添加一些重要的代码和配置信息

    【3】创建ASP.NET AJAX客户端:

           选择我们需要一个客户端,来调用WCF服务。

      【3.1】这里创建ASP.NET AJAX客户端,最重要的是要使用一个服务端控件ScriptManager。这个可以在ToolBox里找到。

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

           这里需要引用我们的AJAXWCFService.svc文件。代码如下:

            <asp:ScriptManager ID="ScriptManager1" runat="server">
                
    <Services>
                    
    <asp:ServiceReference Path="~/AjaxWCFService.svc" />
                
    </Services>
            
    </asp:ScriptManager>

       【3.2】HTML页面设计,我们就沿用第二节里的页面控件。基本不做修改。功能很简单,和第二节一样,我们输入用户名UserName,然后调用WCF服务,返回SayHello字符串。

          【3.3】 剩下的就是Javascript函数,这个过程也非常的简单,因为Visual Studio2008的脚本代码编写的提示也非常的方便,你可以方便地写出一个完成的Javascript函数,这里也可以使用Jquery。 代码如下:

     <script language="javascript" type="text/javascript">

            
    function AjaxSearch() 
            {
                
    //获取输入name
                var name = $get("UserName").value;
                
    //创建 ajaxClient
                var ajaxClient = new AjaxFrankXuLei.AjaxWCFService();
                
    //调用SayHello方法
                ajaxClient.SayHello(name, OnComplete, OnError);          
            }
            
    //CallBack Sucessful
            function OnComplete(result) 
            {
                
    // Assign the result
                document.getElementById("AjaxResult").value = result.toString();
            }
            
    //CallBack Error
            function OnError(result) 
            {
                alert(result.get_message());
            } 
        
    </script>

          【4】运行结果:

           这里我们可以直接在IE里测试一下效果,打开浏览器,浏览Default.aspx网页,这个网页里包含了我们调用WCF服务的客户端Javascript脚本。

          我们在控件里输入姓名以后,点击Search按钮,就会看到调用WCF服务操作SayHello返回的结果。如图所示:

    【5】总结:
       
      ASP.NET AJAX框架,在ASP.NET 网站开发中的使用日益广泛,而作为服务框架,从早期ASP.NET Web Service到现在的WCF,都对于的支持ASP.NET AJAX提供了很好的支持。实际的项目中使用的也越来越常见。作为开发者,Visual Studio2008 给了我们很好的开发体验。大家可以自己编写一个支持AJAX的WCF服务的Demo,最后,我也给出本文的例子代码,供各位参考:/Files/frank_xl/3.AjaxWCFWebSite.zip 

     参考:

    1.http://msdn.microsoft.com/en-us/library/bb924552.aspx

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

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

  • 相关阅读:
    org.eclipse.core.internal.registry.ExtensionsParser的流程分析
    控件设计时的属性页定位办法
    IE的内存泄漏问题
    <<深入剖析ASP.NET组件设计>>的一个辅助类
    midp2.0 图片文件名问题
    解决了XMLTextReader的用法的一个难题,EndElement
    J2ME开发心得
    解决Js内存泄漏问题的代码片断
    asp.net代码中尖括号和百分号的含义
    string.Format和cookie代码
  • 原文地址:https://www.cnblogs.com/JsonBlog/p/2049353.html
Copyright © 2020-2023  润新知