2013-04-23 3 views
3

Я хотел бы использовать ServiceStack на стороне сервера, и я хотел бы использовать protobuf-net в качестве системы сериализации, используемой ServiceStack. Однако некоторые клиенты не будут использовать клиентские библиотеки ServiceStack. Они будут использовать protobuf-net напрямую.Как интегрировать сервис ServiceStack с использованием protobuf с клиентом non-ServiceStack?

При чтении широко распространенных буферов протокола ServiceStack (http://stevenhollidge.blogspot.in/2012/04/servicestack-rest-with-protobuf.html) он указывает на атрибуты [DataContract] и [DataMember (Order = i)] соответственно для классов и свойств. Однако, когда я читаю документацию protobuf-net, это указывает на атрибуты [ProtoContract] и [ProtoMember (i)].

Если я хочу, чтобы мои DTO работали как с родной protbuf-net, так и с оболочкой protobuf-net ServiceStack, мне нужно добавить оба атрибута к каждому классу и свойству или будет достаточно или достаточно одного или другого?

ответ

2

Protobuf требует отображения свойств для числовых индексов, 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; } 
} 
Смежные вопросы