CodeGym /مدونة جافا /Random-AR /الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات
John Squirrels
مستوى
San Francisco

الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات

نشرت في المجموعة
هذه المادة جزء من سلسلة "مقدمة لتطوير المشاريع" . الجزء الأول عن الشبكات موجود هنا . الجزء 2. دعونا نتحدث قليلاً عن هندسة البرمجيات - 1تشير هندسة البرمجيات إلى البنية التي تم إنشاؤها داخل التطبيق، أي وحدات البرنامج ومكوناته بأكملها وكيفية تفاعلها. لقد عمل المبرمجون على تصميم معماريات جيدة لفترة طويلة جدًا، لذلك ليس من المستغرب أننا سمعنا عن الكثير من الأنماط المعمارية. عليك أن تفهمها: عند كتابة تطبيق ويب، من المهم التوصل إلى بنية جيدة، لأن تطبيق الويب يحتوي على مكونات ووحدات أكثر من التطبيق العادي. يعد النمط المعماري طريقة ذكية لحل بعض مشكلات تصميم البرامج. من المحتمل أنك صادفت أنماط تصميم مثل طريقة المصنع، والمصنع المجرد، والباني، والنموذج الأولي، والمفرد، وربما غيرها. نستخدمها عند كتابة التعليمات البرمجية وإنشاء الفصول الدراسية والتخطيط لكيفية تفاعل الفصول الدراسية. تُستخدم الأنماط المعمارية على مستوى أعلى من التجريد، عند التخطيط لتفاعل المستخدم مع الخوادم والبيانات والمكونات الأخرى. دعونا نلقي نظرة سريعة على بعض الأنماط وكيفية استخدامها.

بنية خادم العميل

يخلق الاسم انطباعًا بأن كل شيء يتعلق بهذا النمط بسيط وواضح. لكن دعونا نوضح بعض النقاط، حتى عندما تبدأ بدراسة الربيع ستفهم ما نتحدث عنه. لنفترض أنك كتبت تطبيقًا للدردشة، وبدأت أنت وصديقك في استخدامه. يمكنك اتباع أسلوب بسيط جدًا، وهو إرسال الرسائل إلى بعضكم البعض مباشرة عبر الإنترنت باستخدام عناوين IP المعروفة: الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات - 2في البداية، يبدو أن كل شيء يعمل بشكل جيد حتى يطلب أحد أصدقائك الانضمام إلى الدردشة. لذلك عندما تقرر إضافة صديقك المشترك إلى الدردشة، فإنك تواجه مشكلة معمارية: بالنسبة لكل مشارك في الدردشة، تحتاج إلى توفير المعلومات الحالية حول عدد المستخدمين، وعنوان IP للمستخدمين الجدد. وعندما يتم إرسال رسالة، يجب تسليمها إلى جميع المشاركين. هذه هي المشاكل الأكثر وضوحا التي سوف تنشأ. سيتم إخفاء مجموعة أخرى من المشكلات في الكود نفسه. لتجنبها، تحتاج إلى استخدام خادم ، والذي سيقوم بتخزين كافة المعلومات حول المستخدمين، بما في ذلك عناوينهم. يجب إرسال الرسائل فقط إلى الخادم. وهو بدوره يرسل رسائل إلى كل من المستلمين. عندما تقرر إضافة جزء خادم إلى تطبيق الدردشة الخاص بك، فإنك تبدأ في إنشاء بنية خادم العميل.

مكونات بنية خادم العميل

دعونا نرى ما هو كل شيء. بنية خادم العميل هي نمط تصميم يستخدم لإنشاء تطبيقات الويب. تتكون هذه البنية من ثلاثة مكونات: الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات - 3
  1. العميل — من اسمه، يمكننا معرفة أن هذا المكون يستخدم بعض الخدمات (تطبيق الويب)، ويتصل بالخادم لطلب بعض المعلومات.

  2. الخادم - هذا هو المكان الذي يوجد فيه تطبيق الويب الخاص بك أو جزء الخادم منه. يقوم بتخزين معلومات المستخدم الضرورية أو يمكنه طلبها. بالإضافة إلى ذلك، عندما يرسل العميل طلبًا، فإن الخادم هو الذي يقوم بإرجاع المعلومات المطلوبة.

  3. الشبكة – هذا الجزء بسيط. يسهل تبادل المعلومات بين العميل والخادم.

يمكن للخادم التعامل مع عدد كبير من الطلبات من مستخدمين مختلفين. وهذا يعني أنه يمكن أن يكون هناك العديد من العملاء. إذا كانوا بحاجة إلى تبادل المعلومات فيما بينهم، فيجب أن يحدث ذلك من خلال الخادم. وبالتالي، فإن الخادم لديه وظيفة أخرى: التحكم في حركة المرور. فيما يتعلق ببرنامج الدردشة متعدد المستخدمين، سيتكون التطبيق بالكامل من وحدتين:
  • وحدة العميل — تحتوي على واجهة رسومية لتسجيل الدخول وإرسال/استقبال الرسائل

  • وحدة الخادم - تطبيق ويب تتم استضافته على الخادم ويتلقى الرسائل من المستخدمين ويعالجها ثم يرسلها إلى المستلمين

الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات - 4عندما نريد الاطلاع على معلومات مفيدة (أو غير مفيدة جدًا) على الإنترنت، نفتح المتصفح، وندخل استعلامًا في شريط البحث، ونحصل على معلومات من محرك البحث ردًا على ذلك. في هذه السلسلة، المتصفح هو العميل. يرسل طلبًا يحتوي على معلومات حول ما نبحث عنه إلى الخادم. يقوم الخادم بمعالجة الطلب، والعثور على النتائج الأكثر صلة، وتجميعها بتنسيق يمكن للمتصفح (العميل) فهمه وإرسالها مرة أخرى. يمكن أن تحتوي الخدمات المعقدة مثل محركات البحث على الكثير من الخوادم. على سبيل المثال، خادم ترخيص، خادم للعثور على المعلومات، خادم لتوليد الاستجابة، وما إلى ذلك. لكن العميل ليس على علم بأي من هذا وغير مهتم به: بالنسبة للعميل، الخادم هو كيان موحد. يعرف العميل فقط عن نقطة الإدخال، أي عنوان الخادم الذي يجب إرسال الطلبات إليه. أذكر التطبيق الذي درسناه في الجزء السابق من هذه السلسلة . كان مخصصًا لرصد متوسط ​​درجة حرارة الهواء في جميع البلدان في الوقت الفعلي. تبدو هندسته المعمارية كما يلي: الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات - 5يوجد تطبيقنا على الخادم. لنفترض أنه يرسل كل خمس ثوانٍ طلبات إلى الخوادم التي تديرها محطات الأرصاد الجوية المحلية، ويتلقى معلومات درجة الحرارة لبلد معين من الخوادم، ويخزن هذه المعلومات. عندما يطلب منا العميل "عرض درجة حرارة الهواء الحالية في العالم"، فإننا نعيد أحدث المعلومات المخزنة، مرتبة حسب البلد. وبالتالي، يعمل تطبيقنا كخادم (عندما يعالج طلبات المستخدم) وعميل (عندما يتلقى معلومات من خوادم أخرى).
إليك نقطة مهمة: مفهوم الخادم لا يتعلق بحاسوب معين، بل يتعلق بالعلاقة بين كيانات الشبكة .
نادرًا ما يتم استخدام بنية خادم العميل البسيطة، وذلك للتطبيقات البسيطة جدًا فقط. بالنسبة للمشاريع الكبيرة والمعقدة حقًا، نستخدم تصميمات مختلفة ستقابلها في المستقبل. الآن دعونا نلقي نظرة على نموذج مشابه جدًا لبنية خادم العميل.

العمارة ثلاثية الطبقات

هذا هو النمط المعماري الذي يقدم وحدة ثالثة - تخزين البيانات . في هذا النمط، تسمى المستويات الثلاثة عادةً طبقات أو طبقات: الجزء 2. دعونا نتحدث قليلا عن هندسة البرمجيات - 6
  1. طبقة العميل هي واجهة المستخدم، وتسمى أيضًا طبقة العرض التقديمي. يمكن أن يكون متصفح ويب يستقبل صفحات HTML، أو واجهة مستخدم رسومية مكتوبة باستخدام JavaFX. الشيء الرئيسي هو أن هذه الطبقة تتيح للمستخدم إرسال الطلبات إلى الخادم ومعالجة استجاباته.

  2. الطبقة المنطقية هي الخادم الذي يعالج الطلبات/الاستجابات. غالبًا ما يطلق عليها أيضًا اسم طبقة الخادم. وهذا أيضًا هو المكان الذي تتم فيه جميع العمليات المنطقية: الحسابات الرياضية، وعمليات البيانات، والمكالمات إلى الخدمات الأخرى أو تخزين البيانات، وما إلى ذلك.

  3. طبقة البيانات هي خادم قاعدة البيانات: يتفاعل خادمنا معها. تقوم هذه الطبقة بتخزين جميع المعلومات اللازمة لتشغيل التطبيق.

وبالتالي، يتحمل الخادم الخاص بنا كامل المسؤولية عن الوصول إلى البيانات ولا يسمح للمستخدم بالوصول إليها مباشرة.

مزايا العمارة ثلاثية المستويات

إن مثل هذه الهندسة المعمارية تمنحنا العديد من المزايا، بما في ذلك:
  1. القدرة على الحماية من حقن SQL (هذا هجوم على الخادم؛ وهو يتضمن إرسال كود SQL الذي، عند تنفيذه، يسمح للمهاجم بالتأثير على قاعدة بياناتنا).

  2. فصل البيانات التي نريد التحكم في وصول المستخدم إليها.

  3. إمكانية تعديل البيانات قبل إرسالها للعميل.

  4. قابلية التوسع (القدرة على توسيع تطبيقنا ليشمل خوادم متعددة تستخدم نفس قاعدة البيانات.

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

كم مرة يجب استخدام الأنماط المعمارية؟

إذا كنت على دراية بنمط تصميم طريقة المصنع ، على سبيل المثال ، فربما تساءلت متى تستخدمه. في بعض الأحيان يكون من الصعب تحديد ما يجب فعله: إنشاء كائن باستخدام عامل التشغيل الجديد أو باستخدام طريقة المصنع. ولكن مع مرور الوقت، يأتي الفهم. تختلف الأمور قليلاً عندما يتعلق الأمر بالأنماط المعمارية. تم تصميم أطر عمل المؤسسة للسماح للمبرمج بإنشاء مشروع بناءً على بعض الأنماط المقبولة عمومًا. وفقًا لذلك، قبل تعلم إطار عمل Spring، يجب عليك بالتأكيد فهم بنية خادم العميل والهندسة المعمارية ثلاثية الطبقات وهندسة MVC. لا تقلق: سنتحدث بعد عن بنية MVC. الجزء 3. HTTP/HTTPS الجزء 4. أساسيات Maven الجزء 5. Servlets وJava Servlet API. كتابة تطبيق ويب بسيط الجزء 6. حاويات Servlet الجزء 7. تقديم نمط MVC (Model-View-Controller)
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION