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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors