โค้ดยิม/จาวาบล็อก/สุ่ม/ตอนที่ 2 เรามาพูดถึงสถาปัตยกรรมซอฟต์แวร์กันสักหน่อย
John Squirrels
ระดับ
San Francisco

ตอนที่ 2 เรามาพูดถึงสถาปัตยกรรมซอฟต์แวร์กันสักหน่อย

เผยแพร่ในกลุ่ม
เนื้อหานี้เป็นส่วนหนึ่งของชุด"ความรู้เบื้องต้นเกี่ยวกับการพัฒนาองค์กร" ส่วนแรกเกี่ยวกับเครือข่ายอยู่ที่ นี่ ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 1สถาปัตยกรรมซอฟต์แวร์หมายถึงโครงสร้างที่สร้างขึ้นภายในแอปพลิเคชัน เช่น โมดูลและส่วนประกอบทั้งหมดของโปรแกรม และวิธีการโต้ตอบ โปรแกรมเมอร์ทำงานบนสถาปัตยกรรมที่ดีมาเป็นเวลานาน ดังนั้นจึงไม่น่าแปลกใจที่เราได้ยินเกี่ยวกับรูปแบบสถาปัตยกรรมมากมาย คุณต้องเข้าใจสิ่งเหล่านี้: เมื่อเขียนเว็บแอปพลิเคชัน จำเป็นอย่างยิ่งที่จะต้องสร้างสถาปัตยกรรมที่ดี เนื่องจากเว็บแอปพลิเคชันมีส่วนประกอบและโมดูลมากกว่าแอปพลิเคชันทั่วไป รูปแบบทางสถาปัตยกรรมเป็นวิธีที่ชาญฉลาดในการแก้ปัญหาการออกแบบซอฟต์แวร์ คุณคงเคยเจอรูปแบบการออกแบบ เช่น วิธีการของโรงงาน โรงงานนามธรรม ผู้สร้าง ต้นแบบ ซิงเกิลตัน และอื่นๆ เราใช้สิ่งเหล่านี้เมื่อเขียนโค้ด สร้างคลาส และวางแผนว่าคลาสจะโต้ตอบอย่างไร รูปแบบทางสถาปัตยกรรมจะใช้ในระดับที่สูงขึ้นของสิ่งที่เป็นนามธรรม เมื่อวางแผนการโต้ตอบของผู้ใช้กับเซิร์ฟเวอร์ ข้อมูล และส่วนประกอบอื่นๆ มาดูรูปแบบและวิธีใช้กันอย่างรวดเร็ว

สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์

ชื่อนี้สร้างความประทับใจว่าทุกอย่างเกี่ยวกับรูปแบบนี้เรียบง่ายและชัดเจน แต่ขอชี้แจงบางประเด็นเพื่อที่ว่าเมื่อคุณเริ่มเรียน Spring คุณจะเข้าใจสิ่งที่เรากำลังพูดถึง สมมติว่าคุณเขียนแอปแชท และคุณกับเพื่อนเริ่มใช้แอปนั้น คุณสามารถใช้วิธีง่ายๆ ในการส่งข้อความถึงกันโดยตรงผ่านอินเทอร์เน็ตโดยใช้ที่อยู่ IP ที่รู้จัก: ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 2ในตอนแรก ทุกอย่างดูเหมือนจะดำเนินไปได้ด้วยดีจนกระทั่งเพื่อนของคุณอีกคนขอเข้าร่วมแชท ดังนั้นเมื่อคุณตัดสินใจเพิ่มเพื่อนร่วมแชท คุณประสบปัญหาทางสถาปัตยกรรม: สำหรับผู้เข้าร่วมแชทแต่ละคน คุณต้องให้ข้อมูลปัจจุบันเกี่ยวกับจำนวนผู้ใช้และที่อยู่ IP ของผู้ใช้ใหม่ และเมื่อมีการส่งข้อความ ก็จะต้องส่งไปยังผู้เข้าร่วมทั้งหมด เหล่านี้คือปัญหาที่จะเกิดขึ้นอย่างชัดเจนที่สุด ปัญหาอื่น ๆ จะซ่อนอยู่ในรหัสเอง เพื่อหลีกเลี่ยงสิ่งเหล่านี้ คุณต้องใช้เซิร์ฟเวอร์ซึ่งจะเก็บข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ รวมถึงที่อยู่ของผู้ใช้ ข้อความจะต้องส่งไปยังเซิร์ฟเวอร์เท่านั้น ในที่สุดก็ส่งข้อความไปยังผู้รับแต่ละคน เมื่อคุณตัดสินใจเพิ่มส่วนเซิร์ฟเวอร์ในแอปแชทของคุณ คุณกำลังเริ่มสร้างสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์

ส่วนประกอบของสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์

