热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WhydoesDatasetNOTserializeitsBinaryFormatproperty?(ADO.net2.0)

Ihavetestedthedatasetnew"binaryserialize"featureinADO.Net2.0.Man

I have tested the dataset new "binary serialize" feature in ADO.Net 2.0. Many articals said if we set the dataset's property "RemotingFormat" as "SerializationFormat.Binary", it can serialize itself in binary format.

OK, this propety works well, the output file is much smaller than xml style.

But i got something strange:
If i first set a dataset "RemotingFormat" as "binary" before serialize it into a file, then Deserialize it to a new dataset , the new dataset's "RemotingFormat" value is missing, it become the default value: "XML"!!! 

Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   BinaryFormatter bf = new BinaryFormatter();
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   FileStream fs 
= new FileStream(System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "ds.dat", FileMode.OpenOrCreate);
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   DataSet ds 
= GiveMeFakeData();
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   ds.RemotingFormat 
= SerializationFormat.Binary;
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   bf.Serialize(fs, ds);
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   fs.Close();
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   
// Check the deserialization performance.
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)
   fs = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "ds.dat", FileMode.Open);
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   
long nowticks = DateTime.Now.Ticks;
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   DataSet ds2 
= (DataSet)bf.Deserialize(fs);
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   
//note here!
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   
//ds2.RemotingFormat == SerializationFormat.XML!
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)

Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   
long tickstotal = DateTime.Now.Ticks - nowticks;
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   Console.WriteLine(
"Took me : " + tickstotal);
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)   fs.Close();
Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0)

Then i dig into the source code, i have found  

Why does Dataset NOT serialize its BinaryFormat property? (ADO.net 2.0) private void SerializeDataSetProperties(SerializationInfo info, StreamingContext context)


It looks like the dataset didn't serialize the RemotingFormat Property.

Anyone knows why it like this? Is it a bug or a design decision?

(have reported this issue to MS)

Updated: 2005/9/26

The ADO.net PM (Kawarjit Bedi) has replied this issue:

=== QUOTE ===

The primary motivation for doing that were:
1. Backward compatibility. If a v2.0 client recives DataSet from v2.0 server using BinaryRemoting (set at server side - the client does not know it) and then sends the same DataSet to v1.x client without resetting the RemotingFormat property to XML, it'd break the v1.x client. With the default behavior, it'd not break this case.
2. The value of RemotingFormat property is a like a parameter being passed to the remoting engine, it's more to do with the remoting operation then the DataSet's state, hence the reluctance to serialize the property.

=== END QUOTE ===

So, this is not a bug but a design decision.

Thanks Kawarjit :)


推荐阅读
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
author-avatar
喵喵妈70929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有