# إطار عمل ويب

المنصة البرمجية لتطبيقات الإنترنت (بالإنجليزية: Web framework)‏ مصطلح يقصد به إطار عمل برمجي صمم من اجل المساهمة في تطوير صفحة ويب ديناميكية وتطبيق ويب وخدمة ويب، وتهدف الأطر على شبكة الإنترنت لتخفيف العبئ المرتبط والنشئ من تطوير مواقع الويب وإلى تقليل زمن المعالجة اللازم للقيام بالانشطة العادية أثناء عملية تطوير المواقع الإلكترونية، فنجد على سبيل المثال ان العديد من المنصات البرمجية توفر مكتبات من اجل الوصول إلى قاعدة بيانات، وعمل قالب للبرامج وإدارة جلسات العمل، وكثيرا ما تدعم هذه المنصات البرمجية إعادة استخدام التعليمات البرمجية.

## لمحة تاريخية

لم يكن تصميم الشبكة العنكبوتية العالمية تفاعليا بطبيعته بمعنى ديناميكي، فكان نص تشعبي في البداية يتالف من تعليمات برمجية يتم اعدادها يديويا باستخدام لغة النص التشعبي HTML ثم يتم نشر هذه الصفحات البرمجية على خادوم ويب Web Host ؛ وكان مبرمج تلك الصفحات هو الوحيد القادر على إجراء اية تعديلات على صفحة الويب الديناميكيةالتي نشرت؛ ولهذا وضع معيار سي جي أي CGI أو واجهة المعابر العامة من اجل الربط بين البرامج الخارجية وأجهزة تزويد الخدمة؛ إلا أن هذا المعيار يمكن ان يؤثر سلبيا في حمل مزود الخدمة حيث ان كل طلب لابد ان يبدا عملية منفصلة.
وكان المبرمجين في حاجة إلى وجود تكامل أفضل مع أجهزة تزويد الخدمة من اجل تفعيل تطبيق ويب؛ فنجد على سبيل المثال ان خادوم إتش تي تي بي أباتشي HTTP يدعم الوحدات البرمجية التي يمكن ان تقوم بعمليات تنفيذ عشوائي للتعليمات البرمجية في أجهزة تزويد الخدمة (مثل وحدة مود بيرل Mod Perl البرمجية) أو تقوم بارسال طلبات محددة لاحد أجهزة تزويد الخدمة يمكنه التعامل مع المحتوى التفاعلي (مثل وحدة مود جي كي Mod Jk البرمجية)؛ وبعض مزودات الويب (مثل اباتشي تومكات Apache Tomcat) صممت خصيصا من اجل التعامل مع المحتوى التفاعلي من خلال تنفيذ التعليمات البرمجية التي كتبت ببعض اللغات مثل جافا (لغة برمجة).
وأثناء ذلك الوقت كانت هناك جهود لتصميم لغات جديدة تستخدم خصيصا مع شبكة الإنترنت مثل لغات كولدفيوشن ColdFusion وبي إتش بي PHP وصفحات خادم نشطة Active Sever Pages. الجزء الاعظم من لغات البرمجة التي يستخدمها المبرمجون في عمل صفحات الإنترنت التفاعلية يكون له مكتبة برمجية للمساعدة في انجاز المهام العادية، اما تطبيق ويب فعادة ما تحتاج إلى مكتبات خاصة تكون ذات فائدة في تلك التطبيقات بحيث تستخدم مثلا في عمل صفحات لغة رقم النص الفائق (مثل جافا سيرفر فيسيز Java Server Faces).
في النهاية ظهر على الساحة منصات برمجية مكتملة «ذات مساحات تخزين كاملة» تقوم غالبا بتجميع المكتبات المتعددة التي تفيد في تطوير الإنترنت في حزمة برمجية واحدة متماسكة يسهل على مبرمجو الإنترنت استخدامها؛ ومن بين الامثلة على ذلك منصة جافا النسخة التجارية Java EE (برامج تطبيقية صغيرة) وويب اوبجيكتس WebObjects واوبن ايه سي اس OpenACS وكاتاليست Catalyst وروبي على قضبان Ruby on Railsوجانغو (إطار عمل وب) Djangoو زيند فريمورك Zend Framework.

## بنية المنصات البرمجية

