抛弃WebService,在.NET4中用 jQuery 调用 WCF

  在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebService中调用后台的WCF。这成为WebService存在的唯一理由:作为ajax调用的中转站。如果要抛弃WebService,只需用WCF来作为中转站。

  在.NET 3.5时代,jQuery就可以调用WCF,之前我也写过博客(比如:jQuery调用WCF需要注意的一些问题),但配置比较麻烦。

  走进.NET 4的新时代,WCF的配置的确简化了不少(比如:在.NET 4中用IIS部署WCF就这么简单),WCF的ajax调用同样也简化了。所以我们决定抛弃WebService,全面进军WCF。

  现在博客园的程序架构已经基于WCF,所以我们对WCF格外关注,分享的文章有些可能比较简单,但都是源自我们实际开发中遇到并解决的问题。

  下面分享一下在.NET4中如何通过jQuery调用WCF:

  说明:这里的WCF仅仅是给ajax调用的中转站,通过它再去调用本地服务层接口或者后台的其他WCF服务。

  1. 在App_Code中添加一个类文件(就是普通的class),比如叫HelloService.cs。

  2. 在HelloService.cs中添加一个方法,再加上一些WCF的设置,如下图:

  [ServcieContract]与[OperationContract]是标准设置,这里将‘服务接口”与"服务实现"写在了一个类中,不是推荐做法。我们这里这样做,是因为需要的是一个ajax调用中转站,越简单越好。

  这里需要注意的是AspNetCompatibilityRequirements,如果不进行这个设置,WCF就不走ASP.NET管线,ASP.NET的上下文信息就拿不到,比如:不加这个设置,HttpContext.Current就为null,最常用的场景就是根据HttpContext获取用户登录信息,对用户权限进行验证。对应于这个设置,在web.config的<system.serviceModel>中需要加上<serviceHostingEnvironment aspNetCompatibilityEnabled="true">,如下图:

  *注意的地方:web.config中加了上面的设置后,所有的WCF服务实现都要设置AspNetCompatibilityRequirements属性。

  3. 继续在web.config增加设置,在system.serviceModel/serviceHostingEnvironment中增加serviceActivations,如下图:

  relativeAddress就是WCF服务的地址名,service就是之前创建的HelloService类名,factory是关键,支持ajax调用,靠的就是System.ServiceModel.Activation.WebScriptServiceHostFactory。

  好了,三步搞定WCF端的配置。这时在VS2010启动项目,就可以在浏览器中访问这个WCF了,比如:http://localhost:3960/jQueryWcfDemo/HelloService.svc。如果出现下面的画面,就表示WCF端工作正常。

  4. jQuery调用WCF开始了...代码如下:

  需要注意的地方是上图中加背景的地方,contentType与data,与WebService的不同之处已在注释中说明。

  点击提交按钮,"Hello, World"...全面进入WCF时代,见下图:

  示例代码下载:http://files.cnblogs.com/dudu/jQueryWcfDemo.rar

时间: 2024-12-01 06:06:27

抛弃WebService,在.NET4中用 jQuery 调用 WCF的相关文章

舍WebService 用.NET4中jQuery调用WCF

在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebService中调用后台的WCF.这成为WebService存在的唯一理由:作为ajax调用的中转站.如果要抛弃WebService,只需用WCF来作为中转站. 在.NET 3.5时代,jQuery就可以调用WCF,之前我也写过博客(比如:jQuery调用WCF需要注意的一些问题),但配置比较麻烦. 走进.NE

一起谈.NET技术,舍WebService 用.NET4中jQuery调用WCF

在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebService中调用后台的WCF.这成为WebService存在的唯一理由:作为ajax调用的中转站.如果要抛弃WebService,只需用WCF来作为中转站. 在.NET 3.5时代,jQuery就可以调用WCF,之前我也写过博客(比如:jQuery调用WCF需要注意的一些问题),但配置比较麻烦. 走进.NE

抛弃WebService,在.NE“.NET研究”T4中用 jQuery 调用 WCF

在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebService中调用后台的WCF.这成为WebService存在的唯一理由:作为ajax调用的中转站.如果要抛弃WebService,只需用WCF来作为中转站. 在.NET 3.5时代,jQuery就可以调用WCF,之前我也写过博客(比如:jQuery调用WCF需要注意的一些问题),但配置比较麻烦. 走进.NE

舍WebServic“.NET研究”e 用.NET4中jQuery调用WCF

在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebService中调用后台的WCF.这成为WebService存在的唯一理由:作为ajax调用的中转站.如果要抛弃WebService,只需用WCF来作为中转站. 在.NET 3.5时代,jQuery就可以调用WCF,之前我也写过博客(比如:jQuery调用WCF需要注意的一些问题),但配置比较麻烦. 走进.NE

jQuery调用WCF需要注意的一些问题

昨天,博客园首页增加了Digg功能.在该功能中我们开始尝试使用jQuery直接调用WCF.之前我们采用的方案是jQuery调用Web Service,然后WebService再调用服务层.这样调用主要是因为之前需要调用不同域名下的WCF服务,因为跨域调用的问题,就要通过Web Service中转一下.而这次Digg功能调用的是同一个应用程序下的WCF,用jQuery直接调用WCF是更好的选择.在尝试这种方式的过程中遇到的一些问题和一些需要注意的地方需要记录一下,所以就写了这篇随笔. xland的

jQuery调用WCF服务传递JSON对象

下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web Service,而不去使用ASP.Net AJAX库,至于为什么不使用AJAX库中,那是因为我们在项目中已经使用了jQuery,而它已经能处理全部的AJAX请求和所有功能,并且,如果我们 一旦使用ASP.NET AJAX库,我们也必须多包含一个超过80Kb的数据量(调试模式下会更大),但这也不是说

jquery调用wcf并展示出数据的方法_jquery

首选创能wcf,代码很简单,如下: 复制代码 代码如下: using System; using System.Data; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Web.Script.Services; [ServiceContract(Namespace = "")] [AspNetCompatibilit

jQuery Ajax调用WCF服务详细教程_jquery

这两天在写基于WCF服务的后台框架,过程中遇到了一些挫折,经过努力全部解决了,在此分享给大家,使用的工具是Visual Studio 2013. 该后台需要支持通过json来传递和接收数据. 首先,说说搭建过程. 第一步:创建WCF服务应用程序项目WCF. 第二步,创建服务使用的数据类 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Sch

asp.net部署在IIS.net4.0中和.net2.0中出现问题,是使用Jquery调用Webservice,可能是web.config的配置问题

问题描述 .net2.0中的错误信息.net4.0中的错误信息折腾了好久,发现web.config中有了这句,<runtime>......在.net2.0应用池中可用.net4.0中出现错误,去掉这句在.net4.0中可用.net2.0中出现错误.<?xmlversion="1.0"?><configuration><configSections><sectionname="log4net"type="