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 客户端与服务端消息传输,布布扣,bubuko.com

时间: 2024-10-01 04:49:50

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

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

引言 经过不断的摸索,询问/调试,终于学会了关于WCF客户端与服务端之间异常的处理机制,在此来记录自己的成果,用于记录与分享给需要的伙伴们. 首先感谢[.NET技术群]里群主[轩]的大力帮助,如有需要大家也请欢迎加入[.NET技术群](群号:199281001),一起讨论交流.NET技术(ASP.NET MVC4.MVC5/C#/WPF/WCF),但愿大家在技术上有更多的成就,废话不多说,直接开始分享. 关于WCF服务端的原生抛出异常,我就不多说了,相信大家找到这篇博文的时候,已经尝试过诸多方法

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

服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentService.svc,VS会自动生成IStudentService.cs 在添加一个Student类,如图: Student.cs: /// <summary> /// DataContract数据约定,保证student类在WCF调用中被序列化 /// DataMember 在被序列化的成员变量中必须加

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

创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: 服务和客户端使用托管属性.接口和方法对协定进行建模. 若要连接客户端应用程序中的服务,则需要获取该服务协定的类型信息.通常,我们使用Svcutil.exe(ServiceModel Metadata Utility Tool)来完成,也可以直接在客户端项目上引用服务地址完成.它们会从服务中下载元数据

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

客户端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #include<arpa/inet.h> #include <error.h> #includ

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

C#菜鸟做这个东东竟然花了快三天的时间了,真是菜,菜,菜--- 下面是我用C#写的 一个简单的TCP通信,主要的功能有: (1) 多个客户端与服务器间的数据交流 (2)可以实现群发的功能 (3)客户端与服务端可以进行文件的传输 主要用到的知识: TCP里的 socket ... 多线程 Thread ... 下面的是界面: 下面分别是服务端和客户端的代码,如若借用,请标明出处~~~ 服务端代码: [csharp] view plaincopyprint? using System; using 

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

1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的基础上才能完成,TCP通过三次握手建立连接:   Socket与http的区别可以看下这个: https://www.cnblogs.com/meier1205/p/5971313.html 还有搜索:http下午茶 3.JAVA socket 客户端与服务端互发消息 实现结构图:   客户端和服务

Android客户端与服务端(jsp)之间json的传输与解析【附效果图附源码】

最近有个项目需要用到json的传输,之前不是太了解,在网上找了些相关资料,写了一个小小的demo,可以实现基本功能:android客户端发送json到服务端,服务端使用jsp接收,解析后以json的形式返回给客户端,客户端接收打印,先看看运行的效果截图,源码会在文章的末尾给出. 1.服务端:接收到json后解析打印,然后发送json到客户端 2.客户端,收到服务端返回的json后打印 简单的介绍下源码: 服务端使用json.jsp来接收解析客户端传过来的json,json的解析需要使用lib目录

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

本篇文章将通过一个实例实现对WCF中针对服务端以及客户端是否掉线进行判断:若掉线时服务器或客户端又在线时将实现自动重连:将通过WCF的双工知识以及相应的心跳包来实现此功能: 首先了解一下本实例的一个分层架构图:相信了解WCF对这个分层法肯定都很了解:其中Client为客户端,Interface为契约层,Service则是实现契约的服务层: 接下来我们将对各层进行一个简单的讲解:方便大家理解实例的实现方式: 首先我们了解契约层Interface:因为我们利用WCF中的双工知识,所以此处我们定义的两

用socaket编写客户端与服务端程序相互发送消息

//运行环境:eclipse || MyEclipse package socaket; //这些类全放在socaket的包下 //这是服务器端消息发送类 import java.io.IOException;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner; public class ServerChatSend extends Thread {//服务端发送线程 Socket ssk = nu