المنصة البرمجية لتطبيقات الإنترنت

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

لمحة تاريخية

لم يكن تصميم الشبكة العنكبوتية العالمية تفاعليا بطبيعته بمعنى ديناميكي ، فكان نص تشعبي في البداية يتالف من تعليمات برمجية يتم اعدادها يديويا باستخدام لغة النص التشعبي 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  Struts2 وليفت Lift  وتابيستري Tapestry  وجي بوس سيم JBoss Seam وأباتشي ويكيت Wicket وستريبز  Stripes.

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

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

نظام قوالب الانترنت

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

الامان

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

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

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

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

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

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

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