Xamarin — ano ito, mga platform at pag-develop sa C#

May-akda: IT Sectr Nai-publish: 2026-05-01 Oras ng pagbabasa: 9 min

Xamarin — ay ang Microsoft platform para sa paggawa ng mobile applications sa C# na wika, inanunsyo noong 2011. Ayon sa Microsoft Xamarin Documentation, 2024, pinapayagan ng Xamarin ang pagsulat ng mga application para sa iOS, Android at Windows na may shared codebase sa C# at .NET, gamit ang Mono Runtime para sa compilation sa native code. Mula noong 2024, ang Xamarin.Forms ay pinalitan ng .NET MAUI.

Mga pangunahing punto

  • Xamarin — mobile platform ng Microsoft para sa pag-develop sa C# sa iOS, Android at Windows
  • Dalawang approach: Xamarin.Forms (shared UI sa pamamagitan ng XAML) at Xamarin.Native (native na mga screen nang hiwalay)
  • Ang Mono Runtime ay nagko-compile ng C# sa native ARM code para sa iOS at Android
  • XAML — deklaratibong markup language para sa pagbuo ng user interface
  • .NET MAUI — kapalit ng Xamarin.Forms, inilabas ng Microsoft noong 2022

Ano ang Xamarin

Xamarin — ay isang platform na batay sa .NET at Mono na nagpapahintulot sa paggamit ng C# para sa paggawa ng cross-platform mobile applications. Ang kumpanyang Xamarin ay itinatag noong 2011 at binili ng Microsoft noong 2016 sa halagang $400 milyon. Pagkatapos ng pagbili, naging bahagi ang Xamarin ng ecosystem ng Visual Studio at Azure.

Bago bilhin ng Microsoft, ang Xamarin ay isang komersyal na produkto na may lisensyang Enterprise. Ginawa itong libre ng Microsoft bilang bahagi ng Visual Studio Community, at binuksan din ang source code ng Mono Runtime at SDK bindings. Ito ay humantong sa pagtaas ng kasikatan: noong 2020, ang Xamarin ay ginamit sa 15% ng cross-platform projects, ayon sa ulat ng SlashData.

