栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.net core ProtoBuf

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net core ProtoBuf

两种使用方式: 使用方式一:

1、nuget安装Google.Protobuf,如下图所示:

2、找到安装后的文件路径,如下图所示


3、生成代码工具,如下图所示:

其中proto.bat是批量生成脚本,代码如下:

@echo off
for %%i in (*.proto) do (
    protoc --csharp_out=./ %%i
    rem 从这里往下都是注释,可忽略
    echo From %%i To %%~ni.cs Successfully!  
)
pause

4、使用,把生成的book.cs文件复制到项目使用,代码如下:

static void Main(string[] args)
{
	book bk = new book()
	{
		Name = "第七天",
        Price = "20.00"
	};
	Test3(bk);

	Console.WriteLine("输入任意键退出程序.");
	Console.ReadKey();
}
public static void Test3(book bk)
{
	MemoryStream ms = new MemoryStream();
    bk.WriteTo(ms);

    Console.WriteLine($"ProtoBuf 序列化 book 对象结果:");
    Console.WriteLine(System.Text.Encoding.UTF8.GetString(ms.ToArray()));

    ms.Position = 0;
    book bk2 = book.Parser.ParseFrom(ms);
    bk2.Price = "25.00";
    Console.WriteLine($"ProtoBuf 反序列化成 book 对象结果:{JsonConvert.SerializeObject(bk2)}");

    ms.Close();
}
使用方式二:

1、nuget安装protobuf-net,如下图所示:

2、新建类user.cs,代码如下图所示:

namespace ProtoBuf
{
    [ProtoContract]
    public class User
    {
        [ProtoMember(1)]
        public string UserName { get; set; }
        [ProtoMember(2)]
        public string Sex { get; set; }
        [ProtoMember(3)]
        public int Age { get; set; }
        [ProtoMember(4)]
        public string Phone { get; set; }
    }
}

3、使用,代码如下图所示:

static void Main(string[] args)
{
    User user = new User()
    {
        UserName = "lijinming",
        Age = 12,
        Sex = "男",
        Phone = "1234567890"
    };
    Test1();
    Console.WriteLine("输入任意键退出程序.");
    Console.ReadKey();
}
public static void Test1(User user)
{
    using (MemoryStream ms = new MemoryStream())
    {
        Serializer.Serialize(ms, user);
        Console.WriteLine($"ProtoBuf 序列化 User 对象结果:");
        Console.WriteLine(System.Text.Encoding.UTF8.GetString(ms.ToArray()));

        ms.Position = 0;
        User user2 = Serializer.Deserialize(ms);
        user2.Age = 13;
        Console.WriteLine($"ProtoBuf 反序列化成 User 对象结果:{JsonConvert.SerializeObject(user2)}");
    }
}

附件:demo完整代码下载
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号