|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
|
Передача данных02.07.2010, 22:39. Показов 4554. Ответов 8
Метки нет (Все метки)
Вечер добрый.
Есть 2 приложения: клиентское и серверное. Серверное берёт данные из БД, формирует датасет, переводит его в xml и побайтово передаёт клиенту, когда тот обращается к серверу. При малом количестве данных всё замечательно работает, однако когда данных становится много (около тысячи записей, передаваемый файл весит около метра), клиент начинает дико тормозить. Как оптимизировать процесс передачи файла?
0
|
|
| 02.07.2010, 22:39 | |
|
Ответы с готовыми решениями:
8
Передача данных Передача данных по и-нету |
|
11 / 11 / 1
Регистрация: 21.03.2010
Сообщений: 71
|
|
| 02.07.2010, 22:47 | |
|
Лучше всего упаковать файл, я сам так делал, при передаче. Затем на сервере распаковать. При упаковке сжимается до нескольких Кб.
ICSharpCode использовал вот эту библу.
1
|
|
|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
|
| 05.07.2010, 11:02 [ТС] | |
|
Трудовые будни после хмельных выходных.
Добавляю мой xml с данными в архив с помощью класса FastZip, перевожу его в массив байтов через File.ReadAllBytes(). Файл передаётся, в клиенте его могу распаковать и работать с xml. Однако размер архива на сервере отличается от размера полученного архива в клиенте. Размерность массива передаваемого (на сервере) и получаемого (в клиенте) массива байтов - 10000. При этом если изменить размерность массива в клиенте, растёт и размер самого архива. Распакованный файл весит одинаково. Если выставить размерность в клиенте 70000, получаю ошибку "Cannot find central directory". Также архив приходит битым. Что делать в данной ситуации? Как показать клиенту, какой именно объём данных нужно принять? И почему так разнится размер между созданным на сервере архивом и архивом, полученным клиентом?
0
|
|
|
15 / 15 / 1
Регистрация: 01.07.2010
Сообщений: 33
|
|
| 05.07.2010, 13:22 | |
|
Код в студию.
0
|
|
|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
|||||||||||
| 06.07.2010, 11:21 [ТС] | |||||||||||
|
Клиент
Ой блин. В сервере не закрыт бесконечный цикл. Ну это и так понятно, думаю.
0
|
|||||||||||
|
15 / 15 / 1
Регистрация: 01.07.2010
Сообщений: 33
|
|||||||||||
| 06.07.2010, 13:30 | |||||||||||
|
1. Чтобы получить Xml представление DataSet-а - нужно использовать метод DataSet-а GetXml. Использовать XmlDocument - слишком накладно.
2. Можно передать DataSet вообще не преобразуя его в Xml. Просто пересылай данные в бинарном формате. Что-нибудь вроде:
4. Получи у TcpClient stream и пиши данные в него.
6. Сначала добейся, чтобы все стабильно работало без компрессии. По крайней мере, DataSet размером в 10 Mb должен передаваться без проблем. Главное, чтобы время передачи данных линейно зависило от количества данных. И только потом можно попытаться сжать данные, для увеличения производительности.
1
|
|||||||||||
|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
|||||||||||
| 10.07.2010, 17:52 [ТС] | |||||||||||
|
Исправил.
Сервер.
0
|
|||||||||||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 10.07.2010, 18:01 | |
|
UTF8 самое оно
1
|
|
|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
||||||||||||||||
| 10.07.2010, 19:22 [ТС] | ||||||||||||||||
|
Новая проблема. По прошествии некоторого количества времени (обращения к серверу каждые 10 секунд) сервер перестаёт отвечать на запросы и клиент выдаёт ошибку:
При отправке запроса клиентом к серверу использую следующее:
0
|
||||||||||||||||
| 10.07.2010, 19:22 | |
|
Помогаю со студенческими работами здесь
9
Передача данных на COM-порт Передача данных по сети Передача данных по TCP/IP Передача данных в «Компас» Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|