文本编码与二进制编码

在WCF之前,你有很多创建分布式应用程序的选择。其中的两个选择是.NET Remoting和ASP.NET 网络服务。.NET Remoting 很适合.NET 应用程序间的通信因为它使用二进制编码传输数据。这比ASP.NET 网络服务提供更好的性能,ASP.NET 网络服务在交互中使用文本编码。由于文本编码允许跨平台交互所以它在ASP.NET 网络服务中是被广泛接受的。WCF将编码架构抽象出来并允许同时使用两种编码格式的绑定存在。这使得WCF可以同时取代.NET Remoting和ASP.NET 网络服务。

对我们来说不会直接操作编码。相反,它由用来暴露一个服务的绑定确定。第四章”绑定”高亮显示了.NET应用程序间使用的绑定和那些用来交互的绑定。netTcpBinding绑定,在.NET应用程序间使用,它使用binaryMessageEncoding编码器。binaryMessageEncoding编码器提供了最佳的性能,但是它不支持交互。对应的,诸如wsHttpBinding绑定使用textMessageEncoding编码器,这个编码器使用WS-* 协议提供交互能力。列表6.34显示了一个使用textMessageEncoding编码器的自定义绑定。

列表6.34 使用textMessageEncoding的自定义绑定

<?xml version="1.0" encoding="utf-8" ?>

列表6.35 显示了一个使用binaryMessageEncoding编码器的自定义绑定配置

列表6.35 使用binaryMessageEncoding的自定义绑定

<?xml version="1.0" encoding="utf-8" ?>

使用MTOM编码器发送二进制数据

textMessageEncoding编码器将消息转换成基于文本的XML。这对交互是很好的,但是在传输大块二进制数据时非常低效。MTOM用来在交互场景中将大量二进制数据作为原始字节发送。正如先前所提到的那样,MTOM全称是消息传输最佳架构。这是将二进制数据作为SOAP消息的消息体来优化二进制数据发送的标准。这意味着二进制数据可以使用一个SOAP消息传输而不用加上BASE64的文本编码。为了从MTOM的使用中受益,一个服务必须包含一个类型数组或者操作契约中的一个流对象。

WCF通过mtomMessageEncoding编码器提供对MTOM的支持。对mtomMessageEncoding编码器的使用一般通过绑定确认。列表6.36 显示了如何使用wsHttpBinding绑定确认MTOM编码器。

列表6.36 使用mtomMessageEncoding的wsHttpBinding

开始了解WebMessageEncoder

WebMessageEncoder在.NET Framework 3.5时加入到WCF中的,它提供对JSON和POX编码的支持。这个编码器不提供一个特殊类型编码,但是集合了一系列的在当前网络上使用的编码类型。WebMessageEncoder编码器通过使用WebHttpBehavior或者WebScriptEnablingBehavior终结点行为开启。

WebHttpBehavior终结点行为指导WebMessageEncoder编码器使用TextMessageEncoder编码器。这在内部通过TextMessageEncoder编码器并设置消息版本为MessageVersion.Node来实现的。这指导TextMessageEncoder编码器在XML中不包含任何SOAP或者WS-Addressing信息。WebMessageEncoder编码器支持在XML或者JSON中的请求和回复消息。WebHttpBehavior终结点行为的默认行为时讲请求和回复消息格式设置成WebMessageFormat.Xml.这可以通过在代码中通过设置请求和/或回复消息格式并在WebMessageFormat.Xml或者WebMessageFormat.Json上设置[WebGet]属性实现。

尽管请求和回复格式可以独立确定,它们一般设置成同样的值。WebScriptEnablingBehavior终结点行为通过将默认请求和回复格式设置成WebMessageFormat.Json来实现的。这也指导WebMessageEncoder编码器使用JsonMessageEncoder编码器来对消息编码。WebScriptEnablingBehavior用于从JavaScript调用服务的AJAX使能的网络应用。也开启对ASP.NET AJAX 客户端代理的支持。

参考第十三章来获取更多关于WebHttpBehavior行为,WebScriptEnablingBehavior行为和[WebGet]属性的信息。

转载于:https://www.cnblogs.com/danielWise/archive/2010/12/22/1914095.html

