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 นี้ไปใช้ ตัวอย่างเช่น
- Ruby on Rails (http://rubyonrails.org/)
- Laravel (http://laravel.com/)
- Microsoft ASP.NET MVC (http://www.asp.net/mvc)
- Java Spring (http://www.springsource.org/spring-framework) หรือ
- Java Play (http://www.playframework.com/)
การทำงานของ MVC สามารถอธิบายด้วยภาพได้ดังนี้
เมื่อมีการแบ่งหน้าที่ ความรับผิดชอบกันอย่างชัดเจน เช่นนี้ การจัดการข้อมูล กลไกการทำงาน และการแสดงผล ก็สามารถสลับปรับเปลี่ยนได้โดยไม่ต้องกังวลว่าจะส่งผลกระทบกับการทำงาน ส่วนอื่นๆ ตัวอย่างเช่น
- การแสดงผลของข้อมูลเป็น HTML หรือ XML สามารถทำได้ด้วย View ที่แตกต่างกันสองชุด แต่สามารถแสดงข้อมูลชุดเดียวกันได้โดยไม่ต้องเปลี่ยน Model
- การสลับ Database Back end จาก MySQL เป็น MongoDB ได้โดยการทำงานของระบบ ทั้งหมดยังคงเดิม
- การเปลี่ยนขั้นตอนการสมัครสมาชิกโดยที่การเก็บข้อมูลยังเหมือนเดิม และการแสดงผลลัพธ์ ก็ไม่เปลี่ยนแปลง
นอกจากนั้น การแยกส่วนการทำงานเช่นนี้ทำให้การทดสอบระบบเป็นไปได้ง่ายขึ้น โดยเริ่มจาก การทำ Unit Test คือการทดสอบแยกส่วน ภายใน แต่ละส่วน, จากนั้นทำ Functional Test คือการ ทดสอบการทำงานร่วมกันของส่วนประกอบภายในทั้งหมด, แล้วจึงทดสอบ Integration Test คือ การทดสอบการทำงานร่วมกันของ Application ที่เกี่ยวข้องต่างๆ