Russian Qt Forum
Ноябрь 23, 2024, 18:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Клиент -> сервер -> бд?  (Прочитано 19773 раз)
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #15 : Октябрь 03, 2012, 16:58 »

облегчит масштабирование системы
за счет чего?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
V1KT0P
Гость
« Ответ #16 : Октябрь 03, 2012, 20:33 »

облегчит масштабирование системы
за счет чего?
За счет того, что сервер можно заменить на прокси-сервер который будет объединять локальную сеть серверов.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #17 : Октябрь 04, 2012, 19:49 »

облегчит масштабирование системы
за счет чего?
За счет того, что сервер можно заменить на прокси-сервер который будет объединять локальную сеть серверов.
ога. типа еще один тип сервака надо писать Улыбающийся
Да уж. Это не дипломная получится, а пахота месяцев на надцать Улыбающийся
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Bepec
Гость
« Ответ #18 : Октябрь 04, 2012, 20:00 »

Тут на нобелевку потянет, если кросплатформенно да ещё и с шифрованием Улыбающийся
Записан
Krysk
Гость
« Ответ #19 : Октябрь 05, 2012, 03:33 »

Если требования к проекту не жесткие, т.е. можно использовать альтернативные языки и платформы, то я бы на твоем месте выбрал джаву - в качестве сервера, c++/qt - в качестве клиента. Сервер выстроил на базе spring-mvc + rest + spring-security... Готовых примеров масса, освоить все это студенту с базовыми знаниями в программировании более чем реально, ну и на будущее развиваться в данном направлении куда выгоднее, чем писать сервера на с++ + qt не говоря уже об устройстве на работу...
Записан
k0p4
Гость
« Ответ #20 : Октябрь 05, 2012, 14:54 »

Цитировать
чем писать сервера на с++ + qt не говоря уже об устройстве на работу...

Ну да, джава-сервера куда лучше нативного С++ кода. К тому же, не вижу ничего плохого писать сервер на Qt, который, к тому же, предоставляет отличные классы для этих задач.
А с работой - вы это бросьте. Работа есть.

Для реализации простого TCP сервера потребуются пару классов :

- Для сети :
  QTcpServer;
  QSslSocket;
- Данные :
  QByteArray;
  QDataStream;

И всё это дело, для простого (даже многопоточного) сервера займёт порядка 400-500 строк. А учитывая сколько есть екземплов - то разобратся для студента тоже не составит проблемы.


« Последнее редактирование: Октябрь 05, 2012, 14:58 от k0p4 » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #21 : Октябрь 05, 2012, 15:11 »

1. Понятно, что в общем случае джава код, никуда не лучше нативного. Но мы сейчас говорим о коде, который будет писаться студентом. Готов поставить очень много, что студенческий нативный код будет НАМНОГО хуже (причем во всех смыслах) интерпретируемого промышленного.
2. Классы в Qt плохо подходят для разработки нормального TCP сервера, способного обрабатывать большое количество соединений. Растекаться тут на эту тему не буду, всё уже неоднократно на этом форуме обсуждалось.
3. Какие классы в Qt помогают для разработки многопоточного масштабируемого трехзвенного отказоустойчивого безопасного сервера с балансировкой нагрузки, кешированием, поддержкой со стороны провайдеров и прочими фишками, которые мы автоматически получаем при использовании готовых промышленных решений? Сколько строк кода нужно для этого?

« Последнее редактирование: Октябрь 05, 2012, 15:13 от xokc » Записан
Bepec
Гость
« Ответ #22 : Октябрь 05, 2012, 15:41 »

Нужно 2 строчки естественного языка Веселый

Написанные на бумажке с печатью президента:
"написать трёхзвенныйсервер с бла бла бла."
"Быстро млиа!!!"
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #23 : Октябрь 05, 2012, 15:53 »

Подозреваю, что как только появится интерпретатор с такого языка я останусь без куска хлеба.
Записан
k0p4
Гость
« Ответ #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
Гость
« Ответ #25 : Октябрь 05, 2012, 16:42 »

Копч, тут на форуме уже разжёвано почему нельзя и почему стандартные классы Qt для этого не подходят Улыбающийся

А для высоконагруженных тем более Улыбающийся

PS для лабы - сойдёт. Для своего проекта - сойдёт. Для работы с высокой нагрузкой - не сойдёт Улыбающийся
Записан
k0p4
Гость
« Ответ #26 : Октябрь 05, 2012, 17:20 »

Bepec, если не затруднит, можно линки?
Интерестно будет почитать.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #27 : Октябрь 06, 2012, 10:06 »

Копч, тут на форуме уже разжёвано почему нельзя и почему стандартные классы Qt для этого не подходят Улыбающийся
А для высоконагруженных тем более Улыбающийся
PS для лабы - сойдёт. Для своего проекта - сойдёт. Для работы с высокой нагрузкой - не сойдёт Улыбающийся
надо это в FAQ записать с примерами и ссылками.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Bepec
Гость
« Ответ #28 : Октябрь 06, 2012, 10:55 »

K0p4 - запусти поиск по форуму на слова "сервер", "QTcpServer" и прочая.
Я этой темы касался только косвенно, в своём маленьком проекте.

А да, помоему четкое описание есть в теме  аля "Пишу свой сервр на С++" кажется.
Записан
djfile
Гость
« Ответ #29 : Октябрь 06, 2012, 22:16 »

Ничего себе тут творится=) Приятно, что люди отвечают, спасибо вам всем.
Прихожу примерно к такому выводу: держать несколько потоков обработчиков, в которые по сигналам передавать/забирать данные. Эти обработчики будут работать с потоком БД. Здесь мне всё более менее понятно. Не могу понять где лучше держать клиентов? Если в одном потоке, то все остальное теряет смысл. Можно завести несколько потоков и клиентов распределять между ними, но если в одном потоке будет большая активность клиентов, а в другом нулевая, то опять же получится только 1 активный поток.
Если б в Qt можно писать/читать в сокет из разных потоков, да и сам сокет перемещать по потокам, то может быть легче было б.

И ещё может кто-нибудь объяснить как используются callback-функции применительно к потокам? Как их используются для функций типа sort я понимаю, а вот с потоками никак.

Спасибо.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.258 секунд. Запросов: 23.