如何使用protobuf将ServiceStack服务与非ServiceStack客户端集成?

时间:2013-04-23 19:50:47

标签: c# servicestack protocol-buffers protobuf-net

我想在服务器端使用ServiceStack,我想使用protobuf-net作为ServiceStack使用的序列化系统。但是,某些客户端不会使用ServiceStack客户端库。他们将直接使用protobuf-net。

在阅读广泛链接的ServiceStack协议缓冲区howto(http://stevenhollidge.blogspot.in/2012/04/servicestack-rest-with-protobuf.html)时,它分别表示在类和属性上使用[DataContract]和[DataMember(Order = i)]属性。但是,当我阅读protobuf-net文档时,它表示属性是[ProtoContract]和[ProtoMember(i)]。

如果我希望我的DTO可以同时使用本机protbuf-net和ServiceStack的protobuf-net包装器,我是否需要将这两个属性添加到每个类和属性中,或者一个或另一个是否足够?

1 个答案:

答案 0 :(得分:2)

ProtoBuf需要从Properties到数字索引的映射,both of the options you've specified are equivalent这样做的方法:

[DataContract]
public class Dto
{
    [DataMember(Order=i)]
    public string PropertyName { get; set; }
}

[ProtoContract]
public class Dto
{
    [ProtoMember(i)]
    public string PropertyName { get; set; }
}