как быстро отправить данные по сети? - PullRequest
0 голосов
/ 21 октября 2009

у меня много таких данных 1: 0x00a4c7d9fb3849 ...
2: 0x79821309bd789c7689c97 ...
3: 0x0178dce67fe898 ...

они превышают 100 в секунду, и скорость - это самое главное (сеть всегда занята).

что я должен использовать для передачи моих данных (TCP / IP, каналы, через и т. Д.)?
как я должен сериализовать его (BinaryFormatter, Xml, пользовательский или любые другие советы)?

Ответы [ 4 ]

1 голос
/ 21 октября 2009

100 в секунду может быть не так плохо, как вы думаете.

Если каждый из них имеет размер 100 байт (в этом случае должны соответствовать 100 цифр, нет проблем), 100x100 - это 10000 байт в секунду или 10 Кбит / с.

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

1 голос
/ 21 октября 2009

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

Если, однако, пропущенные данные имеют решающее значение, то TCP / IP будет вашим лучшим вариантом для отправки данных по сети. Учитывая высокую скорость передачи данных, вам лучше всего создать свой собственный двоичный формат, определенный пользователем, и просто отправлять / получать необработанные байты. Использование Xml будет намного, намного болтливее (что означает больше накладных расходов). Даже BinaryFormatter добавит некоторые издержки, так как сериализация имеет тенденцию добавлять немного больше, чем абсолютно необходимо.

0 голосов
/ 21 октября 2009

Это похоже на двоичные данные (например, данные, которые могут быть упакованы в байт [] вместо использования строк). Для максимальной эффективности вы можете разработать собственный протокол поверх TCP / IP (используя TCP или даже UDP) и, возможно, даже сжать данные на лету, если нагрузка на сеть является большой проблемой. Убедитесь, что вы не отправляете много маленьких кусков, а скорее отправляете по сети большие блоки (например, 1400 байт).

0 голосов
/ 21 октября 2009

100 в секунду этих строк не выглядит слишком большой проблемой (или строки должны быть очень длинными).

Двоичный файл всегда гораздо более сжатый, чем строковый представитель. Вы можете даже сначала упаковать его (используя zip или что-нибудь еще)

TCP / IP будет хорошей ставкой, если вы хотите получить полный контроль над отправкой.

...