Как передать данные между приложениями
А точнее задачка звучит так. Есть приложение А, А1, и А2. Так же есть сервис С. Сервис должен заниматься тем, что вести логи всех событий, которые пройзойдут в приложениями. Напрмер приложение А потеряло связь с контроллером, или параметр вышел за предел. Сейчас это все фунциклирует на потоках в каждом приложении и ведется отдельно лог для каждого приложения. Видел в одной книжке как через атомы между приложениями общаться. Только вот никак припомнить не могу. Может еще какие идеи кто подкинет? Через COM не очень хочется, надо все это быстро кидать, а он тормозит.
Еще припомнил, что по поводу трубок (pipes)? Ну или каналы, кому как больше нравится, или известно.
Ну что? Идей и опыта нема?
Цитата:
Originally posted by Iskander
А точнее задачка звучит так. Есть приложение А, А1, и А2. Так же есть сервис С. Сервис должен заниматься тем, что вести логи всех событий, которые пройзойдут в приложениями. Напрмер приложение А потеряло связь с контроллером, или параметр вышел за предел. Сейчас это все фунциклирует на потоках в каждом приложении и ведется отдельно лог для каждого приложения. Видел в одной книжке как через атомы между приложениями общаться. Только вот никак припомнить не могу. Может еще какие идеи кто подкинет? Через COM не очень хочется, надо все это быстро кидать, а он тормозит.
А точнее задачка звучит так. Есть приложение А, А1, и А2. Так же есть сервис С. Сервис должен заниматься тем, что вести логи всех событий, которые пройзойдут в приложениями. Напрмер приложение А потеряло связь с контроллером, или параметр вышел за предел. Сейчас это все фунциклирует на потоках в каждом приложении и ведется отдельно лог для каждого приложения. Видел в одной книжке как через атомы между приложениями общаться. Только вот никак припомнить не могу. Может еще какие идеи кто подкинет? Через COM не очень хочется, надо все это быстро кидать, а он тормозит.
Можно использовать распределенную память. См. "File Mapping" в MSDN.
Централизованное ведение логов конечно неплохо, но в многозадачной среде приложения неизбежно будут мешать друг другу, а это уже не есть хорошо.
По-моему в данной ситуации лучще всего подходит именованный канал. Особенно в режиме передачи сообщений (если конечно работа идет под WinNT).
С расзделяемой памятью я думаю связываться не стоит: во-первых нужна синхронизация, а во-вторых придется выдумывать и поддерживать какую-то структуру данных в этой памяти.
Цитата:
Originally posted by Iskander
Еще припомнил, что по поводу трубок (pipes)? Ну или каналы, кому как больше нравится, или известно.
Еще припомнил, что по поводу трубок (pipes)? Ну или каналы, кому как больше нравится, или известно.
Можно с помощью труб.
Примерно так.
Цитата:
Originally posted by mikeshilkin
Можно с помощью труб.
Примерно так.
Можно с помощью труб.
Примерно так.
А почему бы не попробовать с помощью PostMessage/SendMessage и event'a TApplication OnMessage??? Помоему очень удобно. Сам так делаю и ничуть не жалею. 8)
Пока реализовал на message. Хотя механизм трубок довольно интересный. Но у меня что-то не получилось, из-за спешки пришлось забить на них.