สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์
ชื่อนี้สร้างความประทับใจว่าทุกอย่างเกี่ยวกับรูปแบบนี้เรียบง่ายและชัดเจน แต่ขอชี้แจงบางประเด็นเพื่อที่ว่าเมื่อคุณเริ่มเรียน Spring คุณจะเข้าใจสิ่งที่เรากำลังพูดถึง สมมติว่าคุณเขียนแอปแชท และคุณกับเพื่อนเริ่มใช้แอปนั้น คุณสามารถใช้วิธีง่ายๆ ในการส่งข้อความถึงกันโดยตรงผ่านอินเทอร์เน็ตโดยใช้ที่อยู่ IP ที่รู้จัก: ในตอนแรก ทุกอย่างดูเหมือนจะดำเนินไปได้ด้วยดีจนกระทั่งเพื่อนของคุณอีกคนขอเข้าร่วมแชท ดังนั้นเมื่อคุณตัดสินใจเพิ่มเพื่อนร่วมแชท คุณประสบปัญหาทางสถาปัตยกรรม: สำหรับผู้เข้าร่วมแชทแต่ละคน คุณต้องให้ข้อมูลปัจจุบันเกี่ยวกับจำนวนผู้ใช้และที่อยู่ IP ของผู้ใช้ใหม่ และเมื่อมีการส่งข้อความ ก็จะต้องส่งไปยังผู้เข้าร่วมทั้งหมด เหล่านี้คือปัญหาที่จะเกิดขึ้นอย่างชัดเจนที่สุด ปัญหาอื่น ๆ จะซ่อนอยู่ในรหัสเอง เพื่อหลีกเลี่ยงสิ่งเหล่านี้ คุณต้องใช้เซิร์ฟเวอร์ซึ่งจะเก็บข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ รวมถึงที่อยู่ของผู้ใช้ ข้อความจะต้องส่งไปยังเซิร์ฟเวอร์เท่านั้น ในที่สุดก็ส่งข้อความไปยังผู้รับแต่ละคน เมื่อคุณตัดสินใจเพิ่มส่วนเซิร์ฟเวอร์ในแอปแชทของคุณ คุณกำลังเริ่มสร้างสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์ส่วนประกอบของสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์
มาดูกันว่ามันเกี่ยวกับอะไร สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์เป็นรูปแบบการออกแบบที่ใช้สร้างเว็บแอปพลิเคชัน สถาปัตยกรรมนี้ประกอบด้วยสามองค์ประกอบ:-
ลูกค้า — จากชื่อ เราสามารถบอกได้ว่าส่วนประกอบนี้ใช้บริการบางอย่าง (เว็บแอปพลิเคชัน) โดยติดต่อกับเซิร์ฟเวอร์เพื่อขอข้อมูลบางอย่าง
-
เซิร์ฟเวอร์ — นี่คือที่ตั้งเว็บแอปพลิเคชันของคุณหรือส่วนหนึ่งของเซิร์ฟเวอร์ มันเก็บข้อมูลผู้ใช้ที่จำเป็นหรือสามารถร้องขอได้ นอกจากนี้ เมื่อไคลเอนต์ส่งคำขอ เซิร์ฟเวอร์จะส่งคืนข้อมูลที่ร้องขอ
-
เครือข่าย — ส่วนนี้เรียบง่าย อำนวยความสะดวกในการแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์
-
โมดูลไคลเอนต์ — มีอินเทอร์เฟซแบบกราฟิกสำหรับการลงชื่อเข้าใช้และส่ง/รับข้อความ
-
โมดูลเซิร์ฟเวอร์ — เว็บแอปพลิเคชันที่โฮสต์บนเซิร์ฟเวอร์และรับข้อความจากผู้ใช้ ประมวลผล แล้วส่งไปยังผู้รับ
นี่คือประเด็นสำคัญ: แนวคิดของเซิร์ฟเวอร์ไม่ได้เกี่ยวกับคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง แต่เกี่ยวกับความสัมพันธ์ระหว่างเอนทิตีเครือข่าย |
สถาปัตยกรรมสามชั้น
นี่คือรูปแบบทางสถาปัตยกรรมที่แนะนำโมดูลที่สาม — ที่เก็บข้อมูล ในรูปแบบนี้ สามระดับมักจะเรียกว่าชั้นหรือชั้น:-
ไคลเอนต์เลเยอร์เป็นส่วนต่อประสานกับผู้ใช้ เรียกอีกอย่างว่าระดับการนำเสนอ อาจเป็นเว็บเบราว์เซอร์ที่รับหน้า HTML หรืออินเทอร์เฟซผู้ใช้แบบกราฟิกที่เขียนโดยใช้ JavaFX สิ่งสำคัญคือเลเยอร์นี้อนุญาตให้ผู้ใช้ส่งคำขอไปยังเซิร์ฟเวอร์และประมวลผลการตอบกลับ
-
ลอจิกเลเยอร์คือเซิร์ฟเวอร์ที่ประมวลผลคำขอ/ตอบกลับ มักจะเรียกอีกอย่างว่าเซิร์ฟเวอร์เลเยอร์ ที่นี่ยังเป็นที่ที่การดำเนินการทางตรรกะทั้งหมดเกิดขึ้น: การคำนวณทางคณิตศาสตร์ การดำเนินการกับข้อมูล การเรียกไปยังบริการอื่น ๆ หรือการจัดเก็บข้อมูล ฯลฯ
-
ชั้นข้อมูลคือเซิร์ฟเวอร์ฐานข้อมูล: เซิร์ฟเวอร์ของเราโต้ตอบกับมัน เลเยอร์นี้เก็บข้อมูลทั้งหมดที่จำเป็นสำหรับแอปพลิเคชันในการดำเนินการ
ข้อดีของสถาปัตยกรรมสามชั้น
สถาปัตยกรรมเช่นนี้ทำให้เรามีข้อได้เปรียบหลายประการ ได้แก่ :-
ความสามารถในการป้องกันการแทรก SQL (นี่คือการโจมตีบนเซิร์ฟเวอร์ มันเกี่ยวข้องกับการส่งรหัส SQL ซึ่งเมื่อดำเนินการแล้ว ผู้โจมตีสามารถส่งผลกระทบต่อฐานข้อมูลของเราได้)
-
การแยกข้อมูลที่เราต้องการควบคุมการเข้าถึงของผู้ใช้
-
ความสามารถในการแก้ไขข้อมูลก่อนส่งไปยังไคลเอนต์
-
Scalability (ความสามารถในการขยายแอปพลิเคชันของเราไปยังหลายเซิร์ฟเวอร์ที่จะใช้ฐานข้อมูลเดียวกัน
-
ข้อกำหนดที่เข้มงวดน้อยกว่าในด้านคุณภาพของการเชื่อมต่อของผู้ใช้ เมื่อสร้างการตอบกลับบนเซิร์ฟเวอร์ เรามักจะได้รับข้อมูลต่างๆ มากมายจากฐานข้อมูลและจัดรูปแบบให้เหลือเพียงสิ่งที่ผู้ใช้ต้องการเท่านั้น การทำเช่นนี้จะลดปริมาณข้อมูลที่เราส่งในการตอบกลับไปยังลูกค้า