[C ++ البرنامج التعليمي المتقدم] تطوير إطار خادم من نقطة الصفر (سيلار)
يدعم نمط كتابة سجل السجل وتنسيقه ، يدعم تخصيص السجل ، ومستوى السجل ، والفصل متعدد السوائل ، والوظائف الأخرى ، استخدام السجل: sylar_log_fmt_info (G_LOGGER) مستوى السجل ، اسم السجل ، اسم الملف ، رقم السطر ، إلخ.
اعتماد فكرة الاتفاقية بسبب التكوين. التعريف متاح. لا حاجة للحالة بشكل منفصل. يدعم وظيفة الإخطار التغيير. استخدم ملفات yaml كمحتوى تكوين. يدعم أنواع البيانات في تنسيقات المستوى ، ويدعم حاويات STL (المتجه ، القائمة ، التعيين ، الخريطة ، إلخ) ، يدعم أنواعًا مخصصة (يتطلب طرق التسلسل والخروج) على النحو التالي:
static sylar::ConfigVar< int >::ptr g_tcp_connect_timeout =
sylar::Config::Lookup ( " tcp.connect.timeout " , 5000 , " tcp connect timeout " );يتم تعريف معلمة TCP Connection Timeout مباشرة.
tcp:
connect:
timeout: 10000تغلف وحدة الخيوط بعض الوظائف الشائعة الاستخدام في PTREAD ، مثل الخيط ، والرملة ، و kutex ، و RWMUTEX ، وما إلى ذلك ، والتي يمكن أن تسهل تطوير المواضيع للاستخدام اليومي. علاوة على ذلك ، لا يوفر C ++ 11 القراءة والكتابة mutex ، rwmutex ، spinlock ، وما إلى ذلك ، وفي سيناريوهات التزامن العالي ، غالبًا ما تستخدم هذه الكائنات. لذلك اخترت تغليف pthread بنفسي
Coroutine: مؤشر ترابط وضع المستخدم ، المكافئ للمواضيع في المواضيع ، أخف. يتم تكوين خطاف المقبس في التكوين اللاحق ، والذي يمكن أن يلف المكالمات غير المتزامنة المعقدة في عمليات متزامنة. تقليل تعقيد كتابة منطق الأعمال. حاليًا ، يتم تنفيذ coroutine استنادًا إلى UContext_T ، وسيتم تنفيذها بالطريقة اللاحقة باستخدام fContext_T في boost.context.
يدير جدولة Coroutine جدولة Coroutines ويتم تنفيذها داخليًا كبركة مؤشرات ترابط ، والتي تدعم Coroutines للتبديل بين مؤشرات الترابط المتعددة ، ويمكنها أيضًا تحديد أن Coroutines يتم تنفيذها في مؤشرات ترابط ثابت. إنه نموذج جدولة NM Coroutine ، مع خيوط N و M coroutines. أعد استخدام كل موضوع.
وراثي و coroutine جدولة ، وتغليف Epoll (Linux) ، ويدعم وظيفة المؤقت (باستخدام Epoll لتنفيذ مؤقت ، مستوى ميلي ثانية) ، ويدعم إضافة وحذف وإلغاء وقت قراءة المقبس والوقت. يدعم مؤقتًا لمرة واحدة ، وموقت الدورة ، وموقت الحالة والوظائف الأخرى
نظام الخطاف الأساسي وواجهة برمجة التطبيقات المتعلقة بالمقبس ، وواجهة برمجة التطبيقات ذات الصلة IO ، وواجهة برمجة التطبيقات Select Series. التحكم في تشغيل الخطاف هو الخيط الحبيبي. الاختيار الحر. من خلال وحدة الخطاف ، يمكن استخدام بعض واجهات برمجة التطبيقات بدون وظائف غير متزامنة لإظهار الأداء غير المتزامن. على سبيل المثال (MySQL)
يغلف فئة المقبس ، ويوفر جميع وظائف API Socket ، وتوحيد فئة العناوين ، وتوحيد عناوين IPv4 و IPv6 و UNIX. كما يوفر اسم المجال ووظائف دقة IP.
توفر وحدة التسلسل الثنائية Bytearray عمليات مشتركة على البيانات الثنائية. اقرأ وكتابة الأنواع الأساسية int8_t ، int16_t ، int32_t ، int64_t ، وما إلى ذلك ، دعم varint ، std :: string لقراءة وكتابة الدعم ، تحويل بايت ، دعم التسلسل للملفات ، وفرس من الملفات.
استنادًا إلى فئة المقبس ، فإنه يتضمن فئة خادم TCPServer عامة ، ويوفر واجهة برمجة تطبيقات بسيطة ، وسهلة الاستخدام ، ويمكن أن يربط عناوين واحدة أو أكثر بسرعة ، وبدء الخدمات ، والاستماع إلى المنافذ ، وقبول الاتصالات ، واتصالات المقبس والوظائف الأخرى. يمكن تنفيذ تنفيذ الخادم لوظائف أعمال محددة بسرعة من خلال ورث هذه الفئة.
تدفق مغلف واجهة موحدة. تغليف الملفات والمآخذ في واجهات موحدة. عند استخدامه ، استخدم نمطًا موحدًا. بناءً على نمط موحد ، يمكن أن يوفر توسعًا أكثر مرونة. يتم تنفيذ SocketStream حاليًا
RAGEL (آلة الحالة المحدودة ، الأداء المشابه للتجميع) ، ينفذ تنفيذ البروتوكول البسيط لـ HTTP/1.1 وتحليل URI. استنادًا إلى SocketStream ، يتم تنفيذ HTTPConnection (عميل HTTP) و HTTPSENESS (رابط خادم HTTP). يتم تنفيذ httpserver على أساس tcpserver. يوفر وظيفة طلب API Client Client Client الكاملة ووظيفة خادم API الأساسية HTTP
بعد Servlet's Java ، يتم تنفيذ مجموعة من واجهات Servlet و ServleTDispatch و FunctionServlet. NotfoundServlet. يدعم مطابقة URI الدقيقة والمطابقة الغامضة وغيرها من الوظائف. جنبا إلى جنب مع وحدة HTTP ، توفير وظائف خادم HTTP
معلومات الاتصال: QQ: 564628276 البريد الإلكتروني: 564628276