Добавление сериализации protobuff-net в WCF через код с типами knowntypes - PullRequest
1 голос
/ 24 мая 2011

В настоящее время все мои соединения WCF определены в коде, и я пытаюсь использовать сериализацию protobuff-net с небольшим успехом. Ни один из моих контрактов не помечен атрибутом knowntype, поскольку у нас есть базовое сообщение с полезной нагрузкой (это были бы десятки типов Knowntype). Мы выясняем имеющиеся у нас типы знаний и кэшируем их в классе, производном от DataContractSerializerOperationBehavior. Затем в переопределенной функции CreateSerializer я передаю кэшированные известные типы в DataContractSerializer следующим образом

 public override XmlObjectSerializer CreateSerializer(Type type, string name, string ns,   IList<Type> knownTypes)
 {
          new DataContractSerializer(type, name, ns, m_Known ?? knownTypes, 0x7FFF, ...)
 }

Есть ли способ передать список известных типов в сериализатор protobuf-net. Я понимаю, что protobuf-net не предназначен для зеркального отображения сериализаторов для WCF, но было бы неплохо, если бы они следовали шаблону, позволяющему переопределить список типов знаний. Спасибо за любую помощь.

Однако у меня нет возможности обрабатывать сериализатор Protobuf-net таким образом (я смотрел на ProtoOperationBehavior). Есть ли в любом случае не иметь известных типов, указанных в

1 Ответ

1 голос
/ 24 мая 2011

В "v2" доступные подтипы могут быть определены (для RuntimeTypeModel) на лету во время выполнения через .AddSubType(...) (фактически, все атрибуты теперь служат только конфигурацией по умолчанию для модели типа, которая можетбыть настроен любым способом).

Однако я должен подчеркнуть, что v2 в настоящее время находится в бета , и как отмечено в блоге Хуки WCF в настоящее время не включены в бета-версию, просто пока я заканчиваю валидацию и т. Д. Однако я ожидаю, что с вашей настройкой, как показано в вопросе, это должно быть тривиально (это будет просто случай передачи модели в XmlObjectSerializerреализация обеспечена).

...