7 الخادم والعميل
يمكننا بما تعلَّمنا بناء وظائف التطبيق من الناحية المنطقية؛ باستعمال كامل قوة بايثون مع ما تصطحب من مكتبات للمعالجة وتضم إلى ذلك إحدى نظم قواعد البيانات المخصصة لتخزين البيانات واسترجاعها.
لكن لا تخلوا التطبيقات من آليات للوصول إلى هذه الوظائف بطريقة بصرية على الأقل، على شكل صفحات فيها عنواين ونصوص وأزرار وألوان مصفصفة ومنسَّقة بترتيب معيَّن. مثل ما في هذه الصورة:

صورة: صفحة تسجيل الدخول.
وهذه الصورة:

صورة: صفحة إدارة الأعضاء.
التطبيق خادم وعميل
تم تصميم شبكة الإنترنت لتتم المعالجة فيها على مراحل أهمها طرفان:
الطرف الأول: الخادم (Server)؛ وهو البرمجيَّة المزوِّدة بالمحتوى الإكتروني؛ كالمواقع الإلكترونية (Web Sites) التي نشتري منها أو نحجز من خلالها أو نشترك في خدمات؛ فهي مكوَّنة من صفحات إلكترونية (Web Pages) بينها روابط انتقال داخلية، وقد يكون فيها روابط للانتقال إلى مواقع أخرى.
وقد يُطلقُ لفظ خادم (Server) على الجهاز المادي نفسه.
الطرف الثاني: العميل (Client)؛ وهو البرمجيَّة المستهلكة للمحتوى الإلكتروني. وقد تم تصميم عميل خاصل للمواقع الإلكترونية، هو: متصفِّح الشبكة (Web Browser). فعندما يزور المتصفح صفحةً فإنه يقوم بتحميل نص برمجي من هذا الموقع إلى الجهاز ويتم تشغيلها لتظهر كصفحة بعناصرها التي تتفاعل معها.
والمتصفِّحُ كوْنه وسيطًا بين المستخدم والخادم فإنه يتفاعل مع الطرفين:
مع المستخدم:
- عمليات إدخال (Input) في الصفحة نفسها لملئ حقول نصيَّة أو اختيار من قائمة أو من رزنامة ونحو ذلك
- عملية إرسال (Submit) هذه المدخلات كمعطيات إلى الخادم ليتم معالجتها ثم يستقبل الجواب منه ويستجيب له
مع الخادم:
- بأن يعرِض ما يُملي عليه الخادم عرضه بنص HTML؛ لتظهر الصفحة بمحتواها الذي نتفاعل معه.
- وقد يوجهه الخادم نحو رابط معيَّن ينتقل إليه (Redirect)
- وقد يأمره الخادم بحفظ بيانات تخصُّ المستخدم ويتفقان أن يُرسلها دائمًا في كل طلبٍ لاحق؛ وذلك ليميِّزَ الخادم طلب المستخدم الزائر من المستخدم المسجِّل دخوله؛ وتسمى Cookies.
مثال:
- المستخدم: الذي فتح المتصفِّح واختار زيارة الصفحة. ثم حرك الفأرة ليضع المؤشر على زر (تسجيل الدخول) ثم كبسه.
- المتصفِّح: الذي يعرض الصفحة للمستخدم؛ دوْرُه ترجمة اختيارات المستخدم، -ومنها هذه الكبسة- لأمر يُرسَل إلى الخدمة.
- الخدمة: تستقبل هذا الأمر بمعطياته وتحوِّلُها لاستدعاء دالة في بايثون؛ مثلاً:
login(username, password). ثم تتم المعالجة وترجع الدالة بالنتيجة، مثلاً:user_info. - بناءً على ذلك؛ يتم إرسال الجواب بما يناسب الطلب؛ فيكون الجواب بأمر المتصفح بشيئين:
- حفظ بيانات
user_infoوإرسالها مع كل طلب تالي - توجيه المستخدم للصفحة التالية
- حفظ بيانات
- ينفذ المتصفِّح ما أملته الخدمة في الجواب:
- يخزن المتصفح بيانات
user_infoفي الـCookies - يرسل طلب إلى الخادم بالانتقال لتلك الصفحة (مع إرسال الـCookies)
- يخزن المتصفح بيانات
العناوين
المورِد (Resource): هو تمثيل لبيانات: كصفحة أو جزءٍ منها أو صورة أو مقطع. ثم توسع المصطلح ليشمل حتى المعالجة: كإرسال رسالة نصيَّة أو إشعال ضوء أو إيقاف جهاز.
وأما محدد المورد الموحَّد (Uniform Resource Locator - URL) فهو حروف تحدد موقع هذا المورد من الشبكة؛ والاسم المتداوُل له: الرابط (Link).
مثلاً، عندما تحفظُ صفحة مكتبة بايثون الأصلية في المراجِع فإن الرابط المؤدي إلى تلك الصفحة هو هذا:
https://docs.python.org/dev/library/
وهو ثلاثة أجزاء:
الأول: كلمة https تحدد البروتوكول، وهو المناسب لمواقع الشبكة. لكنك قد ترى فرقًا بين http و https بإضافة حرف الـ(s) إشارةً إلى أن الثاني يتم تشفير البيانات فيه بين الخادم والعميل.
الثاني: النطاق (Domain): ويدلُّ على موضِع الخادم من الشبكة. وصيغته من الأخص إلى الأعم: docs فرعٌ عن python وهو الاسم الذي تم حجزه في إحدى نطاقات الشبكة الكبرى التي منها: org (ومثله: com و net) والتي تتحكَّمُ بها جهات منظِّمة للبنية التحتية لشبكة الإنترنت.
الثالث: المسار (Path): /dev/library/ وهو ما نضعه في تبطيقنا كطريقة لاختيار الصفحة.
ونتيجة إداخل هذا الرابط في المتصفِّح؛ فإنه يطلب الخادم على ذلك العنوان؛ فيستقبل الخادم طلبه ويعالجه ويجيبه بصفحة HTML.
اللغات الثلاث في صفحة الموقع الإلكتروني
عند تطوير مواقع أو تطبيقات يتم فتحها بالمتصفِّح؛ فإنه لا بد لنا من معرفة ثلاثة لغات:
- لغة HTML للمحتوى
- لغة CSS للتصفيف
- لغة JavaScript للتخصيص
وسيأتي بيانها.