Рекомендации по интеграции пространств сущностей с Protobuf.Net

Обычно, когда я выполняю сетевую работу, я использую Protobuf для перемещения пользовательских объектов по сети, которые смоделированы для системы, которая создается для перемещения моих данных / составных объектов из других систем.

В настоящее время я участвую в улучшении проекта, в котором используется собственный текстовый протокол, который преимущественно использует текст для сериализации (, | и [] нотаций) данных и пространств сущностей в качестве слоя доступа к данным.

Вопрос, который я задаю, должен ли я создать еще один слой объектов, которые предоставляют сетевые объекты Protobuf, которые заполняются из "загрузки" данных из объектов Entityspaces, или я должен добавить необходимые теги protobuf к объектам в объектах Entityspaces (они автоматически генерируются из базы данных и в настоящее время не имеют этого)

1 ответ

Решение

Может пойти в любую сторону. Если вам нужно закодировать данные protobuf в текстовый формат: используйте base-64, что удобно не использовать | / [ / ],

Если вы предпочитаете кодировать объекты с протобуфом, которые в настоящее время не приписаны, то есть способы сделать это тоже: если типы из базы данных генерируются как partial классы, то самое простое, что вы можете сделать (в другом файле кода):

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

где Foo а также Bar члены, которые вы хотите сериализовать. Или же вы можете настроить всю модель во время выполнения:

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

(это очень простая конфигурация; доступны гораздо более тонкие варианты)

Другие вопросы по тегам