تعتمد معظم المنصات البرمجية لتطبيقات الإنترنت على نظام ام في سي MVC، ونجد من ناحية البنية ان هناك بصفة عامة خمسة أنواع رئيسية هي: منصات برمجية تعتمد على الطلب وأخرى تعتمد على العناصر وثالثة تجمع بين الاثنين ورابعة تعتمد على لغة ميتا وخامسة تعتمد على ار أي ايه RIA.

### وحدة التحكم في عرض النموذج MVC

ان العديد من المنصات البرمجية يتم تصميمها على خطة (لا يوجد تعريب ثابت للـ خطط التصميم) وحدة التحكم ,العرض و النموذج MVC من اجل الفصل بني نماذج بيانات الذي يحتوي ويدير قواعد البيانات وواجهة المستخدم؛ ويعد ذلك بصفة عامة عادة حميدة حيث انها تؤدي إلى تحويل العمليات البرمجية إلى وحدات برمجية وتساعد في إعادة استخدام التعليمات البرمجية كما تسمح باستخدام واجهات متعددة.

#### طلب التحديث من قبل مزود الويب في مقابل طلب التحديث من قبل الاجهزة التابعة

ان معظم المنصات البرمجية التي تعتمد نظام ام في سي تستخدم بنية طلب التحديث من قبل مزود الويبPush-based، وهذه المنصات تستخدم اجراءات تنفذ عملية المعالجة المطلوبة ثم «تدفع» البيانات إلى طبقة العرض من اجل إخراج النتائج، ومن بين الامثلة على هذه البنية بعض المنصات البرمجية مثل أباتشي سترتسStruts وجانغو (إطار عمل وب) Django وروبي على قضبانRuby on Rails وسبرينج ام في سي Spring MVC؛ وتعد بنية طلب التحديث من قبل الأجهزة التابعة Pull-based بديلا اخر وهي تسمى في بعض الأحيان بنية «تعتمد على العناصر» Component based؛ وتبدا هذه المنصات البرمجية بطبقة العرض التي يمكنها بعد ذلك «سحب» النتائج من وحدات تحكم متعددة وفق الحاجة؛ وفي هذه البنية يمكن دمج وحدات التحكم المتعددة في نظام عرض واحد؛ ومن بين الامثلة على بنية التحديث من قبل الأجهزة التابعة المنصات البرمجية التالية: أباتشي سترتس 2 Struts 2 وليفت Lift وتابيستري Tapestry وجي بوس سيم J Boss Seam وأباتشي ويكيت Wicket وستريبز Stripes.

### انظمة إدارة المحتوى

بدات بعض المشروعات التي سميت تاريخيا باسم نظام إدارة المحتوى بلعب دور المنصات البرمجية عالية الطبقات لبرامج الإنترنت؛ فنجد على سبيل المثال ان بنية المنصة البرمجية دروبال Drupal تمثل حدا ادنى من الذاكرة Core التي تقوم بوظيفة تمتد داخل الوحدات البرمجية التي تقوم بوظائف ترتبط بصفة عامة بالمنصات البرمجية لبرامج الإنترنت؛ الا انه هناك خلاف حول هل «إدارة المحتوى» هي القيمة الرئيسية لهذه الأنظمة وخاصة ان بعض تلك الأنظمة مثل سيلفرستريب Silver Stripe تمثل منصة برمجية كائنية من النوع ام في سي؛ والوحدات البرمجية المضافة تمكن الآن هذه الأنظمة من التحول إلى تطبيقات كاملة تتجاوز نطاق إدارة المحتوى؛ فمن الممكن ان تقدم هذه الأنظمة لغات برمجة فاعلة ومنصات برمجية فاعلة ومعايير لكتابة التعلميات البرمجية والكثير من الوظائف التي ترتبط تقليديا بالمنصات البرمجية لتطبيقات الإنترنت.

## سمات المنصات البرمجية بتطبيقات الإنترنت
### نظام قوالب الإنترنت

