Công nghệ xây dựng ứng dụng mobile ngày càng phát triển bùng nổ. Nếu như trước đây, các bạn chỉ có thể sử dụng Java để xây dựng ứng dụng Android hay Objective-C để xây dựng ứng dụng iOS thì ngày nay, các bạn chỉ cần biết một ngôn ngữ bất kỳ cũng có thể xây dựng được ứng dụng mobile sử dụng ngôn ngữ đó. Ngày càng có nhiều framework hỗ trợ việc lập trình ứng dụng mobile một cách nhanh chóng phải kể đến như React Native, Flutter, NativeScript,...

Tuy nhiên đối với những bạn yêu thích Microsoft, yêu thích C#, yêu thích Visual Studio thì vẫn luôn có một sự lựa chọn hàng đầu đó là Xamarin. Bài viết dưới đây mình sẽ chia sẻ những hiểu biết của mình về Xamarin trong seri Lập trình Xamarin. Hy vọng sẽ giúp các bạn phần nào trong quá trình học tập và làm việc với Xamarin.

OK! Let's GO!!!

Xamarin là gì

Xamarin là một framework để xây dựng các ứng dụng di động đa nền tảng được tạo ra bởi hãng phần mềm di động cùng tên thành lập vào ngày 16 tháng 5 năm 2011 bởi các kỹ sư đã tạo ra Mono, Mono cho Android và MonoTouch với hơn 500 nghìn nhân lực. Hãng này sử dụng ngôn ngữ C# để viết các ứng dụng chạy trên Mac, Android, ý tưởng triển khai các ứng dụng đa nền tảng sử dụng Common Language Infrastructure (CLI) và Common Language Specifications (thường được gọi là Microsoft .NET).
Đến tháng 11/2013, Microsoft đã mua lại và tích hợp chạy trên môi trường Windows 8. Với cơ sở mã nguồn mở của C#, các lập trình viên có thể sử dụng các công cụ Xamarin để viết các ứng dụng native Android, iOS và Windows với giao diện người dùng native và sự chia sẻ code trên nhiều nền tảng, bao gồm Windows và macOS.
Theo như Xamarin công bố, hơn 1.4 triệu lập trình viên đang sử dụng sản phẩm của Xamarin ở 120 quốc gia trên toàn thế giới tính đến tháng 4 năm 2017

Quá trình phát triển của Xamarin

Công cụ Xamarin được Microsoft giới thiệu vào thị trường Việt Nam vào 18/04/2014 trong cho cộng đồng các giảng viên các trường CĐ, ĐH tại TPHCM và được chuyển giao các tài liệu, bản quyền với giá ưu đãi cho các sinh viên trên nền Microsoft Visual Studio và được chuyên gia Microsoft demo lập trình Xamarin để app chạy trên môi trường iOS, Android, Windows Phone và Windows 8.1 với các Tools khác nhau.
Tại sự kiện Microsoft Build 2016, Microsoft công báo họ sẽ mã nguồn mở Xamarin SDK và cung cấp các công cụ để phát triển ứng dụng sử dụng Xamarin miễn phí trên Visual Studio.

Tất cả mọi thứ làm được với Java Android hay Swift iOS thì đều làm được với C# và VS với Xamarin

Xamarin.Forms

Xamarin.Forms là một công cụ giúp code giao diện người dùng có thể được chia sẻ trên các ứng dụng iOS, Android và Universal Windows Platform với 100% C#. Xamarin.Forms bao gồm hơn 40 điều khiển và bố cục, được ánh xạ tới các điều khiển gốc trong quá trình chạy. Nó hỗ trợ các nền tảng sau:

  • Android 4.4 +
  • iOS 8+
  • Windows 10 Universal Windows Platform
    Ngoài ra, Xamarin Forms còn hỗ trợ các nền tảng dưới đây nhưng vẫn đang ở chế độ Preview hoặc do bên thứ ba phát triển:
  • Samsung Tizen
  • macOS
  • GTK#
  • WPF
Danh sách các nền tảng Xamarin hỗ trợ

Dưới đây là hình ảnh so sánh về chia sẻ code của cách sử dụng Xamarin truyền thống và sử dụng Xamarin.Forms. Rõ ràng khi sử dụng Xamarin.Forms, chúng ta đã sử dụng được hầu hết code chung cho toàn bộ ứng dụng.

Giao diện các ứng dụng sử dụng Xamarin được viết trong một file XAML. Nó có cấu trúc của một file XML, khá giống với Winform hay XML của Android.

Với 1 đoạn code như này chúng ta có thể build ra 3 nền tảng khác nhau:

Ưu điểm của Xamarin

Chia sẻ code ở mọi nơi

Khi viết một ứng dụng sử dụng bộ công cụ của Xamarin thì về cơ bản 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 với giao diện dùng native trên mỗi nền tảng.
Khi bạn tạo ứng dụng trên Xamarin, bạn sử dụng cùng ngôn ngữ, API và cấu trúc dữ liệu để chia sẻ trung bình 75% code trên tất cả các nền tảng điện thoại di động. Logic ứng dụng này có thể dễ dàng chia sẻ trên nhiều nền tảng. Qua đó có thể giảm đáng kể chi phí và thời gian phát triển ứng dụng di động cho 3 nền tảng phổ biến nhất.

Performance như 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, Kotlin 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í.
Hình dưới đây cho chúng ta thấy thời gian mở một ứng dụng HelloWorld bằng ứng dụng native, ứng dụng viết bằng Xamarin Native, ứng dụng viết bằng Xamarin.Forms:

Mội số ưu điểm khác

Một số điểm cộng cho Xamarin như:

  • 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 XAML cho phép xây dựng một loạt ứng dụng
  • Hỗ trợ data binding

Nhược điểm của Xamarin

Ứng dụng 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ị

Ứ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ị.

Khuyết điểm của AOT Compiler

Xamarin Forms cũng có những khuyết điểm AOT compliler. Nó không được complie các đoạn code gọn gàng như Xcode. 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ợ sinh code tự động. Visual Studio biuld code lâu. Cái này tất cả các lập trình viên Xamarin đều đang phải sống chung với lũ, một lần build sẽ mất rất lâu từ 3 đến 10 phút cho solution với 30 project
Đôi lúc thông báo lỗi không rõ ràng chủ yếu trên Android vì nó là 1 công nghệ mới nên vẫn chưa được hoàn hoản mong rằng Microsoft sẽ fix trong tương lai.

Cộng đồng hỗ trợ ít

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.

Kết luận

Vậy là mình đã giới thiệu với các bạn một cách tổng quan về Xamarin. Ở bài viết tiếp theo mình sẽ giới thiệu cụ thể về các thành phần trong gia đình Xamarin. Các bạn hãy đón chờ nhé!