Ang pangunahing ideya ng Xamarin — paghahati ng code sa tatlong layer: shared business logic (C#, .NET Standard), platform projects (iOS, Android) at opsyonal na shared UI sa pamamagitan ng Xamarin.Forms. Ang approach na ito ay nagpapahintulot ng pag-reuse ng hanggang 75% ng code habang pinapanatili ang native access sa API ng bawat platform.

Kasaysayan at pag-unlad ng Xamarin

Ang unang bersyon na Xamarin 1.0 ay inilabas noong 2012 na may suporta lamang sa iOS. Noong 2013, idinagdag ang suporta sa Android. Ang Xamarin.Forms — deklaratibong UI framework — ay ipinakita noong 2014 sa kumperensya ng Evolve. Ang Xamarin 4.0 (2016) ay nagdagdag ng suporta para sa watchOS at tvOS. Ang Xamarin 5.0 (2019) ay nagpakilala ng CSS styles at Material Design theme.

Ang huling pangunahing bersyon na Xamarin.Forms 5.0 ay inilabas noong 2021. Inanunsyo ng Microsoft na ang Xamarin ay lumilipat sa support mode (end of life — Mayo 1, 2024) at inirekomenda ang paglipat sa .NET MAUI (Multi-platform App UI), na bahagi ng .NET 6+. Ang Xamarin.Forms 5.0 ay hindi na tumatanggap ng mga bagong feature, tanging mga kritikal na pag-aayos ng seguridad.

Xamarin.Forms vs Xamarin.Native

Xamarin.Forms — ay isang UI framework na nag-a-abstrak ng interface sa pamamagitan ng isang pinag-isang set ng mga elemento. Ang XAML markup (ContentPage, StackLayout, Label, Button) ay nami-map sa native controls ng bawat platform sa pamamagitan ng mga renderer. Ang Label ay isinasalin sa UILabel sa iOS at TextView sa Android. Ang approach na ito ay nagbibigay ng hanggang 95% shared UI code.

Xamarin.Native (din Xamarin.iOS at Xamarin.Android) — ay isang approach na walang shared UI. Ang developer ay gumagawa ng hiwalay na screen para sa iOS (Interface Builder o Storyboard) at Android (AXML), gamit ang isang C# backend. Ito ay nagbibigay ng buong kontrol sa hitsura ng bawat platform, ngunit pinapataas ang dami ng duplicate na UI code sa 50–60%.

Ayon sa Microsoft Developer Survey 2023, 70% ng mga Xamarin project ay gumamit ng Xamarin.Forms, 20% — Xamarin.Native na may shared services, 10% — hybrid approach na may custom renderers para sa platform optimizations.

Arkitektura ng Xamarin

Arkitektura ng Xamarin ay binubuo ng dalawang antas. Ang ibabang antas — Mono Runtime, na nagpapatupad ng C# IL (Intermediate Language) sa platform. Ang itaas na antas — Managed Callable Wrappers (MCW) para sa iOS at Android Bindings para sa Android, na nagbibigay ng access sa native APIs mula sa managed C# code.

Mono Runtime at platform bindings

Mono — ay isang open-source na implementasyon ng .NET Framework. Sa Xamarin, ang Mono ay gumagana bilang Common Language Runtime (CLR) execution environment, naglo-load ng C# assemblies at nagko-compile ng mga ito sa machine code. Sa iOS, ang Mono ay nagko-compile ng Ahead-of-Time (AOT) — sa ARM64 machine code, dahil ipinagbabawal ng Apple ang JIT compilation sa user applications. Sa Android, ang Mono ay gumagamit ng JIT compilation na may AOT profiling.

iOS Bindings (Xamarin.iOS) — ay mga C# wrapper sa ibabaw ng Objective-C runtime. Bawat UIKit class (UIView, UIViewController) ay kinakatawan ng managed class sa Xamarin.iOS.dll assembly. Ang mga Objective-C selector ay tinatawag sa pamamagitan ng MessageUI mechanism. Sa Android, ang Xamarin.Android ay gumagamit ng Android Callable Wrappers (ACW) — JNI bridge sa pagitan ng C# at Java/Kotlin. Ang mga Kotlin library ay binalot sa pamamagitan ng Android Bindings Library.

XAML at C# sa Xamarin

XAML (eXtensible Application Markup Language) — deklaratibong wika para sa paglalarawan ng UI. Sa Xamarin.Forms, tinutukoy ng XAML ang istraktura ng screen: mga page (ContentPage), container (StackLayout, Grid, FlexLayout) at elemento (Label, Entry, Button, ListView). Ang backend code sa C# ay humahawak ng mga event (Clicked, PropertyChanged) at namamahala ng data binding (Binding, Data Binding).

MVVM pattern — inirerekomendang arkitektura para sa Xamarin.Forms. Ang Model ay naglalaman ng data, ang ViewModel ay nag-iimplementa ng INotifyPropertyChanged at mga command (ICommand), ang View (XAML) ay kumokonekta sa pamamagitan ng BindingContext. Ang implementasyon ng ICommand sa pamamagitan ng RelayCommand o Prism DelegateCommand ay tinitiyak ang pag-test ng ViewModel nang walang UI dependencies. Ang Prism.Forms library ay nagbibigay ng NavigationService, DialogService at modularity.

Halimbawa ng application sa Xamarin.Forms

csharp
using Xamarin.Forms;

namespace XamarinApp
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            
            var label = new Label
            {
                Text = "Hello, Xamarin!",
                FontSize = 24,
                VerticalOptions = LayoutOptions.Center,
                HorizontalOptions = LayoutOptions.Center
            };
            
            Content = new StackLayout
            {
                Children = { label }
            };
        }
    }
}

Mga kalamangan at kahinaan ng Xamarin

Isang wikang C# — pangunahing kalamangan ng Xamarin. Ang mga developer ng C# at .NET ay maaaring gumawa ng mobile applications nang hindi nag-aaral ng Swift, Kotlin o Objective-C. Ang business logic, network work, database (SQLite sa pamamagitan ng ORM), encryption at logging ay isinusulat nang isang beses at ginagamit muli sa lahat ng platform. Pinapasimple nito ang pagpapanatili at pag-test ng code.

