हेक्सागोनल आर्किटेक्चर (सॉफ्टवेअर)

हेक्सागोनल आर्किटेक्चर, किंवा पोर्ट्स आणि अडॅप्टर्स आर्किटेक्चर, सॉफ्टवेर डिझाइनमध्ये वापरले जाणारे आर्किटेक्चरल पॅटर्न आहे. पोर्ट्स आणि ॲडॉप्टरच्या सहाय्याने त्यांच्या सॉफ्टवेर वातावरणाशी सहजपणे जोडले जाऊ शकणारे सहज जोडलेले ऍप्लिकेशन घटक तयार करणे हे त्याचे उद्दिष्ट आहे. हे घटक कोणत्याही स्तरावर एक्सचेंज करण्यायोग्य बनवते आणि चाचणीचे ऑटोमेशन सुलभ करते.[१]

उगम संपादन

हेक्सागोनल आर्किटेक्चरचा शोध ॲलिस्टर कॉकबर्नने ऑब्जेक्ट-ओरिएंटेड सॉफ्टवेर डिझाइनमधील ज्ञात संरचनात्मक त्रुटी टाळण्याच्या प्रयत्नात लावला होता. स्तरांमधील अवांछित अवलंबित्व आणि व्यावसायिक तर्कासह वापरकर्ता इंटरफेस कोडला दूषित करतो. इ.स. २००५ मध्ये हे प्रकाशित केले होते.[२]

"षटकोनी" (हेक्सागोनल) हा शब्द ग्राफिकल कन्व्हेन्शन्समधून आला आहे जो षटकोनी सेलसारखा ऍप्लिकेशन घटक दर्शवतो. याचा अर्थ सहा सीमा/बंदरे असतील असे सुचवणे हा हेतू नव्हता, परंतु घटक आणि बाह्य जगामध्ये आवश्यक असलेले भिन्न इंटरफेस दर्शवण्यासाठी पुरेशी जागा सोडणे हा होता.[१]

तत्त्व संपादन

 
हेक्सागोनल आर्किटेक्चरचे उदाहरण

हेक्सागोनल आर्किटेक्चर सिस्टमला अनेक सहजरित्या-जोडलेल्या अदलाबदल करण्यायोग्य घटकांमध्ये विभाजित करते. जसे की ऍप्लिकेशन कोर, डेटाबेस, वापरकर्ता इंटरफेस, चाचणी स्क्रिप्ट आणि इतर सिस्टमसह इंटरफेस. हा दृष्टिकोन पारंपारिक स्तरित वास्तुकलेचा पर्याय आहे.

प्रत्येक घटक अनेक उघड "पोर्ट्स" द्वारे इतरांशी जोडलेला असतो. या पोर्टद्वारे संप्रेषण त्यांच्या उद्देशानुसार दिलेल्या प्रोटोकॉलचे पालन करते. पोर्ट्स आणि प्रोटोकॉल्स एक अमूर्त एपीआय परिभाषित करतात ज्याची अंमलबजावणी कोणत्याही योग्य तांत्रिक माध्यमांद्वारे केली जाऊ शकते (उदा. ऑब्जेक्ट-ओरिएंटेड भाषेत पद्धत आवाहन, रिमोट प्रक्रिया कॉल किंवा वेब सेवा ).

पोर्टसची ग्रॅन्युलॅरिटी आणि त्यांची संख्या मर्यादित नसते:

  • काही बाबतीत एकच पोर्ट पुरेसे असू शकते (उदा. साध्या सेवा ग्राहकाच्या बाबतीत);
  • सामान्यतः, इव्हेंट स्रोत (वापरकर्ता इंटरफेस, स्वयंचलित फीडिंग), सूचना (बाहेर जाणाऱ्या सूचना), डेटाबेस (कोणत्याही योग्य डीबीएमएससह घटक इंटरफेस करण्यासाठी), आणि प्रशासन (घटक नियंत्रित करण्यासाठी) यासाठी पोर्ट आहेत;
  • अतिशय विरळ प्रकरणात, आवश्यक असल्यास, प्रत्येक वापरासाठी वेगवेगळे पोर्ट असू शकतात.

ॲडॉप्टर हे घटक आणि बाह्य जग यांच्यातील दुवा आहे. ते बाह्य जग आणि ऍप्लिकेशन घटकाच्या आतील गरजा दर्शविणारे पोर्ट यांच्यातील देवाणघेवाण तयार करतात. एका पोर्टसाठी अनेक अडॅप्टर असू शकतात, उदाहरणार्थ, वापरकर्त्याद्वारे जीयुआय किंवा कमांड-लाइन इंटरफेसद्वारे, स्वयंचलित डेटा स्रोताद्वारे किंवा चाचणी स्क्रिप्टद्वारे डेटा प्रदान केला जाऊ शकतो.

टीका संपादन

"षटकोनी" या शब्दाचा अर्थ असा आहे की संकल्पनेत ६ भाग आहेत. परंतु यात फक्त ४ प्रमुख क्षेत्रे आहेत. टर्मचा वापर ग्राफिकल कन्व्हेन्शन्समधून येतो जे षटकोनी सेल सारखे अनुप्रयोग घटक दर्शविते. सहा सीमा/ पोर्टस असतील असे सुचवणे हा हेतू नव्हता, परंतु घटक आणि बाह्य जगामध्ये आवश्यक असलेले भिन्न इंटरफेस दर्शवण्यासाठी पुरेशी जागा सोडणे हा होता.[३]

