Wt (مجموعة أدوات الويب)
Wt (تُنطق "ويتي" ) هو إطار عمل ويب مفتوح المصدر يركز على الأدوات البرمجية، وهو مُصمم للغة البرمجة C++ . يتميز بواجهة برمجة تطبيقات (API) تُشبه واجهة Qt (على الرغم من أنه طُوّر باستخدام Boost، وهو غير متوافق عند دمجه مع Qt)، كما أنه يستخدم شجرة الأدوات البرمجية ونظام الإشارات/الفتحات القائم على الأحداث . [ 3 ]
يهدف تصميم Wt إلى الاستفادة من نموذج المكونات ذي الحالة المستخدم في واجهات برمجة تطبيقات سطح المكتب، وتطبيقه على تطوير الويب - بدلاً من نمط تصميم MVC التقليدي (النموذج-العرض-المتحكم). لذا، بدلاً من استخدام MVC على مستوى صفحة الويب ، يتم تطبيقه على مستوى المكونات الفردية. [ 4 ]
على الرغم من أن المكتبة تستخدم عملية تطوير برامج سطح المكتب ، إلا أنها تدعم بعض الميزات الخاصة بالويب ، بما في ذلك:
- عناوين URL الدلالية
- تصفح سجل المتصفح
إحدى الميزات الفريدة لـ Wt هي طبقة التجريد الخاصة بها لنموذج عرض المتصفح . تستخدم المكتبة تقنية Ajax للتواصل مع المتصفحات المتوافقة معها، بينما تستخدم عمليات إعادة إرسال نماذج HTML عادية لوكلاء المستخدم الآخرين . باستخدام أسلوب التمهيد التدريجي، يتم عرض واجهة المستخدم كمستند HTML عادي أولاً، ثم، إذا كان المتصفح يدعم ذلك، يتم ترقيتها تلقائيًا لاستخدام Ajax لزيادة التفاعل. وبهذه الطريقة، فإن Wt، بحكم تعريفها:
- إطار العمل الوحيد من جانب الخادم الذي ينفذ استراتيجية التحسين التدريجي تلقائيًا؛
- إطار عمل Ajax الوحيد الذي يتمتع بخصائص تحسين محركات البحث (SEO).
بسبب شعبية لغة C / C++ في بيئات الأنظمة المدمجة ، يتم استخدام Wt غالبًا في مثل هذه الأجهزة، ونتيجة لذلك تم تحسينها بشكل كبير من أجل الأداء .
الميزات الرئيسية
- التدهور التدريجي التلقائي والتحسين التدريجي
- يدعم الأحداث التي يبدأها الخادم ( Comet )
- واجهة برمجة تطبيقات موحدة للعرض ( SVG ، عنصر HTML5 canvas ، VML )
- التحقق من صحة البيانات من جانب العميل والخادم
- يحتوي على العديد من ميزات الأمان لتجنب ثغرات البرمجة النصية عبر المواقع وثغرات تزوير الطلبات عبر المواقع (CSRF).
- يتضمن طبقة ORM مضغوطة مكتوبة بلغة C++ ("Wt::Dbo").
- يستخدم بروتوكول شبكة WebSocket ، إن وجد، لنموذج اتصال العميل والخادم ، مع إمكانية اللجوء إلى Ajax أو عرض صفحات الويب العادية كخيارات احتياطية.
للحصول على نظرة عامة أكثر تفصيلاً، راجع قسم الميزات في الموقع الرسمي.
مثال على الكود
برنامج "مرحباً بالعالم!" في Wt:
#include <Wt/WApplication.h> #include <Wt/WBreak.h> #include <Wt/WContainerWidget.h> #include <Wt/WLineEdit.h> #include <Wt/WPushButton.h> #include <Wt/WText.h>/* * فئة تطبيق "مرحباً بالعالم" بسيطة توضح كيفية التفاعل * مع الأحداث، وقراءة المدخلات، وتقديم التغذية الراجعة. */ class HelloApplication : public Wt :: WApplication { public : HelloApplication ( const Wt :: WEnvironment & env );خاص : Wt :: WLineEdit * nameEdit_ ; Wt :: WText * greeting_ ;void greet (); };/* * يحتوي وسيط env على معلومات حول الجلسة الجديدة، * والطلب الأولي. يجب تمريره إلى مُنشئ WApplication * لذا فهو عادةً ما يكون وسيطًا لمنشئ التطبيق المخصص الخاص بك. */ HelloApplication :: HelloApplication ( const Wt :: WEnvironment & env ) : WApplication ( env ) { setTitle ( "Hello world" ); // عنوان التطبيقroot () -> addNew < Wt :: WText > ( "اسمك من فضلك؟" ); // عرض نصnameEdit_ = root () -> addNew < Wt :: WLineEdit > (); // السماح بإدخال النص nameEdit_- > setFocus (); // إعطاء التركيززر تلقائي = الجذر () -> إضافة جديد < Wt :: WPushButton > ( "رحّب بي." ); // إنشاء زر زر -> ضبط الهامش ( 5 , Wt :: Side :: Left ); // إضافة هامش 5 بكسلroot () -> addNew < Wt :: WBreak > (); // إدراج فاصل أسطر greeting_ = root () -> addNew < Wt :: WText > (); // نص فارغ/* * ربط الإشارات بالفتحات * * - طريقة Wt البسيطة: تحديد الكائن والطريقة */ button -> clicked (). connect ( this , & HelloApplication :: greet );/* * - استخدام كائن دالة عشوائي، على سبيل المثال مفيد لربط * القيم باستخدام std::bind() باستدعاء الدالة الناتج */ nameEdit_ -> enterPressed (). connect ( std :: bind ( & HelloApplication :: greet , this ));/* * - باستخدام تعبير لامدا: */ button -> clicked (). connect ([ = ]() { std :: cerr << "مرحباً، " << nameEdit_ -> text () << " \n " ; }); }void HelloApplication :: greet () { /* * تحديث النص باستخدام النص المُدخل في حقل nameEdit_. */ greeting _-> setText ( "مرحباً، " + nameEdit _-> text ()); }int main ( int argc , char ** argv ) { /* * قد تقوم دالة main الخاصة بك بإعداد بعض الموارد المشتركة، ولكن يجب عليها بعد ذلك * بدء تشغيل تطبيق الخادم (FastCGI أو httpd) الذي يبدأ * بالاستماع إلى الطلبات، ويتعامل مع جميع دورات حياة التطبيق. * * تحدد الوسيطة الأخيرة لـ WRun الدالة التي ستنشئ * كائنات تطبيق جديدة. يتم تنفيذ هذه الدالة عندما يتصفح مستخدم جديد * تطبيق Wt، وبعد أن تتفاوض المكتبة على دعم المتصفح. * يجب أن تُرجع الدالة كائن تطبيق تم إنشاؤه حديثًا . */ return Wt :: WRun ( argc , argv , []( const Wt :: WEnvironment & env ) { /* * يمكنك قراءة معلومات من البيئة لتحديد ما إذا كان * لدى المستخدم إذن لبدء تطبيق جديد */ return std :: make_unique < HelloApplication > ( env ); }); }انظر أيضاً
مراجع
- ↑ "Wt: ملاحظات الإصدار" . www.webtoolkit.eu . تم الاطلاع عليه بتاريخ 10-07-2024 .
- ↑ "wt/LICENSE" . GitHub . تم الاسترجاع في 30 ديسمبر 2024 .
- ↑ دومون، ويم؛ ديفورش، كوين (11 فبراير 2008). "Wt: مجموعة أدوات الويب" . مجلة دكتور دوبز . تم الاطلاع عليه في 24 يناير 2017 .
- ↑ فولكمان، فيكتور (6 يونيو 2008). "Wt: مكتبة أدوات الويب C++ تتيح لك كتابة تطبيقات ويب مستقلة عن البرمجة النصية" . كوين ستريت . مؤرشف من الأصل في 21 مارس 2012. تم الاطلاع عليه في 24 يناير 2017 .
روابط خارجية
- أجاكس (برمجة)
- أطر عمل تطبيقات الويب الغنية
- برامج تطوير مواقع الويب
- أطر عمل الويب
- برنامج خادم الويب
