Oat++ est un framework Web moderne pour C++. Il est entièrement chargé et contient tous les composants nécessaires pour un développement efficace au niveau de la production. Il est également léger et a une faible empreinte mémoire.
1.3.0-latest
. Suivez le journal des modifications pour connaître les actualités et les fonctionnalités de la version 1.4.0
.
Pensez à soutenir Oat++ via la page des sponsors GitHub.
oatpp-mysql par @Atarasin
oatpp-mariadb par @lilltiger
Commencer
Construire pour Unix/Linux
Construire pour Windows
Exemples
Maintenir et développer ce projet nécessite beaucoup de temps et de ressources. Si vous aimez l'utiliser et souhaitez soutenir son développement continu, pensez à nous soutenir via les sponsors GitHub.
Devenez sponsor sur GitHub
Chaque contribution, grande ou petite, nous aide à continuer à améliorer et à maintenir le projet. Merci pour votre soutien !
Site web
Plateformes prises en charge
Derniers benchmarks : 5 millions de WebSockets
Contribuer à Oat++
Raccourcis :
Présentation générale d'Oat++ - Obtenez un aperçu rapide des fonctionnalités d'Oat++.
Exemple de projet - Un exemple complet de service "CRUD" (UserService) construit avec Oat++. REST + Swagger-UI + SQLite.
Voir ApiController pour plus de détails.
ENDPOINT_INFO(getUserById) { info->summary = "Obtenir un utilisateur par userId"; 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 = "Identifiant de l'utilisateur"; }ENDPOINT("GET", "users/{userId}", getUserById, PATH(Int32, userId)) { return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
Voir Oat++ ORM pour plus de détails.
QUERY(createUser, "INSERT INTO users (username, email, role) VALUES (:username, :email, :role);", PARAM(oatpp::String, username), PARAM(oatpp::Chaîne, email), PARAM(oatpp::Enum<UserRoles>::AsString, rôle))
Gitter - Parlez aux développeurs Oat++ et à d'autres utilisateurs Oat++.
Twitter - Suivez Oat++ sur Twitter.
Reddit – Suivez le sous-reddit Oat++.
StackOverflow (nouveau) - Postez une question.
Service REST - Un exemple complet de service "CRUD" (UserService) construit avec Oat++. REST + Swagger-UI + SQLite.
Client REST - Exemple de projet expliquant comment utiliser le wrapper client de type Retrofit (ApiClient) et comment il fonctionne.
Can Chat - Chat basé sur des salles complètes pour des dizaines de milliers d'utilisateurs. Client et serveur.
WebSocket - Collection d'exemples WebSocket oatpp.
YUV Websocket Stream - Exemple de projet expliquant comment créer un flux d'images YUV à partir d'un appareil V4L (iE Webcam) à l'aide de websockets.
SQLite - Un exemple complet de service "CRUD". REST + Swagger-UI + SQLite.
PostgreSQL - Exemple de service d'entité de niveau production stockant des informations dans PostgreSQL. Avec Swagger-UI et profils de configuration.
MongoDB - Exemple de projet comment travailler avec MongoDB en utilisant le mondule oatpp-mongo . Project est un service Web avec CRUD et Swagger-UI de base.
Exemple-IoT-Hue - Exemple de projet comment créer une API REST compatible Philips Hue qui est découverte et contrôlable par des appareils Smart-Home compatibles Hue comme Amazon Alexa ou Google Echo.
HTTP Live Streaming Server - Exemple de projet sur la façon de créer un serveur de streaming HLS à l'aide de l'API asynchrone Oat++.
YUV Websocket Stream - Exemple de projet expliquant comment créer un flux d'images YUV à partir d'un appareil V4L (iE Webcam) à l'aide de websockets.
TLS avec Libressl - Exemple de projet expliquant comment configurer une connexion sécurisée et servir via HTTPS.
Intégration Consul - Exemple de projet sur la façon d'utiliser oatpp::consul::Client. Intégration consulaire.
Microservices - Exemple de projet sur la façon de créer des microservices avec Oat++ et exemple sur la façon de consolider ces microservices à l'aide de la technique de monolithisation.
Service asynchrone - Exemple de projet sur la façon d'utiliser l'API asynchrone pour gérer un grand nombre de connexions simultanées.
« L'avoine » est quelque chose de léger, biologique et vert. Il peut être facilement cuisiné et consommé sans effort.
"++" donne une indication qu'il s'agit de "quelque chose" pour C++.
Oat++ est utilisé à de nombreuses fins différentes, depuis la création d'API REST qui s'exécutent sur des appareils intégrés jusqu'à la création de microservices et d'applications cloud très chargées.
Mais la majorité des cas d'utilisation semblent concerner l'IoT et la robotique .
Théoriquement, Oat++ peut être facilement porté partout où vous avez des threads et une pile réseau . Avec un effort supplémentaire relativement faible, il peut être porté presque partout en fonction de la quantité de suppression et de la taille binaire finale.
Voir les plates-formes prises en charge pour plus d'informations.
Environ 1 Mo , selon la version C/C++ std-lib et oatpp.
Choisissez toujours l'API simple dans la mesure du possible. L'API simple est plus développée et rend le code plus propre.
L'API Async est conçue pour de petites tâches spécifiques qui s'exécutent à des niveaux de concurrence élevés, par exemple :
Servir les téléchargements de fichiers à un grand nombre d'utilisateurs simultanés (1 000 utilisateurs et plus).
Streaming vers un grand nombre de clients (1K ou plus).
Serveurs de discussion Websocket.
À toutes autres fins, utilisez une API simple.