WCF很多需要认证信息,保证服务的安全,可以使用消息来实现

WCF 实现消息的方式:

  WCF中有两个接口:

  IClientMessageInspector 【定义一个消息检查器对象,该对象可以添加到 System.ServiceModel.Dispatcher.ClientRuntime.MessageInspectors集合来查看或修改消息]

  IDispatchMessageInspector  【定义一些方法,通过这些方法,可以在服务应用程序中对入站和出站应用程序消息进行自定义检查或修改。】

括号中是 MS对接口的注释,最重要的地方时:可以实现多客户端和服务端消息的查看、修改;并且IClientMessageInspector 负责client端,IDispatchMessageInspector负责service端

下面看看两个方法:

  1.IClientMessageInspector 定义了两个方法

    void AfterReceiveReply(ref Message reply, object correlationState);    //收到回复后(执行)

    object BeforeSendRequest(ref Message request, IClientChannel channel); //发送请求之前(执行)

   2.IDispatchMessageInspector 也定义两个方法

    object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext);//收到请求后(执行)

    void BeforeSendReply(ref Message reply, object correlationState);//发送回复前(执行)

消息的具体内容就在四个方法的引用参数(reply,request);

现在我们知道消息在什么地方查看和维护了,怎样才能把这些功能与系统连接起来呢?那就是WCF提供的扩展机制之一的Behavior,

WCF提供的behavior有:IServiceBehavior,IEndpointBehavior,IOperationBehavior,IContractBehavior分别提供对 “服务”,“终结点”,“操作”,“协定”的相关信息的操作扩展点。

整个管道中,消息是放在DispatchRuntime.MessageInspectors中的,IServiceBehavior,IEndpointBehavior接口就提供了对MessageInspectors的访问,我们只需要把我们定义的实现了IClientMessageInspector,IDispatchMessageInspector的实体添加到这些MessageInspectors中就可以了。

如果对这种模式不是很理解就想想Asp.Net HttpModel,Asp.Net MVC 中的Filter,扩展点就是一组相同结构的实体集合。

下边是代码:代码功能就是 消息传递的一个小例子,代码就不单独贴出来了,下载例子一看就知道。

代码 

WCF 客户端与服务端消息传输的更多相关文章

  1. WCF客户端获取服务端异常[自定义异常]

    引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要 ...

  2. WCF客户端与服务端通信简单入门教程

    服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...

  3. WCF客户端和服务端配置

    服务端: <system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samp ...

  4. 实现客户端与服务端之间传输json数据

    步骤:创建数据库,并创建表.利用myeclipse创建新工程,利用JDBC实现java操纵数据库.实现客户端类,服务端类.具体实现:创建数据表create table usertable( usern ...

  5. WCF初探-10:WCF客户端调用服务

    创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...

  6. c++ Socket客户端和服务端示例版本二

    客户端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/soc ...

  7. C# TCP实现多个客户端与服务端 数据 与 文件的传输

    C#菜鸟做这个东东竟然花了快三天的时间了,真是菜,菜,菜--- 下面是我用C#写的 一个简单的TCP通信,主要的功能有: (1) 多个客户端与服务器间的数据交流 (2)可以实现群发的功能 (3)客户端 ...

  8. java Socket通信,客户端与服务端相互发消息

    1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的 ...

  9. WCF心跳判断服务端及客户端是否掉线并实现重连接

    WCF心跳判断服务端及客户端是否掉线并实现重连接 本篇文章将通过一个实例实现对WCF中针对服务端以及客户端是否掉线进行判断:若掉线时服务器或客户端又在线时将实现自动重连:将通过WCF的双工知识以及相应 ...

随机推荐

  1. JDBC使用sql语句

    JDBC---连接数据库 java与数据库连接需要驱动,这个驱动则是JDBC,连接的时候需要ip+端口号+dbname 还要用户名和密码 改java文件的编码方式--在项目名点右键属性----把编码方 ...

  2. hdu1025 最长不下降子序列nlogn算法

    C - DP Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit I ...

  3. li的border无法和上边对齐

    如果利用border设置四周的border,如果一边的边框比较长无法对齐 解决办法: .test{ position: relative; border: 1px solid #808080; hei ...

  4. java8+spring+angularjs 项目应用

    最近有写一个电子订单商务网站,使用JAVA8,SPRING,ANGULARJS对项目使用的技术和大家分享. 第一次写博客,哪有不对需要改正的请联系改正. 因为是项目是我给别人做的无法提供源码见谅,我尽 ...

  5. thinkphp基础入门(1)

    ThinkPHP目录如下,Application顾名思义就是应用的意思(我们的代码放在这里),Public就是公共文件的意思(主要放JS CSS 等前端资源文件),ThinkPHP文件是框架的核心包( ...

  6. Python3 如何优雅地使用正则表达式(详解三)

    模块级别的函数 使用正则表达式也并非一定要创建模式对象,然后调用它的匹配方法.因为,re 模块同时还提供了一些全局函数,例如 match(),search(),findall(),sub() 等等.这 ...

  7. OpenStack镜像制作-CentOS

    云平台中镜像还是很重要的,提供各种定制化的镜像使得用户体验更好. 最开始玩OpenStack的时候用的是安装文档中提到的cirros,其密码cubswin:) 刚开始感觉很怪,现在已经可以随手打出.p ...

  8. 【iOS问题】字典转模型,属性个数不匹配问题

    一.字典转模型的键值对与模型属性不匹配问题 1. 字典的键个数 < 模型的属性个数 (key 能与模型的属性匹配) 1> .KVO 方式: - setValuesForKeysWithDi ...

  9. Verilog HDL中阻塞语句和非阻塞语句的区别

    在Verilog中有两种类型的赋值语句:阻塞赋值语句(“=”)和非阻塞赋值语句(“<=”).正确地使用这两种赋值语句对于Verilog的设计和仿真非常重要. Verilog语言中讲的阻塞赋值与非 ...

  10. Android Canvas.drawText方法中的坐标参数的正确解释

    摘要 canvas.drawText(www.jcodecraeer.com, x, y, paint); x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标, ...