WCF 第六章 序列化与编码 编码选择
文本编码与二进制编码
在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 第六章 序列化与编码 编码选择相关推荐
- WCF 第六章 序列化和编码之DataContractJsonSerializer
DataContractJsonSerializer支持使用以JavaScript 对象标记作为序列化格式并添加到.NET 3.5 Framework 中.如果从一个使用JavaScript 的网络应 ...
- 【H.264/AVC视频编解码技术】第六章【指数哥伦布编码】
H264中语法元素描述符 指数哥伦布 (Exponential-Golomb) 熵编码 指数哥伦布编码同哈夫曼编码一样,都是变长编码. 二者的显著区别: 信源相关性:哈夫曼编码依赖于信源的概率分布:指 ...
- WCF 第四章 绑定 绑定元素
WCF在预设绑定中提供了很多信道和编码器.这些信道提供了在自定义绑定中使用的绑定元素.这一部分提供WCF内部绑定元素列表以及它们的使用方面. 传输 下面的列表是信道以及它们相关的绑定类,绑定扩展和它们 ...
- 第六章 非编码RNA鉴定
第六章 非编码RNA鉴定 阅读量: 154 主要为RNA-seq相关知识,部分内容作笔记自查使用.如有错误或遗漏还请海涵,可评论或邮箱联系. 最后修改时间:2020-09-07 14:38:07 星 ...
- 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量(考点在连续信道容量)
系列文章链接目录 一.<信息与编码>考试复习笔记1----第一章概论 二.<信息与编码>考试复习笔记2----第二章离散信息源 三.<信息与编码>考试复习笔记2-- ...
- 数字图像处理:第二十二章 基于模型的编码
第二十二章基于模型的编码 目录 引言 基于对象的编码 基于模型的编码 作业 1. 引言 为了获得更高的压缩效率并保持一定的视频质量以支持超低码率(大约10kbps)双向视频应用,不考虑内容特点的仅仅针 ...
- 计算机数据传输和信号传输,职称计算机基础知识第1章:数据传输的编码和调制技术...
数据通信的技术基础 在数据通信中,要将数据从一个节点传送到另一个节点,必须将数据转换为信号 数据通信的编码技术 数字数据的编码方式有三种,不归零编码.曼彻斯特编码和差分曼彻斯特编码 1.不归零编码 N ...
- 深入理解Java虚拟机(第二版) 第六章:类文件结构
第六章 类文件结构 6.1 概述 6.2 Class类文件结构 6.2.1 魔数与Class文件版本号 6.2.2 常量池 6.2.3 访问标志 6.2.4 类索引.父类索引和接口索引集合 6.2.5 ...
- 深入理解Java虚拟机-第六章 类文件结构
第六章 类文件结构 6.1 概述 略 6.2 无关性的基石 因为想要实现 "Write Once,Run Anywhere"的伟大理想,Java 虚拟机被发明了出来.这些虚拟机都可 ...
最新文章
- 谷歌发布 RLDS,在强化学习生成、共享和使用数据集
- Linux CENTOS7 Linux流量监控工具-iftop 安装过程以及示例!
- java 手势识别_java – 如何在Android中实现手势识别
- 当你刷新当前Table时,刷新后如何回到你上一次所在位置呢?
- hive安装mysql驱动_Hadoop-2.6.0为基础的Hive安装
- 大数据技术之 Kafka (第 3 章 Kafka 架构深入 ) Log存储解析
- python open 函数漏洞_Python系列之——编写已知漏洞exp实现批量getshell
- 1月16日英语计算机统考,高考英语听力首次机考16日开考
- 求助文,缺少stubs-n32_hard.h
- 两台电脑用网线直连如何发送文件?
- 一体化3团队项目记录
- 遥控小车之:HTML5+ 虚拟摇杆
- ballerina 学习 三十二 编写安全的程序
- 前端实现图片快速反转替换_在canvas上实现元素图片镜像翻转动画效果的方法
- python时间戳转日期格式(保留毫秒级别)
- lt;江山美人gt;为何淡季赢得高票房
- 数据仓库中各个常用英文简写的代表意义
- 这个春节,小灰收到一件不寻常的礼物
- 暗黑2浴火重生zclient注册账号
- python和java的格斗动画_《Genesis-3D开源游戏引擎--横版格斗游戏制作教程04:技能的输入与检测》...