กลับไปหน้าบทความ

อ่าน 2 นาที

สถาปัตยกรรมหกเหลี่ยม (ซอฟต์แวร์)

รูปแบบสถาปัตยกรรม (วิทยาการคอมพิวเตอร์)/CS1 maint: หลายชื่อ: รายชื่อผู้แต่ง/การเขียนโปรแกรมเชิงวัตถุ/การออกแบบซอฟต์แวร์

สถาปัตยกรรมหกเหลี่ยมหรือสถาปัตยกรรมพอร์ตและอะแดปเตอร์เป็นรูปแบบสถาปัตยกรรมที่ใช้ในการออกแบบซอฟต์แวร์มีเป้าหมายเพื่อสร้าง ส่วนประกอบแอปพลิเคชัน

สถาปัตยกรรมหกเหลี่ยม (ซอฟต์แวร์)

สถาปัตยกรรมหกเหลี่ยมหรือสถาปัตยกรรมพอร์ตและอะแดปเตอร์เป็นรูปแบบสถาปัตยกรรมที่ใช้ในการออกแบบซอฟต์แวร์มีเป้าหมายเพื่อสร้าง ส่วนประกอบแอปพลิเคชัน ที่เชื่อมต่อกันอย่างหลวมๆซึ่งสามารถเชื่อมต่อกับสภาพแวดล้อมซอฟต์แวร์ได้อย่างง่ายดายโดยใช้พอร์ตและอะแดปเตอร์ทำให้สามารถแลกเปลี่ยนส่วนประกอบได้ในทุกระดับและอำนวยความสะดวกในการทดสอบอัตโนมัติ[ 1 ]

ต้นทาง

สถาปัตยกรรมหกเหลี่ยมถูกคิดค้นโดยAlistair Cockburnเพื่อพยายามหลีกเลี่ยงข้อผิดพลาดเชิงโครงสร้างที่ทราบกันดีในการออกแบบซอฟต์แวร์เชิงวัตถุเช่น การพึ่งพาที่ไม่พึงประสงค์ระหว่างเลเยอร์และการปนเปื้อนของ โค้ด ส่วนติดต่อผู้ใช้กับตรรกะทางธุรกิจมีการพูดคุยกันครั้งแรกในวิกิPortland Pattern Repository [ 2 ] [ 3 ]ในปี 2005 Cockburn ได้เปลี่ยนชื่อเป็น "Ports and adapters" [ 1 ]ในเดือนเมษายน 2024 Cockburn ได้ตีพิมพ์หนังสือที่ครอบคลุมเกี่ยวกับเรื่องนี้ โดยเขียนร่วมกับ Juan Manuel Garrido de Paz [ 4 ]

คำว่า "หกเหลี่ยม" มาจากข้อกำหนดทางกราฟิกที่แสดงส่วนประกอบของแอปพลิเคชันเหมือน เซลล์ หกเหลี่ยมจุดประสงค์ไม่ใช่เพื่อแนะนำว่าจะมีขอบ/พอร์ตหกด้าน แต่เพื่อเว้นพื้นที่ให้เพียงพอสำหรับการแสดงอินเทอร์เฟซต่างๆ ที่จำเป็นระหว่างส่วนประกอบกับโลกภายนอก[ 1 ]

หลักการ

ตัวอย่างสถาปัตยกรรมแบบหกเหลี่ยม โดยหกเหลี่ยมด้านในแทนแกนหลักของแอปพลิเคชัน และหกเหลี่ยมด้านนอกแทนอะแดปเตอร์ ส่วนเส้นแบ่งระหว่างทั้งสองคือพอร์ต
ตัวอย่างสถาปัตยกรรมทรงหกเหลี่ยม

สถาปัตยกรรมแบบหกเหลี่ยมแบ่งระบบออกเป็นส่วนประกอบที่เชื่อมต่อกันอย่างหลวมๆ และสามารถสลับเปลี่ยนกันได้ เช่น แกนหลักของแอปพลิเคชัน ฐานข้อมูล ส่วนติดต่อผู้ใช้ สคริปต์ทดสอบ และส่วนติดต่อกับระบบอื่นๆ แนวทางนี้เป็นทางเลือกแทนสถาปัตยกรรมแบบแบ่งชั้นแบบดั้งเดิม

