تشير هندسة البرمجيات إلى البنية التي تم إنشاؤها داخل التطبيق، أي وحدات البرنامج ومكوناته بأكملها وكيفية تفاعلها. لقد عمل المبرمجون على تصميم معماريات جيدة لفترة طويلة جدًا، لذلك ليس من المستغرب أننا سمعنا عن الكثير من الأنماط المعمارية. عليك أن تفهمها: عند كتابة تطبيق ويب، من المهم التوصل إلى بنية جيدة، لأن تطبيق الويب يحتوي على مكونات ووحدات أكثر من التطبيق العادي. يعد النمط المعماري طريقة ذكية لحل بعض مشكلات تصميم البرامج. من المحتمل أنك صادفت أنماط تصميم مثل طريقة المصنع، والمصنع المجرد، والباني، والنموذج الأولي، والمفرد، وربما غيرها. نستخدمها عند كتابة التعليمات البرمجية وإنشاء الفصول الدراسية والتخطيط لكيفية تفاعل الفصول الدراسية. تُستخدم الأنماط المعمارية على مستوى أعلى من التجريد، عند التخطيط لتفاعل المستخدم مع الخوادم والبيانات والمكونات الأخرى. دعونا نلقي نظرة سريعة على بعض الأنماط وكيفية استخدامها.
بنية خادم العميل
يخلق الاسم انطباعًا بأن كل شيء يتعلق بهذا النمط بسيط وواضح. لكن دعونا نوضح بعض النقاط، حتى عندما تبدأ بدراسة الربيع ستفهم ما نتحدث عنه. لنفترض أنك كتبت تطبيقًا للدردشة، وبدأت أنت وصديقك في استخدامه. يمكنك اتباع أسلوب بسيط جدًا، وهو إرسال الرسائل إلى بعضكم البعض مباشرة عبر الإنترنت باستخدام عناوين IP المعروفة:
في البداية، يبدو أن كل شيء يعمل بشكل جيد حتى يطلب أحد أصدقائك الانضمام إلى الدردشة. لذلك عندما تقرر إضافة صديقك المشترك إلى الدردشة، فإنك تواجه مشكلة معمارية: بالنسبة لكل مشارك في الدردشة، تحتاج إلى توفير المعلومات الحالية حول عدد المستخدمين، وعنوان IP للمستخدمين الجدد. وعندما يتم إرسال رسالة، يجب تسليمها إلى جميع المشاركين. هذه هي المشاكل الأكثر وضوحا التي سوف تنشأ. سيتم إخفاء مجموعة أخرى من المشكلات في الكود نفسه. لتجنبها، تحتاج إلى استخدام خادم ، والذي سيقوم بتخزين كافة المعلومات حول المستخدمين، بما في ذلك عناوينهم. يجب إرسال الرسائل فقط إلى الخادم. وهو بدوره يرسل رسائل إلى كل من المستلمين. عندما تقرر إضافة جزء خادم إلى تطبيق الدردشة الخاص بك، فإنك تبدأ في إنشاء بنية خادم العميل.
مكونات بنية خادم العميل
دعونا نرى ما هو كل شيء. بنية خادم العميل هي نمط تصميم يستخدم لإنشاء تطبيقات الويب. تتكون هذه البنية من ثلاثة مكونات:
-
العميل — من اسمه، يمكننا معرفة أن هذا المكون يستخدم بعض الخدمات (تطبيق الويب)، ويتصل بالخادم لطلب بعض المعلومات.
-
الخادم - هذا هو المكان الذي يوجد فيه تطبيق الويب الخاص بك أو جزء الخادم منه. يقوم بتخزين معلومات المستخدم الضرورية أو يمكنه طلبها. بالإضافة إلى ذلك، عندما يرسل العميل طلبًا، فإن الخادم هو الذي يقوم بإرجاع المعلومات المطلوبة.
-
الشبكة – هذا الجزء بسيط. يسهل تبادل المعلومات بين العميل والخادم.
-
وحدة العميل — تحتوي على واجهة رسومية لتسجيل الدخول وإرسال/استقبال الرسائل
-
وحدة الخادم - تطبيق ويب تتم استضافته على الخادم ويتلقى الرسائل من المستخدمين ويعالجها ثم يرسلها إلى المستلمين
عندما نريد الاطلاع على معلومات مفيدة (أو غير مفيدة جدًا) على الإنترنت، نفتح المتصفح، وندخل استعلامًا في شريط البحث، ونحصل على معلومات من محرك البحث ردًا على ذلك. في هذه السلسلة، المتصفح هو العميل. يرسل طلبًا يحتوي على معلومات حول ما نبحث عنه إلى الخادم. يقوم الخادم بمعالجة الطلب، والعثور على النتائج الأكثر صلة، وتجميعها بتنسيق يمكن للمتصفح (العميل) فهمه وإرسالها مرة أخرى. يمكن أن تحتوي الخدمات المعقدة مثل محركات البحث على الكثير من الخوادم. على سبيل المثال، خادم ترخيص، خادم للعثور على المعلومات، خادم لتوليد الاستجابة، وما إلى ذلك. لكن العميل ليس على علم بأي من هذا وغير مهتم به: بالنسبة للعميل، الخادم هو كيان موحد. يعرف العميل فقط عن نقطة الإدخال، أي عنوان الخادم الذي يجب إرسال الطلبات إليه. أذكر التطبيق الذي درسناه في الجزء السابق من هذه السلسلة
. كان مخصصًا لرصد متوسط درجة حرارة الهواء في جميع البلدان في الوقت الفعلي. تبدو هندسته المعمارية كما يلي:
يوجد تطبيقنا على الخادم. لنفترض أنه يرسل كل خمس ثوانٍ طلبات إلى الخوادم التي تديرها محطات الأرصاد الجوية المحلية، ويتلقى معلومات درجة الحرارة لبلد معين من الخوادم، ويخزن هذه المعلومات. عندما يطلب منا العميل "عرض درجة حرارة الهواء الحالية في العالم"، فإننا نعيد أحدث المعلومات المخزنة، مرتبة حسب البلد. وبالتالي، يعمل تطبيقنا كخادم (عندما يعالج طلبات المستخدم) وعميل (عندما يتلقى معلومات من خوادم أخرى).
| إليك نقطة مهمة: مفهوم الخادم لا يتعلق بحاسوب معين، بل يتعلق بالعلاقة بين كيانات الشبكة . |
العمارة ثلاثية الطبقات
هذا هو النمط المعماري الذي يقدم وحدة ثالثة - تخزين البيانات . في هذا النمط، تسمى المستويات الثلاثة عادةً طبقات أو طبقات:
-
طبقة العميل هي واجهة المستخدم، وتسمى أيضًا طبقة العرض التقديمي. يمكن أن يكون متصفح ويب يستقبل صفحات HTML، أو واجهة مستخدم رسومية مكتوبة باستخدام JavaFX. الشيء الرئيسي هو أن هذه الطبقة تتيح للمستخدم إرسال الطلبات إلى الخادم ومعالجة استجاباته.
-
الطبقة المنطقية هي الخادم الذي يعالج الطلبات/الاستجابات. غالبًا ما يطلق عليها أيضًا اسم طبقة الخادم. وهذا أيضًا هو المكان الذي تتم فيه جميع العمليات المنطقية: الحسابات الرياضية، وعمليات البيانات، والمكالمات إلى الخدمات الأخرى أو تخزين البيانات، وما إلى ذلك.
-
طبقة البيانات هي خادم قاعدة البيانات: يتفاعل خادمنا معها. تقوم هذه الطبقة بتخزين جميع المعلومات اللازمة لتشغيل التطبيق.
مزايا العمارة ثلاثية المستويات
إن مثل هذه الهندسة المعمارية تمنحنا العديد من المزايا، بما في ذلك:-
القدرة على الحماية من حقن SQL (هذا هجوم على الخادم؛ وهو يتضمن إرسال كود SQL الذي، عند تنفيذه، يسمح للمهاجم بالتأثير على قاعدة بياناتنا).
-
فصل البيانات التي نريد التحكم في وصول المستخدم إليها.
-
إمكانية تعديل البيانات قبل إرسالها للعميل.
-
قابلية التوسع (القدرة على توسيع تطبيقنا ليشمل خوادم متعددة تستخدم نفس قاعدة البيانات.
-
متطلبات أقل صرامة بشأن جودة اتصالات المستخدم. عند إنشاء استجابة على الخادم، غالبًا ما نحصل على الكثير من المعلومات المختلفة من قاعدة البيانات ونقوم بتنسيقها، تاركين فقط ما يحتاجه المستخدم. يؤدي القيام بذلك إلى تقليل كمية المعلومات التي نرسلها في ردنا على العميل.
GO TO FULL VERSION