1. Por que Desktop ainda importa
Mesmo num mundo dominado por web e mobile, aplicações desktop continuam sendo a escolha certa para uma classe específica de problema: ferramentas internas de empresa (ERPs, sistemas de caixa, painéis de operação), software que precisa de acesso profundo ao sistema operacional (hardware, arquivos locais), ou cenários sem internet confiável. É um cenário comum em ambientes corporativos com SQL Server local — exatamente o público deste curso.
2. As três tecnologias .NET para Desktop
| WinForms | WPF | .NET MAUI | |
|---|---|---|---|
| Desde | 2002 (o mais antigo) | 2006 | 2022 (sucessor do Xamarin.Forms) |
| Plataformas | Só Windows | Só Windows | Windows, macOS, iOS, Android |
| Como se descreve a UI | Código C# ou designer visual (arrasta-e-solta) | XAML (marcação declarativa) + C# | XAML + C#, compartilhado entre plataformas |
| Data binding | Limitado | Robusto — a base do MVVM (próximo capítulo) | Robusto, herdado do WPF |
| Melhor para | Ferramentas internas simples, manutenção de sistemas legados | Aplicações Windows ricas e modernas | Um único código-base rodando em múltiplas plataformas |
Para sistemas novos de uso corporativo interno rodando só em Windows — o cenário mais comum conectado a SQL Server local — WPF é geralmente a escolha mais equilibrada: maduro, com o melhor suporte a data binding e ao padrão MVVM, e uma comunidade enorme. Este módulo usa WPF como referência principal, com o padrão MVVM valendo integralmente para MAUI também.
3. XAML — a linguagem de marcação do WPF
XAML descreve a interface declarativamente, de forma parecida com HTML — mas gerando controles de janela nativos do Windows, não elementos de página web:
<Window x:Class="AppClientes.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Clientes" Height="450" Width="700">
<StackPanel Margin="20">
<TextBlock Text="Nome:" />
<TextBox x:Name="TxtNome" />
<Button Content="Salvar" Click="BotaoSalvar_Click" Margin="0,10,0,0" />
</StackPanel>
</Window>
public partial class MainWindow : Window
{
public MainWindow() => InitializeComponent();
private void BotaoSalvar_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show($"Salvando cliente: {TxtNome.Text}");
}
}
O exemplo acima (chamado code-behind) mistura lógica de UI direto na classe da janela — funciona para uma tela simples, mas reproduz exatamente o problema que o Módulo 3 (capítulo 1) descreveu para telas web: tudo misturado, difícil de testar, difícil de manter. O próximo capítulo apresenta o padrão MVVM, que resolve isso da mesma forma que MVC resolveu para aplicações web.
4. Onde as procedures do Módulo 2 entram aqui
Assim como MVC (Módulo 3) e APIs (Módulo 4), uma aplicação Desktop bem estruturada mantém acesso a dados isolado numa camada de Repository — a única diferença real é que, em vez de um Controller reagindo a uma requisição HTTP, é um ViewModel reagindo a uma ação do usuário (clique de botão) que aciona o mesmo repositório chamando as mesmas procedures.
5. Onde isso te leva
Com o panorama das tecnologias estabelecido, o próximo capítulo aprofunda o padrão que organiza aplicações WPF/MAUI de verdade: MVVM (Model-View-ViewModel), o "primo" desktop do MVC.