• 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,扩展点就是一组相同结构的实体集合。

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

      代码   

  • 相关阅读:
    mysql如何解决幻读 孙龙
    ssh服务 孙龙
    apipost动态获取登录token,其他接口同步调用
    Linux下快速删除大文件
    运行jmeter的serverAgent源码报错:java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Cpu.gather
    获取某个进程占用内存比例
    获取某个进程占用CPU比例,并将执行结果存到文件中
    svn将代码提交至本地仓库
    WebDriverWait(WebDriver driver, long timeoutInSeconds) 已弃用,如何替代
    查看linux系统内存和磁盘总大小
  • 原文地址:https://www.cnblogs.com/beixing/p/3784555.html
Copyright © 2020-2023  润新知