ความแตกต่างระหว่าง MVVM กับ MVP ความแตกต่างระหว่าง

Anonim

วัตถุประสงค์ของการพัฒนาซอฟต์แวร์คือการสร้างโซลูชันที่ตอบสนองความต้องการและปัญหาสำหรับผู้ใช้และธุรกิจ เพื่อให้บรรลุนี้ใช้เทคโนโลยีและรูปแบบสถาปัตยกรรมที่แตกต่างกันเช่น Model-View-ViewModel (MVVM) และ Model-View-Presenter (MVP)

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

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

โครงสร้างแอ็พพลิเคชันซอฟต์แวร์

สถาปัตยกรรมซอฟต์แวร์กำหนดโครงสร้างของแอ็พพลิเคชันที่ตรงตามข้อกำหนดด้านเทคนิคการปฏิบัติงานและผู้ใช้และอ้างถึงวิธีจัดระเบียบและจัดการรหัส

การตัดสินใจเกี่ยวกับสถาปัตยกรรมของซอฟต์แวร์แอพพลิเคชันมีความสำคัญเนื่องจากไม่ใช่ส่วนหนึ่งของโปรแกรมประยุกต์ที่พัฒนาแล้ว; ดังนั้นรูปแบบสถาปัตยกรรมจะต้องตัดสินใจก่อนเริ่มโปรแกรม

รูปแบบสถาปัตยกรรมมีความแตกต่างกันเล็กน้อยกับรูปแบบการออกแบบเนื่องจากขอบเขตกว้างขึ้นโดยใช้ประเด็นทางเทคนิคมากขึ้นเช่นประสิทธิภาพและข้อ จำกัด ของฮาร์ดแวร์และความพร้อมใช้งานสูง ตัวอย่างของรูปแบบสถาปัตยกรรมที่ต่างกันคือ MVC, MVVM และ MVP

ในทางกลับกันรูปแบบการออกแบบเป็นแนวทางที่ดีที่สุดที่เป็นทางการเพื่อให้สามารถนำมาใช้ใหม่ได้ง่ายขึ้นและง่ายต่อการบำรุงรักษาและการเปลี่ยนแปลงมากกว่าสถาปัตยกรรมของแอพพลิเคชัน

โมเดลสถาปัตยกรรมแบบ

Model View Controller (MVC)

เป็นรูปแบบสถาปัตยกรรมแบบแรกที่พัฒนาขึ้นสำหรับแอ็พพลิเคชันบนเว็บซึ่งได้รับความนิยมจากช่วงกลางถึงปลายยุคโดยเฉพาะอย่างยิ่งกับชุมชน Java กรอบที่ใหม่กว่าเช่น Django for Python and Rails (Ruby on Rails) มีจุดเด่นที่การใช้งานอย่างรวดเร็วซึ่งเป็นเหตุผลที่ MVC กำลังครองส่วนแบ่งการตลาดเป็นแหล่งดึงดูดความสนใจในรูปแบบสถาปัตยกรรม

ตามเนื้อผ้าการพัฒนาส่วนติดต่อผู้ใช้มีโค้ดมากมายในการจัดการกับตรรกะที่ซับซ้อนดังนั้นรูปแบบสถาปัตยกรรมถูกออกแบบมาเพื่อลดรหัสในส่วนติดต่อผู้ใช้ (UI) ทำให้ทำความสะอาดและจัดการได้มากขึ้น

ดังนั้นด้วยรูปแบบ MVC แอ็พพลิเคชันเว็บประกอบด้วย

