Каков оптимальный размер чанка для отправки данных через DSL? - PullRequest
1 голос
/ 28 февраля 2012

Я загружаю компактный файл базы данных SQL Server CE из приложения Windows Mobile, используя веб-службу .asmx .Я делю базу данных на блоки по 1 МБ, собирая базу данных на сервере.Когда сервер завершает обработку базы данных, он передается обратно на устройство с использованием аналогичного процесса, управляемого мобильным приложением.Это хорошо работает, но некоторые пользователи имеют ADSL-соединения, которые допускают скорость загрузки всего ~ 700 Кб.Я хотел бы оптимизировать размер чанка, чтобы обеспечить максимальную загрузку этих пользователей.Есть ли оптимальный размер куска для ADSL?

1 Ответ

5 голосов
/ 28 февраля 2012

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

Просто отправьте данные по TCP. Протокол предназначен для самостоятельной настройки на оптимальный размер пакета для клиента и сервера.

Если вы разбиваете свои данные на (большие) блоки для поддержки возобновленной загрузки, то вы можете определить, сколько времени потеряет клиент, если ему придется повторно передать блок (например, если загрузка была прервана). Таким образом, если они были прерваны во время передачи блока 1 МБ, и у них есть восходящая линия связи 700 КБ, то они потеряют чуть более одной секунды, если им придется повторно передать весь блок. Вы можете использовать это и свою измеренную вероятность полного отказа соединения TCP & mdash; закрытый сокет и блок, требующий повторной передачи & mdash; рассчитать ожидаемые затраты на повторную передачу для файла.

Поскольку сбой TCP действительно редок (как правило, он просто буферизуется и ждет отправки остальных данных, если мобильное соединение качается), редкая задержка в 1сек, вероятно, незаметна, если у вас нет цикла управления в реальном времени. Который предположительно не загружает всю базу данных.

...