गो ऐप्स कई अलग-अलग प्रकार की सोर्स कोड फ़ाइल को जोड़ सकते हैं, इसलिए एक ठोस, पारंपरिक संरचना का उपयोग करने के कई फायदे हैं।

हेक्सागोनल (या "पोर्ट्स और एडेप्टर") आर्किटेक्चर एक लोकप्रिय सॉफ़्टवेयर आर्किटेक्चर पैटर्न है जिसे आप अपने गो ऐप्स बनाते समय लागू कर सकते हैं। इसका उपयोग करके, आप अपने ऐप की मापनीयता, रख-रखाव और परीक्षण क्षमता में सुधार कर सकते हैं।

यह आर्किटेक्चर बाहरी निर्भरताओं और बुनियादी ढांचे से व्यापार तर्क को अलग करने में मदद करता है, जिससे आपके आवेदन को लचीला और बनाए रखने में आसान बना दिया जाता है।

हेक्सागोनल आर्किटेक्चर क्या है?

हेक्सागोनल आर्किटेक्चर अनुप्रयोगों को तीन मुख्य परतों में विभाजित करता है:

  1. अनुप्रयोग परत किसी तीसरे पक्ष की निर्भरता से स्वतंत्र एप्लिकेशन के मुख्य तर्क को रखता है। एप्लिकेशन परत में आपके व्यावसायिक तर्क, डोमेन मॉडल और एप्लिकेशन सेवाएं शामिल होनी चाहिए।
  2. पोर्ट और एडेप्टर परत एडेप्टर मौजूदा अनुप्रयोगों के साथ इंटरैक्ट करता है। पोर्ट ऐसे इंटरफेस हैं जो आपके एप्लिकेशन के संचालन को परिभाषित करते हैं, जबकि एडेप्टर इंटरफेस के कार्यान्वयन हैं। एडेप्टर डेटाबेस, HTTP एपीआई, संदेश दलाल या कोई अन्य बाहरी प्रणाली हो सकते हैं।
  3. इन्फ्रास्ट्रक्चर परत एडेप्टर के कार्यान्वयन को दर्शाता है। अवसंरचना परत में डेटाबेस, संदेश दलाल और अन्य बाहरी प्रणालियाँ शामिल होनी चाहिए।

हेक्सागोनल आर्किटेक्चर का उपयोग करने के लाभ

हेक्सागोनल आर्किटेक्चर इसके द्वारा प्रदान किए जाने वाले निम्नलिखित फायदों के लिए लोकप्रिय है।

प्रोजेक्ट स्केलेबिलिटी और रखरखाव

आपके एप्लिकेशन का विभाजन एक मॉड्यूलर और डिकूपल्ड कोडबेस की अनुमति देता है जो आपके ऐप को स्केल करना और बनाए रखना आसान बनाता है।

आप कोर लॉजिक को प्रभावित किए बिना एडेप्टर को हटा सकते हैं और एडेप्टर को प्रभावित किए बिना कोर लॉजिक को संशोधित कर सकते हैं। इसका मतलब है कि आप अपने पूरे एप्लिकेशन को फिर से लिखे बिना एडेप्टर को आसानी से बदल सकते हैं।

टेस्टेबिलिटी और इंटीग्रेशन में आसानी

हेक्सागोनल आर्किटेक्चर टेस्टेबिलिटी को बढ़ावा देता है क्योंकि आप मॉक एक्सटर्नल डिपेंडेंसी के बिना कोर लॉजिक के लिए यूनिट टेस्ट लिख सकते हैं। आप टेस्ट डबल्स, जैसे नकली या स्टब्स का उपयोग बिना किए कर सकते हैं एक डेटाबेस सेट करें या संदेश दलाल।

हेक्सागोनल आर्किटेक्चर आपके एप्लिकेशन को अन्य सिस्टम के साथ एकीकृत करना भी आसान बनाता है। चूंकि एडेप्टर कोर लॉजिक से अलग हैं, आप उन्हें अन्य अनुप्रयोगों में या माइक्रोसर्विसेज के लिए पुन: उपयोग कर सकते हैं। आप अन्य सिस्टम में खपत के लिए अपने एप्लिकेशन के पोर्ट के एपीआई को भी उजागर कर सकते हैं।

