gpt4 book ai didi

azure-service-fabric - ProtoBuf - Azure 服务结构

转载 作者:行者123 更新时间:2023-12-04 19:28:36 25 4
gpt4 key购买 nike

我正在考虑替换 ASF 中 RPC 的默认序列化程序。这涉及实现一些接口(interface),其中一个在通过 RPC 通信的服务之间传递

 public interface IServiceRemotingResponseMessageBody
{
void Set(object response);

object Get(Type paramType);
}

由于实现需要可序列化,明显的 ProtoBuf 实现类似于
    [ProtoContract]
public class ProtoBufRemotingResponseBody : IServiceRemotingResponseMessageBody
{
[ProtoMember(1)]
public object Value { get; set; }

public void Set(object response)
{
Value = response;
}

public object Get(Type paramType)
{
return Value;
}
}

不幸的是,这失败了

No serializer defined for type: System.Object



这里有解决方法吗? System.Object 没有契约(Contract),但 OOTB DataContract序列化程序可以, MessagePack 也可以 here ,但是这些没有被模式化,这在使用 reliable collections 时会造成版本控制问题.我尝试使用通用的基本类型,但值可以是 IEnumerable<T>T等等

任何人都可以帮忙吗?
谢谢,
KH

最佳答案

目前,protobuf-net 对 object 没有很好的支持。 ,除了通过一些凌乱的黑客攻击。最简单的尝试(只是看看它是否适用于您的场景)是在该 proto-member 属性上找到“动态类型”标志并将其设置为 true。这种特定于库的 hack 将一些类型元数据刻录到数据中,以允许它与未知类型一起使用,但它远非完美。

这里的“更好”修复将涉及我找到时间来实现“任何”功能(最近添加到 Google 库中,大约在 proto3 IIRC 的时间)。这大致类似,但将以跨库的方式实现。

关于azure-service-fabric - ProtoBuf - Azure 服务结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256254/

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