MVVMCROSS ได้รับการออกแบบมาเพื่อจัดการรหัสเฉพาะแพลตฟอร์มอย่างมีประสิทธิภาพโดยการแยกแอปพลิเคชันตรรกะออกเป็นสองส่วนหลัก: โครงการหลักและโครงการเฉพาะแพลตฟอร์ม โครงการหลักโดยทั่วไปคือไลบรารีมาตรฐาน. NET มีตรรกะทางธุรกิจรูปแบบการดูโมเดลและอินเทอร์เฟซสำหรับบริการเฉพาะแพลตฟอร์ม สิ่งนี้ช่วยให้การแบ่งปันรหัสสูงสุดในแพลตฟอร์มที่แตกต่างกันเช่น Android, iOS และ Windows
โครงการเฉพาะแพลตฟอร์ม
แต่ละโครงการเฉพาะแพลตฟอร์ม (เช่น xamarin.android, xamarin.ios) มีส่วนต่อประสานกับผู้ใช้และการใช้งานบริการเฉพาะแพลตฟอร์ม โครงการเหล่านี้รับผิดชอบในการเริ่มต้นเฟรมเวิร์ก MVVMCROSS และการลงทะเบียนบริการเฉพาะแพลตฟอร์มโดยใช้คลาสการตั้งค่า คลาสการตั้งค่าทำหน้าที่เป็น bootstrapper สำหรับ mvvmcross ช่วยให้นักพัฒนาสามารถปรับแต่งพฤติกรรมของเฟรมเวิร์กสำหรับแต่ละแพลตฟอร์ม
การผกผันของการควบคุม (IOC) และการฉีดพึ่งพา
MVVMCROSS ใช้การผกผันของคอนเทนเนอร์ Control (IOC) เพื่อจัดการการพึ่งพาทั่วทั้งแอปพลิเคชัน สิ่งนี้ช่วยให้สามารถลงทะเบียนบริการเฉพาะแพลตฟอร์มและฉีดลงในตรรกะของโครงการหลัก ตัวอย่างเช่นหากแอปพลิเคชันจำเป็นต้องเข้าถึงบริการตำแหน่ง GPS บริการ GPS สามารถลงทะเบียนได้ในคลาสการตั้งค่าเฉพาะแพลตฟอร์มแล้วฉีดเข้าไปในรูปแบบมุมมองหรือส่วนอื่น ๆ ของโครงการหลัก
พฤติกรรมการปรับแต่งแพลตฟอร์ม
นักพัฒนาสามารถปรับแต่งพฤติกรรมเฉพาะแพลตฟอร์มโดยวิธีการแทนที่ในคลาสการตั้งค่า ตัวอย่างเช่นบน Android คุณอาจแทนที่วิธีการใน `mvxandroidsetup` เพื่อลงทะเบียนบริการเฉพาะ Android หรือจัดการกิจกรรม Lifecycle เฉพาะ Android ในทำนองเดียวกันบน iOS คุณจะใช้ `mvxiossetup` เพื่อจัดการการกำหนดค่าเริ่มต้นเฉพาะ iOS และการลงทะเบียนบริการ
ดูผู้นำเสนอ
MVVMCROSS ยังมีผู้นำเสนอมุมมองซึ่งรับผิดชอบในการตัดสินใจว่าจะนำเสนอมุมมองในแต่ละแพลตฟอร์มอย่างไร สิ่งนี้ช่วยให้การปรับแต่งตรรกะการนำเสนอ UI เช่นการแสดงมุมมองแบบเป็นโมฆะหรือเป็นส่วนหนึ่งของกองการนำทางขึ้นอยู่กับการประชุมของแพลตฟอร์ม
ปลั๊กอินและส่วนขยาย
MVVMCROSS นำเสนอเฟรมเวิร์กปลั๊กอินที่ช่วยให้นักพัฒนาสามารถรวมปลั๊กอินของบุคคลที่สามได้อย่างง่ายดายสำหรับฟังก์ชันการทำงานทั่วไปเช่นการแปลเซ็นเซอร์และอื่น ๆ ปลั๊กอินเหล่านี้สามารถใช้ในหลายแพลตฟอร์มเพื่อลดความจำเป็นในการใช้รหัสเฉพาะแพลตฟอร์ม
โดยสรุป MVVMCROSS จัดการรหัสเฉพาะแพลตฟอร์มโดยให้วิธีการที่มีโครงสร้างในการแยกตรรกะที่ใช้ร่วมกันจากการใช้งานเฉพาะแพลตฟอร์ม มันใช้ IOC และการฉีดพึ่งพาเพื่อจัดการบริการแพลตฟอร์มอนุญาตให้ปรับแต่งผ่านคลาสการตั้งค่าและรองรับปลั๊กอินสำหรับการขยายฟังก์ชันการทำงานผ่านแพลตฟอร์ม
การอ้างอิง:[1] https://github.com/mvvmcross/mvvmcross
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[5] https://stackoverflow.com/questions/14337063/platform-specific-ioc-in-mvvmcross
[6] https://stackoverflow.com/questions/61641185/platform-specific-service-causes-an-exception-mvvmcross-xamarin-ios
[7] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[8] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-packages
[9] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup