Plugins lesson 3.
| | |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Умеет формировать API для подключения плагинов.
Умеет создавать и собирать плагины в соответствии с заданным API.
(C)
Умеет подключать и отключать плагины в рантайме. (загрузка библиотеки и ее выгрузка) | На примере торговых ботов для биржи создадим систему с возможностью подключения плагинов. Научимся формировать API для плагинов, собирать и подключать их в рантайме, а также управлять ими — включать и отключать по мере необходимости.
Урок - практический. Студент после него сможет писать аналогичные решения, что мы и проверим в проекте.
Торговый бот - контекст, в котором показываются примеры (не production bot)
Придумать API |
В прошлых уроках мы изучили, что такое динамически подгружаемый код и как линковаться с ним, в этом уроке изучим способ более удобного взаимодействия с динамическими библиотеками
## Система плагинов
В прошлом уроке мы узнали, что используя dlopen и dlsym можно динамически подгружать функции из отдельных файлов динамических библиотек. Это бывает полезно для уменьшения размера программы на диске и в оперативной памяти, а также выноса зависимостей в рациональные.
В этом уроке мы изучим взаимодействие с динамическими кодом более высокоуровневым способом: системой плагинов.
## Система плагинов
Система плагинов представляет собой подгружаемый функционал, взаимодействие с которым возможно через заранее определенный интерфейс. Как концепцию плагины можно представить так: прописывание трейта - определение интерфейса, а реализация трейта - уже сами плагины, но не вшитые в саму программу, а находящиеся в отдельном файле.