|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
Модель передачи данных08.09.2011, 01:41. Показов 1504. Ответов 2
Метки нет (Все метки)
Здравствуйте. В данный момент работаю над одним проектом, в который включает в себя клиент, сервер и сервер базы данных. Сервер и сервер базы данных находятся на выделенной машине в интернете, клиент работает с ними по интернету. В данный момент передача у меня осуществляется способом "клиент отправил запрос - обязательно получил ответ", но столкнулся с такой проблемой, что между тем, как сервер получил запрос и отправил ответ еще имеется время на выполнение запроса - работа с базой данных, все это тратит время, +ко всему готовый ответ, который часто включает в себя какой-то массив данных, который надо передать клиенту, что не всегда происходит мгновенно, но дело не в этом, дело в том, что такая модель исключает многопоточность на стороне клиента, а точнее её сильно ограничивает.
Так как передача ведется сериализацией, клиент обязан получить ответ, иначе сервер не сможет принять следующий запрос, но если клиент прервал поток и ответ не получил, сериализация ответа на сервере будет ждать, пока клиент не десериализует этот ответ. Пример: человек захотел сгенерировать отчет за какой-либо период, допустим, за год - пока клиент загружает данные пользователь передумал генерировать отчет и завершил поток получения данных, не дождавшись\недополучив ответ от сервера, сервер будет пытаться передать этот ответ в данной модели, пока не передаст\подключение не завершится, то есть, если пользователь завершил поток, работа в программе перестает быть доступной до переподключения. Так же возникает проблема загрузки некоторых данных в несколько потоков, а не в один, то есть клиент может отправить и получить ответ только единожды за единицу времени, что тоже очень неудобно, ведь если пользователь отправит 2 запроса, а они асинхронны, то клиент может получить первым ответ на второй запрос и вторым - на первый, посему складывается вопрос, как можно реализовать лучшим способом передачу данных так, чтобы она была менее ограничена приведенными выше рамками? Данные передаваемые между клиентом и сервером самые разные - объекты самописных классов, коллекции этих объектов и т.п. Надеюсь, объяснил понятно, хоть и получилось слишком много букв, если что-то надо, с радостью могу уточнить, заранее спасибо.
0
|
|
| 08.09.2011, 01:41 | |
|
Ответы с готовыми решениями:
2
Формат передачи данных Вопрос относительно передачи данных Протокол передачи данных через последовательный порт |
|
|
|
| 08.09.2011, 10:10 | |
|
r0fL, теоритически это делается так: создается клиент-серверное приложение на сокетах (обеспечивает многопоточность). Клиентская часть как положено ставится клиенту, серверная на сервер, на котором СУБД расположена. Вот эта серверная часть и работает с БД, а клиенту отправляются уже готовые данные. Таким образом дествия клиента не могут заблокировать работу сервера БД.
Я такого ниразу не делал, но когда-то мне рассказывали именно так.
0
|
|
|
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
|
|
| 08.09.2011, 12:55 [ТС] | |
|
nio, нет-нет, я тут несколько неправильно выразился, многопоточность на сервере не блокируется, каждый клиент имеет свой поток, но вот на стороне клиента пользователь не может в несколько потоков посылать запросы серверу, в этом проблема. Я вот сейчас думаю сделать какой-то стек запросов на стороне клиента, в который будут собираться ответы, запросам и ответам в свою очередь присваивать какой-либо идентификатор, чтобы определять какой ответ пришел на какой запрос, а на стороне сервера выделять на каждый запрос от клиента отдельный поток.
0
|
|
| 08.09.2011, 12:55 | |
|
Помогаю со студенческими работами здесь
3
Оптимальный способ передачи данных между программами на c# Разработать библиотеку процедур для приёма-передачи данных по сети на основе протокола UDP и текст для её проверки Из базы данных сгенерировал модель. Как теперь через нее обращаться к базе данных Цепочка передачи данных (Переменные - dataGridView - MSSQL БД)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|