Skip to content

LiamNoceda/Net

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Net: C++ Асинхронный Веб-Сервер на базе Crow Framework

Проект представляет собой легковесный высокопроизводительный веб-сервер, написанный на современном языке C++ (стандарт C++17). В качестве ядра используется микрофреймворк Crow, обеспечивающий многопоточную обработку входящих HTTP-запросов. Проект демонстрирует навыки проектирования REST API, работы с шаблонизаторами и разделения монолитной логики на независимые архитектурные модули.

Архитектурные особенности и технические решения

  • Многопоточность и асинхронность: Сервер настроен в режиме .multithreaded(), что позволяет эффективно утилизировать ресурсы многоядерных процессоров при обработке конкурирующих запросов.
  • Модульность (Разделение ответственности): Бизнес-логика валидации пользователей и формирования ответов полностью изолирована от логики маршрутизации сетевых пакетов. Модуль fn.cc выполняет детерминированную обработку входных данных, что упрощает написание модульных тестов (Unit-тестирования).
  • Оптимизация работы с памятью: Передача строковых аргументов в функции валидации (generateUserContext) реализована по константной ссылке (const std::string&), что исключает лишние операции аллокации памяти и копирования объектов при каждом сетевом запросе.
  • Динамическое представление (Шаблонизация): Рендеринг интерфейса разделен с бэкенд-логикой с помощью шаблонизатора Mustache. Данные передаются в виде структурированного контекста.
  • Автоматизация сборки и развертывания: Файл конфигурации CMake управляет не только компиляцией бинарного файла, но и автоматизирует этап сборки ресурсов (Asset Pipeline), копируя веб-шаблоны в целевую директорию сборки с помощью кроссплатформенных команд POST_BUILD.

Структура репозитория

  • CMakeLists.txt — Скрипт автоматизации сборки и линковки зависимостей.
  • main.cc — Точка входа в приложение, инициализация веб-сервера и регистрация маршрутов.
  • fn.h / fn.cc — Изолированный модуль бизнес-логики (проверка прав доступа, генерация контекста ответа).
  • templates/ — Каталог статических ресурсов и шаблонов Mustache (HTML-представления).
  • .gitignore — Конфигурация для исключения артефактов компиляции и системных файлов метаданных macOS из системы контроля версий.

Зависимости и системные требования

  • Компилятор с полной поддержкой стандарта C++17 (Clang 13+ / GCC 9+).
  • Инструментарий автоматизации сборки CMake версии 3.15 или выше.
  • Установленная в системе библиотека Crow C++ Framework.

Инструкция по установке Crow на macOS (Apple Silicon / Intel):

brew install crowcpp

Компиляция и развертывание

Сборка проекта осуществляется в изолированной директории для предотвращения загрязнения корневого каталога исходного кода временными файлами компилятора.

# Клонирование исходного кода проекта
git clone https://github.com
cd Net

# Создание директории сборки и генерация артефактов CMake
mkdir build && cd build
cmake ..

# Компиляция исполняемого файла
cmake --build .

# Запуск веб-сервера
./server

Спецификация API и маршрутизации

Сервер разворачивается на локальном интерфейсе и слушает порт 18080. Маршрутизация построена на базе динамических путей:

  • GET /Admin — Эмуляция входа администратора системы. Возвращает контекст повышенного уровня доступа.
  • GET /Banned — Пример обработки заблокированных учетных записей. Возвращает статус ошибки доступа.
  • GET /<any_string> — Универсальный маршрут для авторизованных пользователей, генерирующий стандартное приветственное сообщение.

About

A lightweight, multithreaded C++17 asynchronous web server built with the Crow framework, featuring REST API routing, Mustache templating, and automated CMake asset pipeline deployment.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors