Внедрение собственных сериализаторов в C # - полезные советы - PullRequest
4 голосов
/ 12 августа 2010

Нам, вероятно, нужно написать собственные сериализаторы для классов в нашем (крупномасштабном) приложении C # - BinarySerializer слишком медленный и многословный, а protobuf-net имеет проблемы с интерфейсными свойствами (из которых мы есть грузы).

У кого-нибудь есть хорошие советы и / или предупреждения? Я подозреваю, что мы должны использовать BinaryWriter и BinaryReader , но в C # мы пока не занимались мелочами, и любые ошибки будут оценены!

Точно так же кто-нибудь знает о свернутом вручную сериализаторе с исходным кодом, на который я мог бы взглянуть?

Ответы [ 2 ]

3 голосов
/ 12 августа 2010

Советы / предупреждения?Это может быть серьезное количество кода.Я полагаю, что было бы проще написать некоторый простой код, который преобразует вашу существующую модель в простой DTO, который можно легко сериализовать, выбрав существующий API сериализации.Наличие слоя DTO (отдельно от доменных сущностей) также позволяет значительно упростить обслуживание - вы можете реорганизовать свои доменные сущности, не нарушая сериализованные данные.

Варианты самостоятельного выполнения (помните, что вы подчеркнули, чтомодель довольно сложна, и вы не разбираетесь в битах):

  • пишите сериализацию для конкретного типа вручную;очень легко ошибиться, очень трудоемко
  • написать библиотеку общего назначения;Сумасшедший объем работы, решающий все крайние случаи

И это после вы выяснили формат сериализации, который работает надежно, расширяемо и поддерживает необходимые сценарии (наследование,и т.д.).

0 голосов
/ 12 августа 2010

Рассмотрим Тип преобразователей .Мы широко используем их с ViewState, и они прекрасно работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...