WCF 客户端与服务端消息传输
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 客户端与服务端消息传输的更多相关文章
- WCF客户端获取服务端异常[自定义异常]
引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要 ...
- WCF客户端与服务端通信简单入门教程
服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...
- WCF客户端和服务端配置
服务端: <system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samp ...
- 实现客户端与服务端之间传输json数据
步骤:创建数据库,并创建表.利用myeclipse创建新工程,利用JDBC实现java操纵数据库.实现客户端类,服务端类.具体实现:创建数据表create table usertable( usern ...
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- c++ Socket客户端和服务端示例版本二
客户端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/soc ...
- C# TCP实现多个客户端与服务端 数据 与 文件的传输
C#菜鸟做这个东东竟然花了快三天的时间了,真是菜,菜,菜--- 下面是我用C#写的 一个简单的TCP通信,主要的功能有: (1) 多个客户端与服务器间的数据交流 (2)可以实现群发的功能 (3)客户端 ...
- java Socket通信,客户端与服务端相互发消息
1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的 ...
- WCF心跳判断服务端及客户端是否掉线并实现重连接
WCF心跳判断服务端及客户端是否掉线并实现重连接 本篇文章将通过一个实例实现对WCF中针对服务端以及客户端是否掉线进行判断:若掉线时服务器或客户端又在线时将实现自动重连:将通过WCF的双工知识以及相应 ...
随机推荐
- html5中的一些小知识点(CSS)
1.点击a标签周围区域就可以进入超链接: a标签 的css样式中的 display属性设置为block 就可以了 2.文字左右居中: text-align 属性值为 center 3.文字上下居中: ...
- QQ原创表情添加
有时候与QQ好友聊天时会收到一些自己比较喜欢的原创表情,如果我们想把这些QQ不支持直接保存的原创表情保存到电脑上该怎么做呢?我们以原创表情图片为例简单介绍一下. 首先,先建立一个存放表情图片的文件夹. ...
- Java was started but returned exit code=13
安装Eclipse(32位)后打开报错:Java was started but returned exit code=13 解决方法: 1,首先我查看了我当前安装的JDK版本,发现是64位的: 2, ...
- LeetCode_Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- 设定PCB电路板形状和物理边界
1 设定PCB电路板形状和物理边界 在Protel DXP的PCB板文件向导中,我们已经初步确定了电路板的形状和物理边界.但我们在绘制PCB板之前,也许还会对电路板的边界的细节加以调整.如果我们要对电 ...
- Leetcode:Largest Number详细题解
题目 Given a list of non negative integers, arrange them such that they form the largest number. For e ...
- 【转】listView中,checkBox的显示和隐藏
原文网址:http://www.cnblogs.com/vicma/p/3460500.html 在listView中,每个item都有一个ChexBox,当显示的时候在listView外面设置一个按 ...
- VS快捷键大全(转)
相信.Net开发人员都想能够熟记各种VS快捷键以提高平时开发的效率,但苦于记忆能力太差而快捷键又特别多,特别烦,所以作罢! 下面我将简单介绍一下我记忆VS快捷键的一些方法,希望对大家有所帮助. 1.窗 ...
- HDU_2053
Problem Description There are many lamps in a line. All of them are off at first. A series of operat ...
- [LeetCode] 230. Kth Smallest Element in a BST 解题思路
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...