WCF - (Custom) двоичная сериализация - PullRequest
2 голосов
/ 19 марта 2010

Я хочу иметь возможность запрашивать мою базу данных через Интернет, и я хочу использовать службу WCF для обработки запросов и результатов. Проблема в том, что из-за объема данных, которые могут быть возвращены из этих запросов, я беспокоюсь о том, как эти результаты будут сериализованы по сети. Например, я могу представить сериализацию XML в виде:

<Results>
    <Person Name="Adam" DateOfBirth="01/02/1985" />
    <Person Name="Bob" DateOfBirth="04/07/1986" />
</Results>

И двоичная сериализация, содержащая имена типов и другие (ненужные) метаданные. Возможно, даже имя типа для каждого элемента в коллекции? О_О

В идеале я хотел бы выполнить сериализацию некоторых DataContract'ов самостоятельно, чтобы я мог сделать их суперкомпактными. Кто-нибудь знает, возможно ли это, или какие-нибудь статьи, которые объясняют, как сделать пользовательскую сериализацию с WCF?

Заранее спасибо

1 Ответ

4 голосов
/ 19 марта 2010

WCF поддерживает двоичный формат сериализации из коробки - он используется по умолчанию в netTcpBinding.Я бы порекомендовал сначала попробовать и использовать это для ваших тестов - только если это не работает и не сжимает достаточно, и вы уверены, что можете перехитрить и перепрограммировать всю команду WCF, пойти и свернуть свою собственную двоичную сериализациюформат.

Проверьте некоторые превосходные ресурсы:

С помощью компоновки привязок WCF вы также можете легко создать, например, двоичную привязку HTTP.

Основная проблема здесь будет заключаться в следующем: если вы делаете что-то подобное, оба конца канала связи должны договориться о том, каквсе сделано, например, вы не можете ожидать, что простой браузер сможет подключаться и понимать вашу собственную двоичную кодировку - вам нужно иметь возможность контролировать клиентаnd серверная сторона провода.

...