Ưu khuyết điểm của lập trình Mobile với Xamarin

13809

Nói đến cách tiếp cận chính để phát triển ứng dụng điện thoại, chúng ta không thể không nhắc tới Xamarin. Đây là một công cụ tương đối mới, dựa trên Microsoft stack và đã có một cộng đồng hơn 1.4 triệu các developer.

Về mặt kỹ thuật, Xamarin sử dụng ngôn ngữ C# và thư viện native được “gói” trong lớp .Net để hỗ trợ phát triển ứng dụng đa nền tảng. Những ứng dụng như thế thường được so sánh với các ứng dụng native trên các nền tảng lập trình iOS và Android theo performance và trải nghiệm người dùng (user experience).

Biết chọn gì đây? Flutter, React Native hay Xamarin?

Tuy nhiên, Xamarin không hoàn hảo đến vậy khi vẫn có 1 cuộc tranh luận nóng hổi về giữa lập trình Xamarin & lập trình ứng dụng native. Để có thể đưa ra được một quyết định chính xác, hãy cân nhắc ưu và khuyết điểm trong lập trình ứng dụng với Xamarin.

1/ Điểm mạnh

Có rất nhiều lí do khiến Xamarin được lựa chọn sử dụng bởi 15.000 công ty bao gồm Trello, Slack và GitHub.

Một technology stack để code cho tất cả các platforms

Xamarin sử dụng ngôn ngữ C# cùng với framework.Net để tạo ra ứng dụng cho mọi nền tảng bất kì. Do đó, bạn có thể tái sử dụng đến 90% nguồn code để gia tăng engineering cycle. Xamarin cũng không yêu cầu phải chuyển đổi giữa môi trường phát triển vì Xamarin hoạt động với cả Xamarin IDE (dành cho Mac) hay Visual Studio (dành Windows). Mặc dù nhiều dev phản bác về chất lượng hỗ trợ bởi IDEs, khả năng tích hợp của Xamarin Visual Studio đã được cải thiện nhiều kể từ khi được mua lại bởi Microsoft. Các công cụ phát triển đa nền tảng được cung cấp thêm như 1 phần built-in của IDE không phụ phí.

Performance gần với Native

Không giống như phương pháp kết hợp truyền thống dựa trên các công nghệ web,  một ứng dụng đa nền tảng được xây dựng với Xamarin cũng có thể xem vào hàng native. Các số liệu performances là tương đương khi so sánh với các số liệu performance của Java cho Android và Objective-C hoặc Swift cho ứng dụng phát triển ứng dụng iOS native.

Hơn thế nữa, performance liên tục được cải thiện để phù hợp hoàn toàn với tiêu chuẩn của lập trình native. Nền tảng Xamarin cung cấp là giải pháp để testing và theo dõi hoạt động của ứng dụng. Xamarin Test Cloud kết hợp với công cụ Xamarin Test Recorder cho phép bạn chạy các UI test tự động và xác định các vấn đề về performance trước khi ứng dụng release. Tuy nhiên, dịch vụ này có tính phí.

Trải nghiệm người dùng native

Xamarin cho phép bạn tạo ra những trải nghiệm hoàn hảo khi sử dụng các elements UI riêng biệt cho mỗi nền tảng. Các ứng dụng đa nền tảng đơn giản của iOS, Android hay Windows đều được xây dựng bằng công cụ Xamarin.Forms chuyển đổi các UI components thành các elements interface riêng cho mỗi platform lúc runtime.

Sử dụng Xamarin.Forms làm tăng tốc độ phát triển ứng dụng lên đáng kể, đây là một lựa chọn tuyệt vời cho các dự án định hướng thương mại. Tuy nhiên, performance vẫn suy giảm nhẹ do abstraction layer gia tăng. Đối với UI app custom và performance cao hơn, bạn vẫn có thể sử dụng Xamarin.iOS và Xamarin.Android riêng biệt để đảm bảo thu được kết quả hoàn hảo.

Hỗ trợ đầy đủ phần cứng

Với Xamarin, giải pháp của bạn sẽ giúp app functionality đạt được native-level, loại trừ tất cả vấn đề tương thích với phần cứng, sử dụng plugins và APIs đặc biệt để làm việc với các chức năng thiết bị thông thường đa nền tảng. Ngoài khả năng truy cập vào API riêng biệt cho mỗi nền tảng, Xamarin còn hỗ trợ liên kết với thư viện native. Từ đó, functionality được tối ưu hóa và đạt được mức độ native tốt hơn với ít chi phí hơn.

2/ Khuyết điểm

Bản quyền Xamarin khá “đắt đỏ”

Khi doanh nghiệp đăng ký có thể mất chi phí hằng năm là $999 cho mỗi developer, mỗi nền tảng thiết bị, đồng nghĩa chi phí sẽ khá cao dù bạn dự định chỉ tạo ra một phần mềm nhỏ. Ví dụ, bạn sẽ mất gần $10.000 hằng nằm để chạy một đội ngũ với 5 engineers, mỗi người xây dựng một ứng dụng cho iOS và Android. Tuy nhiên, nếu dự định xây dựng giải pháp cho điện thoại đa nền tảng trong tương lai hoặc cung cấp dịch vụ phát triển ứng dụng Xamarin thì bản quyền Xamarin là một đầu tư khôn ngoan hơn so với các chi phí phát triển của các ứng dụng native.

CẬP NHẬT: kể từ khi được mua lại bởi Microsoft,, Xamarin đã thay đổi đáng kể so với chính sách giá cả của nó. Hiện tại, Xamarin được cung cấp miễn phí cho người dùng Visual Studio và sẽ sớm hoàn thành mã nguồn mở. 

Hỗ trợ chậm các updates nền tảng mới nhất

Điều này phụ thuộc hoàn toàn vào đội ngũ developer của Xamarin. Không thể sử dụng công cụ thứ ba để cung cấp sự hỗ trợ ngay lập tức khi phiên bản cập nhật mới nhất của iOS và Android được phát hành. Phải mất một khoảng thời gian để thực hiện những thay đổi hay đưa vào một plugins mới, v.v.. Mặc dù Xamarin khẳng định sẽ hỗ trợ cùng lúc với những cập nhật mới nhất nhưng vẫn có những thời điểm bị trì hoãn.

Giới hạn truy cập vào thư viện mã nguồn mở

Native development giúp thói quen sử dụng công nghệ mã nguồn mở trở nên quen thuộc, rộng rãi hơn. Với Xamarin, cả developer hay người sử dụng đều phải sử dụng duy nhất môt component cung cấp bởi nền tảng Xamarin và một số mã nguồn mở .Net. Trong khi native development không có nhiều lựa chọn cho ứng dụng phát triển điện thoại Android và iOS,nhưng các component Xamarin cung cấp đến hàng ngàn UI controls tùy chỉnh, các charts, biểu đồ, themes đa dạng và các chức năng mạnh mẽ khác có thể được thêm vào ứng dụng chỉ với vài cú click. Điều này bao gồm quá trình xử lý payment built-in (như Stripe), tích hợp Beacons và các thiết bị di động, các services notification box push, giải pháp lưu trữ đám mây, các tính năng streaming multimedia và hơn thế nữa.

Vấn đề hệ sinh thái của Xamarin

Dĩ nhiên, cộng đồng Xamarin ít hơn so với cộng đồng của iOS hay Android nên để tìm kiếm được 1 developer Xamarin có kinh nghiệm là chuyện không dễ dàng gì dù Xamarin là nền tảng được phát triển nhờ sự hỗ trợ từ Microsoft. Theo nhiều nguồn thông tin, cộng đồng Xamarin chiếm 10% cộng động lập trình mobile toàn cầu dựa trên thực tế là nền tảng này cung cấp tối đa hỗ trợ cho các developer. Cụ thể, có một platform giáo dục chuyên biệt tại ĐH Xamarin, cung cấp kiến thức và khoá huấn luyện cho những ai mới tiếp cận công nghệ này. Kết quả là learning curve của 1 engineer C#/.Net kinh nghiệm sẽ được tối thiểu hóa.

Cân nhắc những lựa chọn khác: Xamarin và Native iOS/Android và Hybrid Development

