Oat++ adalah Kerangka Web modern untuk C++. Ini terisi penuh dan berisi semua komponen yang diperlukan untuk pengembangan tingkat produksi yang efektif. Ini juga ringan dan memiliki jejak memori yang kecil.
1.3.0-latest
. Ikuti changelog untuk berita dan fitur di versi 1.4.0
.
Pertimbangkan untuk mendukung Oat++ melalui halaman sponsor GitHub.
oatpp-mysql oleh @Atarasin
oatpp-mariadb oleh @lilltiger
Memulai
Bangun Untuk Unix/Linux
Bangun Untuk Windows
Contoh
Mempertahankan dan mengembangkan proyek ini memerlukan waktu dan sumber daya yang signifikan. Jika Anda senang menggunakannya dan ingin mendukung pengembangan berkelanjutannya, mohon pertimbangkan untuk mendukung kami melalui Sponsor GitHub.
Menjadi Sponsor di GitHub
Setiap kontribusi, besar atau kecil, membantu kami terus meningkatkan dan mempertahankan proyek ini. Terima kasih atas dukungan Anda!
Situs web
Platform yang Didukung
Tolok Ukur Terbaru: 5 Juta WebSockets
Berkontribusi pada Oat++
Pintasan:
Ikhtisar Tingkat Tinggi Oat++ - Dapatkan ikhtisar singkat tentang fitur Oat++.
Contoh Proyek - Contoh lengkap layanan "CRUD" (UserService) yang dibangun dengan Oat++. REST + Kesombongan-UI + SQLite.
Lihat ApiController untuk detail selengkapnya.
ENDPOINT_INFO(dapatkanUserById) { info->summary = "Dapatkan satu Pengguna berdasarkan 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 = "Pengidentifikasi Pengguna"; }ENDPOINT("GET", "pengguna/{userId}", getUserById, PATH(Int32, userId)) { kembalikan createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
Lihat Oat++ ORM untuk lebih jelasnya.
QUERY(createUser, "MASUKKAN KE pengguna (nama pengguna, email, peran) VALUES (:nama pengguna, :email, :role);", PARAM(oatpp::String, nama pengguna), PARAM(oatpp::String, email), PARAM(oatpp::Enum<UserRoles>::AsString, peran))
Gitter - Bicaralah dengan pengembang Oat++ dan pengguna Oat++ lainnya.
Twitter - Ikuti Oat++ di Twitter.
Reddit - Ikuti subreddit Oat++.
StackOverflow (baru) - Posting Pertanyaan.
REST Service - Contoh lengkap layanan "CRUD" (UserService) yang dibangun dengan Oat++. REST + Kesombongan-UI + SQLite.
REST Client - Contoh proyek cara menggunakan pembungkus klien mirip Retrofit (ApiClient) dan cara kerjanya.
Bisa Ngobrol - Obrolan berbasis ruangan dengan fitur lengkap untuk puluhan ribu pengguna. Klien ditambah Server.
WebSocket - Kumpulan contoh WebSocket oatpp.
YUV Websocket Stream - Contoh proyek cara membuat aliran gambar YUV dari perangkat V4L (iE Webcam) menggunakan websockets.
SQLite - Contoh lengkap layanan "CRUD". REST + Kesombongan-UI + SQLite.
PostgreSQL - Contoh layanan entitas tingkat produksi yang menyimpan informasi di PostgreSQL. Dengan Swagger-UI dan profil konfigurasi.
MongoDB - Contoh proyek cara bekerja dengan MongoDB menggunakan oatpp-mongo mondule. Project adalah layanan web dengan CRUD dasar dan Swagger-UI.
Contoh-IoT-Hue - Contoh proyek cara membuat REST-API yang kompatibel dengan Philips Hue yang ditemukan dan dikontrol oleh perangkat Smart-Home yang kompatibel dengan Hue seperti Amazon Alexa atau Google Echo.
Server Streaming Langsung HTTP - Contoh proyek tentang cara membangun server streaming HLS menggunakan API asinkron Oat++.
YUV Websocket Stream - Contoh proyek cara membuat aliran gambar YUV dari perangkat V4L (iE Webcam) menggunakan websockets.
TLS Dengan Libressl - Contoh proyek cara mengatur koneksi aman dan melayani melalui HTTPS.
Integrasi Konsul - Contoh proyek tentang cara menggunakan oatpp::consul::Client. Integrasi konsul.
Layanan Mikro - Contoh proyek tentang cara membangun layanan mikro dengan Oat++, dan contoh cara mengkonsolidasikan layanan mikro tersebut menggunakan teknik monolitisasi.
Layanan Async - Contoh proyek tentang cara menggunakan API asinkron untuk menangani koneksi simultan dalam jumlah besar.
"Oat" adalah sesuatu yang ringan, organik, dan hijau. Itu dapat dengan mudah dimasak dan dikonsumsi tanpa usaha.
"++" memberikan petunjuk bahwa itu adalah "sesuatu" untuk C++.
Oat++ digunakan untuk berbagai tujuan, mulai dari membangun REST API yang berjalan pada perangkat tertanam hingga membangun layanan mikro dan aplikasi cloud yang sarat muatan.
Namun sebagian besar kasus penggunaan tampaknya berada di IoT dan Robotika .
Secara teoritis, Oat++ dapat dengan mudah di-porting ke mana pun Anda memiliki thread dan tumpukan jaringan . Dengan upaya tambahan yang relatif kecil, ini dapat di-porting hampir ke mana saja tergantung pada seberapa banyak Anda menghapusnya dan berapa ukuran biner akhirnya.
Lihat platform yang didukung untuk info tambahan.
Sekitar 1Mb , tergantung pada versi C/C++ std-lib dan oatpp.
Selalu pilih API Sederhana jika memungkinkan. API sederhana lebih berkembang dan membuat kode lebih bersih.
Async API dirancang untuk tugas-tugas kecil dan spesifik yang dijalankan pada tingkat konkurensi tinggi, misalnya:
Melayani pengunduhan file ke sejumlah besar pengguna secara bersamaan (1K pengguna dan lebih banyak lagi).
Streaming ke sejumlah besar klien (1K atau lebih).
Server Obrolan Websocket.
Untuk semua tujuan lainnya gunakan API sederhana.