ในบทนี้ เราจะดูความสัมพันธ์ระหว่างไคลเอนต์และเซิร์ฟเวอร์ สถาปัตยกรรมไคลเอนต์/เซิร์ฟเวอร์นำเสนอความเป็นไปได้ในการสื่อสารไม่จำกัดจำนวน และนี่คือสิ่งที่ทำให้อินเทอร์เน็ต เป็นไปได้ เราจะกล่าวถึงความเข้าใจพื้นฐานเกี่ยวกับโมเดลไคลเอ็นต์/เซิร์ฟเวอร์ ซึ่งจะนำไปใช้ในการเรียก API ในภายหลัง การครอบคลุมทรัพยากรที่ละเอียดถี่ถ้วนสำหรับสถาปัตยกรรมไคลเอ็นต์/เซิร์ฟเวอร์นั้นอยู่นอกเหนือขอบเขตของบทเรียนนี้ เราจะมุ่งเน้นไปที่หลักการหลักของการสื่อสารระหว่างไคลเอ็นต์/เซิร์ฟเวอร์แทน
คุณจะสามารถ:
โมเดลเซิร์ฟเวอร์ไคลเอนต์ของเทคโนโลยีการสื่อสารคือชุดของสถาปัตยกรรมแอปพลิเคชันแบบกระจายและการดำเนินงานเครือข่ายที่จัดการปริมาณงานระหว่างผู้ให้บริการที่เรียกว่า เซิร์ฟเวอร์ และผู้ร้องขอบริการที่เรียกว่า ไคลเอนต์
แม้ว่าโปรแกรมภายในคอมพิวเตอร์แต่ละเครื่องจะสามารถใช้โมเดลเซิร์ฟเวอร์ไคลเอ็นต์ได้ แต่เราจะเน้นไปที่แง่มุมที่เกี่ยวข้องกับสภาพแวดล้อมแบบเครือข่าย ในกรณีนี้ ไคลเอนต์จะตั้งค่าการเชื่อมต่อกับเซิร์ฟเวอร์ผ่านเครือข่ายท้องถิ่น (LAN) เครือข่ายบริเวณกว้าง (WAN) เช่น อินเทอร์เน็ต คุณเคยเล่น Xbox Live หรือใช้ PlayStation Network หรือไม่? Xbox One ของคุณเป็นไคลเอนต์ และเมื่อเข้าสู่ระบบเครือข่าย เครื่องจะติดต่อกับเซิร์ฟเวอร์ Xbox Live เพื่อดึงทรัพยากรเกม เช่น การอัปเดต วิดีโอ และการสาธิตเกม
สถาปัตยกรรมเซิร์ฟเวอร์ไคลเอนต์หลายชั้นทั่วไปที่พวกเราส่วนใหญ่ใช้ในชีวิตประจำวันสามารถแสดงได้ดังต่อไปนี้
ไคลเอนต์คืออุปกรณ์ฮาร์ดแวร์คอมพิวเตอร์หรือซอฟต์แวร์ที่ร้องขอบริการที่เซิร์ฟเวอร์จัดให้ เซิร์ฟเวอร์มักจะ (แต่ไม่เสมอไป) ตั้งอยู่บนคอมพิวเตอร์จริงที่แยกต่างหาก
เซิร์ฟเวอร์คือคอมพิวเตอร์ทางกายภาพที่ใช้เพื่อให้บริการเพื่อตอบสนองความต้องการของลูกค้าโดยเฉพาะ อาจเป็นเซิร์ฟเวอร์ไฟล์ เซิร์ฟเวอร์ฐานข้อมูล เซิร์ฟเวอร์สื่อภายในบ้าน เซิร์ฟเวอร์การพิมพ์ เซิร์ฟเวอร์อีเมล หรือ เว็บเซิร์ฟเวอร์ ทั้งนี้ขึ้นอยู่กับบริการที่กำลังทำงานอยู่
แนวคิดของไคลเอนต์และเซิร์ฟเวอร์ที่สื่อสารผ่านเครือข่ายคือสิ่งที่ทำให้การดูเว็บไซต์และการโต้ตอบกับแอปพลิเคชันเว็บ (เช่น Gmail, Facebook, LinkedIn) เป็นไปได้ โมเดลนี้เป็นวิธีการอธิบายความสัมพันธ์แบบให้และรับระหว่างไคลเอนต์และเซิร์ฟเวอร์ในเว็บแอปพลิเคชัน และควบคุมวิธีที่ข้อมูลส่งผ่านระหว่างคอมพิวเตอร์
มาดูกันว่าเว็บแอปพลิเคชันพื้นฐานจะรับคำขอจากเว็บไคลเอ็นต์และให้บริการอย่างไร
เว็บแอปพลิเคชัน (เว็บแอป) คือแอปพลิเคชันโปรแกรมที่จัดเก็บไว้ในเซิร์ฟเวอร์ระยะไกลและส่งผ่านอินเทอร์เน็ตผ่านอินเทอร์เฟซเบราว์เซอร์ บริการทางเว็บคือเว็บแอปตามคำจำกัดความ และเว็บไซต์จำนวนมากถึงแม้จะไม่ใช่ทั้งหมดก็มีเว็บแอปก็ตาม ส่วนประกอบของเว็บไซต์ใดๆ ที่ทำหน้าที่บางอย่างสำหรับผู้ใช้จะมีคุณสมบัติเป็นเว็บแอป เครื่องมือค้นหาของ Google เป็นเว็บแอป แต่แนวคิดหลักของมันก็แทบจะไม่แตกต่างจากไดเร็กทอรีโทรศัพท์ที่ช่วยให้คุณสามารถค้นหาชื่อหรือหมายเลขโทรศัพท์ได้
เว็บแอปส่วนใหญ่ใช้อินเทอร์เฟซเบราว์เซอร์เพื่อการโต้ตอบจริงๆ เช่น ผู้ใช้ร้องขอการเข้าถึงและขอข้อมูล/บริการจากแอปพลิเคชันเหล่านี้ผ่านอินเทอร์เฟซเว็บเบราว์เซอร์สมัยใหม่ มีหลายร้อยวิธีในการสร้างและกำหนดค่าเว็บแอปพลิเคชัน แต่ส่วนใหญ่ใช้โครงสร้างพื้นฐานเดียวกัน: เว็บไคลเอ็นต์ เว็บเซิร์ฟเวอร์ และฐานข้อมูล
ลูกค้าคือสิ่งที่ผู้ใช้โต้ตอบด้วย จริงๆ แล้วโค้ด "ฝั่งไคลเอ็นต์" มีหน้าที่รับผิดชอบต่อสิ่งที่ผู้ใช้เห็นจริงๆ ส่วนใหญ่ สำหรับการขอข้อมูลบางอย่างทางเว็บเพจ ฝั่งไคลเอ็นต์อาจต้องรับผิดชอบสำหรับ: รวมถึง:
งานเหล่านี้ส่วนใหญ่ได้รับการจัดการโดยเทคโนโลยีที่คล้ายกับ HTML/CSS/JavaScript เพื่อจัดโครงสร้างข้อมูล รูปแบบของเพจ และจัดเตรียมออบเจ็กต์แบบโต้ตอบสำหรับการนำทางและโฟกัส
เว็บเซิร์ฟเวอร์ในเว็บแอปพลิเคชันคือสิ่งที่รับฟังคำขอที่มาจากไคลเอนต์ เมื่อคุณตั้งค่าเซิร์ฟเวอร์ HTTP (HyperText Transfer Protocol - ภาษาของอินเทอร์เน็ต) เราจะตั้งค่าให้รับฟังหมายเลขพอร์ต หมายเลขพอร์ตจะเชื่อมโยงกับที่อยู่ IP ของคอมพิวเตอร์เสมอ คุณสามารถนึกถึงพอร์ตต่างๆ ที่เป็นช่องทางแยกบนคอมพิวเตอร์ที่เราสามารถใช้เพื่อทำงานที่แตกต่างกันได้ พอร์ตหนึ่งอาจท่องเว็บ www.facebook.com ในขณะที่อีกพอร์ตดึงอีเมลของคุณ สิ่งนี้เป็นไปได้เนื่องจากแต่ละแอพพลิเคชั่น (เว็บเบราว์เซอร์และไคลเอนต์อีเมล) ใช้หมายเลขพอร์ตที่แตกต่างกัน
เมื่อคุณได้ตั้งค่าเซิร์ฟเวอร์ HTTP ให้ฟังพอร์ตเฉพาะ เซิร์ฟเวอร์จะรอคำขอไคลเอ็นต์ที่มาถึงพอร์ตเฉพาะนั้น หลังจากตรวจสอบสิทธิ์ไคลเอ็นต์แล้ว เซิร์ฟเวอร์จะดำเนินการใดๆ ที่ระบุในคำขอ และส่งข้อมูลที่ร้องขอผ่านการตอบกลับ HTTP
ฐานข้อมูลเป็นรากฐานของสถาปัตยกรรมเว็บ SQL/NoSQL หรือฐานข้อมูลประเภทเดียวกันเป็นสถานที่จัดเก็บข้อมูลเพื่อให้สามารถเข้าถึง จัดการ และอัปเดตได้อย่างง่ายดาย หากคุณกำลังสร้างไซต์โซเชียลมีเดีย คุณอาจใช้ฐานข้อมูลเพื่อจัดเก็บข้อมูลเกี่ยวกับผู้ใช้ โพสต์ ความคิดเห็น ฯลฯ เมื่อผู้เยี่ยมชมร้องขอเพจ ข้อมูลที่แทรกลงในเพจจะมาจากฐานข้อมูลของไซต์ อนุญาตให้ผู้ใช้โต้ตอบแบบเรียลไทม์กับไซต์เช่น Facebook หรือแอปเช่น Gmail
ในภาพตัวอย่างด้านบน เราจะเห็นการทำงานของการตั้งค่าที่กล่าวมาข้างต้น เบราว์เซอร์ส่งคำขอไปยังเว็บเซิร์ฟเวอร์โดยเรียกโดเมนของตนเช่น www.google.com เซิร์ฟเวอร์จะรวบรวมข้อมูลที่จำเป็นสำหรับฐานข้อมูล SQL ขึ้นอยู่กับว่าใครเป็นผู้ร้องขอ ข้อมูลนี้ถูกห่อเป็นโค้ด HTML และส่งกลับไปยังไคลเอนต์ เว็บเบราว์เซอร์จะอ่านข้อมูลโครงสร้างและสไตล์ที่ฝังอยู่ภายใน HTML และแสดงเพจให้ผู้ใช้เห็นตามนั้น
มีรายละเอียดมากมายเกี่ยวกับสถาปัตยกรรมไคลเอนต์/เซิร์ฟเวอร์ และวิธีที่สถาปัตยกรรมเหล่านั้นปรากฏบนอินเทอร์เน็ต เราจะเน้นไปที่แนวคิดที่ไฮไลต์ในส่วนนี้อีกเล็กน้อยโดยการตั้งค่าไคลเอนต์และทำการร้องขอใน Python ทักษะเหล่านี้จะช่วยให้เราขอข้อมูลจากเซิร์ฟเวอร์สำหรับการทดลองเชิงวิเคราะห์ของเรา ต่อไปนี้เป็นแหล่งข้อมูลเพิ่มเติมสำหรับคุณ หากคุณต้องการเจาะลึกลงไปในโมเดลเซิร์ฟเวอร์ไคลเอนต์ และวิธีการตั้งค่าสำหรับสถาปัตยกรรมที่แตกต่างกันจำนวนมาก
ในบทเรียนนี้ เราดูพื้นฐานของโมเดลเซิร์ฟเวอร์ไคลเอ็นต์ และเน้นไปที่วิธีการนำโมเดลนี้ไปใช้กับแอปพลิเคชันบนเว็บ เราพิจารณาบทบาทของเว็บไคลเอ็นต์ เว็บเซิร์ฟเวอร์ และฐานข้อมูลที่นำข้อมูลของลูกค้า ในบทเรียนต่อไปนี้ เราจะดูวิธีนำแนวคิดเหล่านี้ไปใช้โดยใช้ Python!