WCF 第六章 序列化与编码 编码选择相关推荐

  1. WCF 第六章 序列化和编码之DataContractJsonSerializer

    DataContractJsonSerializer支持使用以JavaScript 对象标记作为序列化格式并添加到.NET 3.5 Framework 中.如果从一个使用JavaScript 的网络应 ...

  2. 【H.264/AVC视频编解码技术】第六章【指数哥伦布编码】

    H264中语法元素描述符 指数哥伦布 (Exponential-Golomb) 熵编码 指数哥伦布编码同哈夫曼编码一样,都是变长编码. 二者的显著区别: 信源相关性:哈夫曼编码依赖于信源的概率分布:指 ...

  3. WCF 第四章 绑定 绑定元素

    WCF在预设绑定中提供了很多信道和编码器.这些信道提供了在自定义绑定中使用的绑定元素.这一部分提供WCF内部绑定元素列表以及它们的使用方面. 传输 下面的列表是信道以及它们相关的绑定类,绑定扩展和它们 ...

  4. 第六章 非编码RNA鉴定

    第六章 非编码RNA鉴定  阅读量: 154 主要为RNA-seq相关知识,部分内容作笔记自查使用.如有错误或遗漏还请海涵,可评论或邮箱联系. 最后修改时间:2020-09-07 14:38:07 星 ...

  5. 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量(考点在连续信道容量)

    系列文章链接目录 一.<信息与编码>考试复习笔记1----第一章概论 二.<信息与编码>考试复习笔记2----第二章离散信息源 三.<信息与编码>考试复习笔记2-- ...

  6. 数字图像处理:第二十二章 基于模型的编码

    第二十二章基于模型的编码 目录 引言 基于对象的编码 基于模型的编码 作业 1. 引言 为了获得更高的压缩效率并保持一定的视频质量以支持超低码率(大约10kbps)双向视频应用,不考虑内容特点的仅仅针 ...

  7. 计算机数据传输和信号传输,职称计算机基础知识第1章:数据传输的编码和调制技术...

    数据通信的技术基础 在数据通信中,要将数据从一个节点传送到另一个节点,必须将数据转换为信号 数据通信的编码技术 数字数据的编码方式有三种,不归零编码.曼彻斯特编码和差分曼彻斯特编码 1.不归零编码 N ...

  8. 深入理解Java虚拟机(第二版) 第六章:类文件结构

    第六章 类文件结构 6.1 概述 6.2 Class类文件结构 6.2.1 魔数与Class文件版本号 6.2.2 常量池 6.2.3 访问标志 6.2.4 类索引.父类索引和接口索引集合 6.2.5 ...

  9. 深入理解Java虚拟机-第六章 类文件结构

    第六章 类文件结构 6.1 概述 略 6.2 无关性的基石 因为想要实现 "Write Once,Run Anywhere"的伟大理想,Java 虚拟机被发明了出来.这些虚拟机都可 ...

最新文章

  1. 谷歌发布 RLDS,在强化学习生成、共享和使用数据集
  2. Linux CENTOS7 Linux流量监控工具-iftop 安装过程以及示例!
  3. java 手势识别_java – 如何在Android中实现手势识别
  4. 当你刷新当前Table时,刷新后如何回到你上一次所在位置呢?
  5. hive安装mysql驱动_Hadoop-2.6.0为基础的Hive安装
  6. 大数据技术之 Kafka (第 3 章 Kafka 架构深入 ) Log存储解析
  7. python open 函数漏洞_Python系列之——编写已知漏洞exp实现批量getshell
  8. 1月16日英语计算机统考,高考英语听力首次机考16日开考
  9. 求助文,缺少stubs-n32_hard.h
  10. 两台电脑用网线直连如何发送文件?
  11. 一体化3团队项目记录
  12. 遥控小车之:HTML5+ 虚拟摇杆
  13. ballerina 学习 三十二 编写安全的程序
  14. 前端实现图片快速反转替换_在canvas上实现元素图片镜像翻转动画效果的方法
  15. python时间戳转日期格式(保留毫秒级别)
  16. lt;江山美人gt;为何淡季赢得高票房
  17. 数据仓库中各个常用英文简写的代表意义
  18. 这个春节,小灰收到一件不寻常的礼物
  19. 暗黑2浴火重生zclient注册账号
  20. python和java的格斗动画_《Genesis-3D开源游戏引擎--横版格斗游戏制作教程04:技能的输入与检测》...

热门文章

  1. window mobile 防止系统休眠代码
  2. OpenGL环境下的射线选择
  3. Blockchain Meeting supporting papers
  4. eye care staff
  5. 学习笔记之与 30 家公司过招,得到了这章面试心法
  6. TCP连接的建立(二)
  7. Nagios监控服务器安装和部署
  8. 【转】 python socket向百度发送http长连接请求 并做搜索
  9. Kaneboy:临时启事:寻找在北京,熟悉SPS、ASP.NET,有两周空闲时间的朋友
  10. hdu-4539 郑厂长系列故事――排兵布阵(状态压缩)