2010-05-18 2 views
1

Я рассматриваю возможность создания приложения на C++, которое будет анализировать текст из Интернета и создавать статистические результаты. Эти результаты я хочу получать во внешнем приложении в режиме реального времени. Внешнее приложение (к коду которого у меня нет доступа, но вы можете запросить добавленное на заказ дополнение) понадобится код для чтения и использования этих результатов.Как подключить два приложения

Мне интересно, что было бы лучшим способом объединить два приложения с точки зрения скорости и простоты реализации. Я рассматриваю:

disk I/O (slow) 

a Windows service 

a DLL 

a web service 

a web page 

Возможно, у меня отсутствует лучшее решение? Спасибо.

Update : there is an additional need to know how long a data request may take at worst. 

ответ

2

Существует множество механизмов IPC на выбор (сокеты, общая память, каналы, ...). Я думаю, что «лучший выбор» будет в значительной степени зависеть от того, как другое приложение структурировано. насколько ваше пользовательское расширение будет стоить вам.

Я не знаю, сколько из вашей среды, но было бы целесообразно, чтобы посмотреть на boost.interprocess: http://www.boost.org/doc/libs/1_43_0/doc/html/interprocess.html

3

Сервис окон было бы разумно, но все равно нужно будет общаться с другим приложением, это называется IPC, подъезжает окна описаны here, Named Pipes простые & гибкие, Mapping Файл мощный.

Альтернативой было бы вставить базу данных посередине?

+0

Хорошие точки. Это также заставило меня понять, что мне нужно иметь некоторый контроль над скоростью процесса коммуникации. Например, сообщение Windows может быть поставлено в очередь и потребуется время, чтобы добраться до получателя. Я обновлю o.p. чтобы добавить это ограничение тоже. Интересно, какой накладной db наложил бы ... – sevaxx

+0

База данных имеет некоторые данные для чтения/записи на дисках и, вероятно, будет медленной. – Wartin

5
  • Розетки?
  • Общая память?
  • RAM-диск?
  • TCP/IP?
  • Сообщения Windows?
  • Аргументы командной строки (из другого приложения)?

Каким образом другое приложение должно поддерживать прием данных?

+0

AFAIK другое приложение получает только данные с клавиатуры. Аргументы командной строки не будут делать трюк, потому что суммы должны постоянно поступать в реальном времени, а внешнее приложение должно работать уже. – sevaxx

Смежные вопросы