protobuf对象二进制序列化存储(详解)
发布时间 - 2026-01-10 23:04:06 点击率:次首先下载protobuf库,可以用Nuget。

demo:
using System;
namespace Tools
{
public class BufHelp
{
/// <summary>
/// 对象锁
/// </summary>
private readonly static Object Locker = new Object();
///// <summary>
///// 读写分离锁
///// </summary>
///// <remarks>aaaaa</remarks>
//private static ReaderWriterLockSlim rwl = new ReaderWriterLockSlim();
/// <summary>
/// 序列化-表字段业务信息
/// </summary>
public static bool ProtoBufSerialize<T>(T model, string filename) where T : class
{
try
{
string binpath = Config.KeyCenter.KeyBaseDirectory + @"Config\";
if (!System.IO.Directory.Exists(binpath))
System.IO.Directory.CreateDirectory(binpath);
lock (Locker)
{
using (var file = System.IO.File.Create(binpath + filename))
{
ProtoBuf.Serializer.Serialize<T>(file, model);
return true;
}
}
}
catch
{
return false;
}
}
public static T ProtoBufDeserialize<T>(string filename) where T : class
{
var dbpath = Config.KeyCenter.KeyBaseDirectory + @"Config\" + filename;
if (System.IO.File.Exists(dbpath))
{
lock (Locker)
{
using (var file = System.IO.File.OpenRead(dbpath))
{
var result = ProtoBuf.Serializer.Deserialize<T>(file);
return result;
}
}
}
return default(T);
}
}
}/// <summary>
/// 序列化
/// </summary>
public static string Serialize<T>(T t) where T : class
{
using (MemoryStream ms = new MemoryStream())
{
ProtoBuf.Serializer.Serialize<T>(ms, t);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
/// <summary>
/// 反序列化
/// </summary>
public static T DeSerialize<T>(string content) where T : class
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
T t = ProtoBuf.Serializer.Deserialize<T>(ms);
return t;
}
}
以上这篇protobuf对象二进制序列化存储(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# protobuf
# 序列化
# 详解nodeJS之二进制buffer对象
# .net中如何以纯二进制的形式在内存中绘制一个对象
# 给大家
# 可以用
# 希望能
# 这篇
# 小编
# 大家多多
# readonly
# Locker
# Object
# static
# summary
# lt
# private
# gt
# ProtoBufSerialize
# bool
# string
# model
# aaaaa
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
googleplay官方入口在哪里_Google Play官方商店快速入口指南
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
5种Android数据存储方式汇总
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Python文本处理实践_日志清洗解析【指导】
Laravel如何处理表单验证?(Requests代码示例)
如何在阿里云服务器自主搭建网站?
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
javascript中对象的定义、使用以及对象和原型链操作小结
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
如何在Tomcat中配置并部署网站项目?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Python文件操作最佳实践_稳定性说明【指导】
Laravel如何创建自定义中间件?(Middleware代码示例)
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
深入理解Android中的xmlns:tools属性
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
如何快速生成ASP一键建站模板并优化安全性?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
轻松掌握MySQL函数中的last_insert_id()
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
深圳网站制作培训,深圳哪些招聘网站比较好?
Python制作简易注册登录系统
如何构建满足综合性能需求的优质建站方案?
详解jQuery中的事件
昵图网官方站入口 昵图网素材图库官网入口
Laravel如何使用Blade组件和插槽?(Component代码示例)
高端网站建设与定制开发一站式解决方案 中企动力
如何快速搭建高效香港服务器网站?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何快速生成凡客建站的专业级图册?
JavaScript如何操作视频_媒体API怎么控制播放
如何在自有机房高效搭建专业网站?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何快速查询网址的建站时间与历史轨迹?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
jquery插件bootstrapValidator表单验证详解
,网页ppt怎么弄成自己的ppt?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
非常酷的网站设计制作软件,酷培ai教育官方网站?
下一篇: 清远网站制作公司,清远上牌怎么预约?
下一篇: 清远网站制作公司,清远上牌怎么预约?

