.NET 中快速且紧凑的对象序列化

2023-11-24

我想使用对象序列化在网络之间进行通信Mono服务器和 Silverlight 客户端。 序列化的空间效率和速度非常重要,因为服务器将托管多个实时游戏。

我应该使用什么技术? BinaryFormatter 为本应用程序中不需要的序列化类(版本、区域性、类名、属性名等)添加了大量开销。

我该怎么做才能提高空间效率?


您可以使用协议缓冲区。我正在将所有序列化代码从具有压缩功能的 BinaryFormatter 更改为 Protocol Buffers,并获得了非常好的结果。它在时间和空间上都更加高效。

有两个 .NET 实现乔恩·斯基特 and 马克·格拉维尔.

Update:可以找到官方.NET实现here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中快速且紧凑的对象序列化 的相关文章

  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Guid.NewGuid().GetHashCode() 用于数据库

    这对于用作数据存储 SQL Server 的 ID 可靠吗 我会使用 guid 但我更喜欢数字值 A guid更有可能代表一个记录uniquely than a numeric value 随着 GUID 确保全球唯一性 GUID 可以跨数
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 将键码转换为相关的显示字符

    在 C Windows Forms 项目中 我有一个不提供 KeyPressed 事件的控件 它是一个 COM 控件 ESRI 映射 它仅提供 KeyUp 和 KeyDown 事件 包含关键事件参数 http msdn microsoft
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • 如何在 MS Code 合约中查找“屏蔽”断言

    我的 CodeContracts 错误列表中有以下消息级条目 CodeContracts 检查了 410 个断言 404 个正确 6 个被屏蔽 我不明白 什么是掩盖断言 如何找到它提到的 6 我是否应该关心他们 抱歉没有发布代码 我不知道如
  • 分隔字符串中的十六进制转义序列

    字符串常量可以吗 foo x01 bar 写成单个字符串文字 同时保留十六进制表示法 和 foo x01bar 转义序列似乎被解释为 x01ba因为我收到警告 十六进制转义序列超出范围 foo x01 bar is字符串文字 C 标准规定
  • 如何在asp.net中动态生成无序列表?

    我想生成一个无序列表 其中包含用于在数据库中显示图像的标签 我查看了项目符号列表 但它不适用于图像 我如何从数据库中的结果动态生成它 例如 如果我在数据库中有 6 个图像 那么我希望生成的列表必须如下所示 ul li img src Res
  • 根据Python中的一组索引将列表拆分为子列表

    我有一个类似于下面的列表 a b c d e f g h i j 我想用索引列表分隔 1 4 在这种情况下 它将是 a b c d e f g h i j As 1 a 1 4 b c 4 d e f g h i j 情况2 如果索引列表是
  • 如何使用 Vuelidate 验证密码?

    问候 我需要验证密码表格 除了必填字段外 必须至少有 1 个大写字母 至少 1 个小写字母 至少 1 个数字且至少包含以下字符之一 我正在使用这个包https vuelidate js org EDIT 或正则表达式 只需添加一个自定义函数
  • 使用 python 计算卷上剩余的跨平台空间

    我需要一种方法来在 Linux Windows 和 OS X 上使用 python 来确定磁盘卷上的剩余空间 我目前正在解析各种系统调用 df dir 的输出来完成此操作 有更好的方法吗 import ctypes import os im
  • 如何从浏览器控制台访问和测试 AngularJS 过滤器?

    给定一个测试过滤器 这样说 大写 过滤器将每个单词的第一个字母大写 return function input return input input replace W s g function txt return txt charAt
  • Visual Studio 构建失败:无法将 exe 文件从 obj\debug 复制到 bin\debug

    Update 可以找到重现此错误的示例项目在 Microsoft Connect 上 我还测试并验证了中给出的解决方案下面接受的答案致力于该示例项目 如果此解决方案不适合您 则您可能遇到了不同的问题 属于单独的问题 这是之前在 Stack
  • 打印时如何避免最后出现多余的空白页?

    我正在使用 CSS 属性 如果我使用page break after always 它之前会打印一个额外的空白页 如果我使用page break before always 之后会打印一个额外的空白页 我怎样才能避免这种情况
  • 使用 java 将电子邮件转换为其原始格式

    到目前为止我一直尝试创建一个类型的对象MimeMessage使用JavaMail api 然后获取其原始表示 但没有成功 我唯一能获得的是原始表示content电子邮件的内容 但不包括标题 主题或收件人 我对任何建议 任何 java 库感兴
  • 如何扩展代码点火器控制器类?

    在我的 CI system libraries 目录中 我有一个名为 DD Controller php 的新类 该文件如下所示
  • Python 中的“@”是什么意思?

    什么是 在 Python 中是什么意思 例子 login required etc 这是装饰器语法 函数定义可以由一个或多个装饰器表达式包装 定义函数时 在包含函数定义的范围内评估装饰器表达式 结果必须是可调用的 它是用函数对象作为唯一参数
  • 给定一个函数记录,以及该函数所作用的类型的数据记录,如何通用地应用该函数记录?

    标题稍微不准确 因为我的特定情况涉及更多 而不是第一个记录中的函数直接作用于第二个记录中的值 而是作用于值的列表 或其他可遍历的 我们可以假设 对特定字段的应用程序的结果返回的值与该字段中的类型相同 如果这能给我们带来什么好处的话 一个例子
  • 在启动画面期间加载所有场景

    我的移动 2D Unity 游戏中有多个场景 我想在启动屏幕中加载所有场景 以便场景传递流畅 我怎样才能做到这一点 如果我这样做 我是否需要更改 Application LoadScene 方法 我可以使用什么方法 我是否需要更改 Appl
  • TDM-GCC w64 脚本将 Windres 更改为 32 位?

    尝试让 TDM GCC 4 7 1 在 XP SP3 上运行 我现在只需要一个 c 32 位版本 看来 Windres 的格式不正确 我的 rc 文件构建失败 x86 64 w64 mingw32 g exe Wall m32 s D M
  • 在 WPF 文本框中使用箭头键 (C#)

    有没有办法捕获 WPF TextBox 中的向上 向下箭头键 System Windows Controls Textbox 并允许他们更改文本 我读过有关覆盖ProcessCmdKeyWindows 窗体文本框的方法 System Win
  • 使用 Django South 重置迁移历史记录的推荐方法是什么?

    我已经使用 South 0 7 和 Django 1 1 2 积累了相当多的迁移 这些迁移开始在我的单元测试中消耗相当多的时间 我想重置基线并开始一组新的迁移 我已经审查了南方文档 完成了通常的 Google Stackoverflow 搜
  • Git 预提交挂钩在文件中查找文本

    我正在编写一个 git 预提交挂钩来检查任何暂存文件是否包含不允许的文本 如果是这种情况则中止 不是这方面的专家 到目前为止我已经得到了这个 git diff cached name status while read x file do
  • JMeter 和带有 SSL 的 HTTP 代理服务器的问题

    我们正在使用 JMeter 2 4 并尝试使用 HTTP 代理服务器来捕获测试计划 尝试 HTTPS 欺骗 未勾选 我们在 JMeter 日志中得到的错误是 2010 08 02 14 46 02 错误 jmeter protocol ht
  • .NET 中快速且紧凑的对象序列化

    我想使用对象序列化在网络之间进行通信Mono服务器和 Silverlight 客户端 序列化的空间效率和速度非常重要 因为服务器将托管多个实时游戏 我应该使用什么技术 BinaryFormatter 为本应用程序中不需要的序列化类 版本 区