使用Protobuf.Net集成Entityspaces的建议

时间:2012-12-14 04:36:28

标签: .net protobuf-net entityspaces

通常当我在做基于网络的工作时,我使用Protobuf来移动网络周围的自定义对象,这些对象是为正在构建的系统建模的,以便从其他系统移动我的数据/组合对象。

我目前正在参与增强一个使用基于专有文本的协议的项目,该协议主要使用文本将数据和实体空间的序列化(,|和[]表示法)作为数据访问层。

我要问的问题是我应该创建另一层对象,这些对象提供从Entityspaces对象的“load”数据填充的Protobuf网络对象,或者我应该将必要的protobuf标签添加到实体空间对象(它们从数据库中自动生成,目前没有)

1 个答案:

答案 0 :(得分:0)

可以去任何一种方式。如果您需要将protobuf数据编码为文本格式:使用base-64,它不方便地使用| / [ / ]

如果您更喜欢对当前未归属的对象进行protobuf编码,那么也有办法:如果数据库中的类型生成为partial类,那么最简单的就是你可以做的(在另一个代码文件中):

namespace The.Same.Namespace {
    [ProtoContract]
    [ProtoPartialMember(1, "Foo")]
    [ProtoPartialMember(2, "Bar")]
    ...
    partial class SomeEntity {}
}

其中FooBar是您要序列化的成员。或者,您可以在运行时配置整个模型:

RuntimeTypeModel.Default.Add(typeof(SomeEntity), false).Add("Foo", "Bar");

(这是一个非常基本的配置;有更多微妙的选项可用)