Oat++ هو إطار ويب حديث لـ C++. إنه محمل بالكامل ويحتوي على جميع المكونات الضرورية للتطوير الفعال لمستوى الإنتاج. كما أنه خفيف الوزن وله مساحة صغيرة للذاكرة.
1.3.0-latest
علامة. اتبع سجل التغيير للحصول على الأخبار والميزات في الإصدار 1.4.0
.
فكر في دعم Oat++ عبر صفحة رعاة GitHub.
oatpp-mysql بواسطة @Atarasin
oatpp-mariadb بواسطةlilltiger
ابدأ
بناء ليونكس/لينكس
بناء لنظام التشغيل Windows
أمثلة
تتطلب صيانة هذا المشروع وتطويره وقتًا وموارد كبيرة. إذا كنت تستمتع باستخدامه وترغب في دعم تطويره المستمر، فيرجى التفكير في دعمنا من خلال رعاة GitHub.
كن راعيًا على GitHub
كل مساهمة، كبيرة أو صغيرة، تساعدنا على مواصلة تحسين المشروع والحفاظ عليه. شكرا لدعمكم!
موقع إلكتروني
المنصات المدعومة
أحدث المعايير: 5 ملايين WebSockets
المساهمة في الشوفان ++
الاختصارات:
نظرة عامة على Oat++ عالية المستوى - احصل على نظرة عامة سريعة على ميزات Oat++.
مثال للمشروع - مثال كامل لخدمة "CRUD" (UserService) التي تم إنشاؤها باستخدام Oat++. REST + Swagger-UI + SQLite.
راجع ApiController لمزيد من التفاصيل.
ENDPOINT_INFO(getUserById) { info->summary = "احصل على مستخدم واحد عن طريق معرف المستخدم"; 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 = "معرف المستخدم"; }ENDPOINT("GET"، "users/{userId}"، getUserById، PATH(Int32, userId)) { إرجاع createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
راجع Oat++ ORM لمزيد من التفاصيل.
QUERY(createUser, "INSERT INTO users (اسم المستخدم، البريد الإلكتروني، الدور) VALUES (:username, :email, :role);", PARAM(oatpp::String, username), PARAM(oatpp::سلسلة، بريد إلكتروني)، PARAM(oatpp::Enum<UserRoles>::AsString, role))
Gitter - تحدث إلى مطوري Oat++ ومستخدمي Oat++ الآخرين.
تويتر - اتبع Oat++ على تويتر.
Reddit - اتبع موقع Oat++ الفرعي.
StackOverflow (جديد) - انشر سؤالاً.
خدمة REST - مثال كامل لخدمة "CRUD" (UserService) المبنية باستخدام Oat++. REST + Swagger-UI + SQLite.
REST Client - مشروع مثال لكيفية استخدام برنامج تضمين العميل المشابه للتحديث (ApiClient) وكيفية عمله.
Can Chat - دردشة قائمة على الغرف كاملة الميزات لعشرات الآلاف من المستخدمين. العميل بالإضافة إلى الخادم.
WebSocket - مجموعة من أمثلة oatpp WebSocket.
YUV Websocket Stream - مثال لمشروع حول كيفية إنشاء دفق صور YUV من جهاز V4L (iE Webcam) باستخدام websockets.
SQLite - مثال كامل لخدمة "CRUD". REST + Swagger-UI + SQLite.
PostgreSQL - مثال على خدمة كيان على مستوى الإنتاج تقوم بتخزين المعلومات في PostgreSQL. مع Swagger-UI وملفات تعريف التكوين.
MongoDB - مثال على مشروع كيفية العمل مع MongoDB باستخدام oatpp-mongo mondule. Project عبارة عن خدمة ويب تحتوي على CRUD وSwagger-UI الأساسيين.
مثال IoT-Hue - مثال لمشروع حول كيفية إنشاء واجهة REST-API متوافقة مع Philips Hue والتي يتم اكتشافها والتحكم فيها بواسطة أجهزة المنزل الذكي المتوافقة مع Hue مثل Amazon Alexa أو Google Echo.
خادم البث المباشر HTTP - مشروع نموذجي حول كيفية إنشاء خادم دفق HLS باستخدام واجهة برمجة تطبيقات Oat++ غير المتزامنة.
YUV Websocket Stream - مثال لمشروع حول كيفية إنشاء دفق صور YUV من جهاز V4L (iE Webcam) باستخدام websockets.
TLS مع Libressl - مثال لمشروع حول كيفية إعداد اتصال آمن وتقديم الخدمة عبر HTTPS.
تكامل القنصل - مشروع نموذجي حول كيفية استخدام oatpp::consul::Client. التكامل القنصلي
الخدمات المصغرة - مشروع نموذجي حول كيفية إنشاء خدمات صغيرة باستخدام Oat++، ومثال حول كيفية دمج تلك الخدمات الصغيرة باستخدام تقنية التوحيد.
خدمة غير متزامنة - مشروع نموذجي حول كيفية استخدام واجهة برمجة التطبيقات غير المتزامنة للتعامل مع عدد كبير من الاتصالات المتزامنة.
"الشوفان" شيء خفيف وعضوي وأخضر. يمكن طهيها واستهلاكها بسهولة دون أي جهد.
يعطي "++" تلميحًا إلى أنه "شيء" لـ C++.
يتم استخدام Oat++ للعديد من الأغراض المختلفة، بدءًا من إنشاء واجهات برمجة تطبيقات REST التي تعمل على الأجهزة المدمجة وحتى إنشاء خدمات صغيرة وتطبيقات سحابية عالية التحميل.
ولكن يبدو أن غالبية حالات الاستخدام موجودة في إنترنت الأشياء والروبوتات .
من الناحية النظرية، يمكن نقل Oat++ بسهولة إلى كل مكان حيث توجد سلاسل رسائل ومكدس شبكة . وبجهد إضافي صغير نسبيًا، يمكن نقله في كل مكان تقريبًا اعتمادًا على مقدار تجريده منه وما هو الحجم الثنائي النهائي.
راجع الأنظمة الأساسية المدعومة للحصول على معلومات إضافية.
حوالي 1 ميجابايت ، اعتمادًا على إصدار C/C++ std-lib وoatpp.
اختر دائمًا Simple API حيثما أمكن ذلك. واجهة برمجة التطبيقات البسيطة أكثر تطورًا وتجعل الكود أكثر نظافة.
تم تصميم Async API للمهام الصغيرة والمحددة التي تعمل بمستويات عالية من التزامن، على سبيل المثال:
خدمة تنزيل الملفات لعدد كبير من المستخدمين المتزامنين (ألف مستخدم وأكثر).
البث لعدد كبير من العملاء (1K أو أكثر).
خوادم الدردشة Websocket.
ولجميع الأغراض الأخرى، استخدم واجهة برمجة التطبيقات البسيطة.