| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Тонкий сервер - Толстый клиент. |
| Автор: LostAlly 3.12.2009, 19:13 |
| Всем здрасти. Изучаю qt в боевом режиме, нужен совет по направлению копания. Итак задача. Клиент - сервер - бд(постгрес) Изначально предполагалось писать клиента который напрямую обращается в БД. Но так как пользователей будет много, неустраивает заведение всех этих пользователей в пользователи БД. Пришел к такому: написать "тонкий" сервер который будет подключаться к БД аутентифицируясь пользователем БД, затем подключившийся клиент посылает аутентифицируется на сервере, при этом пользователи хранятся в базе проекта. После этого нужно пердавать данные между БД и клиентом. Т.е. сервер в основном нужен для управления правами. В будущем часть функционала будет перенесена на сервер, но в данный момент это реализовать будет сложнее изза отсутствия опыта. Так вот вопрос, с помощью каких классов компонентов я смогу реализовать такую структуру? (соответственно клиент и сервер пока будут на QT) Сервер - линукс, клиенты линукс и виндовс (может еще и макос) Большое спасибо за внимание. |
| Автор: LostAlly 4.12.2009, 07:14 |
| Большое спасибо за ответ. А каким методом передавали данные от сервера к клиенту? С сервером более менее все понятно он с базой общается через QSqlDatabase, QSqlQuery, а какими методами клиент запрашивает нужные данные через сервер? (это наиболее непонятный для меня момент, если городить свой протокол взаимодействия, то это уже получится проще нормальный сервер написать) |
| Автор: chaos 4.12.2009, 08:51 |
| ИМХО SOAP |
| Автор: LostAlly 4.12.2009, 09:56 | ||
На сколько я понимаю, потом придется переписать кучу всего, чтобы убрать SOAP, а мне хотелось бы на данный момнет минимальных усилий по написанию сервера. А в дальнейшем постепенное перемещение определенных функций с клиента на сервер. А можно ли: Клиент герерирует SQL запрос передает его серверу сервер отправляет его БД, сервер возвращает результат в таком виде, как если бы клиент напрямую его получил от бд. Както так. |
| Автор: chaos 4.12.2009, 10:19 | ||
если выбирать между 3х звенкой и заведением пользователей в системе я п выбрал 2ое, ибо гемороя меньше + даже есть положительные моменты: например модно вести логирование на уровне базы |
| Автор: null56 4.12.2009, 17:45 | ||||||
что значит каким методами.... клиент должен что - то отправить КАКИЕ-ТО ДАННЫЕ
сервер должен их прочитать и понять
под какими-то данными я подразумеваю набор команд и дополнительную инфу = иными словами протокол. Протокол создать работа творческая и не нудная, тут 1000 и один способ, можешь свой придумать, со своим набором команд или взять уже существующий... Можешь в качестве варианта взять протокол основанный на xml, тем более классов в Qt достаточно для его реализации и парсинга. Jabber вроде так и работает на протоколе, основанном на xml. Если не хочешь писать трехзвенку, как тебе написал chaos, то можешь действительно использовать учетные записи самое системы или СУБД |
| Автор: LostAlly 4.12.2009, 18:15 | ||
Теперь я получил полный ответ Ну я вас понял, в моем случае проще всего будет использовать xml-rpc.(SOAP более тяжел) Большое спасибо за ответы, вы помогли мне определиться и выбрать напраление движения. P.S. с удовольстивем поставил бы плюсы, но пока немогу этого сделать. |
| Автор: Kipter 6.12.2009, 15:24 | ||
| ИМХО проще свой протокол быстренько накатать чем использовать готовый который заставит ваше приложение под него прогибаться, + который может иметь много своих особенностей работы. Темболее свой протокол можно реализовать по простому, принимаемые данные десериализовать и где нибудь в начала пакета данных указывать численный метод команды протокола
ну в таком духе...... единственное что если клиентов реально мнооооого.... то сервер лучше не на Qt писать, ибо сигналы все таки медленноваты |
| Автор: SABROG 6.12.2009, 17:02 | ||
Где можно посмотреть сравнение скорости? Есть пример? Какой из методов использовался при написании сервера? Многопоточный, однопоточный? Реально много это сколько? Предел в 10000 клиентов как на DC хабах? А вообще практически куда ни посмотреть везде используются альтернативные сервера. Ресурсы не безграничны и это зависит не только от библиотеки, но и от ОС и от железа и от пропускной способности канала. |