PHP 8.2: ما الجديد؟
الإصدار الجديد من PHP على الأبواب. ما هي التطبيقات الجديدة التي يجب أن تعرفها؟ راجع هذه المقالة لمعرفة ذلك!
اكتشف قوة البنية السداسية في تعزيز قابلية البرمجيات للصيانة والاختبار والتكيف.
في هذا الدليل الشامل، سنتطرق في هذا الدليل الشامل إلى الفروق الدقيقة في بنية سداسية الشكلواستكشاف تعريفه ومكوناته وتاريخه. سنعقد مقارنات بين بنية سداسية الشكل وغيرها من الأنماط المعمارية الشائعة لتسليط الضوء على نقاط قوتها الفريدة. كما سندرس أيضًا دورها الحاسم في التصميم القائم على المجال (DDD) والخدمات المصغرة، والتي تزداد أهميتها في عالم التصميم الحديث. تطوير البرمجيات.
في المشهد الديناميكي ل بنية البرمجيات, بنية سداسية الشكلوالمعروفة أيضًا باسم الموانئ و نمط المحولاتبرز كمنافس هائل يتحدى بشكل تدريجي معايير بنية تقليدية متعددة الطبقات.
مدفوعة بالحاجة إلى تصميم معماري يمكن أن يضمن سهولة الاختبار وزيادة قابلية الصيانة, بنية سداسية الشكل تم تصميمها. مهمتها: تقديم تطبيقات البرمجيات غير مقيد بتعقيدات وتقلبات العالم الخارجي.
على مدار هذا المقال، سنشرع في رحلة عبر حول حوليات بنية سداسية الشكل - هندسة معمارية تقع في حلقة الوصل بين البساطة والقوة. سنكشف النقاب عن تاريخها وبنيتها ومبادئها، وسنقارنها كذلك مع غيرها من الأنماط المعمارية. سنقوم بدراسة قدرتها على رفع جودة تطبيقات البرمجيات وتقليل المد المتزايد من الديون التقنية التي تحير صناعة البرمجيات.
في صميمها, بنية سداسية الشكلأو الموانئ و بنية المحولاتهو نمط تصميم يعتمد على الفصل بين الاهتمامات. وهو يقسم التطبيق إلى قسمين أساسيين: القسم الداخلي والخارجي.
يضم الجزء الداخلي، الذي يُشار إليه أيضًا باسم نواة التطبيق، ما يلي منطق العمل وكائنات المجال - نواة القيمة في برنامجك. يبقى هذا المعتكف الداخلي منفصلاً عن المؤثرات الخارجية، وبالتالي الحفاظ على سلامة منطق العمل ونموذج المجال.
أما الخارج، من ناحية أخرى، فهو عالم الأنظمة الخارجية - من واجهة المستخدم للوصول إلى قاعدة البيانات - التي تتفاعل مع نواة التطبيق. تتم إدارة هذه التفاعلات من خلال آلية من المنافذ والمحولات، مما يضمن فصلًا واضحًا بين جوهر التطبيق والجهات الفاعلة الخارجية
بنية سداسية الشكل هو من بنات أفكار أليستر كوكبيرن، صاحب الرؤية الذي صاغ هذا المفهوم لأول مرة كاستجابة للقيود التقليدية هندسة معمارية متعددة الطبقات. وقد تم تصميمه لإنشاء تقنية لا تعتمد على التكنولوجيا طبقة المجال التي تعزل النواة منطق العمل من المؤثرات الخارجية، مثل واجهة المستخدم الكود والوصول إلى قاعدة البيانات.
في التقليدية هندسة معمارية متعددة الطبقات، يمكن أن تنتقل التغييرات في إحدى الطبقات إلى طبقات أخرى، مما يؤدي إلى عواقب غير مقصودة. علاوة على ذلك، كان الاختبار معقدًا بسبب التبعيات المعقدة بين الطبقات.
بنية سداسية الشكل ظهر كحل، حيث قدم نموذجًا لا تؤدي فيه التغييرات في جزء واحد من النظام إلى زعزعة الأجزاء الأخرى. وسعت في جوهرها إلى جعل منطق العمل لا يعتمد على ما إذا كان يتم الوصول إليه عبر واجهة الويب أو عبر واجهة برمجة تطبيقات REST APIأو حتى سطر الأوامر.
بنية سداسية الشكلالذي سُمِّيَ بهذا الاسم نسبةً إلى شكله السداسي في التمثيلات التخطيطية، ويتألف من ثلاثة مكونات أساسية هي نموذج المجالوالمنافذ (الأساسية والثانوية)، والمحولات (الأساسية والثانوية).
إن نموذج المجال هو قلب تطبيق البرنامج، حيث يقوم بتغليف قواعد العمل والمنطق الأساسي. تحتوي كائنات المجال الموجودة في هذا النموذج على قيم وقواعد عمل محددة.
بعد ذلك، لدينا بعد ذلك المنافذ، والقنوات بين نموذج المجال والعالم الخارجي. المنافذ الرئيسية كشف التطبيق منطق العملتعمل كبوابة إلى نواة التطبيق. وهي تمثل حالات الاستخدام التي يدعمها التطبيق.
المنافذ الثانويةمن ناحية أخرى، هي واجهات خارجية. وهي تصوّر الواجهات التي يتطلبها التطبيق من العالم الخارجي، مثل طبقات المثابرة أو الخدمات الخارجية.
وأخيرًا، لدينا المحولات، والتي تعمل كمترجمات بين نموذج المجال والعالم الخارجي. يقومون بتحويل البيانات من التنسيق المستخدم بواسطة الأنظمة الخارجية إلى التنسيق المستخدم من قبل منطق العملوالعكس صحيح.
المنافذ والمحولات تشكل الجسر بين جوهر التطبيق والجهات الفاعلة الخارجية. تمثل المنافذ الأساسية حالات استخدام الأعمال التي يعرضها التطبيق، مما يسمح للجهات الفاعلة الخارجية بالتفاعل مع التطبيق. فكر فيها على أنها واجهات الخدمة في طبقة الأعمال.
المنافذ الثانوية، من ناحية أخرى، هي واجهات يتطلبها تطبيقك من العالم الخارجي. يمكن أن تكون هذه خدمات مثل الوصول إلى قاعدة البيانات أو خدمات الويب أو حتى خدمات الوقت. وهي تعرض ما يحتاجه التطبيق، بغض النظر عن أي تقنية أو خصائص خاصة بالمورد.
المحولات هي المظاهر المادية لهذه المنافذ. فهي تقوم بترجمة البيانات من التنسيق المستخدم من قبل منطق العمل إلى التنسيق الذي تستخدمه الجهات الخارجية والعكس بالعكس. يمكن أن تكون هذه المحولات محولات محولات خاصة بالتقنية لواجهات برمجة تطبيقات REST أو قواعد بيانات SQL أو أنظمة المراسلة، ولكن يمكن أن تكون أيضًا نصوصًا برمجية مجمعة أو واجهة المستخدم الكود. تشكّل المحولات حدود التطبيق، مما يسمح للتطبيق بأن يكون محايداً من الناحية التقنية.
تمثل المنافذ الأساسية العمليات التي يمكن لتطبيقنا تنفيذها - الأوامر التي يمكن أن يقبلها مجالنا الأساسي. غالبًا ما يتم تنفيذها كواجهات في لغات مثل جافاتحديد العمليات التي يقدمها التطبيق.المحولات الأساسيةوبالتالي، هي تطبيقات هذه الواجهات لجهات خارجية محددة.
من ناحية أخرى، المنافذ الثانوية هي واجهات يستخدمها المجال الأساسي للتفاعل مع العالم الخارجي. يمكن أن تتضمن هذه الواجهات لاستمرار كائنات المجال أو إرسال الإشعارات. محولات ثانوية هي التطبيقات الفعلية لهذه الواجهات - و قاعدة بيانات SQL أو محول إشعار البريد الإلكتروني، على سبيل المثال.
معًا، فإن المنافذ والمحولات الأساسية والثانوية تشكل حدودًا مرنة ونموذجية حول التطبيق، تفصل بين منطق المجال عن الاهتمامات التقنية. فهي تفرض فصلاً واضحاً للمسؤوليات وتسمح لأجزاء مختلفة من النظام بالتطور بشكل مستقل.
قاعدة التبعية مبدأ أساسي في بنية سداسية الشكل التي تنص على أن التبعيات يجب أن تشير إلى الداخل نحو جوهر التطبيق. لا يعتمد جوهر التطبيق على أي قاعدة بيانات أو واجهة مستخدم معينة أو أي جهة خارجية أخرى.
يرتبط هذا المبدأ ارتباطًا وثيقًا بمبدأ مبدأ انعكاس التبعية (DIP)، وهو أحد مبادئ SOLID للتصميم الموجه للكائنات. ينص DIP على أن الوحدات النمطية عالية المستوى (منطق العمل أو طبقة المجال يجب ألا يعتمد على وحدات منخفضة المستوى (مثل محول قاعدة البيانات). بدلاً من ذلك، يجب أن يعتمد كلاهما على التجريدات. يسمح عكس التبعيات هذا بعزل الوحدات النمطية عالية المستوى عن التغييرات في الوحدات النمطية منخفضة المستوى، مما يعزز التصميم حيث منطق العمل يقود البنية الكلية.
يعد رسم الخرائط عملية أساسية في بنية سداسية الشكلحيث يقوم محول خاص بالتقنية بتحويل البيانات من التنسيق المستخدم من قبل الأنظمة الخارجية إلى تنسيق طبقة المجال يمكن فهمها. يسهل هذا التعيين الترجمة بين تمثيلات التطبيق الداخلية والخارجية للبيانات.
على سبيل المثال، عندما يأتي طلب HTTP إلى تطبيقنا من واجهة خارجية مثل واجهة برمجة تطبيقات REST API، يجب ترجمة بيانات الطلب من JSON إلى كائنات مجال يمكن للتطبيق استخدامها. هذه الترجمة هي مسؤولية المحولات.
بالمقابل، عندما يحتاج التطبيق إلى إرسال استجابة، تقوم المحولات بتحويل كائنات المجال إلى JSON. يسمح ذلك للتطبيق الأساسي بالبقاء جاهلاً بتفاصيل العالم الخارجي مع ضمان قدرته على تفسير البيانات الواردة وتنسيق البيانات الصادرة بشكل صحيح.
بنية سداسية الشكل ثروة من الفوائد، والتي يمكن أن تُعزى إلى حد كبير إلى فصل تطبيقات البرمجيات عن عناصرها الخارجية والفصل الواضح بين الأجزاء المختلفة للنظام.
تتمثل إحدى الفوائد الأساسية في الفصل بين الاهتمامات، مما يعزز قابلية الحفاظ على التعليمات البرمجية وسهولة قراءتها. فصل النواة الأساسية منطق العمل من العالم الخارجي يسمح بالتغييرات في المحولات الخاصة بالتكنولوجيا وقواعد البيانات و واجهات المستخدم دون تغيير النواة الأساسية منطق العمل.
بنية سداسية الشكل تتفوق أيضًا في مجال قابلية الاختبار. يسمح عزل البنية عن التبعيات الخارجية للمطورين بإجراء اختبارات الانحدار الآلية وكتابة مجموعات الاختبار الآلي بسهولة أكبر. يعزز هذا العزل مرونة التطبيق، حيث أن التغييرات في أحد المكونات لن تؤثر سلبًا على المكونات الأخرى.
علاوة على ذلك، تدعم البنية محولات متعددة لنفس المنفذ، مما يفتح الباب أمام عدة محولات لنفس المنفذ الثانوي. هذه المرونة تسمح للتطبيق بالتفاعل مع أنواع مختلفة من قواعد البيانات أو دعم مختلف واجهة المستخدم المنصات.
في عالم تطوير البرمجيات، غالبًا ما تكون قابلية الصيانة سمة مطلوبة في مجال تطوير البرمجيات، ومع ذلك فهي سمة قد تكافح الأنماط المعمارية التقليدية لتوفيرها. بنية سداسية الشكل تبرز هنا بتركيزها القوي على قابلية الصيانة.
من خلال التركيز على الفصل بين الاهتمامات, بنية سداسية الشكل يضمن عدم انتقال التغييرات التي يتم إجراؤها في جزء واحد من التطبيق إلى أجزاء أخرى. تساعد هذه السمة في تقليل الوقت والجهد المبذول في فهم وتصحيح الكود.
بالإضافة إلى ذلك، تشجع البنية على إعادة استخدام التعليمات البرمجية من خلال تعزيز التصميم الذي تكون فيه منطق العمل معزول عن التقنيات المحددة المستخدمة لتشغيل التطبيق. يسمح هذا الفصل للمطوّرين بالتبديل أو الترقية أو إعادة الهيكلة الواجهات الخارجية دون التأثير على المنطق الأساسي، مما يقلل من مخاطر إدخال الأخطاء.
يشير الدين التقني، وهو مصدر قلق كبير في تطوير البرمجيات، إلى التكلفة المستقبلية لإعادة الهيكلة وإصلاح الاختصارات والاختراقات في التعليمات البرمجية. بنية سداسية الشكل يقدم نهجًا استباقيًا للتخفيف من هذه الديون.
من خلال تسهيل الفصل الواضح بين منطق العمل و المكونات الخارجية, بنية سداسية الشكل يقلل من احتمالية تشابك التعليمات البرمجية التي يمكن أن تسبب مشاكل في الصيانة وتفاقم الديون التقنية. كما تلعب قابلية الصيانة والاختبار المتأصلة في البنية دورًا في الحد من الديون التقنية، حيث إنها تساعد على منع إدخال الأخطاء وتسهيل جهود إعادة الهيكلة.
علاوة على ذلك، فإن قدرة بنية سداسية الشكل لدعم التغييرات في البنية التحتية دون الحاجة إلى إجراء تغييرات في منطق العمل يوفر حاجزًا وقائيًا ضد الديون التقنية. تتيح هذه القدرة للفرق التكيف مع التغييرات في المتطلبات أو التقنيات دون الحاجة إلى إعادة كتابة أجزاء كبيرة من التطبيق.
في الممارسة العملية, بنية سداسية الشكل يجلب نهجًا منظمًا لتطوير البرمجيات. وتوفر الحدود السداسية حول التطبيق الأساسي ترسيمًا واضحًا للمكان الذي ينتهي فيه التطبيق و العالم الخارجي يبدأ.
تعمل المحولات كحراس بوابة، حيث تقوم بترجمة الطلبات من الجهات الخارجية إلى شكل يمكن للتطبيق الأساسي فهمه، والعكس صحيح. من خلال القيام بذلك، فإنها تضمن بقاء التطبيق الأساسي محايدًا لخصائص العالم الخارجي، سواء كانت قاعدة بيانات أو واجهة برمجة تطبيقات خارجيةأو واجهة المستخدم.
التصميم المدفوع بالمجال (DDD) هو منهجية لتطوير البرمجيات تعطي الأولوية لمفاهيم الأعمال الأساسية، أو منطق المجالباعتبارها القوة الدافعة الرئيسية للتصميم. تتوافق هذه المنهجية بشكل ملحوظ مع بنية سداسية الشكلوهو ما يؤكد أيضًا على أهمية منطق العمل و نموذج المجال في الهندسة المعمارية.
في سياق بنية سداسية الشكل، يضمن DDD أن تكون الوحدات عالية المستوى للتطبيق - طبقات المجال - مستقلة عن العناصر الخارجية مثل واجهة المستخدم أو قاعدة البيانات. يتم ضمان هذه الاستقلالية عن طريق المنافذ والمحولات التي تحمي طبقة المجال من تفاصيل الأنظمة الخارجيةوبالتالي تمكين منطق المجال للتطور بشكل مستقل.
علاوة على ذلك, بنية سداسية الشكل مبادئ التصميم الاستراتيجي في DDD، بما في ذلك مفهوم السياقات المحدودة. يمكن تصور كل سياق محدود في DDD على أنه مسدس في بنية سداسية الشكل، مع وجود نموذج المجال في جوهره و المنافذ والمحولات بمثابة الحدود.
يمكن أن تستفيد الخدمات المصغرة، وهي نمط معماري معاصر آخر، استفادة كبيرة من بنية سداسية الشكل. تتماشى الطبيعة اللامركزية للخدمات المصغرة - حيث تقوم كل خدمة بتغليف قدرة عمل محددة - بشكل دقيق مع تغليف منطق العمل داخل قلب الشكل السداسي.
تمامًا كما يجب أن تكون كل خدمة مصغرة مقترنة بشكل فضفاض مع الخدمات الأخرى، كل سداسي في بنية سداسية الشكل معزول أيضًا عن الآخرين، ويتواصل فقط من خلال المنافذ والمحولات المحددة. هذا يسمح لكل خدمة مصغرة أن يكون لكل خدمة مصغرة بنية سداسية الشكل، مما ينتج عنه مجموعة من الخدمات المستقلة غير المترابطة.
العزل الذي يوفره بنية سداسية الشكل مفيدًا بشكل خاص عند التعامل مع التعقيد والطبيعة الموزعة للخدمات المصغرة. من خلال عزل منطق العمل الأساسي من العالم الخارجي, بنية سداسية الشكل يضمن منطق العمل كما هي، بغض النظر عن التغييرات في الخدمات الأخرى أو الأنظمة الخارجية.
يمكن أن يكون لطريقة تصميم البرامج تأثير عميق على كيفية تطورها بمرور الوقت. مقارنة بنية سداسية الشكل مع البنى الأخرى يعطينا فهمًا أعمق لنقاط قوتها ومقايضاتها المحتملة.
هندسة معمارية متعددة الطبقات هو تقليدي النمط المعماري الذي يبني التطبيق إلى طبقات منطقية - غالبًا طبقات العرض التقديمي والأعمال وطبقات الوصول إلى البيانات. العيب الرئيسي في هذا النمط هو أنه يشجع على وجود تبعية قوية بين الطبقات، مما يؤدي إلى وضع يمكن أن تؤدي فيه التغييرات في طبقة واحدة إلى التموج عبر التطبيق بأكمله.
على النقيض من ذلك, بنية سداسية الشكل يقلل من هذه التبعيات. بدلاً من الطبقات، فإنه يحتوي على جوهر التطبيق محاطة بمحولات قابلة للتبديل. التغييرات في خادم قاعدة البيانات، على سبيل المثال، ستؤثر التغييرات في خادم قاعدة البيانات، على سبيل المثال، على المحول المقابل فقط، تاركةً جوهر التطبيق والمحولات الأخرى دون مساس.
هندسة معمارية نظيفةآخر النمط المعمارييشترك في العديد من أوجه التشابه مع بنية سداسية الشكل. كلاهما يؤكدان على الفصل بين الاهتمامات، ويهدفان إلى عزل جوهر قواعد العمل من التفاصيل الخارجية، والالتزام بـ مبدأ انعكاس التبعية.
ومع ذلك, بنية سداسية الشكل يركز أكثر على كيفية تفاعل التطبيق مع في الخارج العالم باستخدام المنافذ والمحولات، في حين أن هندسة معمارية نظيفة يوفر بنية أكثر تفصيلاً للطبقات الداخلية للبنية. وبعبارة أخرى, هندسة معمارية نظيفة يمكن اعتبارها مجموعة فائقة من بنية سداسية الشكلمع إرشادات إضافية حول تنظيم الهيكل الداخلي للتطبيق.
هندسة البصل المعمارية هو طراز معماري آخر يهدف إلى عزل منطق العمل الأساسي من الواجهات الخارجية والبنية التحتية. يحتوي على عدة طبقات متحدة المركز مع وجود نموذج المجال في المركز، ويمكن لكل طبقة أن تعتمد فقط على الطبقات الموجودة داخلها.
على الرغم من أنهما يتشاركان هدفًا مشتركًا، إلا أن هندسة البصل المعمارية تحقيق ذلك بطرق مختلفة قليلاً. هندسة البصل المعمارية يضع الكثير من التركيز على اتجاه التبعيات، مما يضمن أن جميع التبعيات تتجه إلى الداخل. بنية سداسية الشكل، بينما يؤيد أيضًا التبعيات الموجهة إلى الداخل، فإنه يركز بشكل أكبر على التفاعل مع العالم الخارجي من خلال منافذها ومحولاتها.
إحدى نقاط القوة الرئيسية لـ بنية سداسية الشكل هو تركيزه على قابلية الاختبار. من خلال عزل التطبيق الأساسي عن العالم الخارجي من خلال المنافذ والمحولات، تتيح البنية السداسية تنفيذ الاختبارات الآلية التي يمكن أن توفر الثقة في استقرار البرنامج وصحته.
في بنية سداسية الشكلفإن المنافذ الرئيسيةالتي تغلف النواة الأساسية قواعد العمليمكن اختبارها بشكل مستقل عن العالم الخارجي. على سبيل المثال، بدلًا من التواصل مع قاعدة بيانات حقيقية أثناء الاختبار، يمكن أن يكون محول قاعدة البيانات يمكن استبدالها باختبار مزدوج يحاكي سلوك قاعدة البيانات الحقيقية. وهذا يمكّن المطورين من التركيز على اختبار قواعد العملبدلاً من التفاعل مع قاعدة البيانات.
علاوة على ذلك, اختبارات الانحدار التلقائية يمكن إنشاؤها بسهولة للتحقق من أن النظام يتصرف كما هو متوقع عند إجراء التغييرات. ويعد هذا المستوى من قابلية الاختبار ميزة كبيرة عندما يتعلق الأمر بصيانة وتحديث البرمجيات، حيث يساعد على اكتشاف المشاكل وإصلاحها في وقت مبكر من عملية التطوير.
بالإضافة إلى ذلك، فإن بنية بنية سداسية الشكل يدعم أيضًا اختبار التكامل. عن طريق استبدال المكونات الخارجية (مثل خادم قاعدة بيانات أو واجهة برمجة تطبيقات خارجية) مع زوجي الاختبار، يمكن للمطوّرين اختبار كيفية قيام جوهر التطبيق يتكامل مع هذه المكونات دون الحاجة إلى استخدام الأنظمة الخارجية الفعلية. يمكن أن يؤدي ذلك إلى تحسين سرعة وموثوقية الاختبارات بشكل كبير.
بنية سداسية الشكل يبرز كحل مغرٍ في الامتداد الواسع لاستراتيجيات تطوير البرمجيات. إنه يميز نفسه عن غيره من خلال فصل جوهر التطبيق عن البيئة الخارجية، وبالتالي ضمان درجة عالية من قابلية الصيانة والاختبار والمرونة. هذا الفصل يسهّل على المطورين التركيز على جوهر النظام. منطق العملمع تعزيز مرونة البرنامج في الوقت نفسه ضد التغييرات في الأنظمة الخارجية.
على الرغم من وجود مقايضات مرتبطة بالبنية السداسية، إلا أن فوائدها العديدة تجعلها ذات قيمة عالية في صندوق أدوات أي مطور. في مجال بنية البرمجيات، يواصل النموذج السداسي تأكيد هيمنته.
تتخلل هذه المقالة، التي تتخللها أمثلة على الرموزيهدف إلى توفير فهم شامل لـ بنية سداسية الشكل وفوائدها المحتملة. ضع في اعتبارك أن سر الهندسة المعمارية الفعالة لا يكمن في الالتزام الأعمى بالأنماط، ولكن في فهم المبادئ الأساسية وتنفيذها بعناية لتلبية متطلبات محددة.
في عالم الهندسة المعمارية السداسية، فإن الواجهة المحددة بين طبقة التطبيق و طبقة البيانات ذات أهمية قصوى. سواء كنت مهندس برمجيات بالنظر إلى تبني هذه المنهجية، أو مطور يسعى جاهدًا لفهم تعقيداتها، فمن الواضح أن تأثير هذه البنية مستمر في النمو. ويوضح طرقاً مختلفة يمكن استخدامها بفعالية. على سبيل المثال، في الخدمات المصرفية التطبيقفإن واجهة المستودع يمكن أن يعمل كمحول ثانوي، يربط بين جوهر التطبيق مع رمز خارجي. يتيح هذا الفصل المرونة في تبديل التنفيذ الملموس من نظام الملفات أو تقنية معينة، دون التأثير على خدمات التطبيق.
إن التطوير الفريق يمكن أن تعمل الآن على الجانب الأيسر للتطبيق دون القلق بشأن العوامل الخارجية، وبالتالي ضمان التقدم السلس. وهكذا، نختتم استكشافنا لعالم بنية سداسية الشكلوهو أسلوب معماري يستمر في توسيع نطاق تأثيره عبر مشهد تطوير البرمجيات.