MVC และ MMVC คืออะไร
ทำความรู้จักกับสถาปัตยกรรม MVC และ MMVC ของ Somtum
MVC คืออะไร
ก่อนอื่นต้องอธิบายถึง MVC กันก่อน MVC ย่อมาจาก Model View และ Controller เป็นสถาปัตยกรรมการออกแบบซอฟต์แวร์รูปแบบหนึ่งที่เป็นที่นิยม
- Model หมายถึง ส่วนที่ทำหน้าที่จัดการเกี่ยวกับข้อมูลทุกรูปแบบ เช่น การรับข้อมูลจากอินพุตต่างๆ การบันทึกข้อมูล หรือ การจัดการฐานข้อมูล โดย Model จะทำหน้าที่ในการแปลงข้อมูลไม่ว่าจะมาจากที่ไหนก็ตาม ให้อยู่ในรูปแบบที่ระบบเข้าใจและสามารถนำไปใช้งานต่อได้ ยกตัวอย่างเช่น เราจะใช้ Model ในการเชื่อมต่อกับฐานข้อมูล MySQL และ MongoDB ซึ่งเป็นฐานข้อมูลคนละประเภทกัน โดยใช้ Model คนละตัวเชื่อมต่อกับฐานข้อมูลแต่ละประเภทแล้วแปลงผลลัพท์ออกมาให้เป็นรูปแบบเดียวกัน (เช่น JSON) ซึ่งผลลัพท์ที่ได้จะออกมาเหมือนๆกันทำให้เราสามารถเชื่อมต่อกับฐานข้อมูลใดๆก็ได้ เพียงแค่เปลี่ยน Model
- View หมายถึง ส่วนที่ทำหน้าที่จัดการแสดงผล เช่น Template (HTML) หรือแม้กระทั่ง Template Engine โดยหลักการที่สำคัญของ MVC คือการแยกส่วนการแสดงผลออกจากโค้ดส่วนประมวลผล เพื่อให้โค้ดเรียบง่าย และ บำรุงรักษาง่ายนั่นเอง
- Controller เปรียบเสมือนส่วนสมองของโปรแกรม ทำหน้าที่เป็นแกนของระบบในการเชื่อมต่อกับ Model และ View ซึงโดยปกติแล้ว เมื่อมีการเรียกหน้าเว็บ ก็จะมีการเรียกไปยัง Controller เมื่อ Controller ต้องการข้อมูลก็จะไปร้องขอเอาจาก Model และเมื่อต้องการแสดงผล ก็จะส่งไปยัง View เพื่อจัดการแสดงผล
สถาปัตยกรรมของ MVC จะเป็นตามรูปด้านบน เมื่อผู้ใช้งานเรียกไปยัง Server จะถูกส่งไปที่ Controller และเรียกใช้ Model หากต้องการแลกเปลี่ยนข้อมูล แล้วนำกลับมาประมวลผลที่ Controller เสร็จแล้วจึงเรียก View เพื่อจัดการแสดงผล ซึ่งที่ View หากต้องการข้อมูลเพิ่ม ก็สามารถติดต่อกับ Model เพื่อขอข้อมูลได้เช่นกัน เมื่อ View จัดการเตรียมข้อมูลสำหรับแสดงผลเสร็จแล้ว ก็จะส่งกลับไปที่ Controller เพื่อส่งกลับไปยังบราวเซอร์ เพื่อแสดงผลต่อไป
MMVC คืออะไร
ปัญหาของ MVC คือมันไม่ค่อยเหมาะสมสำหรับงานบางอย่าง เช่น การออกแบบเป็น CMS ซึ่งมีโครงสร้างที่ซับซ้อนกว่า เช่นการมี โมดูล หรือปลั๊กอิน ผมจึงได้ออกแบบโครงสร้างใหม่เป็น MMVC หรือ Module Model View Controller หรือโครงสร้าง MVC แบบเป็นโมดูลนั่นเอง
แนวคิดของ MMVC คือการแยก MVC ออกเป็นชุดๆ เรียกว่า Module โดยแต่ละโมดูล ก็จะประกอบด้วย MVC ของตัวเอง เรียกใช้โดย Default Controller
เมื่อผู้ใช้งานเรียกไปยัง Server จะถูกส่งไปที่ Deafult Controller ก่อน ซึ่งเป็น Controller หลัก ทำหน้าที่เป็นแกนของระบบทั้งหมด และจะทำหน้าที่ในการตัดสินใจว่าจะเรียก Module ใดมาทำงานต่อ (ตามรูปจะประกอบด้วยโมดูล Index, Document และ Gallery) ซึ่งเมื่อ Default Controller ตัดสินใจได้แล้ว มันจะส่งการทำงานไปยัง Controller ของ Module ที่เลือก ซึ่งเมื่อโมดูลประมวลผลเสร็จแล้วก็จะส่งกลับมายัง Default Controller ก่อนส่งกลับไปยังบราวเซอร์ เพื่อแสดงผลต่อไป
จะเห็นว่าหากเราต้องการใช้งาน Gallery เราก็สามารถติดตั้งโมดูลเพิ่มเข้าไปได้ และ สามารถถอดออกได้หากไม่ต้องการใช้งาน