Russian Qt Forum

Qt => Общие вопросы => Тема начата: s200999900 от Июль 26, 2010, 17:58



Название: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 26, 2010, 17:58
Всем привет!
Я новичек в программировании и недавно начал изучать QT.
Подскажите где можно почитать и прилизительные примеры исходников(для новичка) о том как написать модульное приложение.
Есть ядро программы, которое скорее всего будет работать в режиме демона/сервиса(вариант для виндовса на будущее), его задача только поиск плагинов и перенарпавление запросов от одного плагина к другому.
Весь функционал программы выполняется в плагинах они же должны выполнятся в отдельных процессах.
Основные плагины которые должны быть:
    GUI самого приложения в котором должны отображаться список плагинов и их настроек и отображения функционала в gui.
    интерфейс командной строки функционал почти тот же что и в gui но из ком.строки.
    доступ к бд (mysql,sqlite)
В общем покаместь все, подскажите с чего начать, что можно почитать по этому поводу? или может есть что-то готовое как шаблон или заготовка для анализа ? :)
Спасибо!


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: lit-uriy от Июль 26, 2010, 20:48
вряд ли можно посоветовать что-то лучше, чем примеры и демки идущие в комплекте с Qt


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Igors от Июль 26, 2010, 21:50
Весь функционал программы выполняется в плагинах они же должны выполнятся в отдельных процессах.
Может быть в отдельных нитках (потоках)? Потому что "плагин" обычно выполняется в процессе хоста.

А вообще респект Вашему ВУЗу и преподавателям - хорошие задания дают!


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: BlackTass от Июль 26, 2010, 23:38
я думаю что отдельный процесс имеется в виду fork(), а не отдельное приложение.


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 27, 2010, 09:18
вряд ли можно посоветовать что-то лучше, чем примеры и демки идущие в комплекте с Qt
Можете подсказать на какую лучше посмотреть чтобы как можно более близко отобразил то что мне нужно?


Название: Re: Помощь в проэктирование модульной прогр&#
Отправлено: s200999900 от Июль 27, 2010, 09:29
Весь функционал программы выполняется в плагинах они же должны выполнятся в отдельных процессах.
Может быть в отдельных нитках (потоках)? Потому что "плагин" обычно выполняется в процессе хоста.

