Client กับ Server ใน web app. คืออะไร

เรื่องนี้อาจเป็นเรื่องพื้นๆ สำหรับ Web Developer หลายๆท่าน แต่ที่ผมเขียนขึ้นมา เพราะว่าผู้ใช้งาน(Users) หลายคน จำเป้นต้องรู้ และเข้าใจเบื้องหลังซักนิด เพื่อให้รู้จักการทำงานของ Web Application มากขึ้นครับ

Web Developer เวลาพัฒนาโปรแกรมจะทำเครื่องตัวเองให้เปรียบเสมือนเป็น server และ client ในเครื่องเดียวกัน เพื่อง่ายต่อการพัฒนาและทดสอบโปรแกรม และเมื่อพัฒนาและทดสอบเรียบร้อยแล้ว ก็จะมีกระบวนการที่เรียกว่า deploy หรือเรียกแบบบ้านๆว่า ลงโปรแกรม ให้กับเครื่อง server เพื่อใช้งานจริง

พูดถึงการเขียนโปรแกรม ใน Web Application ก็จะมี source code อยู่ 2 ส่วนแบบกว้างๆ คือ

source code ที่ทำงานฝั่ง client html, javascript, css เท่านั้นที่ client จะรู้จัก(อาจมี javascript framework ถ้าตามแกะไหวก็จะเห็นเป็น javascript ข้างในอยู่ดี) ซึ่งทั้งหมดนี้จะถูก compile ด้วย web browser โดยเราสามารถเห็น source code ที่ web browser จะวาดเป็นรูปเป็นร่างให้เราโดยการ view source ดูก็ได้ แต่ปัญหาคือ web browser มีหลากหลายค่ายเหลือเกิน สิ่งที่ปรากฏบนหน้าจอของผู้ใช้มักจะไม่เหมือนกันซะทีเดียว ขึ้นอยู่กับ web browser ที่ใช้, version ที่แตกต่างกัน ซึ่งเป็นปัญหาค่อนข้างใหญ่สำหรับ web developer ทีเดียว

source code ที่ทำงานฝั่ง server จะเป็นพวกที่จำเป็นต้องใช้ compiler เช่น C#, Java, PHP เป็นต้น เมื่อภาษาเหล่านี้ทำงานบน server ก็แน่นอนว่าจะทำอะไรได้เยอะกว่า และไม่ต้องกลัวว่าจะทำงานไม่เหมือนกัน เพราะไม่ว่าจะกี่ user มาเรียกใช้ ก็เป็น source code ตัวเดียวกัน server ตัวเดียวกัน ไม่มีปัญหาเรื่องของความหลากหลายของ compiler อย่างที่ client เจอแน่นอน

เพิ่มเติมสำหรับ ภาษาที่ทำงานร่วมกับ html เช่น jsp , php , asp ซึ่งเราอาจเห็นว่าบางส่วนมันไม่ใช่ html ซึ่งอาจเป็น scriptlet หรือ taglib หรือ expression language หรือเปล่า สิ่งเหล่านี้ถึงแม้ว่ามันจะแอบอยู่ใน html ของเรา ก็ต้องเข้าใจไว้ว่า มันทำงานฝั่ง server ถ้าจะพูดแบบง่ายๆ คือ มันทำก่อนที่ browser จะทำงานเสียอีก เพราะฉะนั้น หากจำเป็นต้องใช้ก็ควรจะต้องเข้าใจตรงนี้เสียก่อนครับ

ทั้ง server และ client ก็ต้องมีการทำงานควบคู่กันไป อาจมีการเรียกกันไปเรียกกันมา เพื่อเรียกใช้ความสามารถบางอย่างที่อีกอย่างหนึ่งทำไม่ได้ และเพื่อลดความสับสนคงหนีไม่พ้นสถาปัตยกรรมแบบ MVC (MVC : Model-View-Controller) ครับ แต่อย่าลืมครับว่า ไม่ว่าโปรแกรมเราจะใช้ technology อะไรเข้ามาช่วย จะเขียนเบื้องหลังด้วยภาษาอะไรก็แล้วแต่ สุดท้ายแล้วก็ออกมาในรูปแบบของ html, javascript, css อยู่ดี



Facebook Comment

Popular post of 7 days

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