gpt4 book ai didi

c# - 通过 clrmq 进行序列化和反序列化

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:35 24 4
gpt4 key购买 nike

我目前正在使用 ZeroMQ 的 clrmq 绑定(bind)在 C# 中设计网络包装器。

我的问题是我在想办法做反序列化和序列化透明地;也就是说,网络包装器可以在不知道或不关心其类型的情况下将任何对象作为字节传输,并且可以在另一端反序列化为正确的类型。

我有一个类(class)继承权如下

public interface ITransmission
{
Type Type { get; }
}

public abstract class Transmission<T> : ITransmission
{
public Type Type { get { return typeof(T); } }
}

这个想法是序列化已经实现传输类型的对象;传输它们作为字节通过 clrmq 并在另一端反序列化它们

我理想的解决方案是

  1. 能够将没有属性修饰或属性修饰非常少的任何类型的对象序列化为字节数组格式(因此上述想法使用 Transmission 对象)
  2. 能够将接收到的字节数组格式反序列化为类型对象

人们目前正在使用或做什么来透明地解决序列化和反序列化的问题?速度在某些时候会成为一个因素,但此时,我只是想找出有哪些选择。

这里隐含的限制是网络库需要引用所有包含要传输的类型的程序集吗?

此外,另一个问题是这是否是一种可行的方法,或者服务器和客户端是否应该从一开始就采用强类型?

感谢阅读。

最佳答案

用户 dferraro 的解决方案很好。但我认为现在可以通过 C# 中的序列化做得更好很多。我强烈建议您将 ZeroMQ 作为传输与 Google 的 Protobuf 序列化和消息传递组件框架结合使用。

看看 Protobuf here 的 .NET 实现.我不会详细介绍它的实现方面,因为它有很好的文档记录,而且 StackOverflow 上已经有很多关于它的好问题。事实上,Protobuf 的 C# 实现的作者 - Marc Gravell - 经常闲着,会用 protobuf-net 回答任何问题标签。

关于c# - 通过 clrmq 进行序列化和反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com