แต่ละส่วนประกอบเชื่อมต่อกันผ่าน "พอร์ต" ที่เปิดเผยจำนวนหนึ่ง การสื่อสารผ่านพอร์ตเหล่านี้เป็นไปตามโปรโตคอลที่กำหนดไว้ ขึ้นอยู่กับวัตถุประสงค์ พอร์ตและโปรโตคอลกำหนดAPI นามธรรม ที่สามารถนำไปใช้งานได้ด้วยวิธีการทางเทคนิคที่เหมาะสม (เช่นการเรียกใช้เมธอดในภาษาเชิงวัตถุการเรียกใช้ฟังก์ชันระยะไกลหรือเว็บเซอร์วิส )

ระดับความละเอียดของพอร์ตและจำนวนของพอร์ตนั้นไม่มีข้อจำกัด:

  • ในบางกรณี พอร์ตเดียวอาจเพียงพอ (เช่น ในกรณีของผู้ใช้บริการแบบง่ายๆ)
  • โดยทั่วไปจะมีพอร์ตสำหรับแหล่งที่มาของเหตุการณ์ (ส่วนติดต่อผู้ใช้ การป้อนข้อมูลอัตโนมัติ) การแจ้งเตือน (การแจ้งเตือนขาออก) ฐานข้อมูล (เพื่อเชื่อมต่อส่วนประกอบกับระบบจัดการฐานข้อมูลที่เหมาะสม) และการดูแลระบบ (สำหรับการควบคุมส่วนประกอบ)
  • ในกรณีที่รุนแรงที่สุด อาจ จำเป็นต้องใช้พอร์ตที่แตกต่างกันสำหรับแต่ละกรณีการใช้งาน

อะแดปเตอร์เปรียบเสมือนกาวที่เชื่อมส่วนประกอบต่างๆ เข้ากับโลกภายนอก มันช่วยปรับแต่งการแลกเปลี่ยนข้อมูลระหว่างโลกภายนอกและพอร์ตต่างๆ ที่แสดงถึงความต้องการภายในส่วนประกอบของแอปพลิเคชัน อาจมีอะแดปเตอร์หลายตัวสำหรับพอร์ตเดียว ตัวอย่างเช่น ข้อมูลอาจมาจากผู้ใช้ผ่านทาง GUI หรืออินเทอร์เฟซบรรทัดคำสั่ง จากแหล่งข้อมูลอัตโนมัติ หรือจากสคริปต์ทดสอบ

การวิจารณ์

คำว่า "หกเหลี่ยม" หมายความว่ามี 6 ส่วนในแนวคิด ในขณะที่มีพื้นที่หลักเพียง 4 ส่วน การใช้คำนี้มาจากข้อกำหนดทางกราฟิกที่แสดงส่วนประกอบของแอปพลิเคชันเหมือน เซลล์ หกเหลี่ยมจุดประสงค์ไม่ใช่เพื่อแนะนำว่าจะมีขอบ/พอร์ตหกอัน แต่เพื่อเว้นพื้นที่ให้เพียงพอสำหรับการแสดงอินเทอร์เฟซต่างๆ ที่จำเป็นระหว่างส่วนประกอบกับโลกภายนอก[ 1 ]

ตามที่Martin Fowlerกล่าว สถาปัตยกรรมหกเหลี่ยมมีข้อดีคือการใช้ความคล้ายคลึงกันระหว่างเลเยอร์การนำเสนอและเลเยอร์แหล่งข้อมูลเพื่อสร้างส่วนประกอบสมมาตรที่ประกอบด้วยแกนกลางที่ล้อมรอบด้วยอินเทอร์เฟซ แต่มีข้อเสียคือการซ่อนความไม่สมมาตรโดยธรรมชาติระหว่างผู้ให้บริการและผู้บริโภคบริการซึ่งจะแสดงเป็นเลเยอร์ได้ดีกว่า[ 5 ]

วิวัฒนาการ

ตามที่ผู้เขียนบางคนกล่าวไว้ สถาปัตยกรรมหกเหลี่ยมเป็นต้นกำเนิดของสถาปัตยกรรมไมโครเซอร์วิส[ 6 ]

