Khi so sánh việc sử dụng MVVMcross với Xamarin.Forms và Xamarin bản địa, một số khác biệt chính xuất hiện, chủ yếu về tính linh hoạt của UI, chia sẻ mã và phương pháp phát triển.
Tính linh hoạt và kiểm soát của UI
- Xamarin.Forms: Khung này cung cấp một lớp UI được chia sẻ trên các nền tảng, giúp đơn giản hóa sự phát triển bằng cách cho phép bạn viết mã UI một lần và triển khai nó trên nhiều nền tảng. Tuy nhiên, giao diện người dùng được chia sẻ này có thể giới hạn tùy chỉnh đối với các tính năng dành riêng cho nền tảng, yêu cầu các trình kết xuất tùy chỉnh cho các yếu tố UI nâng cao hơn [7] [9]. MVVMcross có thể được sử dụng với Xamarin.Forms để quản lý logic và điều hướng kinh doanh, nhưng giao diện người dùng vẫn được tiêu chuẩn hóa trên các nền tảng [1] [10].
- Xamarin Native: Khi sử dụng Xamarin gốc với MVVMCROSS, bạn có quyền kiểm soát hoàn toàn đối với UI cho mỗi nền tảng. Điều này cho phép triển khai UI dành riêng cho nền tảng, tối đa hóa giao diện bản địa của mỗi nền tảng. Mặc dù phương pháp này đòi hỏi nhiều nỗ lực hơn để phát triển các lớp UI riêng biệt cho iOS và Android, nhưng nó mang lại sự linh hoạt và tùy biến cao hơn [7] [9].
chia sẻ mã và tái sử dụng
- xamarin.forms: Với xamarin.forms, bạn có thể chia sẻ không chỉ logic kinh doanh (thông qua mvvmcross) mà còn cả mã UI trên các nền tảng. Điều này đơn giản hóa sự phát triển và giảm lượng mã bạn cần duy trì. Tuy nhiên, giao diện người dùng được giới hạn trong một tập hợp các yếu tố chung hoạt động trên tất cả các nền tảng [4] [10].
- Xamarin Native: Trong một thiết lập Xamarin gốc với MVVMcross, bạn có thể chia sẻ logic doanh nghiệp (ViewModels) trên các nền tảng, nhưng bạn phải triển khai UI riêng cho từng nền tảng. Cách tiếp cận này cho phép tái sử dụng mã hơn trong lớp trình bày và logic UI khi sử dụng MVVMcross, nhưng vẫn yêu cầu phát triển UI dành riêng cho nền tảng [9].
Phương pháp phát triển
- xamarin.forms: Phát triển với xamarin.forms và mvvmcross thường được các nhà phát triển ưa thích mà không có trải nghiệm di động rộng rãi, vì nó đơn giản hóa sự phát triển UI đa nền tảng. Khung xử lý nhiều độ phức tạp cơ bản, cho phép các nhà phát triển tập trung vào logic và UI được chia sẻ [4] [10].
-Xamarin bản địa: Phát triển Xamarin bản địa với MVVMCROSS thường được các nhà phát triển muốn kiểm soát chi tiết đối với giao diện người dùng và thoải mái với sự phát triển cụ thể của nền tảng. Cách tiếp cận này đòi hỏi nhiều chuyên môn hơn về phát triển iOS và Android bản địa nhưng cung cấp sự linh hoạt hơn trong thiết kế và thực hiện UI [7] [9].
Điều hướng và ràng buộc
- xamarin.forms với MVVMCROSS: Điều hướng trong xamarin.forms với MVVMcross được quản lý ở cấp độ ViewModel, cho phép phân tách các mối quan tâm sạch sẽ. MVVMCROSS cung cấp các khả năng ràng buộc nâng cao, chẳng hạn như giá trị dự phòng, mặc dù nó thiếu một số tính năng như thuộc tính nguồn được tìm thấy trong các ràng buộc Xamarin.forms tiêu chuẩn [2] [10].
- Xamarin bản địa với MVVMCROSS: Trong các dự án Xamarin bản địa, MVVMcross xử lý điều hướng và ghép cặp View/ViewModel, cho phép kiến trúc MVVM nhất quán trên các nền tảng. Thiết lập này cho phép các nhà phát triển tận dụng các mẫu điều hướng dành riêng cho nền tảng trong khi duy trì lớp logic kinh doanh chung [3] [9].
Tóm lại, trong khi cả hai phương pháp có thể tận dụng MVVMcross cho kiến trúc MVVM, Xamarin.Forms cung cấp một lớp UI được chia sẻ với ít kiểm soát hơn các tính năng UI dành riêng cho nền tảng, trong khi Xamarin bản địa cung cấp toàn bộ quyền kiểm soát đối với việc tùy chỉnh UI nhưng đòi hỏi nỗ lực phát triển hơn cho các triển khai UI riêng biệt.
Trích dẫn:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
.
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
.
.
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
.
.
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx