c#中的二进制序列化:结果大小和性能
我试图理解并决定解决我的问题的最佳方法。 我有一个xsd,它表示我与客户机商定的信息模式 现在,在我的应用程序(c#,.net3.5)中,我使用并使用一个对象,该对象已从根据xsd模式创建的xml中反序列化 当我用数据填充对象时,我希望将其传递给另一个应用程序,并将其存储在数据库中。我有两个问题:c#中的二进制序列化:结果大小和性能,c#,serialization,xsd,C#,Serialization,Xsd,我试图理解并决定解决我的问题的最佳方法。 我有一个xsd,它表示我与客户机商定的信息模式 现在,在我的应用程序(c#,.net3.5)中,我使用并使用一个对象,该对象已从根据xsd模式创建的xml中反序列化 当我用数据填充对象时,我希望将其传递给另一个应用程序,并将其存储在数据库中。我有两个问题: 我想序列化对象以快速传递给另一个应用程序:更好的是二进制序列化还是xml序列化 不幸的是,在db中,我有一个有限大小的字段来存储信息,所以我需要对序列化对象进行某种压缩。二进制序列化会创建比xml序列
BinaryFormatter
常见的版本控制问题),然后尝试使用GZipStream
压缩它。如果压缩版本更小:存储它(和一个标记,可能是一个前导,上面写着“我被压缩了”)。如果压缩版本比原始版本大,则存储原始版本(同样带有序言)
下面是常见.NET序列化程序性能(速度和大小)的最新分类:“更好”取决于您的需要。二进制序列化比xml序列化更小更快,但可以手动读取和更改xml文件。只有在必须压缩数据的情况下才能回答这个问题。你是唯一知道物体大小的人。下面是一个可用于压缩的类:如果您的应用程序已经在为这些对象使用xml序列化,那么这似乎是最好的方案。为了正确回答您的问题,我们需要知道这些对象有多大(例如序列化时生成的XML文件的长度),您要传递到的其他应用程序有多远(即计算机之间的带宽),以及您是否需要获取和存储到数据库的性能要求(因为从本质上讲,压缩在进出过程中需要时间。您说您有一个“有限大小的字段”要存储信息-字段的数据类型是什么?如果它是字符串字段,那么您可能很难在其中存储二进制数据…@user1567896:谢谢!将对象存储在内存中,然后在beofre将其存储在db上的那一刻,我希望以最快的速度和较小的输出。在这种情况下,根据您的reply@DanPuzey:不幸的金枪鱼这是一个字符串字段,在二进制表示完成后,我(以某种方式或另一种方式)将其转换为字符串表示(以及再次转换为string->object之后)