يمكن أن تجمع تطبيقات Go بين أنواع مختلفة من ملفات التعليمات البرمجية المصدر ، لذا فإن استخدام بنية تقليدية صلبة له فوائد عديدة.
البنية السداسية (أو "المنافذ والمحولات") هي نمط معماري شائع للبرامج يمكنك تطبيقه أثناء إنشاء تطبيقات Go. باستخدامه ، يمكنك تحسين قابلية تطوير تطبيقك وقابلية صيانته واختباره.
تساعد هذه البنية في فصل منطق الأعمال عن التبعيات الخارجية والبنية التحتية ، مما يجعل تطبيقك مرنًا ويسهل صيانته.
ما هي العمارة السداسية؟
تقسم البنية السداسية التطبيقات إلى ثلاث طبقات رئيسية:
- الطبقة التطبيقات يضم المنطق الأساسي للتطبيق بشكل مستقل عن أي تبعيات لأطراف ثالثة. يجب أن تحتوي طبقة التطبيق على منطق العمل ونماذج المجال وخدمات التطبيق.
- الطبقة المنافذ والمحولات يضم المحولات التي تتفاعل مع التطبيقات الحالية. المنافذ هي واجهات تحدد عمليات التطبيق الخاص بك ، بينما المحولات هي تطبيقات للواجهات. يمكن أن تكون المحولات قواعد بيانات أو واجهات برمجة تطبيقات HTTP أو وسطاء رسائل أو أي نظام خارجي آخر.
- طبقة البنية التحتية يضم تنفيذ محولات. يجب أن تتضمن طبقة البنية التحتية قواعد البيانات ووسطاء الرسائل والأنظمة الخارجية الأخرى.
مزايا استخدام العمارة السداسية
تشتهر الهندسة المعمارية السداسية بالمزايا التالية التي تقدمها.
قابلية تطوير المشروع وقابليته للصيانة
يسمح تقسيم تطبيقاتك بقاعدة كود معيارية ومنفصلة تجعل من السهل توسيع نطاق تطبيقك وصيانته.
يمكنك إزالة المحولات دون التأثير على المنطق الأساسي وتعديل المنطق الأساسي دون التأثير على المحولات. هذا يعني أنه يمكنك بسهولة استبدال المحولات دون إعادة كتابة التطبيق بأكمله.
قابلية الاختبار وسهولة التكامل
تعزز البنية السداسية قابلية الاختبار حيث يمكنك كتابة اختبارات الوحدة للمنطق الأساسي دون تبعيات خارجية وهمية. يمكنك استخدام أزواج الاختبار ، مثل المنتجات المقلدة أو بذرة ، دون الحاجة إلى ذلك إنشاء قاعدة بيانات أو وسيط الرسائل.
كما تجعل البنية السداسية دمج تطبيقك مع الأنظمة الأخرى أمرًا سهلاً. نظرًا لأن المحولات منفصلة عن المنطق الأساسي ، يمكنك إعادة استخدامها في تطبيقات أخرى أو للخدمات المصغرة. يمكنك أيضًا عرض واجهات برمجة التطبيقات الخاصة بمنفذ التطبيق الخاص بك للاستهلاك في الأنظمة الأخرى.
المرونة والقدرة على التكيف مع المتطلبات المتغيرة
توفر البنية السداسية المرونة والقدرة على التكيف مع المتطلبات المتغيرة. نظرًا لأن المنطق الأساسي مستقل عن المحولات ، يمكنك بسهولة تعديل وظائف التطبيق أو توسيعها دون التأثير على المحولات.
يمكنك تطوير تطبيقك بمرور الوقت ، والالتزام بأنظمة خارجية محددة.
اذهب والهندسة السداسية
في جوهرها ، تدور البنية السداسية حول فصل منطق الأعمال الأساسي للتطبيق عن البنية التحتية لذلك يمكنك تبديل التبعيات دون التأثير على المنطق الأساسي للتطبيق ، مما يسهل صيانة واختبار طلب.
يستخدم تطبيق Go السداسي النموذجي أربعة أدلة رئيسية: كمد, داخلي, pkg، و بائع.
ال كمد يحتوي الدليل على التطبيقات الرئيسية للمشروع. عادةً ما يستدعي الكود الذي تكتبه هنا الوظائف من الملفات الموجودة في pkg والأدلة الداخلية.
ال داخلي يجب أن يحتوي الدليل على رمز تطبيق خاص لا تريد أن يستورده المستخدمون إلى تطبيقاتهم. يقوم برنامج التحويل البرمجي Go بفرض نمط التخطيط الداخلي ، ويمكن أن يكون لديك العديد من الأدلة الداخلية في أدلة أخرى كما يحلو لك. أنت لست مقيدًا بدليل داخلي رفيع المستوى.
ال pkg يجب أن يحتوي الدليل على رمز المكتبة الذي تريد استيراده واستخدامه من التطبيقات الخارجية. على الرغم من استخدام ملف pkg الدليل ممارسة شائعة ، فهو غير مقبول أو مطبق عالميًا.
ال بائع يجب أن يحتوي الدليل على تبعيات التطبيق (تتم إدارتها يدويًا أو تلقائيًا). يمكنك استخدام ال الذهاب بائع وزارة الدفاع الأمر لإنشاء ملف /vendor الدليل للاستفادة من الوظائف التي يوفرها Go للبائعين.
تنفيذ الهندسة السداسية في Go
يعد هيكل ملف مشروعك مهمًا عند تنفيذ بنية سداسية في أي لغة ، بما في ذلك Go.
إليك مثال على بنية ملف لتنفيذ الهندسة السداسية في Go:
.
├── كمد
│ └── http
│ └── main.go
├── داخلي
│ ├── محولات
│ │ ├── api
│ │ │ └── api_adapter.go
قاعدة بيانات │ │ └──
│ │ └── db_adapter.go
│ ├── التطبيق
│ │ ├──
│ │ │ ├── element1.go
│ │ │ └── كيان2.go
│ │ ├── المنافذ
│ │ │ ├── المدخلات
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── الإخراج
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── حالات الاستخدام
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pkg
│ ├── المدخلات
│ │ ├── input1.go
│ │ └── input2.go
│ └── الإخراج
│ ├── output1.go
│ └── output2.go
└── بائع
├── وحدة 1
│ ├── file1.go
│ └── file2.go
└── وحدة 2
├── file1.go
└── file2.go
ال pkg يحتوي الدليل على منافذ الإدخال والإخراج للتطبيق في هذا المثال. ستحدد واجهات لمنافذ الإدخال والإخراج في هذه الملفات.
ال داخلي يحتوي الدليل على مجال التطبيق وحالات الاستخدام. ستكتب منطق الأعمال لتطبيقك في هذه الملفات.
ال محولات يحتوي الدليل على رمز البنية التحتية الذي يربط تطبيقك بقاعدة البيانات وواجهة برمجة التطبيقات.
إعداد هيكل ملف العمارة السداسية
يمكن أن يكون إعداد بنية ملف البنية السداسية لمشروعك مرهقًا ، ولكن يمكنك كتابة نص برمجي bash لأتمتة عملية إنشاء الدليل.
قم بتشغيل هذا الأمر في دليل عمل مشروعك إلى إنشاء برنامج نصي باش, سداسية، ومنح أذونات القراءة والكتابة والتنفيذ لها:
المس hexagonal.sh && chmod 777 hexagonal.sh
أدخل رمز bash هذا في سداسية لإنشاء بنية الملف في دليل العمل الحالي الخاص بك:
#! / بن / باش
# إنشاء أدلة المستوى الأعلى
mkdir cmd بائع pkg الداخلي# إنشاء دليل cmd / http
mkdir cmd / http# إنشاء أدلة داخلية
mkdir داخلي / محولات داخلي / تطبيق داخلي / تطبيق / مجال داخلي / تطبيق / منافذ داخلية / تطبيق / منافذ / إدخال داخلي / تطبيق / منافذ / إخراج داخلي / تطبيقات / تطبيقات# إنشاء أدلة داخلية / محولات
mkdir داخلي / محولات / API داخلي / محولات / قاعدة بيانات# إنشاء أدلة داخلية / التطبيق / المنافذ
mkdir داخلي / تطبيق / منافذ / إدخال داخلي / تطبيق / منافذ / إخراج# إنشاء أدلة البائعين
بائع mkdir / module1 بائع / module2
# طباعة رسالة النجاح
صدى صوت"تم إنشاء بنية الدليل بنجاح."
يمكنك تشغيل هذا البرنامج النصي bash باستخدام الأمر التالي:
./hexagonal.sh
يقوم برنامج bash بإنشاء المجلدات والمجلدات الفرعية حتى تتمكن من المتابعة لإنشاء الملفات وكتابة منطق الأعمال للتطبيق الخاص بك.
الهندسة السداسية سهلة لبناء التطبيقات المعقدة
يمكن أن يستغرق تنفيذ البنية السداسية وقتًا طويلاً ، لكن الفوائد تفوق التكلفة على المدى الطويل. من خلال فصل المخاوف وجعل الكود الخاص بك أكثر نمطية ، يمكنك بسهولة صيانة واختبار تطبيقاتك.
هناك العديد من الأنماط المعمارية الأخرى ، لكل منها إيجابيات وسلبيات لبناء تطبيقات مرنة وفعالة. وتشمل هذه الهندسة المعمارية الشهيرة MVC (نموذج ، عرض ، وحدة تحكم) لإنشاء تطبيقات الويب.