zoukankan      html  css  js  c++  java
  • 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,扩展点就是一组相同结构的实体集合。

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

      代码   

  • 相关阅读:
    Unity 3D Customizing Your Workspace 自定义工作区
    Unity3D 学习界面 Learning the Interface
    【Python】函数功能描述
    没有显示器的情况下安装和使用树莓派
    【Linux】03-Linux用户权限相关命令
    【Linux】02-Linux远程管理常用命令
    【Linux】01-Linux基本命令
    【12c】DataGuard构建物理备用数据库(Cloud Control方式)
    【12c】一文教你详细了解如何安装Oracle Enterprise Manager Cloud Control 12c
    【12c】新特性:一文带你详细了解Oracle 12c 数据库的自动数据优化(ADO)
  • 原文地址:https://www.cnblogs.com/beixing/p/3784555.html
Copyright © 2011-2022 走看看