मार्टिन फॉलरच्या मते, हेक्सागोनल आर्किटेक्चरला इंटरफेसने वेढलेल्या कोरपासून बनवलेले सममितीय घटक तयार करण्यासाठी सादरीकरण स्तर आणि डेटा स्रोत स्तर यांच्यातील समानता वापरण्याचा फायदा आहे, परंतु सेवा प्रदाता आणि सेवा ग्राहक यांच्यातील अंतर्निहित असममितता लपविण्याच्या त्रुटीदेखील आहेत. ते अधिक चांगले स्तर म्हणून प्रस्तुत केले जाऊ शकतात.[४]

उत्क्रांती संपादन

काही लेखकांच्या मते, हेक्सागोनल आर्किटेक्चर मायक्रोसर्व्हिसेस आर्किटेक्चरच्या मूळ स्थानावर आहे.[५]

इतर रूपे संपादन

जेफ्री पालेर्मो यांनी २००८ मध्ये प्रस्तावित केलेले ओनियन आर्किटेक्चर हे हेक्सागोनल आर्किटेक्चरसारखेच आहे. ते ऍप्लिकेशन आणि डेटाबेसमधील लूझ कपलिंग सुनिश्चित करण्यासाठी योग्य इंटरफेससह पायाभूत सुविधांना प्रोत्साहन देते.[६] हे नियंत्रणाच्या उलथापालथाचा वापर करून ॲप्लिकेशन कोरचे अनेक केंद्रित रिंगांमध्ये विघटन करते.[७]

रॉबर्ट सी. मार्टिन यांनी २०१२ मध्ये प्रस्तावित केलेल्या क्लिन आर्किटेक्चरमध्ये हेक्सागोनल आर्किटेक्चरची तत्त्वे, ओनियन आर्किटेक्चर आणि इतर अनेक प्रकारांचा समावेश आहे. हे घटकाच्या तपशीलाचे अतिरिक्त स्तर प्रदान करतात. जे एकाग्र रिंग म्हणून सादर केले जातात. हे आर्किटेक्चरच्या बाहेरील रिंगमध्ये ॲडॉप्टर आणि इंटरफेस (वापरकर्ता इंटरफेस, डेटाबेस, बाह्य प्रणाली, डिव्हाइसेस) यांना एकमेकांपासून वेगळे करतात. वापर प्रकरणे आणि इतर संस्थांसाठी अंतर्गत रिंगला जबाबदारी दिली जाते.[८][९] क्लीन आर्किटेक्चर अवलंबित्व उलथापालथ या कठोर नियमाचा वापर करते की अवलंबित्व फक्त बाहेरील रिंग ते आतील रिंग दरम्यान अस्तित्त्वात असेल आणि कधीही उलट्या दिशेने नसेल .

हे देखील पहा संपादन

  • आर्किटेक्चर नमुने
  • स्तर (ऑब्जेक्ट ओरिएंटेड डिझाइन)
  • संमिश्र रचना आकृती
  • ऑब्जेक्ट ओरिएंटेड विश्लेषण आणि डिझाइन

संदर्भ संपादन

  1. ^ a b Cockburn, Alistair (2005-04-01). "Hexagonal architecture". alistair.cockburn.us. 2020-11-18 रोजी पाहिले.Cockburn, Alistair (2005-04-01). "Hexagonal architecture". alistair.cockburn.us. Retrieved 2020-11-18.
  2. ^ Stenberg, Jan (2014-10-31). "Exploring the Hexagonal Architecture". InfoQ. 2019-08-12 रोजी पाहिले.
  3. ^ Cockburn, Alistair (2005-04-01). "Hexagonal architecture". alistair.cockburn.us. 2020-11-18 रोजी पाहिले.
  4. ^ Fowler, Martin (2003). Patterns of enterprise application architecture. Addison-Wesley. p. 21. ISBN 0-321-12742-0. OCLC 50292267.
  5. ^ Rajesh R. V. (2017). Spring 5.0 microservices : build scalable microservices with Reactive Streams, Spring Boot, Docker, and Mesos (Second ed.). Packt Publishing. pp. 13–14. ISBN 978-1-78712-051-8. OCLC 999610958.
  6. ^ Jeffrey, Palermo (2008-07-29). "The Onion Architecture : part 1". Programming with Palermo (इंग्रजी भाषेत). 2019-08-12 रोजी पाहिले.
  7. ^ Chatekar, Suhas (2015). Learning NHibernate 4 : explore the full potential of NHibernate to build robust data access code. Packt Publishing. pp. 249–250. ISBN 978-1-78439-206-2. OCLC 937787252.
  8. ^ Martin, Robert, C. (2012-08-12). "The Clean architecture | Clean Coder Blog". blog.cleancoder.com. 2019-08-12 रोजी पाहिले.
  9. ^ Martin, Robert C. (2017). Clean architecture : a craftsman's guide to software structure and design. Prentice Hall. ISBN 978-0-13-449416-6. OCLC 1004983973.