เนื้อหานี้เป็นส่วนหนึ่งของชุด
"ความรู้เบื้องต้นเกี่ยวกับการพัฒนาองค์กร" ส่วนแรกเกี่ยวกับเครือข่ายอยู่ที่
นี่ ![ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 1]()
สถาปัตยกรรมซอฟต์แวร์หมายถึงโครงสร้างที่สร้างขึ้นภายในแอปพลิเคชัน เช่น โมดูลและส่วนประกอบทั้งหมดของโปรแกรม และวิธีการโต้ตอบ โปรแกรมเมอร์ทำงานบนสถาปัตยกรรมที่ดีมาเป็นเวลานาน ดังนั้นจึงไม่น่าแปลกใจที่เราได้ยินเกี่ยวกับรูปแบบสถาปัตยกรรมมากมาย คุณต้องเข้าใจสิ่งเหล่านี้: เมื่อเขียนเว็บแอปพลิเคชัน จำเป็นอย่างยิ่งที่จะต้องสร้างสถาปัตยกรรมที่ดี เนื่องจากเว็บแอปพลิเคชันมีส่วนประกอบและโมดูลมากกว่าแอปพลิเคชันทั่วไป รูป
แบบทางสถาปัตยกรรมเป็นวิธีที่ชาญฉลาดในการแก้ปัญหาการออกแบบซอฟต์แวร์ คุณคงเคยเจอรูปแบบการออกแบบ เช่น วิธีการของโรงงาน โรงงานนามธรรม ผู้สร้าง ต้นแบบ ซิงเกิลตัน และอื่นๆ เราใช้สิ่งเหล่านี้เมื่อเขียนโค้ด สร้างคลาส และวางแผนว่าคลาสจะโต้ตอบอย่างไร รูปแบบทางสถาปัตยกรรมจะใช้ในระดับที่สูงขึ้นของสิ่งที่เป็นนามธรรม เมื่อวางแผนการโต้ตอบของผู้ใช้กับเซิร์ฟเวอร์ ข้อมูล และส่วนประกอบอื่นๆ มาดูรูปแบบและวิธีใช้กันอย่างรวดเร็ว
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์
ชื่อนี้สร้างความประทับใจว่าทุกอย่างเกี่ยวกับรูปแบบนี้เรียบง่ายและชัดเจน แต่ขอชี้แจงบางประเด็นเพื่อที่ว่าเมื่อคุณเริ่มเรียน Spring คุณจะเข้าใจสิ่งที่เรากำลังพูดถึง สมมติว่าคุณเขียนแอปแชท และคุณกับเพื่อนเริ่มใช้แอปนั้น คุณสามารถใช้วิธีง่ายๆ ในการส่งข้อความถึงกันโดยตรงผ่านอินเทอร์เน็ตโดยใช้ที่อยู่ IP ที่รู้จัก:
![ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 2]()
ในตอนแรก ทุกอย่างดูเหมือนจะดำเนินไปได้ด้วยดีจนกระทั่งเพื่อนของคุณอีกคนขอเข้าร่วมแชท ดังนั้นเมื่อคุณตัดสินใจเพิ่มเพื่อนร่วมแชท คุณประสบปัญหาทางสถาปัตยกรรม: สำหรับผู้เข้าร่วมแชทแต่ละคน คุณต้องให้ข้อมูลปัจจุบันเกี่ยวกับจำนวนผู้ใช้และที่อยู่ IP ของผู้ใช้ใหม่ และเมื่อมีการส่งข้อความ ก็จะต้องส่งไปยังผู้เข้าร่วมทั้งหมด เหล่านี้คือปัญหาที่จะเกิดขึ้นอย่างชัดเจนที่สุด ปัญหาอื่น ๆ จะซ่อนอยู่ในรหัสเอง เพื่อหลีกเลี่ยงสิ่งเหล่านี้ คุณต้องใช้
เซิร์ฟเวอร์ซึ่งจะเก็บข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ รวมถึงที่อยู่ของผู้ใช้ ข้อความจะต้องส่งไปยังเซิร์ฟเวอร์เท่านั้น ในที่สุดก็ส่งข้อความไปยังผู้รับแต่ละคน เมื่อคุณตัดสินใจเพิ่มส่วนเซิร์ฟเวอร์ในแอปแชทของคุณ คุณกำลังเริ่มสร้างสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์
ส่วนประกอบของสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์
มาดูกันว่ามันเกี่ยวกับอะไร สถาปัตยกรรม
ไคลเอนต์เซิร์ฟเวอร์เป็นรูปแบบการออกแบบที่ใช้สร้างเว็บแอปพลิเคชัน สถาปัตยกรรมนี้ประกอบด้วยสามองค์ประกอบ:
-
ลูกค้า — จากชื่อ เราสามารถบอกได้ว่าส่วนประกอบนี้ใช้บริการบางอย่าง (เว็บแอปพลิเคชัน) โดยติดต่อกับเซิร์ฟเวอร์เพื่อขอข้อมูลบางอย่าง
-
เซิร์ฟเวอร์ — นี่คือที่ตั้งเว็บแอปพลิเคชันของคุณหรือส่วนหนึ่งของเซิร์ฟเวอร์ มันเก็บข้อมูลผู้ใช้ที่จำเป็นหรือสามารถร้องขอได้ นอกจากนี้ เมื่อไคลเอนต์ส่งคำขอ เซิร์ฟเวอร์จะส่งคืนข้อมูลที่ร้องขอ
-
เครือข่าย — ส่วนนี้เรียบง่าย อำนวยความสะดวกในการแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
เซิร์ฟเวอร์สามารถรองรับคำขอจำนวนมากจากผู้ใช้ที่แตกต่างกัน ซึ่งหมายความว่าสามารถมีลูกค้าได้หลายคน หากต้องการแลกเปลี่ยนข้อมูลระหว่างกัน จะต้องดำเนินการผ่านเซิร์ฟเวอร์ ดังนั้น เซิร์ฟเวอร์มีหน้าที่อื่น: การควบคุมการรับส่งข้อมูล ตามที่เกี่ยวข้องกับโปรแกรมแชทแบบผู้ใช้หลายคนของเรา แอปพลิเคชันทั้งหมดจะประกอบด้วยสองโมดูล:
![ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 4]()
เมื่อเราต้องการดูข้อมูลที่เป็นประโยชน์ (หรือไม่มีประโยชน์มากนัก) บนอินเทอร์เน็ต เราจะเปิดเบราว์เซอร์ ป้อนข้อความค้นหาในแถบค้นหา และรับข้อมูลจากเครื่องมือค้นหาเพื่อตอบสนอง ในเครือข่ายนี้ เบราว์เซอร์คือไคลเอ็นต์ มันส่งคำขอพร้อมข้อมูลเกี่ยวกับสิ่งที่เรากำลังมองหาไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะประมวลผลคำขอ ค้นหาผลลัพธ์ที่เกี่ยวข้องที่สุด จัดแพ็คเกจในรูปแบบที่เบราว์เซอร์ (ไคลเอนต์) สามารถเข้าใจและส่งกลับ บริการที่ซับซ้อนเช่นเสิร์ชเอ็นจิ้นสามารถมีเซิร์ฟเวอร์จำนวนมากได้ ตัวอย่างเช่น เซิร์ฟเวอร์การให้สิทธิ์ เซิร์ฟเวอร์สำหรับค้นหาข้อมูล เซิร์ฟเวอร์สำหรับสร้างการตอบกลับ ฯลฯ แต่ไคลเอนต์ไม่ทราบและไม่กังวลเกี่ยวกับสิ่งเหล่านี้: สำหรับลูกค้า เซิร์ฟเวอร์เป็นเอนทิตีที่รวมเป็นหนึ่งเดียว ลูกค้ารู้เฉพาะจุดเข้า นั่นคือ ที่อยู่ของเซิร์ฟเวอร์ที่ควรส่งคำขอ เรียกคืนใบสมัครที่เราสอบเข้ามา
ภาคที่แล้วของซีรีย์นี้ เป็นการตรวจสอบอุณหภูมิอากาศเฉลี่ยของทุกประเทศแบบเรียลไทม์ สถาปัตยกรรมมีลักษณะดังนี้:
![ส่วนที่ 2 พูดคุยเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ - 5]()
แอปพลิเคชันของเราตั้งอยู่บนเซิร์ฟเวอร์ สมมติว่าทุก ๆ ห้าวินาที ระบบจะส่งคำขอไปยังเซิร์ฟเวอร์ที่ดำเนินการโดยสถานีอุตุนิยมวิทยาท้องถิ่น รับข้อมูลอุณหภูมิสำหรับประเทศหนึ่ง ๆ จากเซิร์ฟเวอร์ และเก็บข้อมูลนี้ไว้ เมื่อลูกค้าขอให้เรา "ดูอุณหภูมิอากาศปัจจุบันของโลก" เราจะส่งคืนข้อมูลที่เก็บไว้ล่าสุด โดยจัดเรียงตามประเทศ ดังนั้น แอปพลิเคชันของเราจึงทำหน้าที่เป็นทั้งเซิร์ฟเวอร์ (เมื่อประมวลผลคำขอของผู้ใช้) และไคลเอนต์ (เมื่อได้รับข้อมูลจากเซิร์ฟเวอร์อื่น)
นี่คือประเด็นสำคัญ: แนวคิดของเซิร์ฟเวอร์ไม่ได้เกี่ยวกับคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง แต่เกี่ยวกับความสัมพันธ์ระหว่างเอนทิตีเครือข่าย |
สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์แบบธรรมดานั้นใช้น้อยมากและใช้กับแอพพลิเคชั่นที่เรียบง่ายเท่านั้น สำหรับโครงการขนาดใหญ่และซับซ้อนจริงๆ เราใช้สถาปัตยกรรมที่แตกต่างกันซึ่งคุณจะพบในอนาคต ทีนี้มาดูโมเดลที่คล้ายกับสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์
สถาปัตยกรรมสามชั้น
นี่คือรูปแบบทางสถาปัตยกรรมที่แนะนำ
โมดูลที่สาม — ที่เก็บข้อมูล ในรูปแบบนี้ สามระดับมักจะเรียกว่าชั้นหรือชั้น:
-
ไคลเอนต์เลเยอร์เป็นส่วนต่อประสานกับผู้ใช้ เรียกอีกอย่างว่าระดับการนำเสนอ อาจเป็นเว็บเบราว์เซอร์ที่รับหน้า HTML หรืออินเทอร์เฟซผู้ใช้แบบกราฟิกที่เขียนโดยใช้ JavaFX สิ่งสำคัญคือเลเยอร์นี้อนุญาตให้ผู้ใช้ส่งคำขอไปยังเซิร์ฟเวอร์และประมวลผลการตอบกลับ
-
ลอจิกเลเยอร์คือเซิร์ฟเวอร์ที่ประมวลผลคำขอ/ตอบกลับ มักจะเรียกอีกอย่างว่าเซิร์ฟเวอร์เลเยอร์ ที่นี่ยังเป็นที่ที่การดำเนินการทางตรรกะทั้งหมดเกิดขึ้น: การคำนวณทางคณิตศาสตร์ การดำเนินการกับข้อมูล การเรียกไปยังบริการอื่น ๆ หรือการจัดเก็บข้อมูล ฯลฯ
-
ชั้นข้อมูลคือเซิร์ฟเวอร์ฐานข้อมูล: เซิร์ฟเวอร์ของเราโต้ตอบกับมัน เลเยอร์นี้เก็บข้อมูลทั้งหมดที่จำเป็นสำหรับแอปพลิเคชันในการดำเนินการ
ดังนั้น เซิร์ฟเวอร์ของเราจะรับผิดชอบทั้งหมดในการเข้าถึงข้อมูลและไม่อนุญาตให้ผู้ใช้เข้าถึงโดยตรง
ข้อดีของสถาปัตยกรรมสามชั้น
สถาปัตยกรรมเช่นนี้ทำให้เรามีข้อได้เปรียบหลายประการ ได้แก่ :
-
ความสามารถในการป้องกันการแทรก SQL (นี่คือการโจมตีบนเซิร์ฟเวอร์ มันเกี่ยวข้องกับการส่งรหัส SQL ซึ่งเมื่อดำเนินการแล้ว ผู้โจมตีสามารถส่งผลกระทบต่อฐานข้อมูลของเราได้)
-
การแยกข้อมูลที่เราต้องการควบคุมการเข้าถึงของผู้ใช้
-
ความสามารถในการแก้ไขข้อมูลก่อนส่งไปยังไคลเอนต์
-
Scalability (ความสามารถในการขยายแอปพลิเคชันของเราไปยังหลายเซิร์ฟเวอร์ที่จะใช้ฐานข้อมูลเดียวกัน
-
ข้อกำหนดที่เข้มงวดน้อยกว่าในด้านคุณภาพของการเชื่อมต่อของผู้ใช้ เมื่อสร้างการตอบกลับบนเซิร์ฟเวอร์ เรามักจะได้รับข้อมูลต่างๆ มากมายจากฐานข้อมูลและจัดรูปแบบให้เหลือเพียงสิ่งที่ผู้ใช้ต้องการเท่านั้น การทำเช่นนี้จะลดปริมาณข้อมูลที่เราส่งในการตอบกลับไปยังลูกค้า
ควรใช้รูปแบบสถาปัตยกรรมบ่อยแค่ไหน?
หากคุณคุ้นเคยกับ รูปแบบ
การออกแบบโรงงานคุณอาจสงสัยว่าจะใช้เมื่อใด บางครั้งก็ยากที่จะตัดสินใจว่าจะทำอย่างไร: สร้างวัตถุโดยใช้ตัวดำเนินการใหม่หรือใช้วิธีการจากโรงงาน แต่เมื่อเวลาผ่านไป ความเข้าใจก็บังเกิด สิ่งต่าง ๆ แตกต่างกันเล็กน้อยเมื่อพูดถึงรูปแบบสถาปัตยกรรม กรอบงานขององค์กรได้รับการออกแบบมาเพื่อให้โปรแกรมเมอร์สามารถสร้างโครงการตามรูปแบบที่ยอมรับโดยทั่วไป ดังนั้น ก่อนที่จะเรียนรู้ Spring Framework คุณควรเข้าใจสถาปัตยกรรมไคลเอ็นต์เซิร์ฟเวอร์ สถาปัตยกรรมสามชั้น และสถาปัตยกรรม MVC ไม่ต้องกังวล เราจะพูดถึงสถาปัตยกรรม MVC
ส่วนที่ 3 HTTP/HTTPS ส่วนที่ 4 พื้นฐานของ Maven ส่วนที่ 5 Servlets และ Java Servlet API การเขียน Web Application อย่างง่าย ตอนที่ 6. Servlet container ตอนที่ 7. แนะนำรูปแบบ MVC (Model-View-Controller)
GO TO FULL VERSION