在我们之前的开发中,对于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://www.cnblogs.com/dudu/archive/2011/01/19/1939094.html

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

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

    昨天,博客园首页增加了Digg功能.在该功能中我们开始尝试使用jQuery直接调用WCF.之前我们采用的方案是jQuery调用Web Service,然后WebService再调用服务层.这样调用主要 ...

  2. VS2010中使用Jquery调用Wcf服务读取数据库记录

    VS2010中使用Jquery调用Wcf服务读取数据库记录 开发环境:Window Servere 2008 +SQL SERVE 2008 R2+ IIS7 +VS2010+Jquery1.3.2 ...

  3. jQuery调用WCF 说明

    在项目中用过一些WCF的技术这篇文章是对以前用过的一点东西的一个梳理 一,webconfig的配置除了一般的配置外,与WCF相关的配置如下 <system.serviceModel>    ...

  4. JQuery调用WCF服务,部署在iis

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  5. jQuery调用WCF

    jQuery要调用WCF,首先要创建service.svc服务文件,这里边需要注意: [ServiceContract(Namespace = "")] [AspNetCompat ...

  6. jquery调用wcf案例

    ----------根据其他网友总结 1.在契约接口上添加:[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessa ...

  7. jQuery调用WCF服务传递JSON对象

    下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web ...

  8. jquery 调用wcf 的SOA架构,将三层架构运用到SOA的架构中来(第四天)

    经过前面3天的学习,我想大家应该对SOA的架构有了初步的了解,其实 SOA与三层架构并不冲突,而是三层架构的升级版. 来看下传统的三层架构! 一共可以分为4个层: 模型层(可有可无),客户端,服务端, ...

  9. JQuery调用WCF服务

    一:创建一个wcf服务项目 [ServiceContract] public interface IService1 { [OperationContract] [WebInvoke(RequestF ...

随机推荐

  1. delphi c#语法转换

    delphi c#语法转换 delphi c#       s:array[1..5] of integer TIArr  = array of integer; Berlin有这个新功能 TArra ...

  2. 机器学习进阶-图像金字塔与轮廓检测-模板匹配(单目标匹配和多目标匹配)1.cv2.matchTemplate(进行模板匹配) 2.cv2.minMaxLoc(找出矩阵最大值和最小值的位置(x,y)) 3.cv2.rectangle(在图像上画矩形)

    1. cv2.matchTemplate(src, template, method)  # 用于进行模板匹配 参数说明: src目标图像, template模板,method使用什么指标做模板的匹配 ...

  3. openvpn 批量生成用户脚本

    #/bin/bash for user in "$@" do echo "新增用户:$user" if [ -d "/etc/openvpn/clie ...

  4. Pycharm 字体大小快捷方式设置

    1.File->Settings 2.在搜索框搜索increase 点击Increase Font Size(增大字体)右键选择 Add Mouse Shortcut 然后按Ctrl并且鼠标滚轮 ...

  5. js 改变颜色值

    /** * 获取颜色值 */ const color2RGB = (color) => { if (typeof color !== 'string' || (color.length !== ...

  6. Android对接WebService -- The given SOAPAction http://webservice.ams.cnpc.com/getServerTime does not match an operation.

    问题描述:Chrome Restlet下模拟请求出现如下问题 The given SOAPAction http://webservice.ams.cnpc.com/getServerTime doe ...

  7. MVC 2nd

    步骤 3 创建控制器. StudentController.java public class StudentController { private Student model; private S ...

  8. python第三步骤(pygame)

    1:先安装homebrew(类似于yum /apt-get为什么需要它呢,因为pip安装的时候需要很多的包的依赖,sdl什么的), 2:pip 安装pygame 我讨厌的环境变量问题 然后 通过的是 ...

  9. linux最大允许的文件描述符open files数nofile修改

    open file resource limit 是linux中process可以打开的文件句柄数量.增加这个数值需要调整两个配置: 第一步, 修改系统最大允许的文件描述符 查看当前的设置: $ ca ...

  10. A Swifr Tour

    Tradition suggests that the first program in a new language should print the words "Hello ,worl ...