Oat++ ist ein modernes Web Framework für C++. Es ist vollständig ausgestattet und enthält alle notwendigen Komponenten für eine effektive Entwicklung auf Produktionsebene. Außerdem ist es leicht und hat einen geringen Speicherbedarf.
1.3.0-latest
. Folgen Sie dem Änderungsprotokoll für Neuigkeiten und Funktionen in Version 1.4.0
.
Erwägen Sie die Unterstützung von Oat++ über die GitHub-Sponsorenseite.
oatpp-mysql von @Atarasin
oatpp-mariadb von @lilltiger
Legen Sie los
Für Unix/Linux erstellen
Für Windows erstellen
Beispiele
Die Pflege und Weiterentwicklung dieses Projekts erfordert viel Zeit und Ressourcen. Wenn Sie es gerne nutzen und seine Weiterentwicklung unterstützen möchten, denken Sie bitte darüber nach, uns über GitHub-Sponsoren zu unterstützen.
Werden Sie Sponsor auf GitHub
Jeder Beitrag, ob groß oder klein, hilft uns, das Projekt weiter zu verbessern und aufrechtzuerhalten. Vielen Dank für Ihre Unterstützung!
Webseite
Unterstützte Plattformen
Neueste Benchmarks: 5 Millionen WebSockets
Beitrag zu Oat++
Verknüpfungen:
Oat++ High-Level-Übersicht – Verschaffen Sie sich einen schnellen Überblick über die Oat++-Funktionen.
Beispielprojekt – Ein vollständiges Beispiel eines mit Oat++ erstellten „CRUD“-Dienstes (UserService). REST + Swagger-UI + SQLite.
Weitere Informationen finden Sie unter ApiController.
ENDPOINT_INFO(getUserById) { info->summary = "Einen Benutzer nach Benutzer-ID abrufen"; info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json"); info->addResponse<Object<StatusDto>>(Status::CODE_404, "application/json"); info->addResponse<Object<StatusDto>>(Status::CODE_500, "application/json"); info->pathParams["userId"].description = "Benutzer-ID"; }ENDPOINT("GET", "users/{userId}", getUserById, PATH(Int32, userId)) { return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
Weitere Informationen finden Sie unter Oat++ ORM.
QUERY(createUser, "INSERT INTO Benutzer (Benutzername, E-Mail, Rolle) VALUES (:Benutzername, :E-Mail, :Rolle);", PARAM(oatpp::String, Benutzername), PARAM(oatpp::String, email), PARAM(oatpp::Enum<UserRoles>::AsString, Role))
Gitter – Sprechen Sie mit Oat++-Entwicklern und anderen Oat++-Benutzern.
Twitter – Folgen Sie Oat++ auf Twitter.
Reddit – Folgen Sie dem Oat++-Subreddit.
StackOverflow (neu) – Stellen Sie eine Frage.
REST-Dienst – Ein vollständiges Beispiel eines mit Oat++ erstellten „CRUD“-Dienstes (UserService). REST + Swagger-UI + SQLite.
REST-Client – Beispielprojekt zur Verwendung des Retrofit-ähnlichen Client-Wrappers (ApiClient) und seiner Funktionsweise.
Kann chatten – Raumbasierter Chat mit umfassendem Funktionsumfang für Zehntausende Benutzer. Client plus Server.
WebSocket – Sammlung von oatpp-WebSocket-Beispielen.
YUV-Websocket-Stream – Beispielprojekt zum Erstellen eines YUV-Bildstreams von einem V4L-Gerät (d. h. Webcam) mithilfe von Websockets.
SQLite – Ein vollständiges Beispiel eines „CRUD“-Dienstes. REST + Swagger-UI + SQLite.
PostgreSQL – Beispiel eines produktionstauglichen Entitätsdienstes, der Informationen in PostgreSQL speichert. Mit Swagger-UI und Konfigurationsprofilen.
MongoDB – Beispielprojekt zur Arbeit mit MongoDB mithilfe von oatpp-mongo mondule. Project ist ein Webdienst mit grundlegendem CRUD und Swagger-UI.
Beispiel-IoT-Hue – Beispielprojekt zur Erstellung einer Philips Hue-kompatiblen REST-API, die von Hue-kompatiblen Smart-Home-Geräten wie Amazon Alexa oder Google Echo erkannt und gesteuert werden kann.
HTTP-Live-Streaming-Server – Beispielprojekt zum Aufbau eines HLS-Streaming-Servers mit der asynchronen Oat++-API.
YUV-Websocket-Stream – Beispielprojekt zum Erstellen eines YUV-Bildstreams von einem V4L-Gerät (d. h. Webcam) mithilfe von Websockets.
TLS mit Liressl – Beispielprojekt zur Einrichtung einer sicheren Verbindung und Bereitstellung über HTTPS.
Consul-Integration – Beispielprojekt zur Verwendung von oatpp::consul::Client. Konsul-Integration.
Microservices – Beispielprojekt zum Erstellen von Microservices mit Oat++ und Beispiel zur Konsolidierung dieser Microservices mithilfe der Monolithisierungstechnik.
Async Service – Beispielprojekt zur Verwendung einer asynchronen API zur Verarbeitung einer großen Anzahl gleichzeitiger Verbindungen.
„Hafer“ ist etwas Leichtes, Organisches und Grünes. Es lässt sich leicht zubereiten und ohne großen Aufwand verzehren.
„++“ gibt einen Hinweis darauf, dass es sich um „etwas“ für C++ handelt.
Oat++ wird für viele verschiedene Zwecke verwendet, von der Erstellung von REST-APIs, die auf eingebetteten Geräten ausgeführt werden, bis hin zur Erstellung von Microservices und hochgeladenen Cloud-Anwendungen.
Die meisten Anwendungsfälle scheinen jedoch im IoT und in der Robotik zu liegen.
Theoretisch kann Oat++ problemlos überall hin portiert werden, wo Threads und ein Netzwerkstack vorhanden sind. Mit einem vergleichsweise geringen zusätzlichen Aufwand kann es fast überall hin portiert werden, je nachdem, wie weit Sie es entfernen und wie hoch die endgültige Binärgröße wäre.
Weitere Informationen finden Sie unter unterstützte Plattformen.
Etwa 1 MB , abhängig von der C/C++-Std-Lib- und OATPP-Version.
Wählen Sie nach Möglichkeit immer die einfache API . Die einfache API ist weiter entwickelt und macht den Code sauberer.
Die Async-API ist für kleine, spezifische Aufgaben konzipiert, die mit hoher Parallelität ausgeführt werden, z. B.:
Bereitstellung von Dateidownloads für eine große Anzahl gleichzeitiger Benutzer (1.000 Benutzer und mehr).
Streaming an eine große Anzahl von Clients (1K oder mehr).
Websocket-Chat-Server.
Für alle anderen Zwecke verwenden Sie eine einfache API.