Access sa native APIs — ang Xamarin ay nagbibigay ng 100% access sa iOS (Cocoa Touch) at Android (Android SDK) APIs sa pamamagitan ng bindings. Kapag may bagong bersyon ng iOS o Android, naglalabas ang Microsoft ng updated bindings sa loob ng 24–48 oras. Para sa mga nawawalang bindings (custom Objective-C o Kotlin library), ginagawa nang manu-mano ang Android Bindings Library o iOS Binding Library.

Integrasyon sa Microsoft ecosystem — sinusuportahan ng Xamarin ang Visual Studio, Azure DevOps, App Center (CI/CD, testing, monitoring) at Enterprise Mobility + Security (Intune, ADAL, MSAL). Ang App Center Analytics at Crashes ay nangongolekta ng data mula sa live applications. Ang Visual Studio App Center ay nag-a-automate ng build, testing sa device at publication sa app stores.

Mga kahinaan ng Xamarin ay kinabibilangan ng laki ng application — ang Xamarin.Forms APK na may blangkong screen ay tumitimbang ng 25–35 MB kumpara sa 5–8 MB para sa native Android app. Ang compilation time ay mas mataas din: ang medium-sized na project ay binuo sa loob ng 2–5 minuto kumpara sa 30–60 segundo sa native Android Studio. Ang Mono Runtime ay nagdaragdag ng 15–20 MB sa huling binary file.

Ang pangalawang kahinaan — pagkaantala ng bagong APIs. Ang mga bagong iOS/Android feature ay lumalabas agad sa native development, ngunit sa Xamarin — 1–2 buwan pagkatapos ng paglabas ng bindings. Ang iOS 17 SDK (2023) ay ganap na suportado ng Xamarin 3 linggo pagkatapos ng release. Para sa mga apurahang proyekto, ito ay maaaring maging kritikal. Nilulutas ng .NET MAUI ang problemang ito sa pamamagitan ng direktang integrasyon sa .NET 8.

KriteryaXamarin.NET MAUI
Mga PlatformiOS, Android, WindowsiOS, Android, Windows, macOS, Tizen
Base frameworkMono + .NET Standard.NET 6+ (unified BCL)
UI frameworkXamarin.Forms.NET MAUI (kapalit)
Mode ng suportaEnd of Life mula noong Mayo 1, 2024Aktibong pag-develop ng Microsoft
Hot ReloadLimitadoXAML Hot Reload + C# Reload

Paglipat sa .NET MAUI

.NET MAUI (Multi-platform App UI) — ay ang ebolusyon ng Xamarin.Forms, inilabas ng Microsoft noong 2022 kasama ng .NET 6. Pinagsasama ng MAUI ang iOS, Android, Windows at macOS sa iisang proyekto nang walang hiwalay na proyekto para sa bawat platform. Hindi tulad ng Xamarin.Forms, ang MAUI ay gumagamit ng .NET 6+ BCL, hindi Mono at .NET Standard.

Ang Microsoft ay nagbibigay ng migration tool — .NET Upgrade Assistant para sa Visual Studio. Sinusuri nito ang Xamarin.Forms project, pinapalitan ang mga namespace (Xamarin.Forms.* -> Microsoft.Maui.*), ina-update ang .csproj files (SDK-style format) at ini-migrate ang Android at iOS settings sa iisang configuration. Pagkatapos ng migration, ang proyekto ay maaaring gumamit ng lahat ng bagong kakayahan ng .NET 8: Native AOT, CodeQL para sa seguridad at pinabuting build performance.

