Введение
C Web Framework — это высокопроизводительный фреймворк, написанный на языке C и предназначенный для разработки веб-приложений на Linux. Построен на event-driven архитектуре epoll, которая эффективно обрабатывает большое количество одновременных соединений.
Фреймворк предоставляет полный набор инструментов для разработки современных веб-приложений: от базового HTTP-сервера до интеграции с базами данных, WebSocket-соединений, системы аутентификации и файлового хранилища.
Возможности
HTTP
- Полная поддержка HTTP/1.1
- Встроенный HTTP-клиент: HTTPS (TLS 1.2+), keep-alive connection pool, автоследование редиректов
- Гибкая система маршрутизации с динамическими параметрами
- Виртуальные хосты с regex-доменами и поддержкой IDN
- Middleware для HTTP и WebSocket запросов
- Встроенные фильтры: chunked encoding, range requests, gzip, cache control
- Обработка multipart/form-data и загрузка файлов
- Полная поддержка cookie с secure, httpOnly, sameSite
- Автоматическое сжатие gzip для поддерживаемых типов контента
- TLS/SSL с настраиваемыми cipher suites
- Редиректы с поддержкой регулярных выражений и подстановкой групп захвата
WebSocket
- Полная поддержка протокола WebSocket
- Система broadcasting для групп клиентов
- Именованные каналы с фильтрацией получателей
- Встроенная поддержка JSON-сообщений
- Middleware для WebSocket
Базы данных
- PostgreSQL — нативная поддержка с prepared statements
- MySQL — нативная поддержка с защитой от SQL-инъекций
- SQLite — встраиваемая БД, работает напрямую с файлом без сервера
- Redis — поддержка для кеширования и сессий
- ORM-подобные операции — система моделей для работы с таблицами
- Миграции — система версионирования схемы БД
- Query Builder — безопасное построение SQL-запросов
Аутентификация и безопасность
- Встроенная система регистрации и авторизации
- Сессии на файлах, в Redis и в базе данных (секреты защищены через AES-256-GCM)
- Хеширование паролей с солью
- Валидаторы для email, паролей и других данных
- Middleware аутентификации для защиты маршрутов
- RBAC — система ролевого доступа
- Rate Limiting — ограничение частоты запросов (защита от DDoS)
Файловое хранилище
- Локальное хранилище — операции с файловой системой
- S3-совместимое хранилище — интеграция с S3 и совместимыми сервисами
- Операции с файлами: создание, чтение, обновление, удаление
- Обработка multipart-загрузок с сохранением в хранилище
Email
- SMTP-клиент для отправки писем
- Поддержка DKIM-подписей для аутентификации отправителя
- Шаблоны писем
Шаблонизатор
- Встроенный шаблонизатор
- Переменные и циклы для динамической генерации HTML
- Интеграция с моделями
Интернационализация (i18n)
- На базе стандартной библиотеки gettext
- Переводы по доменам для разделения локализации между модулями
- Автоопределение языка из query-строки или заголовка Accept-Language
- Формы плюрализма и подстановка значений
- Цепочка fallback: запрошенный язык → en → идентификатор сообщения
JSON
- Высокопроизводительный JSON-парсер
- Сериализация данных в JSON
- Потокобезопасные операции
- Корректная обработка Unicode и суррогатных пар
Планировщик задач
- Асинхронные задачи — разовые задачи в фоновом потоке
- Расписание — interval, daily, weekly, monthly
- Два выделенных потока: async-worker и scheduler-worker
- Задачи — динамически загружаемые .so-модули
Производительность и масштабируемость
- Event-driven архитектура на epoll
- Поддержка множества worker-потоков
- Connection pool для баз данных
- Горячая перезагрузка без остановки сервера
- Zero-copy операции где возможно
Утилиты и структуры данных
- str_t — динамические строки с SSO-оптимизацией
- Array — динамические массивы
- HashMap/Map — ассоциативные массивы
- JWT — создание и проверка токенов
- UUID, Base64, SHA-1/256, AES-256-GCM
- Система логирования с разными уровнями
Требования к ПО
- Glibc 2.35 или выше
- GCC 9.5.0 или выше
- CMake 3.12.4 или выше
- PCRE 8.43 (библиотека регулярных выражений)
- Zlib 1.2.11 (библиотека сжатия данных)
- OpenSSL 1.1.1k или выше
- LibXml2 2.9.13
Опциональные зависимости
- PostgreSQL — development-библиотеки (для поддержки PostgreSQL)
- MySQL/MariaDB — development-библиотеки (для поддержки MySQL)
- Redis — для сессий и кеширования
Области применения
Фреймворк подходит для разработки:
- REST API — высокопроизводительные API для мобильных и веб-приложений
- Real-time приложения — чаты, уведомления, live-обновления через WebSocket
- Веб-сервисы — микросервисы и монолитные приложения
- API Gateway — маршрутизация и проксирование запросов
- Админ-панели — с аутентификацией, RBAC и CRUD-операциями
- Сервисы загрузки файлов — с поддержкой локального и облачного хранилища
- Email-сервисы — транзакционная отправка писем с DKIM