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