Oat++ es un framework web moderno para C++. Está completamente cargado y contiene todos los componentes necesarios para un desarrollo eficaz del nivel de producción. También es liviano y ocupa poca memoria.
1.3.0-latest
. Siga el registro de cambios para conocer noticias y funciones de la versión 1.4.0
.
Considere apoyar a Oat++ a través de la página de patrocinadores de GitHub.
oatpp-mysql por @Atarasin
oatpp-mariadb por @lilltiger
Empezar
Construir para Unix/Linux
Construir para Windows
Ejemplos
Mantener y desarrollar este proyecto requiere mucho tiempo y recursos. Si disfruta usándolo y desea apoyar su desarrollo continuo, considere apoyarnos a través de los patrocinadores de GitHub.
Conviértete en patrocinador en GitHub
Cada contribución, grande o pequeña, nos ayuda a seguir mejorando y manteniendo el proyecto. ¡Gracias por su apoyo!
Sitio web
Plataformas compatibles
Últimos puntos de referencia: 5 millones de WebSockets
Contribuyendo a Oat++
Atajos:
Descripción general de alto nivel de Oat++: obtenga una descripción general rápida de las funciones de Oat++.
Proyecto de ejemplo: un ejemplo completo de un servicio "CRUD" (UserService) creado con Oat++. REST + Swagger-UI + SQLite.
Consulte ApiController para obtener más detalles.
ENDPOINT_INFO(getUserById) { info->summary = "Obtener un usuario por ID de usuario"; 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 = "Identificador de usuario"; }ENDPOINT("GET", "usuarios/{userId}", getUserById, PATH(Int32, userId)) { return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
Consulte Oat++ ORM para obtener más detalles.
QUERY(createUser, "INSERTAR EN usuarios (nombre de usuario, correo electrónico, rol) VALORES (:nombre de usuario, :correo electrónico, :rol);", PARAM(oatpp::String, nombre de usuario), PARAM(oatpp::Cadena, correo electrónico), PARAM(oatpp::Enum<UserRoles>::AsString, rol))
Gitter: hable con los desarrolladores de Oat++ y con otros usuarios de Oat++.
Twitter: siga a Oat++ en Twitter.
Reddit: siga el subreddit de Oat++.
StackOverflow (nuevo): publique una pregunta.
Servicio REST: un ejemplo completo de un servicio "CRUD" (UserService) creado con Oat++. REST + Swagger-UI + SQLite.
Cliente REST: proyecto de ejemplo sobre cómo utilizar el contenedor de cliente tipo Retrofit (ApiClient) y cómo funciona.
Can Chat: chat basado en salas con funciones completas para decenas de miles de usuarios. Cliente más Servidor.
WebSocket: colección de ejemplos de WebSocket de oatpp.
YUV Websocket Stream: proyecto de ejemplo sobre cómo crear un flujo de imágenes YUV desde un dispositivo V4L (iE Webcam) utilizando websockets.
SQLite: un ejemplo completo de un servicio "CRUD". REST + Swagger-UI + SQLite.
PostgreSQL: ejemplo de un servicio de entidad de nivel de producción que almacena información en PostgreSQL. Con Swagger-UI y perfiles de configuración.
MongoDB: proyecto de ejemplo de cómo trabajar con MongoDB usando oatpp-mongo mondule. Project es un servicio web con CRUD básico y Swagger-UI.
Ejemplo-IoT-Hue: proyecto de ejemplo sobre cómo crear una REST-API compatible con Philips Hue que sea descubierta y controlable por dispositivos Smart-Home compatibles con Hue como Amazon Alexa o Google Echo.
Servidor HTTP Live Streaming: proyecto de ejemplo sobre cómo crear un servidor de transmisión HLS utilizando la API asíncrona Oat++.
YUV Websocket Stream: proyecto de ejemplo sobre cómo crear un flujo de imágenes YUV desde un dispositivo V4L (iE Webcam) utilizando websockets.
TLS con Libressl: proyecto de ejemplo sobre cómo configurar una conexión segura y servir a través de HTTPS.
Integración de Consul: proyecto de ejemplo sobre cómo usar oatpp::consul::Client. Integración del cónsul.
Microservicios: proyecto de ejemplo sobre cómo crear microservicios con Oat++ y ejemplo sobre cómo consolidar esos microservicios utilizando la técnica de monolitización.
Servicio asíncrono: proyecto de ejemplo sobre cómo utilizar una API asíncrona para manejar una gran cantidad de conexiones simultáneas.
La "avena" es algo ligero, orgánico y verde. Se puede cocinar y consumir fácilmente sin esfuerzo.
"++" da una pista de que es "algo" para C++.
Oat++ se utiliza para muchos propósitos diferentes, desde crear API REST que se ejecutan en dispositivos integrados hasta crear microservicios y aplicaciones en la nube altamente cargadas.
Pero la mayoría de los casos de uso parecen estar en IoT y Robótica .
En teoría, Oat++ se puede trasladar fácilmente a cualquier lugar donde tenga subprocesos y pila de red . Con un esfuerzo adicional comparativamente pequeño, se puede trasladar a casi todas partes dependiendo de cuánto lo elimine y cuál sería el tamaño binario final.
Consulte las plataformas compatibles para obtener información adicional.
Aproximadamente 1 Mb , dependiendo de la versión C/C++ std-lib y oatpp.
Elija siempre API simple siempre que sea posible. La API simple está más desarrollada y hace que el código sea más limpio.
La API asíncrona está diseñada para tareas pequeñas y específicas que se ejecutan en altos niveles de concurrencia, por ejemplo:
Ofrece descargas de archivos a una gran cantidad de usuarios simultáneos (1.000 usuarios y más).
Streaming a una gran cantidad de clientes (1K o más).
Servidores de chat Websocket.
Para todos los demás fines, utilice una API simple.