2013-04-23 92 views
3

我想在服務器端使用ServiceStack,並且我想使用protobuf-net作爲ServiceStack使用的序列化系統。但是,有些客戶端不會使用ServiceStack客戶端庫。他們將直接使用protobuf-net。如何將使用protobuf的ServiceStack服務與非ServiceStack客戶端集成?

在讀取廣泛鏈接的ServiceStack協議緩衝區指令(http://stevenhollidge.blogspot.in/2012/04/servicestack-rest-with-protobuf.html)時,它分別指示對類和屬性使用[DataContract]和[DataMember(Order = i)]屬性。但是,當我閱讀protobuf-net文檔時,它指出屬性是[ProtoContract]和[ProtoMember(i)]。

如果我希望我的DTO能夠使用native protbuf-net和ServiceStack的protobuf-net包裝器,我是否需要爲每個類和屬性添加兩個屬性,或者其中一個或另一個是否足夠?

回答

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; } 
}