Приложение на основе архитектуры подключаемого модуля c / c ++ - PullRequest
8 голосов
/ 25 мая 2010

Мне нужно знать, как начать писать приложение на основе архитектуры плагинов. Я имею в виду, как написать базовый код и позволить другим разрабатывать приложение, добавляя плагины, которые они пишут. Я знаю, что в C ++ есть некоторые проблемы. большинство людей используют другой язык, такой как python, для добавления плагинов к своему приложению c ++.

Ответы [ 3 ]

4 голосов
/ 25 мая 2010

Я думаю, это не тот ответ, который вы ожидаете, но вы можете попытаться изучить источники Rainmeter . Он написан на C ++ (на мой взгляд, некоторые места могут быть лучше, но в целом все нормально), и все приложение сделано так, что оно просто обрабатывает плагины.

Даже простой API выполняется с помощью плагинов, есть также множество примеров добавленных плагинов, я имею в виду, написанных кем-то другим (я тоже это сделал однажды).

Я думаю, что вы могли бы изучить множество новых приемов в разработке на основе плагинов, взглянув на другие приложения.

Также стоит упомянуть, что другим хорошим примером является Miranda IM .

Редактировать: Кроме того, если бы я выполнил ту же задачу, я бы на самом деле добавил к своему приложению некоторый python (или что-то подобное) бэкэнд и использовал его в качестве языка для SDK (например, используя boost::python).

4 голосов
/ 25 мая 2010

Вы должны:

  • определить интерфейс
  • загрузите ваш плагин и дайте ему этот интерфейс

Ваш плагин сможет общаться с хост-приложением через этот интерфейс. Это означает, что вы должны тщательно продумать, что вы хотите, чтобы ваши плагины делали.

Возможно, вам потребуется поддержка различных версий интерфейса, если ваше хост-приложение изменяется и вы добавляете функциональные возможности.

1 голос
/ 25 мая 2010

Не могли бы вы определить точки доступа в вашем приложении, с которыми может взаимодействовать внешнее приложение?

допустим, вы определили некоторый механизм именованных каналов или сокет TCP / IP, где внешнее приложение будет вызывать этот API для управления вашим приложением?

, учитывая, что вам нужно зарегистрировать эти плагины в основном приложении, прежде чем разрешить им использовать ваше приложение. Вы можете даже добавить публичные приватные сертификаты для аутентификации источника этого плагина (то есть подписать плагин закрытым ключом, где экземпляры вашего приложения будут проверяться на наличие открытого ключа)

...