มาดูกันว่ามันเกี่ยวกับอะไร สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์เป็นรูปแบบการออกแบบที่ใช้สร้างเว็บแอปพลิเคชัน สถาปัตยกรรมนี้ประกอบด้วยสามองค์ประกอบ: ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 3
  1. ลูกค้า — จากชื่อ เราสามารถบอกได้ว่าส่วนประกอบนี้ใช้บริการบางอย่าง (เว็บแอปพลิเคชัน) โดยติดต่อกับเซิร์ฟเวอร์เพื่อขอข้อมูลบางอย่าง

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

  3. เครือข่าย — ส่วนนี้เรียบง่าย อำนวยความสะดวกในการแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์

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

  • โมดูลเซิร์ฟเวอร์ — เว็บแอปพลิเคชันที่โฮสต์บนเซิร์ฟเวอร์และรับข้อความจากผู้ใช้ ประมวลผล แล้วส่งไปยังผู้รับ

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

สถาปัตยกรรมสามชั้น

นี่คือรูปแบบทางสถาปัตยกรรมที่แนะนำโมดูลที่สาม — ที่เก็บข้อมูล ในรูปแบบนี้ สามระดับมักจะเรียกว่าชั้นหรือชั้น: ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 6
  1. ไคลเอนต์เลเยอร์เป็นส่วนต่อประสานกับผู้ใช้ เรียกอีกอย่างว่าระดับการนำเสนอ อาจเป็นเว็บเบราว์เซอร์ที่รับหน้า HTML หรืออินเทอร์เฟซผู้ใช้แบบกราฟิกที่เขียนโดยใช้ JavaFX สิ่งสำคัญคือเลเยอร์นี้อนุญาตให้ผู้ใช้ส่งคำขอไปยังเซิร์ฟเวอร์และประมวลผลการตอบกลับ

  2. ลอจิกเลเยอร์คือเซิร์ฟเวอร์ที่ประมวลผลคำขอ/ตอบกลับ มักจะเรียกอีกอย่างว่าเซิร์ฟเวอร์เลเยอร์ ที่นี่ยังเป็นที่ที่การดำเนินการทางตรรกะทั้งหมดเกิดขึ้น: การคำนวณทางคณิตศาสตร์ การดำเนินการกับข้อมูล การเรียกไปยังบริการอื่น ๆ หรือการจัดเก็บข้อมูล ฯลฯ

  3. ชั้นข้อมูลคือเซิร์ฟเวอร์ฐานข้อมูล: เซิร์ฟเวอร์ของเราโต้ตอบกับมัน เลเยอร์นี้เก็บข้อมูลทั้งหมดที่จำเป็นสำหรับแอปพลิเคชันในการดำเนินการ

ดังนั้น เซิร์ฟเวอร์ของเราจะรับผิดชอบทั้งหมดในการเข้าถึงข้อมูลและไม่อนุญาตให้ผู้ใช้เข้าถึงโดยตรง

ข้อดีของสถาปัตยกรรมสามชั้น

สถาปัตยกรรมเช่นนี้ทำให้เรามีข้อได้เปรียบหลายประการ ได้แก่ :
  1. ความสามารถในการป้องกันการแทรก SQL (นี่คือการโจมตีบนเซิร์ฟเวอร์ มันเกี่ยวข้องกับการส่งรหัส SQL ซึ่งเมื่อดำเนินการแล้ว ผู้โจมตีสามารถส่งผลกระทบต่อฐานข้อมูลของเราได้)

  2. การแยกข้อมูลที่เราต้องการควบคุมการเข้าถึงของผู้ใช้

  3. ความสามารถในการแก้ไขข้อมูลก่อนส่งไปยังไคลเอนต์

  4. Scalability (ความสามารถในการขยายแอปพลิเคชันของเราไปยังหลายเซิร์ฟเวอร์ที่จะใช้ฐานข้อมูลเดียวกัน

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

ควรใช้รูปแบบสถาปัตยกรรมบ่อยแค่ไหน?

หากคุณคุ้นเคยกับ รูปแบบ การออกแบบโรงงานคุณอาจสงสัยว่าจะใช้เมื่อใด บางครั้งก็ยากที่จะตัดสินใจว่าจะทำอย่างไร: สร้างวัตถุโดยใช้ตัวดำเนินการใหม่หรือใช้วิธีการจากโรงงาน แต่เมื่อเวลาผ่านไป ความเข้าใจก็บังเกิด สิ่งต่าง ๆ แตกต่างกันเล็กน้อยเมื่อพูดถึงรูปแบบสถาปัตยกรรม กรอบงานขององค์กรได้รับการออกแบบมาเพื่อให้โปรแกรมเมอร์สามารถสร้างโครงการตามรูปแบบที่ยอมรับโดยทั่วไป ดังนั้น ก่อนที่จะเรียนรู้ Spring Framework คุณควรเข้าใจสถาปัตยกรรมไคลเอ็นต์เซิร์ฟเวอร์ สถาปัตยกรรมสามชั้น และสถาปัตยกรรม MVC ไม่ต้องกังวล เราจะพูดถึงสถาปัตยกรรม MVC ส่วนที่ 3 HTTP/HTTPS ส่วนที่ 4 พื้นฐานของ Maven ส่วนที่ 5 Servlets และ Java Servlet API การเขียน Web Application อย่างง่าย ตอนที่ 6. Servlet container ตอนที่ 7. แนะนำรูปแบบ MVC (Model-View-Controller)
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