创建类 :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel.Description;

using System.Xml;

using System.Runtime.Serialization;

namespace Kingge.Mini.Network

{

public class NetDataContractSerializerOperationBehavior:DataContractSerializerOperationBehavior

{

public NetDataContractSerializerOperationBehavior(OperationDescription operationDescription)

: base(operationDescription)

{

}

public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns, IList<Type> knownTypes)

{

return new NetDataContractSerializer(name,ns);

}

public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes)

{

return new NetDataContractSerializer(name, ns);

}

}

}

客户端:

using (ChannelFactory<T> factory = new ChannelFactory<T>(binding,adress))

{

foreach (OperationDescription op in factory.Endpoint.Contract.Operations)

{

op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

}

...... // do something

}

服务端:

using (ServiceHost host = new ServiceHost(obj))

{

foreach (ServiceEndpoint ep in host.Description.Endpoints)

{

foreach (OperationDescription op in ep.Contract.Operations)

{

op.Behaviors.Remove<DataContractSerializerOperationBehavior>();

op.Behaviors.Add(new NetDataContractSerializerOperationBehavior(op));

}

}

host.Open();

Console.Read();

}

好处提高了序列化能力(例如如此可以序列化Type类型),缺点降低了数据接口的松耦合性.

转载于:https://www.cnblogs.com/kingge/archive/2011/03/14/1983573.html

替换WCF默认序列化方式相关推荐

  1. redis-springboot-redistemplate更改序列化方式

    redisTemplate 默认的序列化方式为 jdkSerializeable, StringRedisTemplate的默认序列化方式为StringRedisSerializer 可以通过手动配置 ...

  2. 多种方式实现动态替换Android默认桌面Launcher

    多种方式实现动态替换Android默认桌面Launcher 文章目录 多种方式实现动态替换Android默认桌面Launcher 背景简介 技术方案 三种方案 方案一 方案二 方案三 风险 背景简介 ...

  3. Redis序列化、RedisTemplate序列化方式大解读,介绍Genericjackson2jsonredisserializer序列化器的坑

    前言 上一篇已经介绍了优雅的操作Redis: [小家Spring]Spring Boot中使用RedisTemplate优雅的操作Redis,并且解决RedisTemplate泛型注入的问题.本篇着重 ...

  4. 使用Kryo的序列化方式提升Netty性能

    2019独角兽企业重金招聘Python工程师标准>>> 为什么选择Kryo? 首先,Kryo的序列化方式,在性能方面是比较好的,和Protobuf差不多,比Java原生的序列化方式快 ...

  5. java kryo 序列化_java中的序列化方式及dubbo使用kryo序列化

    java中的序列化方式: 1. 自带序列化  ObjectInputSteam. ObjectOutStream等 2. hession2 3. json ,xml等格式 4.kryo 5.FST - ...

  6. Redis - RedisTemplate及4种序列化方式深入解读

    文章目录 概述 RedisTemplate StringRedisTemplate RedisSerializer 序列化 接口 JDK 序列化方式 (默认) String 序列化方式 JSON 序列 ...

  7. Java序列化 - 分析不同序列化方式的优劣

    1.序列化简介 1.1 定义 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据 1.2 序列化的目的 通过序列 ...

  8. springboot系列——redisTemplate和stringRedisTemplate对比、redisTemplate几种序列化方式比较

    文章目录 一.redisTemplate和stringRedisTemplate对比 1.StringRedisTemplate 2.RedisTemplate 二.redisTemplate序列化方 ...

  9. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

最新文章

  1. Find Large Files in Linux
  2. Java int[] integer[] List之间的转换
  3. 在DataGridView控件中加入ComboBox下拉列表框的实现
  4. [XUPT_ACM]寒假第一次比赛题解
  5. sklearn 特征工程
  6. ACM MM 2018论文概述:基于多粒度监督的图像语义物体协同标注
  7. 使用Java读取 “Python写入redis” 的数据踩坑记录
  8. jQuery系列(十四):jQuery中的ajax
  9. python爬取b站排行榜_实时爬取B站排行榜并保存为表格——每周一个爬虫小教程系列...
  10. 三维视觉前沿进展年度报告
  11. 算法移植优化(一)android 学习笔记
  12. 云图说|云上应用监控神器——应用性能监控APM2.0
  13. Linux7没有网卡,centos7安装后缺少网卡如何解决?
  14. 推荐几个我珍藏的公众号~超级无敌!
  15. SELECT 基本语法结构
  16. 全国电子设计大赛资料打包网盘10G
  17. 音频剪辑软件哪个好用
  18. Python爬虫爬取个人主页信息(拖拽验证码验证)+Linux部署
  19. Android Adb 连接海马玩模拟器
  20. 花呗接入央行征信系统!会影响贷款吗?

热门文章

  1. 错误提示没了_ESC错误排查-系统启动篇
  2. Linux shell 学习笔记(2)— 监测程序、磁盘空间和处理文件(ps -ef、top、kill、df、du 、grep、tar)
  3. Python 典型错误及关键知识点
  4. LeetCode简单题之词典中最长的单词
  5. TVM 优化 ARM GPU 上的移动深度学习
  6. GStreamer跨平台多媒体框架
  7. 单目和多目视觉统一标定
  8. YOLOv4实用训练实践
  9. ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
  10. 斯坦福大学李飞飞团队图像分类课程笔记