在项目中用过一些WCF的技术
这篇文章是对以前用过的一点东西的一个梳理

一,webconfig的配置
除了一般的配置外,与WCF相关的配置如下

  1. <system.serviceModel>
  2.     <behaviors>
  3.       <endpointBehaviors>
  4.         <behavior name="AllenBehavior">
  5.           <enableWebScript />
  6.         behavior>
  7.       endpointBehaviors>
  8.     behaviors>
  9.     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  10.     <services>
  11.       <service name="jqueryWCF.WCFservice">
  12.         <endpoint address="" behaviorConfiguration="AllenBehavior"  binding="webHttpBinding" contract="jqueryWCF.WCFservice" />
  13.       service>
  14.     services>
  15.   system.serviceModel>

其中节点中的name属性,是实现了服务契约的类型名,类型名必须是完整的,要包括名称空间
节点的address属性为空,说明使用基地址.
behaviorConfiguration属性与behavior节点的name属性相匹配
binding属性说明WCF服务使用什么协议,这里是HTTP协议
contract属性是描述契约的接口名称,也必须是完整的.如果没有接口直接写实现契约的类型名也可以(我这里就是这样).

节点的信息是描述WCF服务端的一些特性,行为的
name属性与前面说的behaviorConfiguration属性一致
节点使我们的WCF支持ajax

与后端的AspNetCompatibilityRequirements配合使用

二:页面中的js代码
这段JS是写在JQUERY框架下面的
  1. function callServer(){
  2. var id = Number($("#id").val());
  3. var title = String($("#title").val());
  4. var content = String($("#content").val());
  5.     $.ajax({
  6.         type: 'post',
  7.         url: '/WCFservice.svc/InsertRow',
  8.         contentType: 'text/json',
  9.         data: '{"id":'+id+',"title":"'+title+'","content":"'+content+'"}',
  10.         success: function(msg) {
  11.         var a = eval('('+msg+')');
  12.         if(String(a.d).length>0){alert(a.d);}
  13.         else{alert("服务器超时");}
  14.         }
  15.     });
  16.     }
其中
$.ajax(.....)是框架提供的一个调用ajax的方法,兼容目前大多数浏览器
url: '/WCFservice.svc/InsertRow'
这里是WCF的地址+方法名
contentType: 'text/json',
这是以JSON的方式POST数据,当然也可以用XML的方式(要配合WCF后端的定义)
data: '{"id":'+id+',"title":"'+title+'","content":"'+content+'"}',
数据必须按照InsertRow方法的签名传递(这里稍有不慎就出错了,而且js的调试比较难搞)
success: function(msg) {}
成功后的回调函数,msg参数是一个object类型的,要eval()一下才能得到里面的数据
三:后端WCF代码

  1. using System;
  2. using System.Linq;
  3. using System.Runtime.Serialization;
  4. using System.ServiceModel;
  5. using System.ServiceModel.Activation;
  6. using System.ServiceModel.Web;
  7.  
  8. namespace jqueryWCF
  9. {
  10.     [ServiceContract(Namespace = "")]
  11.     [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  12.     public class WCFservice
  13.     {
  14.         [OperationContract]
  15.         [WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
  16.         public string InsertRow(int id,string title,string content)
  17.         {
  18.             return string.Format("您输入的标题是:{0}\n\n您输入的内容是:{1}\n\n此文章的id是:{2}",title,content,id.ToString());
  19.         }
  20.     }
  21. }

系统要引用System.ServiceModel.Web的DLL默认是不引用的

ServiceContract属性把此类型公开在WCF服务中
AspNetCompatibilityRequirements属性确保端点使用了WEBHTTP绑定模型
与webconfig中的配合使用

OperationContract属性把方法公开在WCF服务中

RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json
说明传递近来的数据都是JSON形式的,只有两种形式,一个是JSON,一个是XML.
(我觉得JSON更"对象"一点,XML更"数据"一点)

BodyStyle = WebMessageBodyStyle.WrappedRequest
是把参数包装一下
这样可以传递多个参数进来,
我猜返回值之所以是一个javascript的对象(json流得来的对象)也是因为这里

项目示例:点此下载

jQuery调用WCF 说明的更多相关文章

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

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

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

    在我们之前的开发中,对于ajax程序,都是通过jQuery调用标记为[System.Web.Script.Services.ScriptService]的WebService,然后在WebServic ...

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

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

  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服务

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

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

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

随机推荐

  1. SpringMVC Model,ModelMap ModelAndView

    SpringMVC 调用方法之前会创一个隐含的模型对象(即Model,ModelMap ModelAndView) //@ModelAttribute 先于login方法执行 @ModelAttrib ...

  2. MVC、MVP和MVVM的更简单易懂的理解

    本篇转自网络: 一.MVC MVC模式的意思是,软件可以分成三个部分. 视图(View):用户界面. 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下. ...

  3. 前端基础jQuery

    jQury jQuery 是一个 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程. jQuery库包含以下功能: HTML 元素选取 HTML 元素操作 CSS ...

  4. [Usaco2012 Open]Balanced Cow Subsets

    Description Farmer John's owns N cows (2 <= N <= 20), where cow i produces M(i) units of milk ...

  5. 数论 HDOJ 5407 CRB and Candies

    题目传送门 题意:求LCM (C(N,0),C(N,1),...,C(N,N)),LCM是最小公倍数的意思,C函数是组合数. 分析:先上出题人的解题报告 好吧,数论一点都不懂,只明白f (n + 1) ...

  6. HDFS执行getDatanodeReport时权限不足的解决办法

    通过JAVA获取HDFS的getDatanodeReport方法时,报权限不足的错误信息. org.apache.hadoop.ipc.RemoteException(org.apache.hadoo ...

  7. 12c pdb expdp use DATA_PUMP_DIR meet ORA-39145

    ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-39087: directory name DATA_ ...

  8. windows下Python的安装,以及IDLE的使用

    一.Python的下载安装 (1)python的windows安装包可以从https://www.python.org 网址中下载,可以下载3.4版本的或者2.7版本的.(2)下载后直接运行即可.然后 ...

  9. E. The Values You Can Make 背包,同时DP

    http://codeforces.com/problemset/problem/688/E 题目需要在n个数中找出一个集合,使得这个集合的和为val,然后问这些所有集合,能产生多少个不同的和值. 题 ...

  10. ASP.NET中图片验证码与js获取验证码的值

    现在的程序中,为了防止用户恶意点击,我们一般都会加上验证,现在比较普遍的是加上图片验证码或者手机短信验证.验证码一般都是防机器不防人,有效的防止了恶意点击. 那么在webform中如何生成动态的图片验 ...