บทช่วยสอนกรอบ MVC สำหรับผู้เริ่มต้น: คืออะไร Archiการสอนและตัวอย่าง
กรอบ MVC คืออะไร?
เทศกาล รุ่น-มุมมอง-คอนโทรลเลอร์ (MVC) กรอบงานเป็นรูปแบบสถาปัตยกรรมที่แบ่งแอปพลิเคชันออกเป็นสามส่วนหลักเชิงตรรกะ ได้แก่ โมเดล มุมมอง และตัวควบคุม ดังนั้นจึงใช้ตัวย่อ MVC ส่วนประกอบสถาปัตยกรรมแต่ละส่วนถูกสร้างขึ้นเพื่อจัดการด้านการพัฒนาเฉพาะของแอปพลิเคชัน MVC แยกชั้นตรรกะทางธุรกิจและการนำเสนอออกจากกัน โดยทั่วไปแล้ว MVC ใช้สำหรับอินเทอร์เฟซผู้ใช้แบบกราฟิกบนเดสก์ท็อป (GUI) ปัจจุบัน สถาปัตยกรรม MVC ในเทคโนโลยีเว็บได้รับความนิยมในการออกแบบแอปพลิเคชันเว็บและแอปพลิเคชันมือถือ
ประวัติความเป็นมาของเอ็มวีซี
- สถาปัตยกรรม MVC ได้รับการหารือครั้งแรกในปี 1979 โดย Trygve Reenskaug
- โมเดล MVC เปิดตัวครั้งแรกในปี 1987 ในภาษาโปรแกรม Smalltalk
- MVC ได้รับการยอมรับว่าเป็นแนวคิดทั่วไปเป็นครั้งแรกในบทความปี 1988
- ในช่วงล่าสุด รูปแบบ MVC ถูกนำมาใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชันสมัยใหม่
คุณสมบัติของ MVC
- ทดสอบได้ง่ายและไม่เสียดสี เฟรมเวิร์กที่ทดสอบได้สูง ขยายได้ และเสียบปลั๊กได้
- การออกแบบสถาปัตยกรรมแอปพลิเคชันเว็บโดยใช้รูปแบบ MVC ช่วยให้คุณควบคุม HTML และ URL ได้อย่างเต็มที่
- ใช้ประโยชน์จากคุณสมบัติที่มีอยู่ของ ASP.NET, JSP, Django ฯลฯ
- การแยกตรรกะอย่างชัดเจน: โมเดล มุมมอง ตัวควบคุม การแยกงานแอปพลิเคชัน เช่น ตรรกะทางธุรกิจ ตรรกะ Ul และตรรกะอินพุต
- การกำหนดเส้นทาง URL สำหรับ URL ที่เป็นมิตรกับ SEO การทำแผนที่ URL ที่มีประสิทธิภาพสำหรับ URL ที่เข้าใจและค้นหาได้
- รองรับการพัฒนาการทดสอบขับเคลื่อน (TDD)
VMC Archiเทคเจอร์
นี่คือสถาปัตยกรรมโดยละเอียดของกรอบงาน MVC:
องค์ประกอบ MVC ที่สำคัญสามประการคือ:
- โมเดล: ประกอบด้วยข้อมูลทั้งหมดและตรรกะที่เกี่ยวข้อง
- ดู: นำเสนอข้อมูลให้กับผู้ใช้หรือจัดการการโต้ตอบของผู้ใช้
- ตัวควบคุม: อินเทอร์เฟซระหว่างส่วนประกอบ Model และ View
เรามาดูรายละเอียดส่วนประกอบนี้กัน:
รายละเอียด
มุมมองคือส่วนหนึ่งของแอปพลิเคชันที่แสดงข้อมูล
มุมมองถูกสร้างขึ้นโดยข้อมูลที่รวบรวมจากข้อมูลแบบจำลอง มุมมองร้องขอให้แบบจำลองให้ข้อมูลเพื่อนำเสนอผลลัพธ์แก่ผู้ใช้
มุมมองยังแสดงข้อมูลจากแผนภูมิ ไดอะแกรม และตาราง ตัวอย่างเช่น มุมมองลูกค้าจะรวมส่วนประกอบ UI ทั้งหมด เช่น กล่องข้อความ เมนูแบบดรอปดาวน์ เป็นต้น
ตัวควบคุม
คอนโทรลเลอร์เป็นส่วนหนึ่งของแอปพลิเคชันที่จัดการการโต้ตอบของผู้ใช้ คอนโทรลเลอร์จะตีความอินพุตเมาส์และคีย์บอร์ดจากผู้ใช้ โดยแจ้งรุ่นและมุมมองให้เปลี่ยนแปลงตามความเหมาะสม
คอนโทรลเลอร์ส่งคำสั่งไปยังโมเดลเพื่ออัปเดตสถานะ (เช่น การบันทึกเอกสารเฉพาะ) ตัวควบคุมยังส่งคำสั่งไปยังมุมมองที่เกี่ยวข้องเพื่อเปลี่ยนการนำเสนอของมุมมอง (เช่น การเลื่อนเอกสารใดเอกสารหนึ่ง)
รุ่น
ส่วนประกอบแบบจำลองจัดเก็บข้อมูลและตรรกะที่เกี่ยวข้อง แสดงถึงข้อมูลที่กำลังถ่ายโอนระหว่างส่วนประกอบของตัวควบคุมหรือตรรกะทางธุรกิจอื่น ๆ ที่เกี่ยวข้อง ตัวอย่างเช่น วัตถุตัวควบคุมจะดึงข้อมูลลูกค้าจากฐานข้อมูล มันจัดการข้อมูลและส่งกลับไปยังฐานข้อมูลหรือใช้เพื่อแสดงข้อมูลเดียวกัน
ตอบสนองต่อคำขอจากมุมมองและยังตอบสนองต่อคำแนะนำจากคอนโทรลเลอร์เพื่ออัปเดตตัวเองด้วย นอกจากนี้ยังเป็นระดับต่ำสุดของรูปแบบที่รับผิดชอบในการดูแลรักษาข้อมูล
ตัวอย่าง MVC
มาดูตัวอย่าง Model View Controller จากชีวิตประจำวันกัน:
1 ตัวอย่าง
- สมมติว่าคุณไปร้านอาหาร คุณจะไม่เข้าครัวและเตรียมอาหารที่คุณสามารถทำได้ที่บ้านอย่างแน่นอน แต่คุณไปที่นั่นและรอให้บริกรมาแทน
- ตอนนี้บริกรมาหาคุณแล้วคุณก็สั่งอาหาร พนักงานเสิร์ฟไม่รู้ว่าคุณเป็นใครและต้องการอะไร เขาแค่เขียนรายละเอียดการสั่งอาหารของคุณ
- จากนั้นบริกรก็ย้ายไปที่ห้องครัว ในห้องครัว พนักงานเสิร์ฟไม่ได้เตรียมอาหารของคุณ
- พ่อครัวเตรียมอาหารให้คุณ พนักงานเสิร์ฟจะได้รับออร์เดอร์ของคุณพร้อมหมายเลขโต๊ะของคุณ
- ปรุงอาหารแล้วเตรียมอาหารให้กับคุณ เขาใช้วัตถุดิบในการปรุงอาหาร สมมติว่าคุณสั่งแซนด์วิชผัก จากนั้นเขาก็ต้องการขนมปัง มะเขือเทศ มันฝรั่ง พริก หัวหอม ชีสขูดฝอย ฯลฯ ซึ่งเขาหามาจากตู้เย็น
- ปรุงอาหารขั้นสุดท้ายให้กับบริกร ตอนนี้เป็นหน้าที่ของพนักงานเสิร์ฟที่จะย้ายอาหารนี้ออกไปนอกครัว
- ตอนนี้บริกรรู้ว่าคุณสั่งอาหารประเภทไหนและจะเสิร์ฟอย่างไร
ในตัวอย่างสถาปัตยกรรม MVC นี้
View= You Waiter= Controller Cook= Model Refrigerator= Data
มาดูตัวอย่างโมเดล MVC อีกหนึ่งตัวอย่าง
2 ตัวอย่าง
กลไกการขับเคลื่อนของรถยนต์เป็นอีกตัวอย่างหนึ่งของรุ่น MVC
- รถทุกคันประกอบด้วยสามส่วนหลัก
- View= หน้าจอผู้ใช้ : (คันเกียร์ แผงหน้าปัด พวงมาลัย เบรก ฯลฯ)
- ตัวควบคุม- กลไก (เครื่องยนต์)
- รุ่น-ห้องเก็บของ (ถังน้ำมันเบนซินหรือดีเซล)
รถวิ่งโดยใช้เครื่องยนต์ใช้เชื้อเพลิงจากการจัดเก็บ แต่จะวิ่งโดยใช้อุปกรณ์อินเทอร์เฟซผู้ใช้ดังกล่าวเท่านั้น
กรอบงานเว็บ MVC ยอดนิยม
นี่คือรายการเฟรมเวิร์ก MVC ยอดนิยมบางส่วน:
- ทับทิมบนราง
- Django
- CakePHP
- Yii
- เชอรี่ปี้
- ฤดูใบไม้ผลิ MVC
- ตัวเร่ง
- ทางรถไฟ
- Zend Framework
- CodeIgniter
- Laravel
- เชื้อเพลิง PHP
- Symphony
ข้อดีของ MVC: ประโยชน์หลัก
ประโยชน์หลักของการใช้สถาปัตยกรรม MVC มีดังนี้:
- การบำรุงรักษาโค้ดง่าย ๆ ซึ่งง่ายต่อการขยายและขยาย
- ส่วนประกอบโมเดล MVC สามารถทดสอบแยกจากผู้ใช้ได้
- การสนับสนุนที่ง่ายขึ้นสำหรับลูกค้าประเภทใหม่
- การพัฒนาส่วนประกอบต่างๆสามารถดำเนินการควบคู่กันได้
- ช่วยให้คุณหลีกเลี่ยงความซับซ้อนโดยแบ่งแอปพลิเคชันออกเป็นสามหน่วย ได้แก่ โมเดล มุมมอง และตัวควบคุม
- ใช้เฉพาะรูปแบบ Front Controller ซึ่งประมวลผลคำขอเว็บแอปพลิเคชันผ่านคอนโทรลเลอร์ตัวเดียว
- เสนอการสนับสนุนที่ดีที่สุดสำหรับ การพัฒนาที่ขับเคลื่อนด้วยการทดสอบ
- มันทำงานได้ดีกับเว็บแอปที่ได้รับการสนับสนุนจากทีมนักออกแบบและนักพัฒนาเว็บไซต์ขนาดใหญ่
- ให้การแยกข้อกังวล (SoC) อย่างชัดเจน
- เป็นมิตรกับการปรับแต่งเว็บไซต์ให้ติดอันดับบนเครื่องมือการค้นหา (SEO)
- คลาสและออบเจ็กต์ทั้งหมดมีความเป็นอิสระจากกัน ดังนั้นคุณจึงสามารถทดสอบแยกกันได้
- รูปแบบการออกแบบ MVC ช่วยให้สามารถจัดกลุ่มการกระทำที่เกี่ยวข้องบนคอนโทรลเลอร์เข้าด้วยกันได้
ข้อเสียของการใช้ MVC
- อ่าน เปลี่ยนแปลง ทดสอบหน่วย และนำโมเดลนี้ไปใช้ซ้ำได้ยาก
- กรอบการนำทางอาจมีความซับซ้อนในบางครั้ง เนื่องจากมีการแนะนำชั้นการแยกส่วนใหม่ ซึ่งผู้ใช้จะต้องปรับตัวให้เข้ากับเกณฑ์การแยกส่วนของ MVC
- ไม่มีการสนับสนุนการตรวจสอบอย่างเป็นทางการ
- ความซับซ้อนที่เพิ่มมากขึ้นและประสิทธิภาพของข้อมูลที่ไม่มีประสิทธิภาพ
- ความยากในการใช้ MVC กับส่วนต่อประสานผู้ใช้ที่ทันสมัย
- จำเป็นต้องมีโปรแกรมเมอร์หลายคนเพื่อทำการเขียนโปรแกรมแบบขนาน
- จำเป็นต้องมีความรู้เกี่ยวกับเทคโนโลยีหลายอย่าง
- การบำรุงรักษาโค้ดจำนวนมากในคอนโทรลเลอร์
3 ชั้น Archiเทคเจอร์กับ MVC Archiเทคเจอร์
พารามิเตอร์ | 3 ชั้น Archiเทคเจอร์ | VMC Archiเทคเจอร์ |
---|---|---|
การสื่อสาร | รูปแบบสถาปัตยกรรมประเภทนี้จะไม่สื่อสารโดยตรงกับชั้นข้อมูล | ทุกเลเยอร์สื่อสารโดยตรงโดยใช้โทโพโลยีสามเหลี่ยม |
การใช้ | 3 ระดับ: ใช้กันอย่างแพร่หลายในเว็บแอปพลิเคชันที่ไคลเอนต์ ระดับข้อมูล และมิดเดิลแวร์ทำงานบนแพลตฟอร์มที่แยกจากกัน | โดยทั่วไปจะใช้กับแอปพลิเคชันที่ทำงานบนเวิร์กสเตชันกราฟิกเครื่องเดียว |
สรุป
- MVC เป็นรูปแบบสถาปัตยกรรมที่แยกแอปพลิเคชันออกเป็น 1) โมเดล 2) มุมมอง และ 3) ตัวควบคุม
- โมเดล: ประกอบด้วยข้อมูลทั้งหมดและตรรกะที่เกี่ยวข้อง
- ดู: นำเสนอข้อมูลให้กับผู้ใช้หรือจัดการการโต้ตอบของผู้ใช้
- ตัวควบคุม: อินเทอร์เฟซระหว่างส่วนประกอบ Model และ View
- สถาปัตยกรรม MVC ได้รับการหารือครั้งแรกในปี 1979 โดย Trygve Reenskaug
- สถาปัตยกรรม MVC ใน Java เป็นเฟรมเวิร์กที่สามารถทดสอบได้สูง ขยายได้ และเสียบปลั๊กได้
- เฟรมเวิร์ก MVC ยอดนิยมบางตัว ได้แก่ Rails, Zend Framework, CodeIgniter, Laravel, Fuel PHP เป็นต้น