MVC Design Pattern

เมื่อมีความเข้าใจใน HTTP Protocol เล็กน้อยแล้ว เราก็จะเข้าใจว่าการออกแบบ Web Application นี้จะต้องมีกลไกการทำงานเป็นแบบ Request-Response โดยการ Response อาจเป็นไปได้ในหลายๆ วิธีเช่น HTML, XML, JSON, ฯลฯ การออกแบบ Application ที่เป็นที่นิยมในปัจจุบันจึงแบ่งความรับผิดชอบของ Application เป็นสามส่วนหลักๆ คือ Model, View, และ Controller

Application Framework ที่มีอยู่ในตลาดไม่ว่าจะเป็น open source หรือเป็น paid-license ก็นิยมนำแนวคิด MVC นี้ไปใช้ ตัวอย่างเช่น

การทำงานของ MVC สามารถอธิบายด้วยภาพได้ดังนี้

MVC

เมื่อมีการแบ่งหน้าที่ ความรับผิดชอบกันอย่างชัดเจน เช่นนี้ การจัดการข้อมูล กลไกการทำงาน และการแสดงผล ก็สามารถสลับปรับเปลี่ยนได้โดยไม่ต้องกังวลว่าจะส่งผลกระทบกับการทำงาน ส่วนอื่นๆ ตัวอย่างเช่น

  • การแสดงผลของข้อมูลเป็น HTML หรือ XML สามารถทำได้ด้วย View ที่แตกต่างกันสองชุด แต่สามารถแสดงข้อมูลชุดเดียวกันได้โดยไม่ต้องเปลี่ยน Model
  • การสลับ Database Back end จาก MySQL เป็น MongoDB ได้โดยการทำงานของระบบ ทั้งหมดยังคงเดิม
  • การเปลี่ยนขั้นตอนการสมัครสมาชิกโดยที่การเก็บข้อมูลยังเหมือนเดิม และการแสดงผลลัพธ์ ก็ไม่เปลี่ยนแปลง

นอกจากนั้น การแยกส่วนการทำงานเช่นนี้ทำให้การทดสอบระบบเป็นไปได้ง่ายขึ้น โดยเริ่มจาก การทำ Unit Test คือการทดสอบแยกส่วน ภายใน แต่ละส่วน, จากนั้นทำ Functional Test คือการ ทดสอบการทำงานร่วมกันของส่วนประกอบภายในทั้งหมด, แล้วจึงทดสอบ Integration Test คือ การทดสอบการทำงานร่วมกันของ Application ที่เกี่ยวข้องต่างๆ