Сериализация лучше всего подходит для отправки данных через сокет? - PullRequest
2 голосов
/ 27 февраля 2012

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

Ответы [ 3 ]

6 голосов
/ 27 февраля 2012

Сериализация в основном означает преобразование в состояние, подходящее для некоторого типа хранилища.Данные, отправляемые по сети, должны быть извлечены из памяти или с жесткого диска и помещены в некоторый формат для отправки.Это ВСЕ сериализировано.

Люди могут сказать, сериализовано в XMl или JSON, что является просто очень специфическим ТИПом сериализации, и тогда да, у вас могут быть лучшие или худшие в зависимости от ваших потребностей.

1 голос
/ 27 февраля 2012

В .Net сериализация обрабатывается платформой, поэтому программирование интерфейса для обработки объектов довольно просто.

Если вам нужно сохранить сложный объект идентичным от хоста A к хосту B, то сериализацияПолезно.В противном случае, если вам просто нужно получить одно или два свойства от этого объекта для получения хостом B и все еще хотеть его сериализовать, вам нужно будет преобразовать его в более простой объект и, возможно, создать новый класс, что не является преимуществом.

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

0 голосов
/ 27 февраля 2012

Я наткнулся на ваш вопрос и в вечном стремлении узнать себя на разные темы, я решил заняться чтением / исследованием. Я уверен, что вы, возможно, сталкивались с этими вещами, но читали ли вы о Windows Communication Foundation (WCF)? Вот одна статья, которая может иметь какое-то отношение http://blogs.msdn.com/b/carlosfigueira/archive/2008/01/13/writing-custom-requests-to-simple-wcf-services.aspx.

Также в этой статье Проблема с сокетами и ошибка OutOfMemory люди рассказывают о том, как они установили связь на основе сокетов, но ранее не рассматривали WCF, но это выглядело как благословение. Некоторые люди в этой статье C # Отправка нескольких объектов через один и тот же сокет говорят, что , если в этом сценарии очень важны издержки, то это может быть проблемой , однако я полагаю, что это больше зависит от того, что Вы пытаетесь достичь (хотя вы сказали, что это для игр.)

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

Извините, если я бродил, но я надеюсь, что все это поможет :)

...