Những ưu khuyết điểm của xamarin
Ưu điểm Các công cụ của Xamarin về cơ bản sẽ cho phép bạn phát triển các ứng dụng Android hoặc iOS bằng ngôn ngữ C# và có thể chia sẻ rất nhiều phần code giữa các ứng dụng với nhau. Khi viết một ứng dụng sử dụng bộ công cụ của hãng Xamarin thì về cơ bản là bạn đang sử dụng một lớp trừu tượng ...
Ưu điểm
Các công cụ của Xamarin về cơ bản sẽ cho phép bạn phát triển các ứng dụng Android hoặc iOS bằng ngôn ngữ C# và có thể chia sẻ rất nhiều phần code giữa các ứng dụng với nhau.
Khi viết một ứng dụng sử dụng bộ công cụ của hãng Xamarin thì về cơ bản là bạn đang sử dụng một lớp trừu tượng phía trên các SDK thực sự của iOS và Android. Điều này có nghĩa là bạn sẽ thu được kết quả là một ứng dụng native hoàn toàn cùng với giao diện người dùng native trên mỗi nền tảng.
Một số điểm cộng cho Xamarin framework
- Có khả năng lựa chọn UI layout
- Tích hợp OAuth
- Tích hợp REST APIs từ xa
- Công nghệ dẫn đường và xử lý tín hiệu thời gian thực cho ứng dụng định vị
- Tích hợp mạng xã hội
- Có bộ cơ sở dữ liệu SqLite nhúng
- Thư viện XMPP cho phép xây dựng một loạt các ứng dụng
Ứng dụng Xamarin khá gần với giải pháp tự nhiên. Cảm giác nhìn chung là nền tảng cho phép thực hiện nhiều chức năng để tạo ra ứng dụng một cách rất native. Ngoài ra, Xamarin đang trên đà phát triển nên các thư viện component cũng được bổ sung nhanh chóng, từ UI control, UI theme đến các thư viện. Tất cả đều tiện dụng.
Khuyết điểm
Tuy nhiên, Xamarin cũng tự tạo ra cho mình những khuyết điểm. AOT compiler. Nó không compile các đoạn code gọn gàng như Xcode, lấy ví dụ trên iOS. code C# sẽ không giống như đã được viết. Hạn chế chủ yếu của Xamarin là bạn không có full quyền điều khiển trên code sẽ chạy trên thiết bị.
Hạn chế của Xamarin ảnh hưởng đến cả phát triển, test, tải app lên store. Hạn chế chính đối với iOS là nó không hỗ trợ tự sinh code động. Nó ảnh hưởng không chỉ code Xamarin phức tạp, mà còn cả source code.
Các tầng của ứng dụng Xamarin
Tạo một UI layer riêng biệt cho từng nền tảng được coi là cái giá cho khả năng sử dụng công cụ đa nền tảng.
- Tầng dữ liệu: nơi đặt tất cả các dữ liệu được lưu, như SQLite hay XML file.
- Tầng truy cập dữ liệu: một wrap trên tầng dữ liệu để bảo trì CRUD
- Tầng business : chứa các business logic cho app
- Tầng truy cập dịch vụ: chịu trách nhiệm các phép toán và tương tác với các dịch vụ từ xa (REST, Json, WCF)
- Tầng ứng dụng: chưa native code
- Tầng giao diện người dùng: chịu trách nhiệm tương tác với người dùng.
Tất cả các tầng được xếp trên tầng UI là đa nền tảng. Phần trăm transferable code cho chúng thường khoảng 50-60%. Giải pháp Xamarin.Mobile cho code transfer được dùng cho những việc đơn giản như GPS, Camera, danh bạ, nhưng ko thể là lựa chọn cho những chức năng phức tạp khác.
Cùng một đoạn code cho Objective C và C#
Hạn chế share code ra ngoài xamarin: team sẽ không có khả năng để sinh module hay component có thể tái sử dụng ra ngoài môi trường xamarin. ví dụ: code được team viết trong xamarin, sẽ không có khả năng share cho team HTML5. Thêm nữa, nó sẽ không được dùng cho bất kỳ ứng dụng iOS/Android nào vì như đề cập phía trên: tất cả các nền tảng mobile khác nhau nguồn gốc sử dụng ngôn ngữ không tương thích với nhau.
Ứng dụng Xamarin lớn hơn,nặng hơn so với ứng dụng native. So sánh với ứng dụng native nó chiếm nhiều hơn vài Mb so với Java/Objective C tương ứng. kích thước của một ứng dụng code bằng xamarin là 3Mb, trong khi code bằng Objective C chỉ chiếm 172 Kb. Càng sử dụng nhiều API, càng nhiều lưu trữ bị chiếm trên thiết bị. Nghĩa là apps thực hiện chậm hơn và yêu cầu nhiều dung lượng hơn trên thiết bị.
Vấn đề nữa là giá cả. Phát triển một ứng dụng thương mại dựa trên Xamarin đơn giản sẽ tốn ít nhất 1000 đô một năm. Không phải là rẻ.
Tổng kết
Xamarin là đáng giá? Đúng. Nhưng đi liền với nó là một cái giá nhất định. Nếu không có nhu cầu để phát triển nhanh app có nội dung đơn giản hay app mẫu, bạn vẫn nên sử dụng phát triển native cho ứng dụng của mình.
Tham khảo:
http://www.nexgendesign.com/7-reasons-xamarin-can-be-a-trouble http://www.whitneyland.com/2015/07/xamarin-review-2015.html