C# em toda parte: como escrever aplicativos multiplataforma sem dor

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que C# não é só sobre Windows?

\n\n

Por muito tempo, o C# foi associado exclusivamente ao ecossistema Microsoft e ao Windows. Desenvolvedores que queriam programar para Linux ou macOS olhavam para Java, Python ou JavaScript. Mas os tempos mudaram. Com o lançamento do .NET Core (e depois .NET 5/6/7/8), a Microsoft deu um passo decisivo em direção ao mundo do código aberto e da multiplataforma.

\n\n

Hoje, o C# é uma linguagem poderosa e moderna com a qual você pode criar de tudo: desde utilitários de console para servidores Linux até aplicativos móveis para iOS e Android. E tudo isso com uma única linguagem, uma única IDE (Rider ou VS Code) e, o mais importante, com uma lógica de negócios unificada.

\n\n

Neste artigo, vamos explorar quais tecnologias permitem escrever aplicativos multiplataforma em C#, compará-las, mostrar código real e dar dicas práticas. Se você acha que C# é "só para Windows", prepare-se para se surpreender.

\n\n

A evolução da multiplataforma no .NET

\n\n

O caminho do C# para a multiplataforma foi longo. Vamos relembrar os principais marcos:

\n\n
    \n
  • Mono (2004) — a primeira implementação open-source do .NET Framework para Linux. Funcionava, mas com limitações.
  • \n
  • Xamarin (2011) — permitiu escrever aplicativos móveis em C# para iOS e Android. Um verdadeiro avanço.
  • \n
  • .NET Core (2016) — um framework totalmente reescrito, modular e multiplataforma. Código aberto.
  • \n
  • .NET 5+ (2020) — unificação de todos os ramos: .NET Framework, .NET Core e Xamarin se fundiram em um único .NET.
  • \n
  • .NET MAUI (2022) — a evolução do Xamarin.Forms para criar UIs nativas para todas as plataformas.
  • \n
\n\n

Agora, em 2024, temos um conjunto de ferramentas maduro para desenvolvimento em qualquer plataforma. Vamos dar uma olhada nas principais opções.

\n\n

Principais tecnologias de desenvolvimento multiplataforma em C#

\n\n

A escolha da tecnologia depende do que exatamente você está desenvolvendo. Vamos destacar quatro direções principais:

\n\n

1. .NET MAUI — aplicativos móveis e desktop nativos

\n\n

.NET MAUI (Multi-platform App UI) é um framework para criar interfaces de usuário que funcionam em Android, iOS, macOS, Windows e (experimentalmente) Linux. Você escreve a marcação XAML e a lógica C# uma vez e obtém aplicativos nativos como resultado.

\n\n

Exemplo de código: um aplicativo contador simples

\n\n
<!-- MainPage.xaml -->\n<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"\n             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"\n             x:Class="MauiApp1.MainPage">\n    <VerticalStackLayout Padding="30" Spacing="25">\n        <Label Text="Olá, multiplataforma!"\n               FontSize="32"\n               HorizontalOptions="Center"/>\n        <Label x:Name="CounterLabel"\n               Text="0"\n               FontSize="48"\n               HorizontalOptions="Center"/>\n        <Button Text="Clique em mim"\n                Clicked="OnCounterClicked"\n                HorizontalOptions="Center"/>\n    </VerticalStackLayout>\n</ContentPage>
\n\n
// MainPage.xaml.cs\nnamespace MauiApp1;\n\npublic partial class MainPage : ContentPage\n{\n    private int _count = 0;\n\n    public MainPage()\n    {\n        InitializeComponent();\n    }\n\n    private void OnCounterClicked(object sender, EventArgs e)\n    {\n        _count++;\n        CounterLabel.Text = _count.ToString();\n    }\n}
\n\n

Este código funcionará sem alterações em um iPhone, smartphone Android, MacBook e PC com Windows. Para Linux, será necessária uma configuração adicional, mas a comunidade está trabalhando ativamente nisso.

\n\n

2. Avalonia UI — desktop para Windows, Linux e macOS com design único

\n\n

Avalonia é um framework open-source inspirado no WPF, mas totalmente multiplataforma. Sua principal característica: ele não emula controles nativos, mas desenha sua própria interface através do SkiaSharp. Isso dá total

Blogs

Book Recommendations