รุ่น

  • (ข้อมูล) ดู
  • (อินเทอร์เฟซเพื่อดูและจัดการข้อมูล) Controller
  • (การดำเนินงาน

จัดการกับข้อมูลและตรรกะทางธุรกิจและ ไม่มี การอ้างอิงระหว่าง Model และ Controller < หรือ ดู ดู

แสดงข้อมูลให้กับผู้ใช้ในรูปแบบที่สนับสนุนและเค้าโครงที่ต้องการและเมื่อ Controller ได้รับคำขอของผู้ใช้ (เรียกข้อมูล) จะเรียกทรัพยากรที่จำเป็นที่ต้องการ เพื่อดำเนินการตามคำขอ ลองใช้รูปแบบนี้กับการสร้างร้านหนังสือออนไลน์ ผู้ใช้สามารถค้นหาดูลงทะเบียนและซื้อหนังสือรวมทั้งจัดการโปรไฟล์และรายการหนังสือของตนเอง เมื่อผู้ใช้คลิกที่หมวดหมู่ SCI-FI หนังสือที่เกี่ยวข้องทั้งหมดควรแสดงตามที่มีอยู่

Controllers

จัดการการดำเนินการที่จัดการหนังสือ (รายการเพิ่มดู ฯลฯ) อาจมี Controller Controller ซึ่งควบคุมการเข้าชม <หลัก สำหรับตัวอย่างนี้ Controller

มีชื่อว่า controller_books PHP และ Model (เช่นแบบจำลอง. php) จัดการข้อมูลและตรรกะที่เกี่ยวข้องกับหนังสือ สุดท้ายต้องใช้ มุมมอง

แตกต่างกันเช่นเมื่อเพิ่มหนังสือลงในรถเข็นสินค้าออนไลน์หรือเมื่อดูรายละเอียดหนังสือด้วยภาพและความเห็น เดอะ controller_books

ได้รับการดำเนินการ (คำขอจากผู้ใช้) จาก ตัวควบคุมหลัก (เช่น. ดัชนี <.9) ก controller_books php จะวิเคราะห์คำขอและเรียก model_books php (ข้อมูล) เพื่อส่งคืนรายการหนังสือ SCI-FI ความรับผิดชอบของ Model คือการให้ข้อมูลดังกล่าวโดยใช้ตรรกะที่ใช้ (โดยใช้ตัวกรองการค้นหา)

Controller จากนั้นจะนำข้อมูลไปที่ มุมมอง (มุมมองการค้นหา, มุมมองการพิมพ์, มุมมองรายละเอียด ฯลฯ) และข้อมูลจะถูกนำเสนอ (ผ่านทาง View >) ให้กับผู้ใช้ที่เป็นผู้ริเริ่มการร้องขอ นี่คือพื้นฐานของรูปแบบ MVC ซึ่งมีการพัฒนารูปแบบการผสมพันธุ์ของรูปแบบสถาปัตยกรรมเช่น Model-View-Presenter (MVP) Model-View-ViewModel (MVVM), Hierarchical-Model-View-Controller HMVC) และ Model-View-Adapter (MVA) เป็นต้น รูปแบบ MVP Model-View-Presenter (MVP) รูปแบบ MVP

มีอยู่รอบระยะหนึ่งและ เป็นตัวแปรของ MVC ได้รับการออกแบบมาโดยเฉพาะสำหรับระบบอัตโนมัติในการทดสอบซึ่งมีวัตถุประสงค์เพื่อเพิ่มจำนวนโค้ดที่สามารถทดสอบผ่านระบบอัตโนมัติและรูปแบบจะกล่าวถึงประเด็นปัญหาบางอย่างกับเลเยอร์การนำเสนอโดยแยกทางตรรกะทางธุรกิจออกจาก UI

หน้าจอเป็นมุมมองข้อมูลที่จะแสดงเป็นโมเดลและพรีเซนเตอร์จะเชื่อมต่อทั้งสองเข้าด้วยกัน

MVP ประกอบด้วยส่วนประกอบต่อไปนี้ที่มีหน้าที่รับผิดชอบแยกต่างหาก: โมเดล

(กำหนดข้อมูลที่จะแสดง)

ดู (แสดงข้อมูลจากแบบจำลองและขอเส้นทางผู้ใช้ไปยัง พรีเซนเตอร์)

  • Presenter (มีปฏิสัมพันธ์ระหว่างมุมมองและโมเดลและเชื่อมโยงเข้าด้วยกัน)
  • ดู
  • (หน้าเว็บ) แสดงและจัดการการควบคุมเพจโดยการส่งต่อเหตุการณ์ (คำขอของผู้ใช้) ไปยัง Presenter

ที่เริ่มต้นใน ดู Presenter ตอบสนองต่อเหตุการณ์เหล่านี้โดยอ่านและอัปเดต Model เพื่อเปลี่ยน

ดู ดังนั้นความรับผิดชอบ Presenter คือ เพื่อผูก รุ่น และ ดู MVC และ MVP รูปแบบความเป็นทั้งมีความรับผิดชอบแยกต่างหากสำหรับแต่ละองค์ประกอบและทำให้เกิดการแบ่งแยกระหว่าง View

(UI) และ รุ่น (ข้อมูล) ความแตกต่างอย่างมีนัยสำคัญระหว่างรูปแบบเหล่านี้มีความชัดเจนมากขึ้นในรูปแบบที่ใช้ MVP อาจเป็นรูปแบบที่ซับซ้อนในการนำไปใช้กับโซลูชันขั้นสูง แต่ก็มีประโยชน์อย่างมากหากใช้เป็นโซลูชันที่ออกแบบมาอย่างดีแม้ว่าจะไม่จำเป็นว่าจะเป็นทางเลือกที่เหมาะสมสำหรับโซลูชันง่ายๆก็ตาม รูปแบบ MVVM Model-View-ViewModel (MVVM) รูปแบบ MVVM

ถูกออกแบบมาเฉพาะสำหรับ Windows Presentation Foundation (WPF) และแพลตฟอร์ม Microsoft Silverlight และสามารถเป็นได้ ใช้ในทุกแพลตฟอร์ม XAML [i]