Pangunahing pagbabago — iisang proyekto. Kung ang Xamarin.Forms ay nangangailangan ng 3 hiwalay na proyekto (iOS, Android, .NET Standard), ang .NET MAUI ay gumagamit ng isang proyekto na may folders na Platforms/iOS, Platforms/Android, Platforms/Windows at Platforms/MacCatalyst. Bawat platform ay nako-compile mula sa shared code na may platform conditional directives (#if ANDROID, #if IOS).

Para sa umiiral na codebases, ang .NET MAUI ay nagbibigay ng 90% backward compatibility sa Xamarin.Forms. Ang API compatibility ay sumasaklaw sa ContentView, ContentPage, Shell, NavigationPage, DependencyService at MessagingCenter. Ang mga pangunahing pagbabago ay naka-apekto sa Device.StartTimer (pinalitan ng IDispatcher), Platform API (inilipat sa Microsoft.Maui.ApplicationModel) at lumang renderers (pinalitan ng Handlers).

Ang proseso ng migration ay may limang hakbang. Una — pag-update ng Xamarin.Forms sa pinakabagong bersyon 5.0. Ikalawa — pagpapalit ng .NET Standard 2.0 sa .NET 6 o 8. Ikatlo — pagpapatakbo ng Upgrade Assistant para sa awtomatikong conversion ng proyekto. Ikaapat — pag-aayos ng platform code sa Platforms folders. Ikalima — pag-test, lalo na ng custom renderers at platform services.

Mga madalas itanong

Ano ang Xamarin?

Xamarin — ay mobile platform ng Microsoft para sa pag-develop sa C# sa iOS, Android at Windows. Gumagamit ito ng Mono Runtime para sa compilation ng shared code at nag-aalok ng dalawang approach: Xamarin.Forms (unified UI sa pamamagitan ng XAML) at Xamarin.Native (native screen ng platform). Mula noong 2024, ang Xamarin ay nasa support mode.

Paano naiiba ang Xamarin sa Flutter?

Xamarin ay gumagamit ng C# at .NET, nagre-render sa pamamagitan ng native controls (UIKit, View), ngunit sa pamamagitan ng bindings. Ang Flutter ay gumagamit ng Dart at sarili nitong rendering engine (Impeller), hindi umaasa sa native UI components. Ang Flutter ay nagbibigay ng pare-parehong hitsura sa lahat ng platform, ang Xamarin — native na hitsura ng bawat operating system. Ang Flutter ay suportado ng Google at may 46% kumpara sa 15% para sa Xamarin.

Dapat bang magsimula ng bagong proyekto sa Xamarin sa 2024?

Hindi. Tinapos ng Microsoft ang suporta para sa Xamarin noong Mayo 1, 2024. Lahat ng bagong proyekto ay dapat simulan sa .NET MAUI — ang kapalit nito, na naka-embed sa .NET 8 at makakatanggap ng mga update kasama ng .NET platform. Para sa umiiral na Xamarin.Forms projects, inirerekomenda ang migration sa loob ng 12–18 buwan.

Ang Xamarin.Forms ba ay mas mabagal kaysa native app?

Ang pagkakaiba ay hindi gaanong para sa ordinaryong applications. Ang Xamarin.Forms ay nagdaragdag ng 5–10% rendering overhead dahil sa Managed-Wrapper-Native wrappers. Ang mga problema ay lumalabas sa mabibigat na listahan (ListView vs RecyclerView) at animations (sa pamamagitan ng Xamarin.Forms na walang platform APIs). Inirerekomenda ang paggamit ng CollectionView (pumalit sa ListView) at native animations.

Maaari bang gumamit ng Kotlin library sa Xamarin?

Oo, sa pamamagitan ng Android Bindings Library. Ang uri ng .NET project na ito ay bumabalot ng AAR o JAR archive sa C# bindings na may awtomatikong generation ng mga klase at method. Para sa Kotlin library, kinakailangan ang mga karagdagang handler para sa coroutine at sealed class, na kino-configure sa pamamagitan ng Metadata.xml sa Binding Library.

Buod

  • Xamarin — Microsoft platform para sa mobile development sa C#, batay sa Mono Runtime
  • Xamarin.Forms ay nagbibigay ng 90–95% shared code sa pamamagitan ng XAML markup na may native renderers
  • Xamarin.Native ay nagbibigay ng buong kontrol sa UI ng bawat platform sa pamamagitan ng hiwalay na screen
  • Mga kahinaan: laki ng APK 25–35 MB, oras ng compilation 2–5 minuto, pagkaantala ng bagong APIs
  • .NET MAUI — kapalit ng Xamarin.Forms na may iisang proyekto, .NET 8 at suporta sa 5 platform
  • Migration sa .NET MAUI sa pamamagitan ng Upgrade Assistant sa loob ng 1–2 araw para sa medium project
  • Para sa bagong proyekto gamitin ang .NET MAUI — ang Xamarin ay umabot sa end of life noong Mayo 2024

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din