На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Передача больших данных в сети , как храните ?
    Что лучше использовать ? string, list<byte> или что-нибудь еще ?
      Многое зависит от ситуации, большую роль влияет архитектура решения и требования к разрабатываемой системе. Иногда используют трансферные объекты, в данном случае лучшим кандидатом на роль транспортного объекта будет DataTable или XML который зипуется перед отправкой. Во многих системах не предусматривающих трансферных объектов используются коллекции объектов. Если же производительность самое критическое место системы, то вероятно ты должен изначально разрабатывать сокет сервер с ручной сериализацией/десириализацией объектов в бинарный вид и слать масивы байт.
        Вижу, ты рассматривал String, значит, видимо, у тебя передаются строки.
        В случае передачи строк имхо самый удобный способ - поток или массив байт. К примеру,
        ExpandedWrap disabled
          MemoryStream

        Это удобно ибо можно взять супер длинную строку, пихнуть в MemoryStream и слать по, допустим, 1024 байта + контрольная сумма.
        Если контрольная сумма эхо ответом доходит без проблем, увеличиваем пакет до 2048 байт и т.д.

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

        есть текст в 100 Мб, передаем по 1 Мб в три потока.
        Допустим, ответы от приемника:
        1 - получен
        2 - получен
        3 - получен
        ---
        5 - получен
        6 - получен
        4 - получен
        /*так как один пакет может дойти быстрее других*/
        ---
        7 - получен
        9 - получен
        /*ответ от 8-ого не пришел, повторяем*/
        ---
        10 - получен
        11 - получен
        8 - получен.

        И так передаем всю информацию.
        ---

        Можно передавать (я бы выбрал этот способ) через BinaryReader/Writer, т.е. двоичным потоком.
        Как пихнуть в этот поток строку мне объясняли в теме Чтение строк UTF-8 из двоичного файла

        Добавлено
        Также этот способ поможет избежать подвисания программы, при правильной реализации, конечно.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0422 ]   [ 17 queries used ]   [ Generated: 24.04.24, 02:36 GMT ]