आवश्यकताओं को बदलने के लिए लचीलापन और अनुकूलनशीलता

हेक्सागोनल आर्किटेक्चर बदलती आवश्यकताओं के लिए लचीलापन और अनुकूलता प्रदान करता है। चूंकि कोर लॉजिक एडेप्टर से स्वतंत्र है, आप एडेप्टर को प्रभावित किए बिना एप्लिकेशन की कार्यक्षमता को आसानी से संशोधित या बढ़ा सकते हैं।

विशिष्ट बाहरी सिस्टम से चिपके हुए आप समय के साथ अपने ऐप को विकसित कर सकते हैं।

जाओ और हेक्सागोनल वास्तुकला

कोर में, हेक्सागोनल आर्किटेक्चर एप्लिकेशन के कोर बिजनेस लॉजिक को इंफ्रास्ट्रक्चर से अलग करने के बारे में है ताकि आप एप्लिकेशन के मूल तर्क को प्रभावित किए बिना निर्भरताओं की अदला-बदली कर सकते हैं, जिससे इसे बनाए रखना और परीक्षण करना आसान हो जाता है आवेदन पत्र।

विशिष्ट हेक्सागोनल गो एप्लिकेशन चार मुख्य निर्देशिकाओं का उपयोग करता है: अध्यक्ष एवं प्रबंध निदेशक, आंतरिक, pkg, और विक्रेता.

अध्यक्ष एवं प्रबंध निदेशक निर्देशिका में परियोजना के लिए मुख्य अनुप्रयोग शामिल हैं। आपके द्वारा यहां लिखा गया कोड आमतौर पर pkg और आंतरिक निर्देशिकाओं में फ़ाइलों से फ़ंक्शन को कॉल करेगा।

आंतरिक निर्देशिका में एक निजी एप्लिकेशन कोड होना चाहिए, जिसे आप नहीं चाहते कि उपयोगकर्ता उनके एप्लिकेशन में आयात करें। गो कंपाइलर आंतरिक लेआउट पैटर्न को लागू करता है, और आप जितनी चाहें उतनी आंतरिक निर्देशिकाओं को अन्य निर्देशिकाओं में रख सकते हैं। आप शीर्ष-स्तरीय आंतरिक निर्देशिका तक सीमित नहीं हैं।

pkg निर्देशिका में वह लाइब्रेरी कोड होना चाहिए जिसे आप चाहते हैं कि बाहरी एप्लिकेशन आयात और उपयोग करें। हालांकि का उपयोग कर रहा है pkg निर्देशिका सामान्य अभ्यास है, यह सार्वभौमिक रूप से स्वीकृत या लागू नहीं है।

विक्रेता निर्देशिका में एप्लिकेशन निर्भरताएँ होनी चाहिए (मैन्युअल रूप से या स्वचालित रूप से प्रबंधित)। आप उपयोग कर सकते हैं गो मॉड वेंडर एक बनाने का आदेश /vendor निर्देशिका उन कार्यात्मकताओं का लाभ उठाने के लिए है जो गो विक्रेताओं के लिए प्रदान करता है।

गो में हेक्सागोनल आर्किटेक्चर को लागू करना

गो सहित किसी भी भाषा में हेक्सागोनल आर्किटेक्चर को लागू करते समय आपकी परियोजना की फ़ाइल संरचना महत्वपूर्ण है।

गो में हेक्सागोनल आर्किटेक्चर को लागू करने के लिए यहां एक उदाहरण फ़ाइल संरचना दी गई है:

.
├── सीएमडी
│ └── http
│ └── main.go
├── आंतरिक
│ ├── एडेप्टर
│ │ ├── एपीआई
│ │ │ └── api_adapter.go
│ │ └── डेटाबेस
│ │ └── db_adapter.go
│ ├── ऐप
│ │ ├── डोमेन
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── बंदरगाहों
│ │ │ ├── इनपुट
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── आउटपुट
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── usecases
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── पीकेजी
│ ├── इनपुट
│ │ ├── input1.go
│ │ └── input2.go
│ └── आउटपुट
│ ├── output1.go
│ └── output2.go
└── विक्रेता
├── मॉड्यूल1
│ ├── file1.go
│ └── file2.go
└── मॉड्यूल2
├── file1.go
└── file2.go

