Skip to content
Открытый исходный код · MIT

Веб-фреймворк
на чистом Си

Высокопроизводительный сервер для Linux: HTTP/1, HTTP/2 и HTTP/3 (QUIC), WebSocket, базы данных и ORM из коробки — без обратного прокси и рантайм-зависимостей

cwfr — bash live
$
0 req/s p99 0.00 ms0 conn
3HTTP-протоколаHTTP/1.1 · HTTP/2 · HTTP/3
4драйвера баз данныхPostgreSQL · MySQL · Redis · SQLite
~100 µsна запростипичная задержка под нагрузкой
MITоткрытый кодисходный код свободно доступен на GitHub
Быстрый старт

Запустите сервер за пару команд

Склонируйте репозиторий, соберите проект с нужными драйверами баз данных и запустите сервер одной командой.

bash
git clone https://github.com/fraxer/C-web-framework.git
cd C-web-framework/backend

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
  -DINCLUDE_POSTGRESQL=yes \
  -DINCLUDE_MYSQL=yes \
  -DINCLUDE_REDIS=yes \
  -DINCLUDE_SQLITE=yes
cmake --build . -j$(nproc)

./exec/cwfr -c /path/to/config.json
Маршрут — config.json
{
  "/": {
    "GET": {
      "file": "handlers/libindexpage.so",
      "function": "index"
    }
  }
}
Обработчик — handlers/indexpage.c
#include "http.h"

void index(httpctx_t* ctx) {
  ctx->response->send_data(
    ctx->response,
    "Hello world!"
  );
}

Обработчик — это просто функция — Каждый маршрут загружает обработчик из .so-библиотеки. Прочитайте запрос, сформируйте ответ — больше ничего настраивать не нужно.

Руководство по сборке →
Возможности

Всё необходимое в одном фреймворке

Полный набор инструментов для современных веб-сервисов — протоколы, базы данных, безопасность и утилиты из коробки.

HTTP/3 · QUIC

Собственный стек QUIC (RFC 9000) поверх UDP: рукопожатие TLS 1.3 за один RTT, нет блокировки головы очереди, миграция соединений между сетями — телефон перешёл с Wi-Fi на LTE, соединение живо.

  • Параллельные потоки запросов в одном соединении
  • QPACK-сжатие заголовков
  • Трейлеры, 103 Early Hints, 100 Continue
  • Автоанонс через Alt-Svc — клиенты переходят сами
Подробнее

HTTP/2

Мультиплексирование до 100 потоков, HPACK и защита от Rapid Reset.

  • WebSocket поверх h2 (Extended CONNECT)
  • Трейлеры и 103 Early Hints
  • h2c upgrade для plaintext
Подробнее

WebSocket

Каналы реального времени с broadcasting и именованными группами.

  • Именованные каналы и фильтрация получателей
  • permessage-deflate сжатие
  • Работает поверх HTTP/1.1 и HTTP/2 (Extended CONNECT)
Подробнее

HTTP/1.1

Полный сервер и клиент: маршрутизация, виртуальные хосты, TLS.

  • Маршруты с динамическими параметрами
  • Виртуальные хосты, regex-домены, IDN
  • multipart/form-data и загрузка файлов
Подробнее

Базы данных

Четыре драйвера за единой API с ORM и миграциями.

PostgreSQLMySQLRedisSQLite
  • ORM-модели и prepared statements
  • Миграции схемы из коробки
  • Транзакции и пулы соединений
Подробнее

Безопасность

Аутентификация, сессии и RBAC без внешних сервисов.

  • PBKDF2-HMAC-SHA256 для паролей
  • Сессии: файлы, Redis, БД (AES-256-GCM)
  • Rate limiting и валидаторы данных
Подробнее

Хранилище и Email

Локальный FS и S3 плюс транзакционная почта с DKIM.

  • S3-совместимые сервисы
  • multipart-загрузка файлов в хранилище
  • SMTP-клиент и шаблоны писем
Подробнее

Инструменты

Шаблонизатор, i18n, JSON, JWT и планировщик задач.

  • i18n на gettext: плюрализм, fallback
  • Планировщик: interval, daily, weekly
  • str_t с SSO, HashMap, JSON-парсер
Подробнее

И это ещё не всё

Горячая перезагрузка обработчиков, логирование, HTTP-клиент, планировщик задач и другое — в документации.

Открыть документацию
Области применения

Где применяется фреймворк

REST API

Высокопроизводительные API для мобильных и веб-приложений

Real-time

Чаты, уведомления и live-обновления через WebSocket

Микросервисы

Микросервисы и монолитные приложения

API Gateway

Маршрутизация и проксирование запросов между сервисами

Админ-панели

Аутентификация, RBAC и CRUD-операции

Загрузка файлов

Локальное и S3-совместимое облачное хранилище

Email-сервисы

Транзакционная отправка писем с DKIM

i18n

Многоязычный контент на базе gettext и плюрализма

Начните прямо сейчас

Создавайте быстрые веб-сервисы на Си

Изучите введение, посмотрите примеры или откройте исходный код на GitHub.

Выпущено под лицензией MIT.