А вообще респект Вашему ВУЗу и преподавателям - хорошие задания дают!
Спасибо!
" Может быть в отдельных нитках (потоках)? Потому что "плагин" обычно выполняется в процессе хоста. " - можно и в отдельных нитках, применительно к *nix это будут потоки (Qthreads?)  Мне бы понять концептуально как можно реализовать такую заготовку для програмки и если б был пример подобной разработки.


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 27, 2010, 09:40
я думаю что отдельный процесс имеется в виду fork(), а не отдельное приложение.
Я так и подозревал
Покаместь представляю в общем картинку: запускается ядро(демон в никсах), он просканирует каталог с плагинами и выделяет для себя бибилиотеки-плагины, которые потом подгружает, с проверкой подходят ли ему по версии эти плагины. Создает список всех доступных методов/классов с растановкой приоритетов нужно для того чтобы конект к БД mysql/sqllite произошел раньше чем пошла работа с данными из этой самой бд  .и затем по "требованию? запускает GUI" или лучше GUI/CLI как отдельную программу сделать которая конектится через tcp сокет к демону?



Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Авварон от Июль 27, 2010, 09:43
зачем так усложнять? Сделайте просто несколько библиотек
[offtop]Хотя передача сигналов\слотов по сети была бы делом прикольным


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Igors от Июль 27, 2010, 11:29
Покаместь представляю в общем картинку: запускается ядро(демон в никсах), он просканирует каталог с плагинами и выделяет для себя бибилиотеки-плагины, которые потом подгружает, с проверкой подходят ли ему по версии эти плагины. Создает список всех доступных методов/классов с растановкой приоритетов нужно для того чтобы конект к БД mysql/sqllite произошел раньше чем пошла работа с данными из этой самой бд  .и затем по "требованию? запускает GUI" или лучше GUI/CLI как отдельную программу сделать которая конектится через tcp сокет к демону?
Здесь хватает работы с управлением разными dll даже в рамках 1 процесса и 1 нитки. Создавать больше процессов и/или ниток - неясно зачем. Прочитайте в Assistant про QDir и QLibrary, загрузите нужные модули и их ф-ции. Ну и вызывайте их в нужном порядке.


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 27, 2010, 12:59
Прочитайте в Assistant про QDir и QLibrary, загрузите нужные модули и их ф-ции. Ну и вызывайте их в нужном порядке.
Спасибо! почитаем.


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: crossly от Июль 27, 2010, 15:11
вариантов решения может быть несколько... сначала надо определится с задачей и архитектурой.... а потом искать решение... а не на оборот...


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 27, 2010, 15:39
вариантов решения может быть несколько... сначала надо определится с задачей и архитектурой.... а потом искать решение... а не на оборот...
С задачей определился нужна для начала заготовка программы функциональность которой будет располагаться в плагинах, а ядро программы (демон) будет только загружать(подключать)/выгружать(отключать) плагины и реализовывать связи между плагинами
Если я правильно понимаю понятие архитектуры программы то это модульная.
Можете подсказать какой нибудь вариант решения подобной задачи? или где можно почитать о том как подобные программы проэктируются или реализуются? желательно чотбы было не сильно сложно было :)


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Авварон от Июль 27, 2010, 15:41
да не нужен там демон


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Sahab от Июль 27, 2010, 15:56
а почему нет?


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Авварон от Июль 27, 2010, 15:58
и захотим мы написать гуи плагин и обломаемся


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 27, 2010, 16:00
да не нужен там демон
Для начала я в любом случае попробую без демона для того чтобы посомтреть как оно работает. А на основе "обычной программы" и вокруг нее сделать обвязку из плугинов. Но хотелось бы знать на будущее к чему мне нужно прийти чтобы достич конечной цели...


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: Sahab от Июль 27, 2010, 16:00
Цитировать
или лучше GUI/CLI как отдельную программу сделать которая конектится через tcp сокет к демону?
...
какбэ смысл гавкаццо пока нет задачи...


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: galilley от Июль 28, 2010, 20:41
Есть ядро программы, которое скорее всего будет работать в режиме демона/сервиса(вариант для виндовса на будущее), его задача только поиск плагинов и перенарпавление запросов от одного плагина к другому.
Весь функционал программы выполняется в плагинах они же должны выполнятся в отдельных процессах.
Основные плагины которые должны быть:
    GUI самого приложения в котором должны отображаться список плагинов и их настроек и отображения функционала в gui.
    интерфейс командной строки функционал почти тот же что и в gui но из ком.строки.
    доступ к бд (mysql,sqlite)

Где-то я подобную мысль уже слышал :).
http://galilley.blogspot.com/2008/10/idp-modular-system_750.html (http://galilley.blogspot.com/2008/10/idp-modular-system_750.html)


Название: Re: Помощь в проэктирование модульной программы.
Отправлено: s200999900 от Июль 29, 2010, 09:41
Есть ядро программы, которое скорее всего будет работать в режиме демона/сервиса(вариант для виндовса на будущее), его задача только поиск плагинов и перенарпавление запросов от одного плагина к другому.
Весь функционал программы выполняется в плагинах они же должны выполнятся в отдельных процессах.
Основные плагины которые должны быть:
    GUI самого приложения в котором должны отображаться список плагинов и их настроек и отображения функционала в gui.
    интерфейс командной строки функционал почти тот же что и в gui но из ком.строки.
    доступ к бд (mysql,sqlite)

Где-то я подобную мысль уже слышал :).
http://galilley.blogspot.com/2008/10/idp-modular-system_750.html (http://galilley.blogspot.com/2008/10/idp-modular-system_750.html)
Большое  спасибо! то что нужно!