Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon อะไรคือความแตกต่างหลักระหว่างการใช้ mvvmcross และ xamarin.forms


อะไรคือความแตกต่างหลักระหว่างการใช้ mvvmcross และ xamarin.forms


MVVMCROSS และ XAMARIN.FORMS เป็นสองเทคโนโลยีที่แตกต่างกันที่ใช้ในการพัฒนาแอพมือถือข้ามแพลตฟอร์มแต่ละจุดมีวัตถุประสงค์ที่แตกต่างกันและเสนอข้อได้เปรียบที่เป็นเอกลักษณ์

ภาพรวมของ xamarin.forms

Xamarin.Forms เป็นเฟรมเวิร์กที่พัฒนาโดย Microsoft ที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันข้ามแพลตฟอร์มโดยใช้ C# Codebase และ XAML ที่ใช้ร่วมกันสำหรับส่วนต่อประสานผู้ใช้ ช่วยให้นักพัฒนาสามารถเขียนหนึ่งครั้งและทำงานบนหลายแพลตฟอร์มรวมถึง iOS, Android และ UWP Xamarin.Forms เหมาะสำหรับโครงการที่ต้องการ UI ที่สอดคล้องกันข้ามแพลตฟอร์มและทำให้กระบวนการพัฒนาง่ายขึ้นโดยการจัดหา API แบบครบวงจรสำหรับส่วนประกอบ UI อย่างไรก็ตามความสอดคล้องนี้มาจากค่าใช้จ่ายของความยืดหยุ่นเนื่องจาก UI นั้น จำกัด อยู่ที่ชุดย่อยขององค์ประกอบทั่วไปจากแต่ละแพลตฟอร์มซึ่งสามารถนำไปสู่ข้อ จำกัด ในการบรรลุรูปลักษณ์และความรู้สึกของพื้นเมืองหรือการปรับแต่ง UI ขั้นสูง [4] [7]

ภาพรวมของ mvvmcross

MVVMCROSS เป็นกรอบ MVVM (Model-View-ViewModel) ที่รองรับ Xamarin.ios, xamarin.android, xamarin.forms และแพลตฟอร์มอื่น ๆ มันมุ่งเน้นไปที่การแยกตรรกะทางธุรกิจออกจาก UI ทำให้นักพัฒนาสามารถแบ่งปันส่วนสำคัญของรหัสของพวกเขาในแพลตฟอร์มที่แตกต่างกัน MVVMCROSS ให้คุณสมบัติเช่นการผูกข้อมูลการนำทางการผกผันของการควบคุมและการฉีดพึ่งพาซึ่งอำนวยความสะดวกในการพัฒนาแอปพลิเคชันที่ซับซ้อน ซึ่งแตกต่างจาก xamarin.forms, mvvmcross ไม่ได้บังคับใช้กรอบ UI เฉพาะ; แต่จะช่วยให้นักพัฒนาเลือกวิธีที่พวกเขาต้องการใช้ UI สำหรับแต่ละแพลตฟอร์มนำเสนอความยืดหยุ่นมากขึ้นในการบรรลุประสบการณ์ UI พื้นเมือง [7] [10]

ความแตกต่างที่สำคัญ

1. การใช้งาน UI:
- Xamarin.Forms: ใช้เลเยอร์ UI ที่ใช้ร่วมกันข้ามแพลตฟอร์มซึ่งทำให้การพัฒนาง่ายขึ้น แต่อาจ จำกัด การปรับแต่งและรูปลักษณ์และความรู้สึกของพื้นเมือง
- MVVMCROSS: อนุญาตให้มีการใช้งาน UI ดั้งเดิมในแต่ละแพลตฟอร์มหรือใช้ UI ที่ใช้ร่วมกันกับ Xamarin.Forms ให้ความยืดหยุ่นมากขึ้นในการบรรลุการออกแบบ UI เฉพาะแพลตฟอร์ม

2. การแบ่งปันรหัส:
- เฟรมเวิร์กทั้งสองเปิดใช้งานการแบ่งปันรหัส แต่ MVVMCROSS มุ่งเน้นไปที่การแบ่งปันตรรกะทางธุรกิจ (ViewModels) ในขณะที่อนุญาตให้มีการใช้งาน UI ที่แตกต่างกัน Xamarin.Forms แบ่งปันทั้ง UI และตรรกะทางธุรกิจ

3. การนำทางและการเชื่อมโยงข้อมูล:
- MVVMCROSS ให้บริการระบบนำทางที่มีประสิทธิภาพและความสามารถในการเชื่อมโยงข้อมูลที่ทำงานในกรอบ UI ที่แตกต่างกันรวมถึง Xamarin.Forms Xamarin.Forms ขึ้นอยู่กับการนำทางของตัวเองและกลไกการเชื่อมโยงข้อมูล

4. ความซับซ้อนของโครงการ:
- สำหรับโครงการที่ซับซ้อนที่ต้องการการปรับแต่ง UI ขั้นสูงหรือคุณสมบัติเฉพาะแพลตฟอร์ม MVVMCROSS อาจเหมาะสมกว่าเนื่องจากความยืดหยุ่น สำหรับโครงการที่ง่ายกว่าที่ UI ที่สอดคล้องกันนั้นเพียงพอ Xamarin.Forms สามารถนำไปใช้งานได้ตรงไปตรงมามากขึ้น

5. แนวทางการพัฒนา:
- Xamarin.Forms มักจะเป็นที่ต้องการของนักพัฒนาที่คุ้นเคยกับ XAML และ. NET เนื่องจากให้ประสบการณ์การพัฒนาแบบครบวงจร MVVMCROSS เป็นประโยชน์สำหรับโครงการที่ตรรกะทางธุรกิจจำเป็นต้องได้รับการแยกออกจาก UI ทำให้สามารถควบคุมการใช้งาน UI ได้มากขึ้นในแต่ละแพลตฟอร์ม

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

การอ้างอิง:
[1] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[2] https://github.com/rogerwcpt/xamarin-mvvvm-frameworks
[3] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-xamarin-forms-version
[4] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[5] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[6] https://canbilgin.wordpress.com/tag/mvvmcross/
[7] https://www.mvvmcross.com/documentation/getting-started/getting-started
[8] https://www.reddit.com/r/csharp/comments/a9mph1/mvc_or_mvvm_for_xamarin/
[9] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[10] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/