问题标签 [bond]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
serialization - Microsoft 的 Bond 和 Google 的 Protocol Buffers 之间的区别
最近(2015 年 1 月)Microsoft 开源Bond,他们用于处理模式化数据的框架。在许多方面,它类似于 Google 的Protocol Buffers。
两者最大的区别是什么?有什么优点和缺点,也就是说,在哪些情况下我想使用一种,而不是另一种?当然,我不是在谈论明显的事情,比如与其他项目的一致性或已经存在的 API,而是两个库的特性。举个例子,bonded<T>
如果我没记错的话,Bond 有它,它在 Protocol Buffers 中没有对应物。
c# - 使用 Bond 反序列化 xml 抛出 System.IO.InvalidDataException :意外的节点类型
我使用以下代码与Bond玩了一下:
两个样本都输出预期的 xml:
反序列化抛出时两者都失败System.IO.InvalidDataException
:意外的节点类型
真的不知道在哪里寻找错误,建议?
json - 为什么 Bond 映射的 JSON 序列化是数组而不是字典?
假设我有一个 Bond 结构,例如
当我使用 将此对象的实例序列化为 JSONSimpleJsonWriter
时,我得到以下信息
请注意,这phone_numbers
是一个字符串数组。
但我会期待更多这样的事情:
wherephone_numbers
是一个有两个成员的对象。
这是怎么回事?
xsd - 有没有办法从 XSD 架构生成 Microsoft Bond 架构?
我想尝试 Microsoft Bond 架构。我已经有一个很大的 XSD 文件,我不想手动创建一个 Bond 文件。Bond 编译器是否提供任何 API 来将 XSD 转换为 Bond?
c# - Representing C# TimeSpan in Bond
Is there an equivalent of C#'s TimeSpan
in the Bond type system? If not, how can I interoperate between TimeSpan
and a field in a Bond struct?
c# - 在 C# 项目中使用 Microsoft Bond
是否有在 C# 项目中引用 Microsoft Bond 架构文件的标准方法?
bond - Microsoft Bond 中的会员编号是什么意思?
使用Microsoft Bond(特别是 C# 库),我看到每当定义 Bond 结构时,它看起来像这样:
这些数字 (0, 5, ...) 是什么意思?
他们在继承时需要特殊处理吗?(我是否需要确保我不会覆盖在我的祖先中定义的具有相同编号的成员?)
c# - 通过 ZeroMQ 进行 MS Bond 序列化的运行时“EndOfStreamException”错误
首先,值得一提的是,在单个 F# 解决方案中,Bond消息的序列化和反序列化工作正常。但是,我无法正确处理通过 ZeroMQ 发送和/或接收消息。
以下程序的订阅方存在运行时错误。.bond 文件是使用bond 编译器定义和编译的。然后从 C# 创建一个 dll 以从 F# 调用。然后我有两个 F# 程序。一个通过 tcp 套接字发布序列化数据,另一个是订阅者。当在 sub 上接收到消息时,尝试 Unmarshal 原始数据的行是导致运行时错误的行。任何人都可以看到这个的原因吗?
[编辑] 根据 Fyodor 的评论,我在发布者方面进行了更改,从而更改了订阅者方面的错误。所以这个错误可能与我如何打包和解包信息有关。
这是 .bond 文件
这是发布者:
这是订户:
bond - Microsoft Bond 架构演变最佳实践
Microsoft Bond 是否有一些关于架构如何随时间演变的最佳实践?我想确保我们遵循最佳实践,以便我们有两种方式的兼容性(即允许我们的 Bond 类型将旧版本演变为当前版本,以及允许从新版本转换回旧版本的向后兼容性)。我没有在文档中看到这一点(例如https://microsoft.github.io/bond/manual/bond_cs.html或https://microsoft.github.io/bond/manual/compiler.html#idl -syntax),尽管其他序列化框架(如 Avro)在其文档中明确详细说明了这一点。
值得一提的是,我们使用 .NET (C#/F#) 编写并打算最初使用 CompactBinaryWriter 和 CompactBinaryReader 格式。
例如,我想象一些沿着这些方向的指导:
- 由于字段序号用于字段解析,而不是直接使用名称(SimpleJSON 除外),因此字段名称可能会随时间而变化。我相信这是真的,是吗?
- 添加新的“必填”字段需要您为该字段提供默认值
- 删除新版本中的字段是可以的,前提是旧版本分配了默认值
- 改变字段的类型呢?例如,一个字段可以从版本 1 中的字符串字段更改为版本 2 中的 int64 吗?它可以从字符串更改为自定义联合(带有可选字段的自定义类型)吗?
- 还有其他建议吗?
谢谢!
如果有针对此类 Microsoft Bond 问题的任何活跃论坛社区,我也会感兴趣,但我找不到...