Russian Qt Forum
Ноябрь 27, 2024, 06:56
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Клиент -> сервер -> бд?
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Клиент -> сервер -> бд? (Прочитано 19795 раз)
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Клиент -> сервер -> бд?
«
Ответ #15 :
Октябрь 03, 2012, 16:58 »
Цитата: joker от Сентябрь 29, 2012, 15:44
облегчит масштабирование системы
за счет чего?
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
V1KT0P
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #16 :
Октябрь 03, 2012, 20:33 »
Цитата: panAlexey от Октябрь 03, 2012, 16:58
Цитата: joker от Сентябрь 29, 2012, 15:44
облегчит масштабирование системы
за счет чего?
За счет того, что сервер можно заменить на прокси-сервер который будет объединять локальную сеть серверов.
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Клиент -> сервер -> бд?
«
Ответ #17 :
Октябрь 04, 2012, 19:49 »
Цитата: V1KT0P от Октябрь 03, 2012, 20:33
Цитата: panAlexey от Октябрь 03, 2012, 16:58
Цитата: joker от Сентябрь 29, 2012, 15:44
облегчит масштабирование системы
за счет чего?
За счет того, что сервер можно заменить на прокси-сервер который будет объединять локальную сеть серверов.
ога. типа еще один тип сервака надо писать
Да уж. Это не дипломная получится, а пахота месяцев на надцать
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
Bepec
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #18 :
Октябрь 04, 2012, 20:00 »
Тут на нобелевку потянет, если кросплатформенно да ещё и с шифрованием
Записан
Krysk
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #19 :
Октябрь 05, 2012, 03:33 »
Если требования к проекту не жесткие, т.е. можно использовать альтернативные языки и платформы, то я бы на твоем месте выбрал джаву - в качестве сервера, c++/qt - в качестве клиента. Сервер выстроил на базе spring-mvc + rest + spring-security... Готовых примеров масса, освоить все это студенту с базовыми знаниями в программировании более чем реально, ну и на будущее развиваться в данном направлении куда выгоднее, чем писать сервера на с++ + qt не говоря уже об устройстве на работу...
Записан
k0p4
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #20 :
Октябрь 05, 2012, 14:54 »
Цитировать
чем писать сервера на с++ + qt не говоря уже об устройстве на работу...
Ну да, джава-сервера куда лучше нативного С++ кода. К тому же, не вижу ничего плохого писать сервер на Qt, который, к тому же, предоставляет отличные классы для этих задач.
А с работой - вы это бросьте. Работа есть.
Для реализации простого TCP сервера потребуются пару классов :
- Для сети :
QTcpServer;
QSslSocket;
- Данные :
QByteArray;
QDataStream;
И всё это дело, для простого (даже многопоточного) сервера займёт порядка 400-500 строк. А учитывая сколько есть екземплов - то разобратся для студента тоже не составит проблемы.
«
Последнее редактирование: Октябрь 05, 2012, 14:58 от k0p4
»
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Клиент -> сервер -> бд?
«
Ответ #21 :
Октябрь 05, 2012, 15:11 »
1. Понятно, что в общем случае джава код, никуда не лучше нативного. Но мы сейчас говорим о коде, который будет писаться студентом. Готов поставить очень много, что студенческий нативный код будет НАМНОГО хуже (причем во всех смыслах) интерпретируемого промышленного.
2. Классы в Qt плохо подходят для разработки нормального TCP сервера, способного обрабатывать большое количество соединений. Растекаться тут на эту тему не буду, всё уже неоднократно на этом форуме обсуждалось.
3. Какие классы в Qt помогают для разработки многопоточного масштабируемого трехзвенного отказоустойчивого безопасного сервера с балансировкой нагрузки, кешированием, поддержкой со стороны провайдеров и прочими фишками, которые мы автоматически получаем при использовании готовых промышленных решений? Сколько строк кода нужно для этого?
«
Последнее редактирование: Октябрь 05, 2012, 15:13 от xokc
»
Записан
Bepec
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #22 :
Октябрь 05, 2012, 15:41 »
Нужно 2 строчки естественного языка
Написанные на бумажке с печатью президента:
"написать трёхзвенныйсервер с бла бла бла."
"Быстро млиа!!!"
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Клиент -> сервер -> бд?
«
Ответ #23 :
Октябрь 05, 2012, 15:53 »
Подозреваю, что как только появится интерпретатор с такого языка я останусь без куска хлеба.
Записан
k0p4
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #24 :
Октябрь 05, 2012, 16:11 »
Уважаемый xock,
1. Студенческий код он будет, как минимум, в равной степени плох. Я пологаю, что на Qt с самого начала можно писать достаточно хороший код, а учитывая экземплы (кстати, которых хватит для этой задачи) так и вообще отличный(как для студента).
2. Классы Qt отлично подходят, если их правильно применять.
3.1 По порядку :
- QTcpServer;
- QSslSocket;
- QThread;
- QByteArray;
- QDataStream;
- QSqlDatabase.
3.2 Этих классов вполне хватит для достаточно серьёзного решения. Причём решение - будет весьма масштабируемое и быстрое. А если нужен хай-лоад, то сервер нужно запускать на бубунте, например, и использовать epoll. EventDispatcher дописать - проблем не составит. Тем более, что уже видел где-то на гитхабе готовое решение.
3.3 Объясню:
-При старте сервера - запускаем n трэдов. При incomming connection - создаём сокет, и сразу запихиваем в трэд.
-Последующая обработка протокола - в соккете.
-БД вешаем в отдельный трэд и коммуницируем слотами\сигналами.
3.4
Цитировать
балансировкой нагрузки
Хардварной или софтварной?
3.5 Кэширование - если встал такой вопрос - то вполне решаем. Можно кэшировать, например, даже в оперативную память. А студенту - ну ни к чему.
3.6
Цитировать
поддержкой со стороны провайдеров и прочими фишками, которые мы автоматически получаем при использовании готовых промышленных решений
Что Вы имели ввиду?
3.7 Порядка 2000. + - 1000. Зависит от обработки протокола.
А конкретно в данной теме - то вполне реально уложится до 1000 строк.
Записан
Bepec
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #25 :
Октябрь 05, 2012, 16:42 »
Копч, тут на форуме уже разжёвано почему нельзя и почему стандартные классы Qt для этого не подходят
А для высоконагруженных тем более
PS для лабы - сойдёт. Для своего проекта - сойдёт. Для работы с высокой нагрузкой - не сойдёт
Записан
k0p4
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #26 :
Октябрь 05, 2012, 17:20 »
Bepec, если не затруднит, можно линки?
Интерестно будет почитать.
Записан
panAlexey
Гипер активный житель
Offline
Сообщений: 864
Акцио ЗАРПЛАТА!!!!! :(
Re: Клиент -> сервер -> бд?
«
Ответ #27 :
Октябрь 06, 2012, 10:06 »
Цитата: Bepec от Октябрь 05, 2012, 16:42
Копч, тут на форуме уже разжёвано почему нельзя и почему стандартные классы Qt для этого не подходят
А для высоконагруженных тем более
PS для лабы - сойдёт. Для своего проекта - сойдёт. Для работы с высокой нагрузкой - не сойдёт
надо это в FAQ записать с примерами и ссылками.
Записан
Win Xp SP-2, Qt4.3.4/MinGW.
http://trdm.1gb.ru/
Bepec
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #28 :
Октябрь 06, 2012, 10:55 »
K0p4 - запусти поиск по форуму на слова "сервер", "QTcpServer" и прочая.
Я этой темы касался только косвенно, в своём маленьком проекте.
А да, помоему четкое описание есть в теме аля "Пишу свой сервр на С++" кажется.
Записан
djfile
Гость
Re: Клиент -> сервер -> бд?
«
Ответ #29 :
Октябрь 06, 2012, 22:16 »
Ничего себе тут творится=) Приятно, что люди отвечают, спасибо вам всем.
Прихожу примерно к такому выводу: держать несколько потоков обработчиков, в которые по сигналам передавать/забирать данные. Эти обработчики будут работать с потоком БД. Здесь мне всё более менее понятно. Не могу понять где лучше держать клиентов? Если в одном потоке, то все остальное теряет смысл. Можно завести несколько потоков и клиентов распределять между ними, но если в одном потоке будет большая активность клиентов, а в другом нулевая, то опять же получится только 1 активный поток.
Если б в Qt можно писать/читать в сокет из разных потоков, да и сам сокет перемещать по потокам, то может быть легче было б.
И ещё может кто-нибудь объяснить как используются callback-функции применительно к потокам? Как их используются для функций типа sort я понимаю, а вот с потоками никак.
Спасибо.
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...