Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于XSD的二进制序列化_Java_Serialization_Xsd_Binary Serialization - Fatal编程技术网

Java 基于XSD的二进制序列化

Java 基于XSD的二进制序列化,java,serialization,xsd,binary-serialization,Java,Serialization,Xsd,Binary Serialization,您好,我正在寻找一种用于java的二进制序列化: -对模式使用xsd -输出非常小的字节流 -字节流不应包含字段名和数据类型 -POJO应该像gor jaxb一样生成 -很高兴拥有:java脚本的植入 有人知道这方面的解决方案吗?如果您使用的是XSD模式,传统的期望是将XML序列化到XML或从XML序列化。这不是一个非常小的字节流;纯文本表示二进制数据整型、浮点型等效率很低 然而,有一个选择。XSD模式和ASN.1模式或多或少是可互换的。国际电联甚至定义了两者之间的官方翻译。有一些工具可以在两者

您好,我正在寻找一种用于java的二进制序列化: -对模式使用xsd -输出非常小的字节流 -字节流不应包含字段名和数据类型 -POJO应该像gor jaxb一样生成 -很高兴拥有:java脚本的植入


有人知道这方面的解决方案吗?

如果您使用的是XSD模式,传统的期望是将XML序列化到XML或从XML序列化。这不是一个非常小的字节流;纯文本表示二进制数据整型、浮点型等效率很低

然而,有一个选择。XSD模式和ASN.1模式或多或少是可互换的。国际电联甚至定义了两者之间的官方翻译。有一些工具可以在两者之间进行转换

为什么这是相关的?使用ASN.1,您可以访问各种不同的导线格式。有很多二进制的,也有文本的,包括XML和JSON。重要的是,其中一个二进制编码规则是超对齐压缩编码规则,它将使用最小比特数来表示发送的数据

例如,假设您有一个包含整数字段的类,并且您将其值限制在0到7之间。对于该字段,uPER仅使用3位

您可以使用的是一个XSD模式,由ASN.1编译器OSS转换为ASN.1并编译,或者由ASN.1编译器Obj Sys直接编译,生成Java POJO类,这些类可以序列化为ASN.1的超级wireformat和所有其他二进制格式,以及XML和JSON,取决于ASN.1编译器的使用情况。这与jaxb/xjc的工作方式类似

我在上一段中建议的工具需要,AFAIK,来自Objective Systems obj-sys.com或OSS Nokalva www.OSS.com的ASN.1专有编译器和工具,它们不是免费的。我是这两种工具的客户,与它们没有任何关联。我认为XSDASN1模式有一个免费的在线转换器,还有一些免费的ASN1编译器,尽管它们通常以C而不是Java为目标


链接:,

关于XSD、ASN.1等,还有其他可用的选项,但可能意味着删除XSD模式并使用其他内容

谷歌协议缓冲区

Google协议缓冲区有Java和大量其他绑定,而GBP wireformat是二进制的。它的数据大小不如ASN.1的uPER,但肯定比XML文本小。看见它有自己的模式语言,据我所知,XSD和GPB之间没有转换器

Capn原型

另一个有趣的选项看到了,同样是二进制格式。它的大小不会超过uPER,但序列化/反序列化速度很快,至少在C/C++中是这样。同样,我知道它的模式语言和XSD之间没有转换