ตัวแปร

สถาปัตยกรรมหัวหอมที่เสนอโดย Jeffrey Palermo ในปี 2008 มีลักษณะคล้ายกับสถาปัตยกรรมหกเหลี่ยม: มันยังแยกโครงสร้างพื้นฐานออกเป็นส่วนภายนอกด้วยอินเทอร์เฟซเพื่อให้แน่ใจว่ามีการเชื่อมต่อแบบหลวมๆ ระหว่างแอปพลิเคชันและฐานข้อมูล[ 7 ]นอกจากนี้ยังแบ่งแกนหลักของแอปพลิเคชันออกเป็นวงแหวนศูนย์กลางหลายวงโดยใช้การควบคุมแบบกลับด้าน[ 8 ]

สถาปัตยกรรมแบบคลีนที่เสนอโดยRobert C. Martinในปี 2012 ผสมผสานหลักการของสถาปัตยกรรมแบบหกเหลี่ยม สถาปัตยกรรมแบบหัวหอม และรูปแบบอื่นๆ อีกหลายแบบ โดยให้รายละเอียดเพิ่มเติมของส่วนประกอบ ซึ่งแสดงเป็นวงแหวนซ้อนกัน โดยแยกอะแดปเตอร์และอินเทอร์เฟซ (ส่วนติดต่อผู้ใช้ ฐานข้อมูล ระบบภายนอก อุปกรณ์) ไว้ในวงแหวนด้านนอกของสถาปัตยกรรม และปล่อยให้วงแหวนด้านในเป็นกรณีการใช้งานและเอนทิตี [ 9 ] [ 10 ] สถาปัตยกรรมแบบคลีนใช้หลักการผกผันการพึ่งพาโดยมีกฎที่เข้มงวดว่าการพึ่งพาจะต้องมีอยู่ระหว่างวงแหวนด้านนอกกับวงแหวนด้านในเท่านั้น และจะไม่เกิดขึ้นในทางกลับกัน

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Hexagonal_architecture_(software)&oldid=1359802369 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ สถาปัตยกรรมหกเหลี่ยม (ซอฟต์แวร์)

สถาปัตยกรรมหกเหลี่ยมหรือสถาปัตยกรรมพอร์ตและอะแดปเตอร์เป็นรูปแบบสถาปัตยกรรมที่ใช้ในการออกแบบซอฟต์แวร์มีเป้าหมายเพื่อสร้าง ส่วนประกอบแอปพลิเคชัน

ต้นทาง

สถาปัตยกรรมหกเหลี่ยมถูกคิดค้นโดย Alistair Cockburn เพื่อพยายามหลีกเลี่ยงข้อผิดพลาดเชิงโครงสร้างที่ทราบกันดีใน การออกแบบซอฟต์แวร์เชิงวัตถุ เช่น การพึ่งพาที่ไม่พึงประสงค์ระหว่าง เลเยอร์ และการปนเปื้อนของ โค้ด ส่วนติดต่อผู้ใช้ กับ ตรรกะทางธุรกิจ...

หลักการ

สถาปัตยกรรมแบบหกเหลี่ยมแบ่งระบบออกเป็นส่วนประกอบที่เชื่อมต่อกันอย่างหลวมๆ และสามารถสลับเปลี่ยนกันได้ เช่น แกนหลักของแอปพลิเคชัน ฐานข้อมูล ส่วนติดต่อผู้ใช้ สคริปต์ทดสอบ และส่วนติดต่อกับระบบอื่นๆ แนวทางนี้เป็นทางเลือกแทนสถาปัตยกรรมแบบแบ่งชั้นแบบดั้งเดิม

การวิจารณ์

คำว่า "หกเหลี่ยม" หมายความว่ามี 6 ส่วนในแนวคิด ในขณะที่มีพื้นที่หลักเพียง 4 ส่วน การใช้คำนี้มาจากข้อกำหนดทางกราฟิกที่แสดงส่วนประกอบของแอปพลิเคชันเหมือน เซลล์ หกเหลี่ยม จุดประสงค์ไม่ใช่เพื่อแนะนำว่าจะมีขอบ/พอร์ตหกอัน...