عادة ما تتالف صفحات الإنترنت التفاعلية من جزء ثابت (HTML) وجزء تفاعلي وهو عبارة عن نص برمجي ينتج صفحات HTML؛ ويمكن لهذا النص البرمجي القيام بذلك باستخدام بعض المتغيرات الموجودة في القالب أو استنادا إلى نص برمجي اخر؛ ويمكن ان ياتي النص الذي يتم إنتاجه من قاعدة بيانات وبالتالي يكون من الممكن تقليل عدد الصفحات في الموقع إلى أقصى حد ممكن. واليك مثال على ذلك وهو سمسار العقارات الذي يريد بيع 500 منزل، ففي حالة المواقع الإلكترونية غير التفاعلية يكون على هذا السمسار عمل 500 صفحة من اجل اتاحة المعلومات الخاصة بهذه المنازل، اما في المواقع التفاعلية يقوم السمسار فقط بربط الصفحة التفاعلية بجدول قاعدة بيانات يحتوي على 500 سجل.
ومع قوالب الويب يمكن ادخال المتغيرات الخاصة بلغة البرمجة دون الحاجة إلى استخدام نص برمجي وبالتالي لا يكون هناك حاجة إلى وجود معرفة بالبرمجة من اجل تحديث الصفحات الموجودة في أحد المواقع الإلكترونية، ويمكن التمييز بين لغة HTML والمتغيرات من خلال تركيبة الجمل البرمجية، فنجد على سبيل المثال في حالة نظام صفحات خادم جافا Java Server Pages ان علامة الترميز <c:out> تستخدم من اجل إخراج المتغيرات، وفي نظام سمارتي Smarty تستخدم علامة الترميز {$variable}.
والكثير من محركات القوالب تدعم بالفعل علامات الترميز المنطقية المحدودة مثل IF و FOR-EACH، وتستخدم هذه العلامات فقط مع القرارات التي يجب اتخاذها بالنسبة لطبقة العرض Presentation Layer من اجل الفصل التام بينها وبين طبقة مخطط العمل Business Logic Layer أو النموذج في نظام MVC.

### التخزين الاحتياطي

يشير هذا المصطلح إلى ذاكرة الويب المخبئة وثائق شبكة عنكبوتية عالمية من اجل تقليل استخدام معدل نقل البيانات Bandwidth والحمل على خادوم ويب حالات التعطل المؤقت للمزود؛ وفي هذه العملية تقوم الذاكرة المخبئية بتخزين نسخ من الوثائق التي تمر خلالها بحيث يمكن الاستجابة للطلبات التالية من مخزون الذاكرة المخبئية عند تحقق شروط معينة؛ وبعض المنصات البرمجية للتطبيقات توفر اليات لعمل نسخ احتياطية من الوثائق والتغاضي عن بعض المراحل الخاصة بتجهيز الصفحات مثل إمكانية الوصول إلى قواعد البيانات أو تفسير القوالب.

### الامان

تاتي بعض المنصات البرمجية لتطبيقات الإنترنت ومعها منصات برمجية استيقان والترخيص وهذه تمكن خادوم ويب من التعرف على مستخدمي التطبيقات وحصر إمكانية الوصول إلى المزود على عدد من الوظائف التي تتوقف على بعض المعايير المحددة؛ ويعد نظام دروبال Drupal الذي يمكن من الوصول إلى صفحات الإنترنت استنادا إلى الدور Role-based ويقدم واجهة مستخدم على الإنترنت من اجل إضافة المستخدمين وتخصيص ادوار لهم.

### تخطيط قواعد البيانات والوصول اليها

ان الكثير من المنصات البرمجية لتطبيقات الإنترنت تقدم واجهة برمجة التطبيقات موحدة للمراحل النهائية من قواعد البيانات مما يمكن تطبيقات الإنترنت من العمل مع عدد متنوع من قواعد البيانات دون تغيير في النص البرمجي كما يسمح ذلك للبرامج بالعمل بمفاهيم أعلى؛ ولتحقيق أداء أعلى يجب تجميع الروابط الخاصة بقواعد البيانات مثلما يحدث في مزود الخدمة ايه أو ال سيرفر AOLServer ؛ كما ان بعض المنصات البرمجية برمجة كائنية التوجه Object Oriented تحتوي على ادوات توزيع من اجل التوزيع العلائقي للعناصر Object-Relational Mapping وتوزيع برمجة كائنية التوجه على التتابعات ومن بين المميزات الأخرى التي يمكن ان تقدمها المنصات البرمجية لتطبيقات الإنترنت ادوات دعم المعاملات ونقل قواعد البيانات.

### توزيع العناوين الالكترونية

