是的协议的缓冲区。净会是轻量级/更快于远程处理(本SerializationFormat.二)?会不会有第一类支持对于它在语言/框架的条款?即这是透明地处理与远程处理/web服务?

有帮助吗?

解决方案

我很怀疑它永远不会有直接的语言支持,甚至框架支持 - 这是它与第三方库完好操控之类的话

我自己的Java代码的端口是明确的 - 你必须调用方法序列化/反序列化。 (有RPC存根将自动序列化/反序列化,但没有RPC实现尚未。)

马克Gravell的项目与WCF适合于非常漂亮,但 - 据我“M意识到,你只需要告诉它(一次)使用协议缓冲区序列化,其余的是透明的。

在速度方面,你应该看看马克Gravell的基准页。我的代码往往比他更快的是略有下降,但两者都多,比框架其他序列化/反序列化选项快得多。应该指出的是,协议缓冲区是非常有限的,以及 - 他们不尝试序列任意类型,仅支持的。我们将尽力支持更常见的数据类型(十进制,日期时间等)在便携方式(如自己的协议缓冲消息)的未来。

其他提示

一些性能和大小的指标上 这页.我没有乔恩的统计数据上存在的时刻,只是因为页面是一个小老(乔恩:我们必须解决那!)。

重新是透明的; 格式净 可以勾到WCF通过合同;注意,它起到很好地与MTOM基本-http。这不起作用Silverlight,但是,由于Silverlight缺乏注点。如果你使用svcutil,还需要添加的一个属性类(通过一个分类)。

重新BinaryFormatter(远程);是的,这有充分的支持;你可以做到这一点只是通过一个微不足道的 ISerializable 执行情况(即刚刚叫的 Serializer 方法,同args).如果你使用 protogen 创建你的课程,然后它可以为你做:你可以启用,这在命令行通过的论点(这是不是默认为 BinaryFormatter 不工作的所有框架[CF等]).

请注意,对于非常小的物体(个单一的实例,等等)上的地方远程处理(IPC),原 BinaryFormatter 性能实际上是好的,但对于非微不足道的图表或远程链接(网络远程处理)格式网可以执行它很好。

我还应该注意到,协议的缓冲线的格式并不直接支持继承权;格式网可以欺骗本(同时保留的线的兼容性),但像序列化程序,需要声明的亚类。


为什么有两个版本?

欢乐的开放源,我猜测;-p乔恩和我有曾在联合项目之前,已经讨论了合并这两个,但事实是,他们目标的两个不同的方案:

  • dotnet-protobufs (乔恩的)是港口现有的java版本。这意味着它有一个非常熟悉的API对任何人都已经使用java版本,它是建立在典型的java构造(生成器类,不可改变的数据类等)-几C#曲折。
  • 格式净 (马克)是一个地重新实施的以下同样的二元格式(实际上,一项关键要求是就可以交换数据之间的不同格式),但是使用典型的。净语:
    • 可变数据类中(没有建设者)
    • 化件的具体细节表示,在属性(相当于 XmlSerializer, DataContractSerializer, 等)

如果你正在java和。净客户、Jon的可能是一个好的选择,对于熟悉API的两侧。如果你是纯粹的。网、格式网具有的优点-熟悉。净式API,但也:

  • 你是不是 强迫 将合同第一(虽然可以,和一个码-发电机提供)
  • 你可以重新使用现有的对象(事实上, [DataContract][XmlType] 课程往往可以使用没有任何变化)
  • 它完全支持继承(其它实现了在线通过欺骗封)(可能是唯一一个缓冲区协议的执行?注意,分类必须事先申报)
  • 这超出它的方式插入与利用核心。净工具(BinaryFormatter, XmlSerializer, WCF, DataContractSerializer),使它的工作直接作为一个远程引擎。这大概是一个相当大的分裂主java干为乔恩的港口。

重新融合;我认为我们都是开放的,但它似乎不太可能你会想要两个功能组合,因为它们的目标这样的不同的要求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top