เมื่อเปรียบเทียบการใช้ MVVMCROSS กับ Xamarin.Forms และ Xamarin Native ความแตกต่างที่สำคัญหลายประการเกิดขึ้นส่วนใหญ่ในแง่ของความยืดหยุ่นของ UI การแบ่งปันรหัสและวิธีการพัฒนา
UI ความยืดหยุ่นและการควบคุม
- Xamarin.Forms: เฟรมเวิร์กนี้มีเลเยอร์ UI ที่ใช้ร่วมกันข้ามแพลตฟอร์มซึ่งทำให้การพัฒนาง่ายขึ้นโดยอนุญาตให้คุณเขียนรหัส UI หนึ่งครั้งและปรับใช้ในหลายแพลตฟอร์ม อย่างไรก็ตาม UI ที่ใช้ร่วมกันนี้สามารถ จำกัด การปรับแต่งให้เป็นคุณสมบัติเฉพาะของแพลตฟอร์มซึ่งต้องการการเรนเดอร์แบบกำหนดเองสำหรับองค์ประกอบ UI ขั้นสูงเพิ่มเติม [7] [9] MVVMcross สามารถใช้กับ xamarin.forms เพื่อจัดการตรรกะทางธุรกิจและการนำทาง แต่ UI ยังคงเป็นมาตรฐานในแพลตฟอร์ม [1] [10]
- Xamarin Native: เมื่อใช้ Xamarin Native กับ MVVMcross คุณสามารถควบคุม UI ได้อย่างสมบูรณ์สำหรับแต่ละแพลตฟอร์ม สิ่งนี้ช่วยให้การใช้งาน UI เฉพาะแพลตฟอร์มเพิ่มรูปลักษณ์และความรู้สึกของแต่ละแพลตฟอร์มให้สูงสุด ในขณะที่วิธีการนี้ต้องใช้ความพยายามมากขึ้นในการพัฒนาเลเยอร์ UI แยกต่างหากสำหรับ iOS และ Android แต่ก็มีความยืดหยุ่นและการปรับแต่งมากขึ้น [7] [9]
การแบ่งปันรหัสและนำกลับมาใช้ใหม่
- xamarin.forms: ด้วย xamarin.forms คุณสามารถแบ่งปันตรรกะทางธุรกิจไม่เพียง (ผ่าน MVVMcross) แต่ยังรวมถึงรหัส UI ในแพลตฟอร์ม สิ่งนี้ทำให้การพัฒนาง่ายขึ้นและลดจำนวนรหัสที่คุณต้องการในการบำรุงรักษา อย่างไรก็ตาม UI นั้น จำกัด อยู่ที่ชุดองค์ประกอบทั่วไปที่ทำงานในทุกแพลตฟอร์ม [4] [10]
- Xamarin Native: ในการตั้งค่า Xamarin ดั้งเดิมกับ MVVMcross คุณสามารถแบ่งปันตรรกะทางธุรกิจ (ViewModels) ข้ามแพลตฟอร์ม แต่คุณต้องใช้ UI แยกต่างหากสำหรับแต่ละแพลตฟอร์ม วิธีการนี้ช่วยให้สามารถใช้รหัสซ้ำได้มากขึ้นในเลเยอร์การนำเสนอและตรรกะ UI เมื่อใช้ MVVMCROSS แต่ยังต้องใช้การพัฒนา UI เฉพาะแพลตฟอร์ม [9]
แนวทางการพัฒนา
- Xamarin.Forms: การพัฒนาด้วย Xamarin.Forms และ MVVMcross มักเป็นที่ต้องการของนักพัฒนาโดยไม่มีประสบการณ์มือถือที่กว้างขวาง เฟรมเวิร์กจัดการกับความซับซ้อนพื้นฐานมากทำให้นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะที่ใช้ร่วมกันและ UI [4] [10]
-Xamarin Native: การพัฒนา Xamarin พื้นเมืองกับ MVVMcross มักจะได้รับความนิยมจากนักพัฒนาที่ต้องการควบคุม UI อย่างละเอียดและสะดวกสบายกับการพัฒนาเฉพาะแพลตฟอร์ม วิธีการนี้ต้องการความเชี่ยวชาญมากขึ้นในการพัฒนา iOS และ Android แต่มีความยืดหยุ่นมากขึ้นในการออกแบบและการใช้งาน UI [7] [9]
การนำทางและการผูกมัด
- Xamarin.Forms ด้วย MVVMCROSS: การนำทางใน Xamarin.Forms ด้วย MVVMCROSS ได้รับการจัดการในระดับ ViewModel ทำให้สามารถแยกข้อกังวลที่สะอาดได้ MVVMCROSS ให้ความสามารถในการผูกมัดที่เพิ่มขึ้นเช่นค่าทางเลือกแม้ว่าจะไม่มีคุณสมบัติบางอย่างเช่นคุณสมบัติต้นฉบับที่พบใน Xamarin มาตรฐานการเชื่อมโยงรูปแบบ [2] [10]
- Xamarin Native ที่มี MVVMCROSS: ในโครงการ Xamarin ดั้งเดิม MVVMCROSS จัดการการนำทางและการจับคู่ View/ViewModel เพื่อให้สามารถใช้สถาปัตยกรรม MVVM ที่สอดคล้องกันข้ามแพลตฟอร์ม การตั้งค่านี้ช่วยให้นักพัฒนาสามารถใช้ประโยชน์จากรูปแบบการนำทางเฉพาะแพลตฟอร์มในขณะที่ยังคงรักษาเลเยอร์ตรรกะทางธุรกิจที่ใช้ร่วมกัน [3] [9]
โดยสรุปในขณะที่ทั้งสองวิธีสามารถใช้ประโยชน์จาก MVVMCROSS สำหรับสถาปัตยกรรม MVVM Xamarin.Forms นำเสนอเลเยอร์ UI ที่ใช้ร่วมกันโดยมีการควบคุมคุณสมบัติ UI เฉพาะแพลตฟอร์มน้อยกว่าในขณะที่ Xamarin Native ให้การควบคุม UI อย่างเต็มที่
การอ้างอิง:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx