zoukankan      html  css  js  c++  java
  • WCF 第三章 信道

    信道就是WCF应用程序接收和发送所有信息的通道。它负责在一个持续的方式中准备并传输 消息。信道是为传输,协议和消息交换定义的。信道被放到一起来创建信道栈。信道栈是处理消息的分层通信栈。比如,一个信道栈可以由一个TCP传输信道和一 个事务协议信道组成。这样的一个信道栈允许使用在网络中的客户端和服务端之间使用TCP协议和事务流转来发送/接收消息。

    信道栈的目标 是把一条消息转成与发送方,接收方兼容的线上格式并传输这条消息。有两种类型的信道用来做这个: 传输信道和协议信道。传输信道总是位于信道栈的最底端,它使用一个传输协议来传输消息。WCF提供了很多传输协议,包括 HTTP,TCP,MSMQ,P2P和命名管道。协议信道位于传输信道或者其他协议信道的上层。因为协议信道在其他信道的上层,它们通常也被称为分层信 道。协议信道通过传输和修改消息来实现线上级别的协议。WCF提供了很多种类型的协议信道。包括实现对安全,事务和可信赖消息支持的协议信道。

    提示 传输信道

    WCF提供了数种传输信道,包括HTTP,TCP,MSMQ,P2P和命名管道。其他协议在样例中也包括或者通过第三方来提供更广泛的协议支持,包括SMTP,FTP,UDP,WebSphere MQ和SQL Service Broker.这些协议中的很多种都可以在http://wcf.netfx3.com 站点找到。UDP协议信道可以从Windows SDK中找到。WebSphere MQ传输信道协议可以从IBM的alphaWorks站点找到。

    对 将要进行的通信过程来说,客户端和服务端都需要初始化一个与对方兼容的信道栈。在.NET 应用程序之间,这一般通过在客户端和服务端上使用同样的信道栈来完成。通常,这意味着它们的接口必须匹配。我们使用绑定来简化信道栈的创建过程。一个绑定 或者信道栈的配置信息并知道如何在运行时创建信道栈。绑定从一个绑定元素集合上创建,绑定元素集合表示信道栈中的信道。绑定和绑定元素将会在第四章“绑 定”中详细介绍。

    通过允许通信从应用程序中剖离,WCF信道结构提供了巨大的灵活性。这允许开发人员创建可以在多个通信结构中暴露的服 务,也允许应用程序服务在需求改变时改变。比如,一个在两个.NET应用之间暴露的一个WCF服务可以很容易的暴露给JAVA应用程序而不用改动程序。额 外的特性,比如互通性,持久通信和事务也可以很容易得根据需求变化加入到WCF服务中。先前的微软技术(比如ASP.NET Web Services, .NET Remoting, Enterprise Services或者MSMQ)需要你为每一个新的通信形式重写应用程序部分。通过WCF,你可以不用对应用程序做重大的重写同时随意挑选和选择你需要的 特性。

    WCF提供这样灵活性的能力可以从WCF如何使用分层来暴露一个信道栈中找到。图片3.1 显示了消息通过在一个给定协议的客户端信道栈上从一个WCF客户端应用程序传输到服务端。服务端信道栈监听消息并把它们分发给服务端应用程序。

    一 个信道栈是一系列使用绑定元素配置的信道。一个预先配置的信道栈也称作一个绑定。一个绑定由一系列绑定元素组成,就好像一个信道栈由一系列信道组成。在信 道栈的上层是协议信道。协议信道与一条消息交互并负责安全,可信赖通信,事务和日志等特性。在一个信道栈中可以有任意多个信道栈,这取决于需要的特性。

    传 输信道负责在一个传输协议比如TCP或者HTTP上发送字节。它们也负责使用一个编码器把消息转换成字节数组然后传输。把一条消息从它的XML表现转成一 个字节数组是编码器的工作。编码器通过绑定元素把自己暴露给传输信道。传输信道在绑定上下文中寻找一个MessageEncoder类的实现。如果没有找 到,传输信道会被确定为一个默认的编码器。

    提示 信道栈有一个传输信道和一个编码信道

    信 道栈至少有一个传输信道和一个编码信道。通常传输信道会确认一个默认使用的编码。比如tcpTransport传输信道,它确定使用 binaryMessageEncoding来编码。这是在WCF中实现一个信道栈的所有必需条件。协议信道是可选的当你使用一个信道栈时。


    =========

    转载自

     

  • 相关阅读:
    洛谷 P1074 靶形数独 Label:search 不会
    TYVJ P3522 &&洛谷 P1135 奇怪的电梯 Label:bfs
    洛谷 P1160 队列安排 Label:链表 数据结构
    uestc 1073 秋实大哥与线段树 Label:线段树
    TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要
    TYVJ P1103 多项式输出 Label:模拟 有点儿坑
    A+B Problem 详细解答 (转载)
    如何批量修改文件名
    c++ 在windows下获取时间和计算时间差的几种方法总结
    SQL Server 2008在Windows 10上不支持
  • 原文地址:https://www.cnblogs.com/llbofchina/p/2092972.html
Copyright © 2011-2022 走看看