pkg निर्देशिका में इस उदाहरण में आपके एप्लिकेशन के इनपुट और आउटपुट पोर्ट शामिल हैं। आप इन फ़ाइलों में इनपुट और आउटपुट पोर्ट के लिए इंटरफेस परिभाषित करेंगे।

आंतरिक निर्देशिका में एप्लिकेशन डोमेन और उपयोग के मामले शामिल हैं। आप इन फ़ाइलों में अपने एप्लिकेशन का व्यावसायिक तर्क लिखेंगे।

एडेप्टर निर्देशिका में इंफ्रास्ट्रक्चर कोड होता है जो आपके एप्लिकेशन को डेटाबेस और एपीआई से जोड़ता है।

हेक्सागोनल आर्किटेक्चर फ़ाइल संरचना की स्थापना

अपने प्रोजेक्ट की हेक्सागोनल आर्किटेक्चर फ़ाइल संरचना सेट करना बोझिल हो सकता है, लेकिन आप निर्देशिका निर्माण प्रक्रिया को स्वचालित करने के लिए बैश स्क्रिप्ट लिख सकते हैं।

इस कमांड को अपने प्रोजेक्ट की वर्किंग डायरेक्टरी में रन करें एक बैश स्क्रिप्ट बनाएँ, हेक्सागोनल.श, और इसे पढ़ने, लिखने और निष्पादित करने की अनुमति दें:

स्पर्श hexagonal.sh && chmod 777 hexagonal.sh

इस बैश कोड को दर्ज करें हेक्सागोनल.श अपनी वर्तमान कार्यशील निर्देशिका में फ़ाइल संरचना बनाने के लिए:

#!/बिन/बैश

# शीर्ष स्तर की निर्देशिका बनाएँ
एमकेडीआईआर सीएमडी आंतरिक पीकेजी विक्रेता

# cmd/http निर्देशिका बनाएं
एमकेडीआईआर सीएमडी/http

# आंतरिक निर्देशिका बनाएं
mkdir आंतरिक/एडेप्टर आंतरिक/ऐप आंतरिक/ऐप/डोमेन आंतरिक/ऐप/पोर्ट आंतरिक/ऐप/पोर्ट/इनपुट आंतरिक/ऐप/पोर्ट/आउटपुट आंतरिक/ऐप/उपयोगकेस

# आंतरिक/एडेप्टर निर्देशिका बनाएं
mkdir आंतरिक/एडेप्टर/एपीआई आंतरिक/एडेप्टर/डेटाबेस

# आंतरिक/ऐप/पोर्ट निर्देशिका बनाएं
mkdir आंतरिक/ऐप/पोर्ट/इनपुट आंतरिक/ऐप/पोर्ट/आउटपुट

# विक्रेता निर्देशिका बनाएँ
mkdir वेंडर/मॉड्यूल1 वेंडर/मॉड्यूल2

# सफलता संदेश प्रिंट करें
गूंज"निर्देशिका संरचना सफलतापूर्वक बनाई गई।"

आप इस बैश स्क्रिप्ट को निम्न कमांड से चला सकते हैं:

./hexagonal.sh

बैश प्रोग्राम फोल्डर और सबफोल्डर बनाता है ताकि आप फाइल बनाने के लिए आगे बढ़ सकें और अपने एप्लिकेशन के लिए बिजनेस लॉजिक लिख सकें।

जटिल अनुप्रयोगों के निर्माण के लिए हेक्सागोनल आर्किटेक्चर आसान है

हेक्सागोनल वास्तुकला को लागू करने में समय लग सकता है, लेकिन लंबे समय में लाभ लागत से अधिक हो जाते हैं। चिंताओं को अलग करके और अपने कोड को अधिक मॉड्यूलर बनाकर, आप आसानी से अपने एप्लिकेशन का रखरखाव और परीक्षण कर सकते हैं।

लचीले, निष्पादक अनुप्रयोगों के निर्माण के लिए कई अन्य वास्तुशिल्प पैटर्न हैं, जिनमें से प्रत्येक में पेशेवरों और विपक्ष हैं। इनमें वेब एप्लिकेशन बनाने के लिए लोकप्रिय MVC (मॉडल, व्यू, कंट्रोलर) आर्किटेक्चर शामिल है।