تعد اداة توزيع عنوان إنترنت للمنصة البرمجية هي الالية التي تقوم من خلالها المنصة البرمجية بتفسير عنوان الإنترنت، وبعض المنصات البرمجية تقوم بالمقارنة بين العنوان الإلكتروني وانساق محددة مسبقا باستخدام تعابير نمطية مثلما يحدث في نظامي دروبال وجانغو (إطار عمل وب)، وتقوم بعض المنصات البرمجية الأخرى تقوم باعادة كتابة العنوان من اجل تحويل العنوان إلى صيغ يمكن للمحرك الأساسي التعرف عليها، ومن بين الاساليب الأخرى المسح البياني مثل المستخدم في نظام يزوبي Zope حيث يتم تحليل العنوان الإلكتروني في خطوات تعطي رسم بياني عناصري (للنماذج ونظم العرض).
ويسمح نظام توزيع المواقع باستخدام المطابقة أو إعادة الصياغة باستخدام العناوين الإلكترونية «الصديقة»، وهذا يزيد من بساطة الموقع ويسمح بفهرسة أفضل من خلال محركات البحث، فنجد على سبيل المثال ان العنوان الذي ينتهي بالصيغة التالية "/page.cgi?cat=science&topic=physics" يمكن تغييره إلى صيغة بسيطة هي "/page/science/physics"، وهذا يجعل العنوان أسهل في القراءة ويمد محركات البحث بمعلومات أفضل حول التصميم البنائي للموقع؛ وعادة ما يؤدي منهج اجتياز الرسم البياني إلى ايجاد عناوين صديقة، فعادة ما توجد العناوين القصيرة مثل "/page/science" افتراضيا حيث انها صيغة مختصرة من الصيغة الطويلة "/page/science/physics".

### اجاكس

كلمة اجاكس Ajax هي اختصار نص جافا غير المتزامن جافا سكريبت ولغة الرقم القابلة للامتداد XMLوهو يشير إلى أسلوب تطوير المواقع الإلكترونية من اجل عمل تطبيق ويب تفاعلية، والهدف هو جعل صفحات الإنترنت تبدو أكثر تفاعلية من خلال تبادل كميات ى صغيرة من البيانات مع مزود الويب خفية بحيث لا يكون هناك حاجة إلى إعادة تحميل الصفحة باكملها في كل مرة يطلب المستخدم فيها عمل بعض التغييرات، ويؤدي ذلك إلى زيادة تفاعلية الصفحة وسرعتها وسهولة
استخدامها ونظرا لتعقيد عملية البرمجة باستخدام نظام اجاكس في جافا سكريبت توجد العديد من إطار عمل الأجاكس والتي تتعامل حصريا مع اجاكس، بل ان بعض المنصات البرمجية لنظام اجاكس يتم دمجها باعتبارها جزء من منصات أكبر، فنجد على سبيل المثال ان بروتوتيب (إطار عمل) سكريب مدمجة في نظام روبي على قضبان. ومع زيادة الاهتمام بتطوير تطبيقات الوسائط الثرية بنظام ويب 2 اتضح مدى صعوبة البرمجة مباشرة في اجاكس وجافا سكريبت حتى ان تكنولوجيا المحولات ظهرت من اجل تمكين المبرمجين من عمل نصوص برمجية في اللغات الراقية مثل جافا وبيثون وروبي، وكان أول تلك المحولات هو موفيك Morfik وبعده ادوات جوجل للإنترنت مع وجود بورتات لبيثون وروبي في صورة بيجامز وروبي جي اس بعدها بوقت قصير، وهذه المحولات ومع يصاحبها من عناصر ومكتبات تؤدي وظائف معينة تجعل تطوير تطبيقات اجاكس للوسائط الثرية يشبه تطوير تطبيقات الحاسب الشخصي.

### التهيئة التلقائية

تقوم بعض المنصات البرمجية بتقليل تهيئة برامج الإنترنت إلى أقصى حد من خلال استخدام الاستبطان اواتباع الأعراف المتبعة أو كلاهما، فنجد على سبيل المثال ان العددي من المنصات البرمجية في جافا تستخدم هيبرنيت Hibernate باعتبارها طبقة ثابتة وهو ما يمكن ان يولد مخطط قاعدة بيانات وقت التشغيل قادرة على الحفاظ على البيانات الضرورية، وهذا يسمح لمصمم التطبيق بتصميم عناصر عمل دون الحاجة إلى تحديد مخطط قاعدة بيانات صراحة، ويمكن للمنصات البرمجية مثل روبي على قضبان ان تعمل بالعكس أي تقوم بتحديد خواص عناصر النموذج وقت التشغيل استنادا إلى مخطط قاعدة بيانات.

### خدمات الإنترنت

تقدم بعض المنصات البرمجية بعض الأدوات التي تساعد في توفير خدمة ويب، وهذه الخدمات يمكن ان تقدم ادوات مشابهة مثل غيرها من عناصر تطبيق الإنترنت.