Общение Приложение - DLL
Я делаю некую систему, которая будет зашита в библиотеку. Работать она будет постояно и много, не зависимо от приложения. Т.е. по сути приложение, это клиент для управления. Общение их будет построено по схеме команда - ответ (сообщениЯ о выполнении действий над командой). Сообщений будет много.
Ну так вот в чём вопрос, как организовать процес общения ? :
- Приложение регулярно опрашивает библиотеку (как функция GetMessage) и получает информацию о новых сообщениях и их вызывает;
- Библиотека сама извещает приложение о новых сообщениях, и если так, то как это можно будет реализовать? т.к. я не знаю, как из библиотеки вызывать процедуры приложения;
- Стоит ли использовать API? (в основном для 2 варианта);
- Или ещё как-то?
Я делаю некую систему, которая будет зашита в библиотеку. Работать она будет постояно и много, не зависимо от приложения.
Это как? Может, ты имел в виду сервис, а не библиотеку?
Т.е. по сути приложение, это клиент для управления. Общение их будет построено по схеме команда - ответ (сообщениЯ о выполнении действий над командой). Сообщений будет много.
Если много, требуют определенного порядка обработки и не критичны ко времени,- ставь в очередь.
Приложение регулярно опрашивает библиотеку (как функция GetMessage) и получает информацию о новых сообщениях и их вызывает;
GetMessage никого не опрашивает, а ждет появления сообщений в очереди.
Библиотека сама извещает приложение о новых сообщениях, и если так, то как это можно будет реализовать? т.к. я не знаю, как из библиотеки вызывать процедуры приложения;
Callback
Стоит ли использовать API? (в основном для 2 варианта);
Вопрос не понят.
Или ещё как-то?
Есть два вида реакции - синхронная и асинхронная. Определись, какая тебе нужна?
Я подумывал о сервисе, но я не умею их писать. :(
Если много, требуют определенного порядка обработки и не критичны ко времени,- ставь в очередь.
Это понятно, вопрос в том, как их выдёргивать от туда... А критичность по времени определяется своевременным уведомлением пользователя и не более.
GetMessage никого не опрашивает, а ждет появления сообщений в очереди.
:) Ну я же его как пример привёл. Я имел в виду, что приложение вызывает функцию библиотеки, которая возвращает сведения о новых сообщениях.
Callback
Т.е.? поясни пожалуйста.
Вопрос не понят.
Использование хендлов, событий и т.д. системы с функциями работы с ними. (к примеру GetMessage) или самописные средства.
Есть два вида реакции - синхронная и асинхронная. Определись, какая тебе нужна?
Моя система (не ОС) не будет ждать команд от приложения, а жить своей жизнью (кроме определённых случаев), но при их появлении будет выполнять те или иные действия.. (замедление, ускорение, изменение параметров, возвращение информации, запуск определённых процессов (не процессов ОС, а внутренних) и т.п.).
http://msdn2.microsoft.com/en-us/library/aa984074.aspx
http://msdn2.microsoft.com/en-us/library/ms685141.aspx
В общих чертах это описано здесь. Подробнее - здесь.
Мы обычно используем события, хотя даже у нас это не единственный способ.
Простой и тупой способ - вызвать некоторый метод библиотеки, а тот пусть делает, что нужно: запускает поток, или вызывает функцию, что угодно.
Всё равно я не буду это изучать сейчас т.к. это не цель, да и систему я делаю так сказать "для себя"...
Я модель мира делаю, вот и получается, что она "жить" сама будет, а я только админестрировать. Если закончу. :)
Спасибо всем за помощь!
p.s. Если ещё будут дополнения пишите :)
Основная особенность - отсутствие интерфейса пользователя, отсюда следует, что нет ни форм, ни консоли. Вместо них можно использовать Event Log (чаще всего через события), TCP|UDP, можно ещё как-нибудь извернуться. Вот, собственно, практически вся специфика.