Oat++ é um Web Framework moderno para C++. Está totalmente carregado e contém todos os componentes necessários para um desenvolvimento eficaz do nível de produção. Também é leve e ocupa pouco espaço de memória.
1.3.0-latest
. Acompanhe o changelog para novidades e recursos da versão 1.4.0
.
Considere apoiar o Oat++ através da página de patrocinadores do GitHub.
oatpp-mysql por @Atarasin
oatpp-mariadb por @lilltiger
Comece
Construir para Unix/Linux
Construir para Windows
Exemplos
Manter e desenvolver este projeto requer tempo e recursos significativos. Se você gosta de usá-lo e deseja apoiar seu desenvolvimento contínuo, considere nos apoiar por meio dos patrocinadores do GitHub.
Torne-se um patrocinador no GitHub
Cada contribuição, grande ou pequena, nos ajuda a continuar melhorando e mantendo o projeto. Obrigado pelo seu apoio!
Site
Plataformas suportadas
Benchmarks mais recentes: 5 milhões de WebSockets
Contribuindo para Oat++
Atalhos:
Visão geral de alto nível do Oat++ - Obtenha uma visão geral rápida dos recursos do Oat++.
Exemplo de Projeto - Um exemplo completo de serviço "CRUD" (UserService) construído com Oat++. REST + Swagger UI + SQLite.
Veja ApiController para mais detalhes.
ENDPOINT_INFO(getUserById) { info->summary = "Obter um usuário por 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 = "Identificador do usuário"; }ENDPOINT("GET", "usuários/{userId}", getUserById, PATH(Int32, userId)) { return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
Consulte Oat++ ORM para obter mais detalhes.
QUERY(createUser, "INSERT INTO usuários (nome de usuário, email, função) VALUES (:nome de usuário, :email, :role);", PARAM(oatpp::String, nome de usuário), PARAM(oatpp::String, email), PARAM(oatpp::Enum<UserRoles>::AsString, role))
Gitter - Fale com desenvolvedores do Oat++ e outros usuários do Oat++.
Twitter - Siga Oat++ no Twitter.
Reddit - Siga o subreddit Oat++.
StackOverflow (novo) – Poste uma pergunta.
Serviço REST - Um exemplo completo de serviço "CRUD" (UserService) construído com Oat++. REST + Swagger UI + SQLite.
Cliente REST - Exemplo de projeto de como usar o wrapper de cliente tipo Retrofit (ApiClient) e como ele funciona.
Can Chat - Bate-papo baseado em salas com recursos completos para dezenas de milhares de usuários. Cliente mais Servidor.
WebSocket - Coleção de exemplos de WebSocket oatpp.
YUV Websocket Stream - Exemplo de projeto de como criar um fluxo de imagem YUV a partir de um dispositivo V4L (iE Webcam) usando websockets.
SQLite - Um exemplo completo de serviço "CRUD". REST + Swagger UI + SQLite.
PostgreSQL – Exemplo de serviço de entidade de nível de produção que armazena informações no PostgreSQL. Com Swagger-UI e perfis de configuração.
MongoDB - Exemplo de projeto de como trabalhar com MongoDB usando oatpp-mongo mondule. O projeto é um serviço web com CRUD básico e Swagger-UI.
Exemplo-IoT-Hue - Exemplo de projeto de como criar uma REST-API compatível com Philips Hue que é descoberta e controlável por dispositivos Smart-Home compatíveis com Hue, como Amazon Alexa ou Google Echo.
Servidor HTTP Live Streaming - Exemplo de projeto sobre como construir um servidor de streaming HLS usando API assíncrona Oat++.
YUV Websocket Stream - Exemplo de projeto de como criar um fluxo de imagem YUV a partir de um dispositivo V4L (iE Webcam) usando websockets.
TLS com Libressl - Exemplo de projeto como configurar conexão segura e servir via HTTPS.
Integração Consul - Projeto de exemplo sobre como usar oatpp::consul::Client. Integração cônsul.
Microsserviços - Exemplo de projeto sobre como construir microsserviços com Oat++ e exemplo de como consolidar esses microsserviços usando técnica de monolitização.
Serviço Assíncrono - Exemplo de projeto sobre como usar API assíncrona para lidar com um grande número de conexões simultâneas.
“Aveia” é algo leve, orgânico e verde. Pode ser facilmente cozinhado e consumido sem esforço.
"++" dá uma dica de que é "alguma coisa" para C++.
Oat++ é usado para muitos propósitos diferentes, desde a construção de APIs REST que são executadas em dispositivos incorporados até a construção de microsserviços e aplicativos em nuvem altamente carregados.
Mas a maioria dos casos de uso parece estar em IoT e Robótica .
Teoricamente, Oat++ pode ser facilmente portado para qualquer lugar onde você tenha threads e pilha de rede . Com um esforço adicional comparativamente pequeno, ele pode ser portado para quase todos os lugares, dependendo de quanto você o remove e qual seria o tamanho binário final.
Consulte as plataformas suportadas para obter informações adicionais.
Cerca de 1Mb , dependendo da versão C/C++ std-lib e oatpp.
Sempre escolha API Simples sempre que possível. A API simples é mais desenvolvida e torna o código mais limpo.
A API Async foi projetada para tarefas pequenas e específicas que são executadas em altos níveis de simultaneidade, por exemplo:
Servindo downloads de arquivos para um grande número de usuários simultâneos (1 mil usuários e mais).
Streaming para um grande número de clientes (1K ou mais).
Servidores de bate-papo Websocket.
Para todos os outros fins, use API simples.