WPF เป็นระบบของ Microsoft ที่จัดเตรียมส่วนติดต่อผู้ใช้ในโปรแกรมที่ใช้ Windows และได้รับการเผยแพร่เป็นครั้งแรกใน. NET Framework 3. 0.

MVVM ถูกปรับปรุงจาก MVC และในรูปแบบนี้, ดู มีการใช้งานกับพฤติกรรมเหตุการณ์และการผูกข้อมูลและ

ดู

จะซิงโครไนซ์กับ ViewModel (ซึ่งช่วยให้สามารถแยกงานนำเสนอและแสดงวิธีการ และคำสั่งในการจัดการและจัดการกับ Model MVVM ประกอบด้วยส่วนประกอบหลักสามส่วน: รุ่น (แสดงข้อมูลที่มีการตรวจสอบและตรรกะทางธุรกิจ) ดู > มุมมองมีหน้าที่รับผิดชอบในการกำหนดโครงสร้างเลย์เอาต์และลักษณะที่ผู้ใช้เห็นบนหน้าจอความนึกคิดมีการกำหนดไว้อย่างหมดจดด้วย XAML โดยมีโค้ดที่ จำกัด หลังซึ่งไม่มีตรรกะทางธุรกิจข้อมูลสองทาง View และ

ViewModel เพื่อ displayenables displayenables การซิงโครไนซ์โมเดลและ ViewModel ด้วยมุมมอง)

  • ViewModel (แยกมุมมองจาก th e Model และแสดงวิธีการและคำสั่งเพื่อจัดการกับข้อมูล (Model)
  • ดู รับข้อมูลจาก ViewModel (ผ่านการรวมข้อมูลและวิธีการ) และเมื่อรันไทม์ มุมมอง
  • จะเปลี่ยนไปเมื่อตอบสนองต่อเหตุการณ์ใน ส่วน ViewModel

ViewModel เป็นสื่อกลางระหว่าง ดู และ โมเดล และจัดการตรรกะ ดู

มันมีปฏิสัมพันธ์กับ Model - นำข้อมูลจาก Model และนำเสนอไปยัง View เพื่อแสดงผล คอมโพเนนต์เหล่านี้แยกตัวกันออกจากกันเพื่อให้สามารถทำงานได้อย่างอิสระมากขึ้นแยกการทดสอบหน่วยและแลกเปลี่ยนออกโดยไม่ส่งผลต่อองค์ประกอบอื่น ๆ โครงสร้างนี้ช่วยให้ Model และคอมโพเนนต์อื่น ๆ มีวิวัฒนาการไปอย่างอิสระช่วยให้นักพัฒนาสามารถทำงานด้านต่างๆของโซลูชันได้พร้อม ๆ กัน ตัวอย่างเช่นที่นักออกแบบกำลังทำงานใน ดู พวกเขาเพียงแค่สร้างตัวอย่างข้อมูลโดยไม่จำเป็นต้องเข้าถึงส่วนประกอบอื่น ๆ การทำเช่นนี้ช่วยให้สามารถออกแบบส่วนติดต่อผู้ใช้ใหม่ได้ง่ายเนื่องจาก ดู ใน XAML

ตามที่กล่าวมาก่อน

MVP โซลูชันแบบง่ายๆจะไม่ต้องใช้สถาปัตยกรรมและรูปแบบการออกแบบเช่น "Hello World!"เป็นพื้นฐานเกินไปที่จะทำตามรูปแบบใด ๆ; อย่างไรก็ตามเนื่องจากมีคุณลักษณะฟังก์ชันและส่วนประกอบต่างๆเพิ่มขึ้นความซับซ้อนของแอ็พพลิเคชันและปริมาณของรหัสที่ต้องได้รับการจัดการ ในบทสรุป ตั้งแต่จุดเริ่มต้นของการพัฒนาอินเทอร์เฟซผู้ใช้รูปแบบการออกแบบกลายเป็นที่นิยมมากขึ้นเพื่อทำให้ขั้นตอนการพัฒนาง่ายขึ้นแอพพลิเคชันสามารถปรับขนาดได้มากขึ้นและอำนวยความสะดวกในการทดสอบได้ง่ายขึ้น ความแตกต่างระหว่างรูปแบบ MVP และ MVVM: ใน MVP

และ MVVM

มุมมอง

คือจุดเริ่มต้นของแอปพลิเคชัน >

  • MVP มีการทำแผนที่แบบหนึ่งต่อหนึ่งระหว่าง ดู และ Presenter ซึ่งใน MVVM
  • ความสัมพันธ -to-many ระหว่าง ดู และ ViewModel MVP ใช้เป็นหลักสำหรับแอพพลิเคชัน Windows Forms และ Windows Phone และ MVVM ถูกออกแบบมาสำหรับ Silverlight, WPF, Knockout / AngularJS ฯลฯ