كنت قد تحدثت من قبل على ان ميدان تطوير الواب شهد منذ بضع سنوات مايمكن وصفه بالثورة، أدخلت تغييرات حتى على المفاهيم المستعملة لتصنيف لغات البرمجة ولامكانياتها، وكنت قد ذكرت ان من ضمن تلك المتغيرات، مسالة تصنيف لغات تطوير الواب، للغات جهة المتصفح وأخرى جهة الخادم، وقلت ان الأمر حاليا اصبح متداخلا بين اللغتين بحيث لم يعد لذلك التقسيم القديم من كبير معنى، وذكرت مثلين لادوات تطوير ساهمت في تغيير هذا المعطى وهما، لغة Action Script المستعملة في تطبيقات فلاش واخيرا في تطبيقات Flex من حيث انها تمكن من الاتصال المباشر بقاعدة البيانات جهة الخادم، مع توفيرها واجهة ثابتة جهة المتصفح، ثم المثل الثاني يتعلق بتقنية Ajax، التي تتيح التواصل مع الخادم بسلاسة من خلال لغة برمجية جهة الخادم.
وغني عن القول، أن Ajax هي تقنية وأساليب تطوير وليست لغة برمجية جديدة مستقلة بذاتها (وإن كان استعمالنا لكلمة تقنية هنا ليس دقيقا ولكننا نقصد به طرق البرمجة بدرجة أولى)، بمعنى ان الجديد هو استعمال مجموعة من خواص اللغات البرمجية وربطها ببعضها، لأن الامر يتعلق بلغات برمجية معروفة من قبل، ف Ajax الذي هو اختصار ل Asynchronous JavaScript and XML ، يعني استعمال لغتي JavaScript و XML بطريقة غير متزامنة.
وإذا ابتعدنا عن هذه الاختصارات الفضفاضة غير الدقيقة، فان Ajax أولا عكس ماقد يوحي به الاسم، لا تستعمل بالضرورة لغة XML، بل تنهل من أي مصدر للمعطيات، سواء أتعلق الأمر بمعطيات متوفرة في مصدر XML أو قاعدة بيانات أو حتى ملف نصي بسيط، بل إن اغلب الاستعمالات تتم من خلال اخذ المعطيات من قواعد البيانات.
ثم إن النقطة الثانية في Ajax هي التفاعل الذي يعبر عنه في الاسم بعدم التزامن، ومعناه الحقيقي يذهب عكس الاسم، لان الاسم أطلق على تفاصيل المراحل التي تمر بها المعلومة مابين مصدر المعطيات ومابين لحظة العرض جهة المتصفح، والتي تتم بطريقة غير متزامنة (وفيها خمسة مراحل معبر عنها بأرقام من 0 ل4)، ولكنها في آخر المطاف ليست المعنى المقصود بالتزامن الذي نعنيه حينما نتحدث عن تزامن العرض من لحظة ضغطنا على رابط طلب الصفحة وبين عرضها، وعلى أية حال، فإن Ajax اضاف سرعة كبيرة في عرض المعطيات بحيث تبدو اكثر سرعة من الطريقة التقليدية.
وواضح ان Ajax اتاح سرعة كبيرة في التخاطب مع الخادم، وهو ما يظهر في انتفاء الحاجة لإعادة تحميل الصفحات كلما ضغطنا على الرابط المعني بالصفحة، لان الذي يقع هو اننا استعملنا احداثية (événement / event) عن طريق لغة JavaScript، لننقل من خلالها الأوامر لملف يقع معالجته عن طريق الخادم، ولكن قبل ذلك، فان أمر JavaScript وبالتالي كل المعالجات، يجب ان يمر عبر الشيئ XMLHttpRequest الذي يتيح تتبع حالات التواصل مابين الخادم والمتصفح في كل وضعياتها.
وتقوم البرمجة، على التنصت على نتائج ما يعطيه XMLHttpRequest، وعندما تكون الحالة الإرجاع الممتلئ اي وجود نتيجة من الخادم، ثم حالة العرض، فإننا نأخذ تلك النتيجة ونقوم بإرجاعها للمتصفح من خلال تزاوج مابين لغة جهة الخادم كPHP ولغة JavaScript التي استعملناها للتواصل.
واستعمالنا XMLHttpRequest، سرّع من عرض النتائج من غير الحاجة لإعادة تحميل الصفحات، كما انه أتاح تطوير واجهات غنية، مقارنة عما كلن عليه الأمر مع التطبيقات المتعارف عليها، وذلك نظرا لعدم وجود عائق الوقت اللازم للتحميل في كل خاصية.
ولكن في المقابل، فان Ajax يواجه انتقادات عديدة، منها انتقادات جدية وأخرى دون ذلك، ويمكن إجمال تلك الانتقادات والردود عليها في النقاط التالية:
1. تواجه برمجيات Ajax هشاشة العمل والتعطيل، بما انها ترتكز جزئيا على لغة JavaScript، وهي اللغة المعروف انها ممكنة التعطيل من طرف المستخدم، ولك ان تتصور موقعا ضخما أو تطبيق واب كبير، يتمحور كله حول Ajax، وان احدهم ليس متاح له لغة JavaScript على جهازه، اما عمدا او لعطب ما من دون معرفة المستعمل بذلك، كما في حالة الاجهزة ذات الاستعمال المشترك، النتيجة ان ذلك التطبيق او الموقع لن يقع الاستفادة منه من طرف ذلك المستعمل.
ويرد داعمو تقنية Ajax على هذه الانتقادات، بالقول أن كون JavaScript يمكن ان يكون معطلا في بعض الأجهزة حقيقة ليست حكرا على Ajax، فمثل هذه المشكلة تواجه أيضا تقنية فلاش حيث يمكن ان تتواجد بإزائها أجهزة لا تحتوي على قارئ فلاش، ولم يمنع ذلك من توسع تقنية فلاش حتى وصل بها الامر لتطوير بيئة Flex، ونفس الشيئ يقال على تنسيق pdf، حيث لم يمنع حقيقة عدم توفر بعض الاجهزة على قارئ Acrobat reader، من توسع تلك التقنية، وخلاصة الرد، ان التطور يراعي الذين يتقدمون، وان العجلة لن تتوقف لأجل عدم استطاعة البعض اللحاق بالركب.
2. ولكن Ajax يواجه أيضا انتقادات في مسألة الحماية، حيث يقول البعض انه يسهل تمرير بعض المعطيات للخادم بما انه يقع الاعتماد جزئيا على شيفرة JavaScript حين تمرير الإحداثية، وان هذه اللغة لا تحوي دوال (fonction/ function) للتثبت كما لدى لغة PHP مثلا، من ذلك أنها لا تملك إلا دالتان في هذا المجال وهما: escape و unescape، فضلا على أنهما غيرا دقيقتان.
ويرد المتحمسون ل Ajax بالقول، انه يمكن تقوية الحماية بالملف العامل جهة الخادم عن طريق لغة PHP، كما انه توجد تقنيات قيد التطوير لتدعيم الحماية جهة المتصفح.
3. أما الانتقاد الثالث الموجه ل Ajax والذي يبقى من دون حل حسب علمي، فهو كون Ajax يعيق فهرسة الصفحات وبالتالي الموقع ككل لدى محركات البحث، ومن ثمّ، فان موقعا مرتكزا على Ajax، يكون غير مرئي بما فيه الكفاية في نظر محرك البحث، وهو مايعني الحكم عليه بخسارة النسبة الأكبر من الزيارات المحتملة، اذا ما عرفنا ان الزيارات المتأتية من محركات البحث تكون عادة أضعاف الزيارات الأخرى، بالنسبة لموقع تم تطويره ومعالجته جيدا.
ولأن رد داعمو Ajax بالقول ان هذه المشكلة تواجه أيضا المواقع المطورة بتقنية فلاش ذات التنسيقات swf فان هذا الكلام لا يحل المشكلة، حيث يؤكدها ويتجاهلها فقط، ثم ان ملفات swf، كانت adobe مالكة فلاش قد اعلنت عن عملها على توفير إضافات مايشبه API تمكن المحركات من التعرف على محتويات swf، وهو مايعني حلا لمشكلة التعرف على محتوياتها.
وتبقى إذن المشكلة مطروحة بالنسبة للمواقع المرتكزة على Ajax من حيث انها تجعل المحتويات غير مرئية لمحركات البحث، والسبب في ذلك، اثنين: أولا ان محتوى الملفات المؤشرة بلغة JavaScript لا يقع تتبعها من طرف محركات البحث، لعدم قدرتها قراءة هذه اللغة، ثم ثانيا ترجع المشكلة لكون الصفحات لايقع شحنها آليا في محتويات الا عند الطلب من خلال الإحداثيات، وهو ما لايمكن محرك البحث من الاطلاع علي تلك المحتويات حين مروره، فانت مثلا حين تقوم بالضغط على رابط يظهر لك محتوى معين بtag معين مثلا div ، ثم ان هذا div يكون محلا لمحتوى اخر، حين الضغط على رابط آخر، وهلم جرا، وحين مرور محرك البحث، قد يجد محتوى واحد لذلك div، بل قد يجده فارغا أصلا.
4. أما الإنتقاد الرابع الموجه ل Ajaxفهو ان سهولة الاتصال مع الخادم، وتزايد عمليات التواصل ذات الاتجاهين بين الخادم والمتصفح، مما يزيد من أعباء الخادم، بحيث أن ذلك، قد يعيق عمله أو يعطله، والرد على هذا نسبي ويتغير حسب طبيعة الموقع، فمثل هذا الإعتبار قد يكون مشكلا بالنسبة للمواقع ذات الزيارات الكبيرة والعاملة على خوادم مشتركة، ولكنها تصبح انتقادات غير ذات معنى بالنسبة للمواقع المسكنة على خوادم مستقلة
اضغط على الكلمات المفتاحية التالية، للإطلاع على المقالات الأخرى المتعلقة:
28-10-2008 / 19:47:03 المطور