REPBED هو نموذج برمجة شامل ومتسق لبناء التطبيقات التي تتطلب اتصالًا سلسًا وآمنًا عبر HTTP ، مع القدرة على تصميم مجموعة من عمليات العمل ، المصممة لاستهداف بيئات الإنتاج المحمولة والأجهزة اللوحية وسطح المكتب والإنتاج المضمّن.
إنه أقرب إلى تضمين Nginx في خط الإنتاج الخاص بشركاتك. - مهندس المحاليل ، تكنولوجيا Bellrock
| ميزة | وصف |
|---|---|
| WebSockets | قنوات الاتصالات الكاملة على اتصال TCP واحد. |
| أحداث خادم الخادم | تتيح أحداث Server-Sent Server تدفقًا فعالًا لبيانات الأحداث المستندة إلى النص-الإخطارات في الوقت الفعلي أو التحديثات التي تم إنشاؤها على الخادم. |
| المذنب | طراز الاقتراع الطويل للسماح بطلبات HTTP طويلة الأمد لدفع البيانات من الخادم إلى العميل. |
| SSL/TLS | تأمين على الاتصال السلكي مما يتيح لك نقل البيانات الخاصة عبر الإنترنت. |
| إدارة الجلسة | إنشاء مخصص HTTP جلسة الثبات وإدارة منطق. |
| HTTP الأنابيب | تقنية تسمح بإرسال طلبات HTTP المتعددة على اتصال TCP واحد دون انتظار الاستجابات المقابلة. |
| معلمات المسار | توضيح URIs مع معلمات المسار المخصص مثل مفاتيح الموارد ، والمراجعات ، وما إلى ذلك ... |
| معلمات الاستعلام | معلمة الاستعلام الآلية تحليل. |
| مرشحات الرأس | تصفية طلبات HTTP الواردة بواسطة الرؤوس. |
| قطع الأشجار | تخصيص كيفية ومكان إنشاء إدخالات السجل. |
| موارد متعددة المسارات | إعطاء مورد مسارات متعددة لتحسين قابلية القراءة. |
| طرق قابلة للتخصيص | أضف أساليب HTTP المخصصة الخاصة بك. |
| ضغط | القدرة على التكيف لمعالجة أي شكل من أشكال الانضغاط gzip ، المنهج ، إلخ ... |
| الترميز | القدرة على التكيف لمعالجة أي شكل من أشكال ترميز UTF-32 ، ASCII ، إلخ ... |
| محرك القواعد | تقليل التعقيد عن طريق معالجة الطلبات الواردة مع وحدات قابلة للقراءة من التعليمات البرمجية. |
| HTTP/HTTPS | مدمجة في إمكانات العميل مع التحقق من شهادة نظير SSL الاختيارية. تم إهماله |
| IPv4/IPv6 | إصدار بروتوكول الإنترنت 4/6 دعم الشبكة. |
| بنيان | بنية واحدة غير متزامنة أو متعددة الخيوط ، قادرة على معالجة مشكلة C10K. |
| المحولات | تحويل المسار المدمج والاستعلام والأسفل لأنواع البيانات الأولية. |
| المصادقة | منفصلة عن المصادقة و/أو مصادقة مستوى الموارد. |
| معالجة الخطأ | منفصل عن معالجة الأخطاء في مستوى الموارد و/أو مستوى الموارد. |
| العنوان ملزمة | ربط خدمات HTTP و/أو HTTPS لفصل عناوين IP. |
| معالجة الإشارة | التقاط إشارات العملية التي تم إنشاؤها. |
| الوثائق | وثائق عالية الجودة تغطي الهندسة المعمارية و API. |
| امتثال | المرونة لمعالجة HTTP 1.0/1.1+ الامتثال. |
| ناضجة | آمنة ومستقرة واختبارها على نطاق واسع منذ عام 2013. |
| مجتمع | مجتمع مصدر مفتوح نشط وحيوي وحيوي. |
| يدعم | الدعم التجاري متاح من Corvusoft. |
# include < memory >
# include < cstdlib >
# include < restbed >
using namespace std ;
using namespace restbed ;
void post_method_handler ( const shared_ptr< Session > session )
{
const auto request = session-> get_request ( );
int content_length = request-> get_header ( " Content-Length " , 0 );
session-> fetch ( content_length, [ ]( const shared_ptr< Session > session, const Bytes & body )
{
fprintf ( stdout, " %.*s n " , ( int ) body. size ( ), body. data ( ) );
session-> close ( OK, " Hello, World! " , { { " Content-Length " , " 13 " } } );
} );
}
int main ( const int , const char ** )
{
auto resource = make_shared< Resource >( );
resource-> set_path ( " /resource " );
resource-> set_method_handler ( " POST " , post_method_handler );
auto settings = make_shared< Settings >( );
settings-> set_port ( 1984 );
settings-> set_default_header ( " Connection " , " close " );
Service service;
service. publish ( resource );
service. start ( settings );
return EXIT_SUCCESS;
}يمكن العثور على المزيد من الأمثلة المتعمقة هنا. لمشاهدة الاستراحة المستخدمة في الغضب ، يرجى زيارة مشروع RESTQ من Corvusoft.
© 2013-2020 Corvusoft Limited ، المملكة المتحدة. جميع الحقوق محفوظة.
إطار العمل المرخص مزدوجًا ؛ انظر الترخيص للحصول على التفاصيل الكاملة.
يرجى الاتصال بـ [email protected] ، لخيارات الدعم والترخيص بما في ذلك تطوير البرمجيات المفصل واختباره واستشارة التصميم والتدريب والتوجيه ومراجعة التعليمات البرمجية.
يرجى تقديم جميع التحسينات والمقترحات والعيوب عبر تعقب القضية ؛ بدلاً من ذلك ، اطرح سؤالًا على StackOverflow Tagged #Restbed.
git clone --recursive https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_SSL = NO] [-DBUILD_TESTS = NO] ..
make install
make testستجد الآن جميع المكونات المطلوبة المثبتة في مجلد التوزيع الفرعي.
| خيار | وصف | تقصير |
|---|---|---|
| build_ssl | تمكين دعم SSL/TLS. | تمكين |
| build_ipc | تمكين مآخذ المجال UNIX. | عاجز |
| build_tests | بناء أجنحة اختبار المشروع. | تمكين |
| build_devel_package | تثبيت الرؤوس في cmake_install_prefix. | تمكين |
| build_shared_library | إنتاج بناء مشترك من إعادة. | تمكين |
| build_static_library | إنتاج بناء ثابت من الاستراحة. | تمكين |
المتطلبات الأساسية: Visual Studio 2022 ، Cmake ، Git ، Perl.
باستخدام موجه أوامر أدوات X64 Native Tools ، إذا لزم الأمر ، OpenSSL.
git clone --recursive https://github.com/corvusoft/restbed.git
cd restbeddependencyopenssl
perl Configure [no-]shared
nmake
nmake testإذا اخترت استخدام Build OpenSSL Build (مشتركة) ، فستحتاج إلى تضمين مسار التثبيت في بيئتك.
set PATH = restbeddependencyopenssl; %PATH%إذا اخترت لاستخدام بناء OpenSSL الثابت (بدون مشاركة) ، فستحتاج إلى تضمين تبعيات إضافية عند ربط رمز التطبيق الخاص بك ؛ انظر مشروع OpenSSL للحصول على تفاصيل Futher.
target_link_libraries( my_microservice restbed-static.lib ws2_32.lib advapi32.lib crypt32.lib gdi32.lib user32.lib )تابع الآن مع تعليمات الإنشاء التي تم استردادها التالية.
mkdir restbedbuild
cd restbedbuild
cmake -G " Visual Studio 17 2022 " [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
cmake --build . --target ALL_BUILD --config Release
ctestللحصول على تعليمات Microsoft Visual Studio 14 2015 ، ومزيد من التفاصيل ، يرجى الاطلاع على الميزة رقم 17.
يمكنك تنزيل وتثبيت REPBED باستخدام مدير التبعية VCPKG:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install restbedيتم الاحتفاظ بمنفذ REPBED في VCPKG من قبل أعضاء فريق Microsoft والمساهمين في المجتمع. إذا كان الإصدار قديمًا ، فيرجى إنشاء مشكلة أو سحب طلب على مستودع VCPKG.
تهدف قاعدة الشفرة هذه إلى توثيق ذاتي قدر الإمكان. لقد قدمنا العديد من الأمثلة وأجنحة الاختبار لمساعدة المطورين.
يمكنك تحديد موقع أحدث وثائق التصميم و API هنا.
| الموارد | متطلبات |
|---|---|
| المترجم | C ++ 14 متوافق أو أعلى |
| نظام التشغيل | BSD ، Linux ، Mac OSX ، Windows ، Raspbian |
| منعطف | ميزة | حالة |
|---|---|---|
| 0.0 | خدمة HTTP غير متزامنة | مكتمل |
| 1.0 | HTTP 1.0 الامتثال | مكتمل |
| 2.0 | HTTP 1.1 الامتثال | مكتمل |
| 2.5 | طبقة مقبس آمنة | مكتمل |
| 2.5 | منافذ الشبكة المتزامنة (HTTP/HTTPS) | مكتمل |
| 3.0 | محرك القواعد | مكتمل |
| 3.5 | جدولة المهام على حلقة تشغيل الخدمة | مكتمل |
| 3.5 | قدرة الخدمة متعددة الخيوط | مكتمل |
| 3.5 | ربط الخدمة بعنوان محدد | مكتمل |
| 3.5 | إدارة الجلسة | مكتمل |
| 4.0 | عميل HTTP | مكتمل |
| 4.0 | معالجة الإشارة | مكتمل |
| 4.5 | وثائق API | مكتمل |
| 4.5 | مآخذ الويب | مكتمل |
| 5.0 | شهادات SSL من جانب العميل | تطوير |
| 5.0 | التخزين المؤقت للموارد | تطوير |
| 5.0 | تعديلات وقت التشغيل | تطوير |
| 5.0 | HTTP 2 الامتثال | تطوير |
| 5.0 | Refactor ، تقليل ، إعادة استخدام | نشيط |
| طريقة | وصف |
|---|---|
| تغريد | تغرد لنا أسئلتك وطلبات الميزات. |
| [email protected] | دعم الاستعلامات ذات الصلة. |
| [email protected] | بيع الاستعلامات ذات الصلة. |