📌 Bir Bakışta: Linux Üzerinde Mono ile .NET Testi
| Geliştirme Aracı | Microsoft Visual Studio & C# (Windows Forms / GDI+) |
|---|---|
| Hedef Çalışma Zamanı | Mono Runtime (Açık Kaynak Kodlu .NET Çatısı) |
| Hedef İşletim Sistemi | Linux (Debian / Ubuntu / Raspberry Pi OS) |
| Test Projesi | Bouncing Ball (Yerçekimi ve Çarpışma Fiziği Simülasyonu) |
| Grafik Çizim Motoru | System.Drawing ve Linux X11 Entegrasyonu |
| Amaç | İki İşletim Sistemi Arasında Kod Değiştirmeden İkili Uyumluluğu Doğrulama |
Modern .NET öncesinde, C# ile yazılmış Windows uygulamalarını Linux ortamında çalıştırmanın en popüler yolu açık kaynaklı Mono projesiydi. Bu eğitimde, Visual Studio ile geliştirilen hareketli bir top simülasyonunun Linux’ta nasıl sıfır hatayla çalıştığı gösterilmektedir.
Giriş: Çapraz Platform .NET Mimarisi ve Mono
Miguel de Icaza öncülüğünde başlatılan Mono projesi, Microsoft’un .NET çalışma zamanını Linux ve Unix türevlerine taşıyarak yazılım dünyasında çığır açmıştır. Bu rehberde, Windows ortamında derlenen bir ikili dosyanın (binary .exe) Linux’ta doğrudan nasıl çalıştırıldığı pratik bir simülasyonla ele alınmaktadır [1].
1. Windows Forms ve GDI+ Fizik Simülasyonu
Bouncing ball (zıplayan top) uygulaması, grafik tamponlama (double buffering) ve zamanlayıcı (Timer) döngüleriyle nesnenin ekran sınırlarına çarpmasını simüle eder:
private void timer1_Tick(object sender, EventArgs e)
{
ballX += speedX;
ballY += speedY;
// Duvarlardan sekme kontrolleri
if (ballX < 0 || ballX + ballRadius > this.ClientSize.Width) speedX = -speedX;
if (ballY < 0 || ballY + ballRadius > this.ClientSize.Height) speedY = -speedY;
this.Invalidate(); // Yeniden çiz
}
2. Linux Ortamında Mono ile Çalıştırma
Linux terminalinde derlenmiş dosyayı çalıştırmak için tek yapılması gereken şu komutu vermektir [2]:
sudo apt update && sudo apt install mono-complete
mono BouncingBallApp.exe
Mono, System.Windows.Forms çağrılarını X11 pencere yöneticisine çevirerek görseli sorunsuz şekilde ekrana yansıtır.
Bağımsız Kaynaklar ve Referanslar
[1] Mono Project Documentation: Mono Project: Cross platform, open source .NET framework
[2] Linux Graphics Architecture: X.Org Foundation: X11 Windowing System Architecture