веб-фреймворк
веб-фреймворк
https://github.com/oatpp/oatpp
Oat++ - это современный веб-фреймворк для C++. Он полностью загружен и содержит все необходимые компоненты для эффективной разработки на уровне производства. Кроме того, он легкий и занимает мало памяти.
Какова основная область применения Oat++?
Oat++ используется для самых разных целей, от создания REST API, работающих на встраиваемых устройствах, до создания микросервисов и высоконагруженных облачных приложений.
Но большинство случаев использования приходится на IoT и робототехнику.
Насколько переносимым является Oat++?
Теоретически, Oat++ может быть легко перенесен везде, где есть потоки и сетевой стек. С дополнительными сравнительно небольшими усилиями его можно перенести практически везде, в зависимости от того, насколько сильно вы его разделите и каков будет конечный размер бинарных файлов.
Дополнительную информацию можно найти в разделе Поддерживаемые платформы.
Каков размер минимального приложения Oat++?
Около 1 Мб, в зависимости от версии C/C++ std-lib и oatpp.
Какой API для Oat++ выбрать, Simple или Async?
Всегда выбирайте Simple API, когда это возможно. Simple API более развит и делает код чище.
Async API предназначен для небольших специфических задач, которые выполняются с высоким уровнем параллелизма, например:
Обслуживание загрузки файлов для большого количества одновременных пользователей (1K пользователей и более).
Потоковая передача данных большому количеству клиентов (1K и более).
Серверы чата через Websocket.
Для всех остальных целей используйте простой API.
https://mengbaoliang.cn/archives/54718/
Базовое использование Oat++
Далее мы используем Oat++ для запроса различных URL-сервисов и отображения различного контента в браузере. Мы проектируем URL-адрес запроса следующим образом:
Запрос localhost:8000/hello1 отображает Hello Handler1
Запрос localhost:8000/hello 2 Отображение Hello Handler2
Основные функции класса:
HttpRequestHandler определяет функцию обработки URL-адреса запроса;
HttpRouter используется для связывания URL с HttpRequestHandler;
Обработка соединения с сервером HttpConnectionHandler
Параметры прослушивания сервера ConnectionProvider
Мониторинг серверных служб
Oat++ - это современный веб-фреймворк для C++. Он полностью загружен и содержит все необходимые компоненты для эффективной разработки на уровне производства. Кроме того, он легкий и занимает мало памяти.
Какова основная область применения Oat++?
Oat++ используется для самых разных целей, от создания REST API, работающих на встраиваемых устройствах, до создания микросервисов и высоконагруженных облачных приложений.
Но большинство случаев использования приходится на IoT и робототехнику.
Насколько переносимым является Oat++?
Теоретически, Oat++ может быть легко перенесен везде, где есть потоки и сетевой стек. С дополнительными сравнительно небольшими усилиями его можно перенести практически везде, в зависимости от того, насколько сильно вы его разделите и каков будет конечный размер бинарных файлов.
Дополнительную информацию можно найти в разделе Поддерживаемые платформы.
Каков размер минимального приложения Oat++?
Около 1 Мб, в зависимости от версии C/C++ std-lib и oatpp.
Какой API для Oat++ выбрать, Simple или Async?
Всегда выбирайте Simple API, когда это возможно. Simple API более развит и делает код чище.
Async API предназначен для небольших специфических задач, которые выполняются с высоким уровнем параллелизма, например:
Обслуживание загрузки файлов для большого количества одновременных пользователей (1K пользователей и более).
Потоковая передача данных большому количеству клиентов (1K и более).
Серверы чата через Websocket.
Для всех остальных целей используйте простой API.
https://mengbaoliang.cn/archives/54718/
Базовое использование Oat++
Далее мы используем Oat++ для запроса различных URL-сервисов и отображения различного контента в браузере. Мы проектируем URL-адрес запроса следующим образом:
Запрос localhost:8000/hello1 отображает Hello Handler1
Запрос localhost:8000/hello 2 Отображение Hello Handler2
Основные функции класса:
HttpRequestHandler определяет функцию обработки URL-адреса запроса;
HttpRouter используется для связывания URL с HttpRequestHandler;
Обработка соединения с сервером HttpConnectionHandler
Параметры прослушивания сервера ConnectionProvider
Мониторинг серверных служб
Re: веб-фреймворк
https://github.com/CrowCpp/Crow
Crow - это фреймворк на C++ для создания веб-сервисов HTTP или Websocket. Он использует маршрутизацию, подобную Flask из Python, что делает его простым в использовании. Кроме того, он чрезвычайно быстр и выигрывает у множества существующих фреймворков на C++, а также у фреймворков, не относящихся к C++.
Особенности
Простая маршрутизация (аналогично Flask).
Безопасные для типов обработчики.
Потрясающе быстрый (см. этот бенчмарк и этот бенчмарк).
Встроенная поддержка JSON.
Библиотека шаблонов на основе Mustache (crow::mustache).
Библиотека только для заголовков (доступен один заголовочный файл).
Поддержка Middleware для расширений.
Поддержка HTTP/1.1 и Websocket.
Поддержка многокомпонентных запросов и ответов.
Использует современный C++ (11/14)
Все еще в разработке
Поддержка Async
Поддержка HTTP/2
https://github.com/gittiver/crow_template
crow_template
отправная точка для проектов, использующих CrowCpp.
Crow - это фреймворк на C++ для создания веб-сервисов HTTP или Websocket. Он использует маршрутизацию, подобную Flask из Python, что делает его простым в использовании. Кроме того, он чрезвычайно быстр и выигрывает у множества существующих фреймворков на C++, а также у фреймворков, не относящихся к C++.
Особенности
Простая маршрутизация (аналогично Flask).
Безопасные для типов обработчики.
Потрясающе быстрый (см. этот бенчмарк и этот бенчмарк).
Встроенная поддержка JSON.
Библиотека шаблонов на основе Mustache (crow::mustache).
Библиотека только для заголовков (доступен один заголовочный файл).
Поддержка Middleware для расширений.
Поддержка HTTP/1.1 и Websocket.
Поддержка многокомпонентных запросов и ответов.
Использует современный C++ (11/14)
Все еще в разработке
Поддержка Async
Поддержка HTTP/2
https://github.com/gittiver/crow_template
crow_template
отправная точка для проектов, использующих CrowCpp.
Re: веб-фреймворк
https://github.com/emweb/wt
Что такое Wt?
Wt - это библиотека C++ для разработки веб-приложений. Она состоит из:
libwt, библиотека виджетов/рендеринга
libwthttp, сервер HTTP/WebSockets (async I/O)
libwtfcgi, библиотека коннекторов FastCGI (Unix)
libwtisapi, библиотека коннекторов ISAPI (Windows)
libwttest, среда тестовых коннекторов
Также содержит ORM на C++, который может использоваться в веб-приложении (очевидно), но может использоваться и сам по себе:
libwtdbo, C++ ORM
libwtdbopostgres, PostgreSQL backend
libwtdbosqlite3, Sqlite3 backend
libwtdbomysql, MySQL и MariaDB backend
libwtdbomssqlserver, Microsoft SQL Server backend
libwtdbofirebird, Firebird backend
Для получения дополнительной информации см. домашнюю страницу https://www.webtoolkit.eu/wt
Зависимости
Для сборки Wt из исходных текстов вам понадобятся как минимум CMake, boost и компилятор C++, например GCC, Clang или MSVC. Смотрите минимальные версии зависимостей, чтобы узнать, какие версии поддерживает Wt.
По желанию вы можете добавить:
OpenSSL для поддержки SSL и WebSockets во встроенном httpd, клиент HTTP(S) и дополнительные криптографические хэши в модуле аутентификации
Библиотека Haru PDF, которая используется для рисования в PDF
GraphicsMagick, которая используется для рисования в PNG, GIF (на Windows, Direct2D)
PostgreSQL для PostgreSQL Dbo backend
MySQL или MariaDB для MySQL Dbo backend
Драйвер ODBC для Microsoft SQL Server Dbo backend, и unixODBC на Unix-подобных платформах
Firebird для Firebird Dbo backend
Pango для улучшения поддержки шрифтов в PDF и рисования растровых изображений. В Windows вместо этого можно использовать DirectWrite.
ZLib для сжатия данных во встроенном httpd.
Для коннектора FastCGI вам также понадобятся:
Набор средств разработки FastCGI: вам нужна библиотека C/C++ (libfcgi++)
Сборка
Общие инструкции для Unix-подобных платформ или платформ Windows.
Сообщение об ошибках
Об ошибках можно сообщить здесь http://redmine.webtoolkit.eu/projects/wt/issues/new.
Сообщения о проблемах безопасности
Мы ценим безопасность наших пользователей и серьезно относимся ко всем сообщениям об уязвимостях. Сообщая об уязвимостях в системе безопасности, вы помогаете нам обеспечить постоянную безопасность и надежность Wt.
Пожалуйста, сообщайте об уязвимостях в частном порядке команде безопасности Wt. Публичное раскрытие информации об уязвимости до того, как она будет устранена, может подвергнуть пользователей риску. Отправьте сообщение об уязвимости по адресу wt-security@emweb.be. Мы будем расследовать каждое сообщение.
Мы публично сообщим об уязвимости в журнале изменений, когда будет выпущен патч или обновление.
Хотя мы не предлагаем официальную программу вознаграждения за ошибки, мы ценим усилия исследователей безопасности, которые помогают нам улучшить безопасность Wt. Мы будем отмечать ответственных за раскрытие информации в наших заметках о выпуске и рекомендациях по безопасности, если вы не предпочитаете оставаться анонимным.
https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html
Unix-подобные платформы (Linux, macOS, BSD,...)
Конечно, для этого также потребуется некоторое программное обеспечение, чтобы гарантировать, что Wt может собираться. CMake 3.13 или выше
Boost 1.66 или выше
GCC 8 или выше
Clang 7 или выше
Обратите внимание, что это не означает, что вы не сможете скомпилировать Wt на более старых версиях этих операционных систем. Мы просто не будем стараться поддерживать совместимость с ними.
Основные зависимости
Данные зависимости необходимы для сборки Wt. Wt полагается на функциональность этих библиотек для реализации функциональности или для того, чтобы иметь возможность собирать. Boost - единственная библиотека, от которой зависит Wt. При сборке с Boost есть несколько опций конфигурации, которые можно настроить, а некоторые являются обязательными. Опции следующие:
BOOST_ROOT/BOOST_PREFIX: любую из этих опций можно (или, скорее, нужно) использовать, если Boost не установлен в место по умолчанию. Они указывают на путь установки Boost.
Boost_ADDITIONAL_VERSIONS: список, определяющий жизнеспособные версии Boost. Вам может понадобиться добавить сюда свою версию. В основном это относится к пользовательским установкам, которые не используют ожидаемую систему версий.
Boost_USE_STATIC_LIBS: может быть определено для Windows, указывая, должен ли Boost быть связан статически или динамически.
Дополнительную информацию о включении Boost можно найти здесь.
https://cmake.org/cmake/help/latest/module/FindBoost.html
Что такое Wt?
Wt - это библиотека C++ для разработки веб-приложений. Она состоит из:
libwt, библиотека виджетов/рендеринга
libwthttp, сервер HTTP/WebSockets (async I/O)
libwtfcgi, библиотека коннекторов FastCGI (Unix)
libwtisapi, библиотека коннекторов ISAPI (Windows)
libwttest, среда тестовых коннекторов
Также содержит ORM на C++, который может использоваться в веб-приложении (очевидно), но может использоваться и сам по себе:
libwtdbo, C++ ORM
libwtdbopostgres, PostgreSQL backend
libwtdbosqlite3, Sqlite3 backend
libwtdbomysql, MySQL и MariaDB backend
libwtdbomssqlserver, Microsoft SQL Server backend
libwtdbofirebird, Firebird backend
Для получения дополнительной информации см. домашнюю страницу https://www.webtoolkit.eu/wt
Зависимости
Для сборки Wt из исходных текстов вам понадобятся как минимум CMake, boost и компилятор C++, например GCC, Clang или MSVC. Смотрите минимальные версии зависимостей, чтобы узнать, какие версии поддерживает Wt.
По желанию вы можете добавить:
OpenSSL для поддержки SSL и WebSockets во встроенном httpd, клиент HTTP(S) и дополнительные криптографические хэши в модуле аутентификации
Библиотека Haru PDF, которая используется для рисования в PDF
GraphicsMagick, которая используется для рисования в PNG, GIF (на Windows, Direct2D)
PostgreSQL для PostgreSQL Dbo backend
MySQL или MariaDB для MySQL Dbo backend
Драйвер ODBC для Microsoft SQL Server Dbo backend, и unixODBC на Unix-подобных платформах
Firebird для Firebird Dbo backend
Pango для улучшения поддержки шрифтов в PDF и рисования растровых изображений. В Windows вместо этого можно использовать DirectWrite.
ZLib для сжатия данных во встроенном httpd.
Для коннектора FastCGI вам также понадобятся:
Набор средств разработки FastCGI: вам нужна библиотека C/C++ (libfcgi++)
Сборка
Общие инструкции для Unix-подобных платформ или платформ Windows.
Сообщение об ошибках
Об ошибках можно сообщить здесь http://redmine.webtoolkit.eu/projects/wt/issues/new.
Сообщения о проблемах безопасности
Мы ценим безопасность наших пользователей и серьезно относимся ко всем сообщениям об уязвимостях. Сообщая об уязвимостях в системе безопасности, вы помогаете нам обеспечить постоянную безопасность и надежность Wt.
Пожалуйста, сообщайте об уязвимостях в частном порядке команде безопасности Wt. Публичное раскрытие информации об уязвимости до того, как она будет устранена, может подвергнуть пользователей риску. Отправьте сообщение об уязвимости по адресу wt-security@emweb.be. Мы будем расследовать каждое сообщение.
Мы публично сообщим об уязвимости в журнале изменений, когда будет выпущен патч или обновление.
Хотя мы не предлагаем официальную программу вознаграждения за ошибки, мы ценим усилия исследователей безопасности, которые помогают нам улучшить безопасность Wt. Мы будем отмечать ответственных за раскрытие информации в наших заметках о выпуске и рекомендациях по безопасности, если вы не предпочитаете оставаться анонимным.
https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html
Unix-подобные платформы (Linux, macOS, BSD,...)
Конечно, для этого также потребуется некоторое программное обеспечение, чтобы гарантировать, что Wt может собираться. CMake 3.13 или выше
Boost 1.66 или выше
GCC 8 или выше
Clang 7 или выше
Обратите внимание, что это не означает, что вы не сможете скомпилировать Wt на более старых версиях этих операционных систем. Мы просто не будем стараться поддерживать совместимость с ними.
Основные зависимости
Данные зависимости необходимы для сборки Wt. Wt полагается на функциональность этих библиотек для реализации функциональности или для того, чтобы иметь возможность собирать. Boost - единственная библиотека, от которой зависит Wt. При сборке с Boost есть несколько опций конфигурации, которые можно настроить, а некоторые являются обязательными. Опции следующие:
BOOST_ROOT/BOOST_PREFIX: любую из этих опций можно (или, скорее, нужно) использовать, если Boost не установлен в место по умолчанию. Они указывают на путь установки Boost.
Boost_ADDITIONAL_VERSIONS: список, определяющий жизнеспособные версии Boost. Вам может понадобиться добавить сюда свою версию. В основном это относится к пользовательским установкам, которые не используют ожидаемую систему версий.
Boost_USE_STATIC_LIBS: может быть определено для Windows, указывая, должен ли Boost быть связан статически или динамически.
Дополнительную информацию о включении Boost можно найти здесь.
https://cmake.org/cmake/help/latest/module/FindBoost.html
Re: веб-фреймворк
https://github.com/GazPrash/TinyAPI
TinyAPI - Rest API Framework для C++
Предупреждение
TinyAPI в настоящее время находится в стадии интенсивной разработки, и рабочие процессы могут измениться в будущем. Этот проект в основном является хобби-проектом и должен был стать библиотекой без зависимостей и взлома, поэтому, если вы планируете использовать его в производстве, я бы посоветовал вам делать это с осторожностью. Ознакомьтесь с разделом «Текущие улучшения», чтобы следить за текущими приоритетами разработки.
TinyAPI - минималистичная библиотека на C++, позволяющая создавать легковесные REST API. Разработанная как «голый» фреймворк и легко взламываемая для быстрой настройки HTTP-серверов или API-клиентов именно так, как вы хотите. Настройка сервера проста и удобна, позволяя вам определять логику для конечных точек API, подобно современным веб-фреймворкам, таким как Flask. При разработке этого API-фреймворка не использовалось никаких сторонних библиотек! (в настоящее время поддерживается только в Linux)
Особенности
Легкий и эффективный: TinyAPI разработан для повышения производительности и эффективности.
Простая настройка клиентов API: Приступить к работе с TinyAPI очень просто благодаря его чистому и интуитивно понятному дизайну.
Гибкая маршрутизация: Определяйте конечные точки API и обрабатывайте их с помощью пользовательской логики.
TinyAPI - Rest API Framework для C++
Предупреждение
TinyAPI в настоящее время находится в стадии интенсивной разработки, и рабочие процессы могут измениться в будущем. Этот проект в основном является хобби-проектом и должен был стать библиотекой без зависимостей и взлома, поэтому, если вы планируете использовать его в производстве, я бы посоветовал вам делать это с осторожностью. Ознакомьтесь с разделом «Текущие улучшения», чтобы следить за текущими приоритетами разработки.
TinyAPI - минималистичная библиотека на C++, позволяющая создавать легковесные REST API. Разработанная как «голый» фреймворк и легко взламываемая для быстрой настройки HTTP-серверов или API-клиентов именно так, как вы хотите. Настройка сервера проста и удобна, позволяя вам определять логику для конечных точек API, подобно современным веб-фреймворкам, таким как Flask. При разработке этого API-фреймворка не использовалось никаких сторонних библиотек! (в настоящее время поддерживается только в Linux)
Особенности
Легкий и эффективный: TinyAPI разработан для повышения производительности и эффективности.
Простая настройка клиентов API: Приступить к работе с TinyAPI очень просто благодаря его чистому и интуитивно понятному дизайну.
Гибкая маршрутизация: Определяйте конечные точки API и обрабатывайте их с помощью пользовательской логики.
Re: веб-фреймворк
https://github.com/loentar/ngrest
ngrest
Статус сборки
ngrest - это простой REST-фреймворк на C++. Он имеет небольшой размер, быстр и очень прост в использовании.
ngrest позволяет разворачивать C++ RESTful веб-сервисы под Apache2, Nginx или под простым http-сервером ngrest.
ngrest написан на C++11 и использует CMake для сборки.
Документация и инструкции доступны в Wiki.
https://github.com/loentar/ngrest/wiki
ngrest
Статус сборки
ngrest - это простой REST-фреймворк на C++. Он имеет небольшой размер, быстр и очень прост в использовании.
ngrest позволяет разворачивать C++ RESTful веб-сервисы под Apache2, Nginx или под простым http-сервером ngrest.
ngrest написан на C++11 и использует CMake для сборки.
Документация и инструкции доступны в Wiki.
https://github.com/loentar/ngrest/wiki
Re: веб-фреймворк
https://github.com/expresscpp/expresscpp
ExpressCpp
Быстрый, неангажированный, минималистичный веб-фреймворк для C++ Идеально подходит для создания REST API.
c++17
Цели дизайна
ExpressCpp стремится быть для C++ тем же, чем Express для Node.JS, включая его экосистему промежуточных модулей и расширений.
ExpressCpp
Быстрый, неангажированный, минималистичный веб-фреймворк для C++ Идеально подходит для создания REST API.
c++17
Цели дизайна
ExpressCpp стремится быть для C++ тем же, чем Express для Node.JS, включая его экосистему промежуточных модулей и расширений.
Re: веб-фреймворк
https://github.com/lewisgcm/mvcpp
MVC++ Fast C++ HTTP Networking Library
Build Status Coverage Status License Type
Библиотека C++ для сетевых приложений на основе HTTP, включающая дополнительные помощники MVC и маршрутизацию. Эта библиотека была разработана для простоты, скорости и модульности. В каталог benchmarking/* включены различные бенчмарки, а примеры можно посмотреть в каталоге examples/*.
Начало работы
Для сборки этого проекта требуются cmake 3, boost-system 1.54, google test и компилятор C++11.
Linux - debian-based
Зависимости могут быть установлены с помощью следующих команд на debian-based Linux-системе:
Также требуется GoogleTest (gtest). Его можно установить с помощью следующих команд:
В качестве системы сборки для этого проекта используется CMake, для компиляции выполните следующие действия:
Базовое использование
MVC++ Fast C++ HTTP Networking Library
Build Status Coverage Status License Type
Библиотека C++ для сетевых приложений на основе HTTP, включающая дополнительные помощники MVC и маршрутизацию. Эта библиотека была разработана для простоты, скорости и модульности. В каталог benchmarking/* включены различные бенчмарки, а примеры можно посмотреть в каталоге examples/*.
Начало работы
Для сборки этого проекта требуются cmake 3, boost-system 1.54, google test и компилятор C++11.
Linux - debian-based
Зависимости могут быть установлены с помощью следующих команд на debian-based Linux-системе:
Код: Выделить всё
sudo apt-get install make g++-4.9 libcppunit-dev libboost-system-dev cmake libgtest-dev
Код: Выделить всё
git clone https://github.com/google/googletest.git
cd googletest; cmake .
make
make install
Код: Выделить всё
git clone --recursive https://github.com/lewisgcm/mvcpp
cd mvcpp; cmake .
make UnitTest #Run unit tests
make RequestBenchmark #Compile request benchmark
make RouterExample #Compile router example
Код: Выделить всё
Routing::Router router({
Routing::Route( Http::GET, "/", []( Http::Request& request, Http::Response& response ) -> void {
response << "Hello World";
}),
Routing::Route( Http::GET, "/api/test", []( Http::Request& request, Http::Response& response ) -> void {
response << "Testing!!!";
}),
Routing::Route( Http::GET, "/api/test/{id}", []( Http::Request& request, Http::Response& response ) -> void {
response << "Testing!!!" << request.getQuery().getParam<int>( "id" );
})
});
Http::Server server( 8080, "0.0.0.0" );
server.run(
router,
[]( Http::Response response, std::exception_ptr exception ) -> void {
response.setStatusCode( Http::INTERNAL_SERVER_ERROR );
response << "error";
}
);
Re: веб-фреймворк
https://github.com/rushmanzz/framework_web_cpp
Легкий web mvc фреймворк на c++
Компиляция: make
Запускается: . /server
Легкий web mvc фреймворк на c++
Компиляция: make
Запускается: . /server
Re: веб-фреймворк
https://github.com/leechiryo/mvcpp
Высокопроизводительный веб-фреймворк, использующий C++ и фреймворк MVC.
Каждый модуль контроллера на сайте скомпилирован в библиотеку и поддерживает горячее обновление для новых модулей контроллера.
Также при написании класса контроллера я использовал некоторые техники AST-анализа из clang, благодаря которым метод контроллера может быть определен в ясном синтексе и с минимальным количеством кодирования.
Посмотреть куда установлена
создать ссылки на библиотеки
В файлах, где используются strlen и strcpy, добавьте
Замените вызовы uuid_create и uuid_to_string на:
Включите в команду компиляции нужные заголовочные файлы и пути:
Высокопроизводительный веб-фреймворк, использующий C++ и фреймворк MVC.
Каждый модуль контроллера на сайте скомпилирован в библиотеку и поддерживает горячее обновление для новых модулей контроллера.
Также при написании класса контроллера я использовал некоторые техники AST-анализа из clang, благодаря которым метод контроллера может быть определен в ясном синтексе и с минимальным количеством кодирования.
Код: Выделить всё
sudo apt install clang uuid-dev libfcgi-dev
Код: Выделить всё
which clang++
Код: Выделить всё
clang++ --version
Код: Выделить всё
sudo ln -s /usr/include/uuid/uuid.h /usr/local/include/
sudo ln -s /usr/include/fcgio.h /usr/local/include/
Код: Выделить всё
#include <cstring>
Код: Выделить всё
#include <uuid/uuid.h>
uuid_t uuid;
char idStr[37];
uuid_generate(&uuid);
uuid_unparse(&uuid, idStr);
Код: Выделить всё
clang++ ControllerBase.cpp ControllerFactoryBase.cpp ModelBase.cpp main.cpp \
-g3 -O0 -o appserv -rdynamic -std=c++11 \
-I/usr/local/include -I/usr/include/uuid \
-L/usr/local/lib -lfcgi++ -lfcgi -lpthread