Daqster

Архитектура на Daqster

Български English

Родител: Documentation Index

Архитектурен хъб

Свързани секции

Общ преглед

Daqster е Qt5-базирана рамка за създаване и зареждане на плъгини с хост приложение. Проектът използва модулна архитектура, която позволява лесно разширяване чрез динамично зареждане на плъгини.

Структура на проекта

Daqster/
├── src/                          # Source код
│   ├── frame_work/               # Ядро на рамката
│   │   └── base/                 # Основни класове
│   │       ├── src/              # Implementation
│   │       └── include/          # Headers
│   ├── apps/                     # Приложения
│   │   └── Daqster/              # Главно приложение
│   ├── plugins/                  # Плъгини
│   │   ├── NodeEditor/           # Node Editor плъгин
│   │   ├── QtCoinTrader/         # QtCoinTrader плъгин
│   │   └── tests/                # Тестови плъгини
│   └── external_libs/            # Външни библиотеки
│       ├── nodeeditor/           # Node Editor библиотека
│       └── qtrest_lib/           # REST API библиотека
├── tools/                        # Инструменти за билд
│   ├── create_appimage.sh        # AppImage създаване
│   └── Build_AppImage/           # Локални AppImage билдове
├── docs/                         # Документация
│   ├── Architecture/             # Архитектурна документация
│   │   ├── README.md             # Тази документация
│   │   ├── README.en.md          # English версия
│   │   ├── BuildSystemArchitecture.md
│   │   ├── apps/
│   │   ├── framework/
│   │   └── plugins/
│   ├── development/              # Разработка и дебъг
│   │   ├── README.md
│   │   ├── DeveloperGuide.md
│   │   └── HowToDebugAppImage.md
│   ├── operations/               # Оперативни и build теми
│   │   ├── BuildHelpers.md
│   │   └── UpstreamManagement.md
│   └── porting/                  # Портинг и миграции
│       └── QtRest_Qt6_Porting.md
├── .github/workflows/            # CI/CD
│   ├── ci.yml                    # Continuous Integration
│   └── release.yml               # Release workflow
└── CMakeLists.txt                # Главен CMake файл

Основни компоненти

1. Frame Work (Ядро)

Местоположение: src/frame_work/base/

Основни класове:

Отговорности:

2. Host Application (Главно приложение)

Местоположение: src/apps/Daqster/

Основни класове:

Отговорности:

3. Plugin System (Система за плъгини)

Местоположение: src/plugins/

Типове плъгини:

Plugin Discovery:

  1. Build директория (./plugins, ../lib/daqster/plugins)
  2. Environment variables (DAQSTER_PLUGIN_DIR, DAQSTER_PLUGIN_PATH)
  3. User plugins (~/.local/share/daqster/plugins)
  4. System plugins (/usr/lib/daqster/plugins)

4. External Libraries (Външни библиотеки)

Местоположение: src/external_libs/

Библиотеки:

Архитектурни принципи

1. Модулност

2. Разширяемост

3. Изолиране

4. Крос-платформеност

Data Flow

1. Стартиране на приложението

main.cpp
├── Инициализира QApplication
├── Създава QPluginManager
├── Зарежда плъгини
└── Стартира GUI

2. Зареждане на плъгини

QPluginManager
├── Сканира директории за плъгини
├── Зарежда .so файлове
├── Инициализира QPluginInterface
└── Добавя в списък с активни плъгини

3. Стартиране на плъгин

AppToolbar/ApplicationsManager
├── Получава заявка за стартиране
├── Намира плъгин по име
├── Създава QProcess с environment
└── Стартира като child процес

Архитектурна диаграма

Architecture Diagram

PlantUML източник

Plugin Discovery Flow

Plugin Discovery Flow

PlantUML източник

Environment Variables

Plugin Discovery

Qt Environment

XDG Directories

Security Considerations

1. Plugin Isolation

2. Plugin Validation

3. File System Access

Performance Considerations

1. Plugin Loading

2. Memory Management

3. Process Management

Testing Strategy

1. Unit Tests

2. Integration Tests

3. AppImage Tests

9. Plugin Lifecycle Diagram

Plugin Lifecycle

PlantUML източник

10. AppImage Structure

Daqster-x86_64.AppImage
├── AppRun                          ← startup script
├── daqster.desktop
├── daqster.png
└── usr/
    ├── bin/
    │   └── Daqster                 ← главен изпълним файл
    ├── lib/
    │   ├── libQt*.so.*             ← Qt библиотеки
    │   ├── libicu*.so.*            ← ICU библиотеки
    │   ├── plugins/                ← Qt плъгини
    │   ├── qml/                    ← QML модули
    │   └── daqster/
    │       └── plugins/            ← Daqster плъгини
    └── share/
        ├── applications/           ← .desktop файл
        └── icons/                  ← икона

AppRun настройва environment при стартиране:

Променлива Стойност
LD_LIBRARY_PATH usr/lib/
QT_PLUGIN_PATH usr/lib/plugins/
QML2_IMPORT_PATH usr/lib/qml/
DAQSTER_PLUGIN_DIR usr/lib/daqster/plugins/
XDG_CONFIG_HOME ~/.config/daqster

11. Future Enhancements

1. Plugin Management

2. Performance

3. Security

Заключение

Daqster използва модулна архитектура, която позволява лесно разширяване и поддръжка. Системата за плъгини е проектирана да бъде безопасна, ефективна и лесна за използване. Build системата поддържа както локална разработка, така и CI/CD за автоматизирано разпространение.