MVVMCROSS เป็นเฟรมเวิร์กข้ามแพลตฟอร์มที่อำนวยความสะดวกในการพัฒนาแอปพลิเคชันโดยใช้รูปแบบ Model-View-ViewModel (MVVM) ช่วยให้นักพัฒนาสามารถสร้างโซลูชั่นมือถือที่สามารถดูแลได้อย่างหลวม ๆ และสามารถทดสอบได้โดยแยกตรรกะแอปพลิเคชันออกเป็นสองส่วนหลัก: โครงการหลักและโครงการ UI
โครงการหลัก
โดยทั่วไปโครงการหลักคือไลบรารีมาตรฐาน. NET ที่มีรหัสทั้งหมดที่ใช้ร่วมกันรวมถึง:- ViewModels: สิ่งเหล่านี้รับผิดชอบในการจัดการการโต้ตอบของผู้ใช้และตรรกะทางธุรกิจ
- โมเดล: แสดงโครงสร้างข้อมูลที่ใช้ตลอดแอปพลิเคชัน
- บริการ: ให้การเข้าถึงข้อมูลบริการเว็บหรือแหล่งข้อมูลภายนอกอื่น ๆ
- ตัวแปลง: ใช้สำหรับการแปลงชนิดข้อมูล
- คลาสแอพ: สิ่งนี้รับผิดชอบในการเริ่มต้นตรรกะทางธุรกิจของแอปพลิเคชันและรุ่นดู นอกจากนี้ยังจัดการการลงทะเบียนของวัตถุที่กำหนดเองในคอนเทนเนอร์ผกผัน (IOC)
- AppStart: เลือกใช้เพื่อพิจารณาว่ารูปแบบการดูใดที่จะนำเสนอก่อนเมื่อแอปพลิเคชันเริ่มต้น
UI Project
โครงการ UI นั้นเฉพาะแพลตฟอร์มและมีองค์ประกอบส่วนต่อประสานผู้ใช้และรหัสเฉพาะแพลตฟอร์ม สำหรับแต่ละแพลตฟอร์มเป้าหมาย (เช่น iOS, Android) มีโครงการ UI แยกต่างหาก โครงการเหล่านี้รวมถึง:- มุมมอง: แต่ละมุมมองมีหน้าที่นำเสนอรูปแบบมุมมองที่สอดคล้องกัน มุมมองได้รับการออกแบบโดยใช้เครื่องมือแพลตฟอร์มดั้งเดิม (เช่น XAML สำหรับ Xamarin.Forms, AXML สำหรับ Android)
- Handler แอปพลิเคชั่นดั้งเดิม: นี่จัดการเหตุการณ์วงจรชีวิตพื้นเมือง ตัวอย่างเช่นบน Android มันจะเป็นคลาส `mainactivity` หรือ` mainapplication 'คลาสในขณะที่บน iOS มันจะเป็นคลาส `appdelegate`
- คลาสการตั้งค่า: นี่เป็นหน้าที่ของ bootstrapping mvvmcross และการลงทะเบียนบริการเฉพาะแพลตฟอร์ม มันเริ่มต้นเฟรมเวิร์ก MVVMCROSS และตั้งค่าคอนเทนเนอร์ IOC ด้วยการใช้งานเฉพาะแพลตฟอร์ม
ปฏิสัมพันธ์ระหว่างโครงการ Core และ UI
การทำงานร่วมกันระหว่างโครงการ Core และ UI ใน MVVMcross นั้นได้รับการอำนวยความสะดวกโดยรูปแบบ MVVM และคอนเทนเนอร์ IOC ของเฟรมเวิร์ก นี่คือวิธีที่พวกเขาโต้ตอบ:- การเชื่อมโยง ViewModel: โครงการ UI ใช้ MVVMCROSS เพื่อเชื่อมโยงมุมมองเพื่อดูโมเดล โดยทั่วไปจะทำโดยใช้การตั้งชื่อการประชุมหรือโดยการตกแต่งมุมมองด้วยคุณลักษณะเช่น `[mvxViewfor (typeof (homeViewModel))]`
- การฉีดบริการ: โครงการหลักกำหนดอินเทอร์เฟซสำหรับบริการที่มีการใช้งานแตกต่างกันในแต่ละแพลตฟอร์ม บริการเหล่านี้ได้รับการลงทะเบียนในคอนเทนเนอร์ IOC และฉีดเข้าไปในโมเดลมุมมองช่วยให้สามารถใช้งานได้โดยไม่ต้องใช้รหัสซ้ำ
- การนำทางและการนำเสนอ: MVVMCROSS ให้กลไกสำหรับการนำทางระหว่างโมเดลมุมมองและมุมมองนำเสนอ เฟรมเวิร์กใช้ผู้นำเสนอ (เช่น `imvxiosviewpresenter`,` imvxandroidviewpresenter`) เพื่อจัดการวิธีการแสดงมุมมองในแต่ละแพลตฟอร์ม
ด้วยการแยกแอปพลิเคชันตรรกะออกเป็นโครงการ Core และ UI MVVMCROSS ช่วยให้นักพัฒนาสามารถใช้รหัสซ้ำได้สูงสุดในแพลตฟอร์มในขณะที่ยังคงอนุญาตให้ปรับแต่งและปรับให้เหมาะสมเฉพาะแพลตฟอร์ม [1] [3] [5]
การอ้างอิง:[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/