Gần đây, nhiều developer đã đồng ý sử dụng Xamarin như là một công cụ phát triển “native”. Có ý kiến cho rằng “mọi thứ đều có thể hoàn thành với 1 ứng dụng iOS sử dụng Objective-C hoặc Swift, và mọi thứ thực hiện được bởi ứng dụng Android sử dụng với phần mềm Java thì cũng sẽ thành công khi sử dụng Xamarin với C#”.

Hãy cùng nhau so sánh giữa công cụ phát triển “native” thuần và các nền tảng phát triển hybrid  (lonic, PhoneGap/Cordova).

Mặc dù các công cụ lập trình hybrid tiến triển nhanh chóng nhưng performance và tính năng native của công cụ này kém hơn so với những gì Xamarin cung cấp trong khi cả hai lại cùng một mức phí. Khi cân nhân hai cách thức này, người dùng hoặc các developer thường lưỡng lự giữa Xamarin với lonic hoặc Xamarin với React native (là framework giúp lập trình viên viết ứng dụng Native chỉ bằng Javascript). Tuy nhiên, sự lưỡng lự này được rút gần lại do hạn chế của công nghệ cơ bản (web stack).

Song, có một công cụ lập trình nobile dựa trên Java-Script mà nhanh hơn các giải pháp kết hợp khác, ít nhất là về giao diện người dùng (UI), đó là NativeScript. Framework đa nền tảng nguồn mở được hỗ trợ bởi Telerik này cho phép áp dụng UI native và kết nối với APIs native để trải nghiệm trên điện thoại được tốt hơn khi sử dụng 1 single code base. Điểm khác biệt chính là sử dụng markup XML compile thành các yếu tố Android và iOS native tương ứng, thay vì sử dụng HTML webview.

Cách tiếp cận này xóa nhòa khoảng cách giữa công nghệ phát triển native và hybrid, tương tự như cách Xamarin đang làm. Điểm khác biệt nằm ở việc ngôn ngữ lập trình của công cụ này sử dụng. Vì vậy sự khác biệt giữa Xamarin và NativeScript là một chủ đề cần được nghiên cứu nhiều hơn.

Đồng thời, cuộc tranh luận giữa phát triển Xamarin và native Android/iOS dường như có vẻ phức tạp hơn. Cả hai lựa chọn đều chứng minh được bản thân cung cấp những giá trị về chất lượng sản phẩm và hiệu suất hoạt động, sự lựa chọn phụ thuộc vào loại ứng dụng bạn muốn xây dựng.

Lời khuyên

Hầu hết các chủ doanh nghiệp lựa chọn nền tảng ứng dụng phát triển mobile Xamarin vì nó làm giảm thời gian tiếp cận thị trường và chi phí kỹ thuật, bằng cách chia sẻ mã code và sử dụng 1 single technology. Tuy nhiên, mục đích của ứng dụng và đối tượng mục tiêu mới chính là yếu tố quan trọng cần xem xét.

Dựa trên kinh nghiệm của team chúng tôi, các trường hợp tốt nhất để sử dụng Xamarin là làm giải pháp mobile enterprise. Với tiêu chuẩn giao diện người dùng UI thích hợp với 90% các dự án, tất cả các nguyên lý cốt lõi của sản phẩm có thể dễ dàng chia sẻ thông qua các nền tảng. Do đó, khả năng tùy biến platforms chỉ tốn 5 – 10% về mặt kỹ thuật.

Trong trường hợp người dùng phải đối mặt với UI nặng, số lượng mã được chia sẻ bị giảm đi đáng kể. Như vậy, phát triển nền tảng đa diện của Xamarin mất đi lợi ích của nó, hệ quả là chi phí và thời gian làm việc của giải pháp native.

Tuy nhiên, nếu bạn tìm kiếm một giải pháp Xamarin thay thế để xây dựng ứng dụng điện thoại đa nền tảng, bạn có thể sẽ thất vọng. Trong khi các công cụ phát triển điện thoại đa nền tảng khác được sử dụng rộng rãi là PhoneGap/Apache Cordova, Ionic Framework, Appcelerator/Titanium nhưng chúng chỉ chủ yếu dựa vào kỹ thuật web như là HTM5 hoặc JavaScript. Đó là lý do tại sao không một công cụ nào có khả năng hoạt động và chức năng native như Xamarin cung cấp.

Nguồn: Techtalk via Altexsoft

CHIA SẺ