Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
39m 54s
Masaüstü ve web uygulamaları oluşturmak karmaşık olabilir, ancak test edilecek güvenilir bir örnek API'nin olması süreci basitleştirir. Tim Corey, "WinForms ve Blazor ile Test API Kullanımı" adlı video öğreticisinde, hem bir Blazor WebAssembly projesinde hem de Visual Studio kullanılarak bir Windows Forms Uygulamasında test API'sinden nasıl yararlanılacağına dair adım adım bir izlenecek yol sunar. Bu yaklaşım, geliştiricilere güncel bilgiler sağlamanın yanı sıra, UI işlevselliğini oluşturma ve test etme konusundaki gerçek dünya senaryolarını da gösterir.
Tim, web geliştirme veya Windows Forms programlamayı öğrenirken bir örnek API'nin önemini vurgulayarak başlar. Güvenilir bir API, çeşitli kullanıcı arayüzü ortamlarında özellikleri test etmek için stabil bir arka uç işlevi görür. Visual Studio IDE'yi kullanarak, Tim yeni projeler oluşturma aşamasına geçer ve hem Blazor hem de Windows Forms platformlarını tanıtır.
Visual Studio'nun "Yeni Proje" diyalogunu kullanarak, Tim bir Blazor WebAssembly uygulaması seçer. Projeyi, "DemoApps" başlıklı bir çözüme "BlazorDemo" ismiyle adlandırır. Bu kurulum, hem sunucu tarafı hem de WebAssembly renderingini desteklemek için "otomatik" modunu kullanır.
Tim, istemci tarafı proje içinde CourseModel.cs adlı yeni bir dosya oluşturur. API'nin /courses uç noktasıdan bir JSON yükü kopyalayarak, Visual Studio'nun "JSON'u Sınıf olarak Yapıştır" aracını kullanarak sınıf yapısını otomatik olarak oluşturtur. Araç mükemmel olmasa da, Tim sınıfı Pascal biçimlendirme ve boş geçilebilir dizeler kullanarak C# standartlarına uyacak şekilde düzenler.
Tim oluşturulan özellikleri manuel olarak gözden geçirir, fiyatUSD gibi değerleri doğruluk için ondalık sayıya dönüştürür. Ayrıca JSON anahtarlarının doğru şekilde C# özelliklerine eşlemesini sağlamak için özellik adlarının büyük/küçük harfe duyarsız olması için bir JsonSerializerOptions nesnesi yapılandırır.
Ardından, Courses.razor adında bir Razor bileşeni ekleyerek onu /courses URL'si aracılığıyla erişilebilir bir sayfa haline getirir. Bir List<CourseModel> başlatır ve örnek API'yi çağırmak için bir HttpClient ekler. Bileşenin mantığı, veri kullanılabilirliğine dayalı olarak koşullu UI render ve try-catch ile hata yönetimini içerir.
Temel HTML ve Razor sözdizimini kullanarak, Tim kurs listesi üzerinden döngü yapar ve her kurs görüntüsünü tıklanabilir bir bağlantı olarak gösterir. Yerleşimi kontrol etmek ve erişilebilirlik için alt özellikleri atamak üzere yerleşik stiller uygular.
Tim, Blazor uygulamasının Program.cs içerisinde HTTP istemcisini yapılandırır, onu builder.Services.AddScoped(...) kullanarak kaydeder ve temel adres olarak https://thesampleapi.com atar. Bu kaydın, Blazor'un hibrit render modelini desteklemek için hem istemci hem de sunucu yapılandırmalarında gerçekleşmesi gerektiğini açıklar.
Blazor'un varsayılan ön rendere davranışı nedeniyle, sayfa yüklenirken iki API çağrısı yapar. Tim, @rendermode InteractiveAuto ve pre-render=false ayarını yaparak ön renderlemeyi devre dışı bırakır, bu da uzaktan veri işlerken yinelenen API isteklerini önler ve performansı artırır.
Visual Studio ortamını kullanarak Tim, .NET Framework'ü hedefleyen WinFormDemo adlı yeni bir Windows Forms App oluşturur. Varsayılan form adını Courses olarak değiştirip, UI'yi daha okunabilir hale getirmek için Özellikler Penceresi üzerinden yazı tipi boyutunu değiştirir.
Tim, iki klasör ekler: Modeller ve Hizmetler. Hizmetler'de, bir HttpClient örneği ile statik HttpService sınıfı oluşturur. Bu istemciyi, aynı API temel URL'sini hedef alacak şekilde yapılandırır. Tim, basitlik için statik bir yaklaşım kullanır, ancak üretim sınıfı geliştirme için bağımlılık enjeksiyonunu tavsiye eder.
Windows Forms Tasarımcısı'nda, Tim bir PictureBox ve iki Düğme kontrolünü ("Önceki" ve "Sonraki") forma sürükler. Görüntü kutusunun SizeMode ayarını Yakınlaştır olarak ayarlayarak, kurs resimlerinin kontrolün içine düzgünce oturmasını sağlar. Ayrıca, form başlığını "DevForge Kursları" olarak yeniden adlandırarak şirket markalarını yansıtır.
Form_Load olayı (Özellikler Penceresi'nde çift tıklayarak tetiklenir) kullanarak Tim, API'den veri almak için asenkron mantığı yazar. Ayrıca görüntü görüntüleme ve sınır geçerlilik kontrolünü gerçekleştiren yardımcı bir LoadCourse(int index) yöntemini tanımlar. Bu yöntem sağlamdır, null liste ve aralık dışı indeksleri zarif bir şekilde ele alır.
Tim "Önceki" ve "Sonraki" düğmelerine çift tıklayarak etkinlik işleyicilerini (object sender, EventArgs e) oluşturarak bağlar. Her düğme geçerliCourse indeksini ayarlar ve görüntülenen resmi güncellemek için LoadCourse() çağrısı yapar. Bu, bir slayt gösterisi gibi bir sorunsuz kullanıcı deneyimi sağlar.
Tim, uzak API yerine yerel bir Docker konteynırını nasıl kullanılacağını gösterir. En son görüntüyü çeker, rastgele bir portta çalıştırır ve HttpService.cs içindeki temel URI'yi günceller. İşlevselliği onayladıktan sonra, başarısızlık yönetimini test etmek için Docker konteynırını durdurup, kurtarmayı doğrulamak için yeniden başlatır.
Tim, Windows masaüstü uygulamaları veya Blazor ön uçlarını oluşturmada bir örnek API'nin ne kadar kullanışlı olabileceğini vurgulayarak sonuca varır. Güvenilir bir veri kaynağı ile, geliştiriciler arka uç kurulumuyla boğuşmadan grafik kullanıcı arayüzü tasarımında, form kontrollerinde, olaylarda ve düzen araçlarında ustalaşmaya odaklanabilirler.
Tim Corey'nin detaylı video öğreticisini takip ederek, geliştiriciler Blazor ve Windows Forms programlama konularında uygulamalı deneyim kazanır. Visual Studio ve bir test API kullanarak, modern kullanıcı arabirimleri oluşturmayı ve onları canlı veri kaynaklarına bağlamayı öğrenirler; bu da bu öğreticiyi .NET ekosistemini keşfeden geliştiriciler için değerli bir kaynak yapar.
İster formen programlamada yeni olun, ister Windows uygulamaları oluşturma becerilerinizi geliştirmek isteyin, bu kılavuz, geliştirmeye yönelik pratik, güncel bilgi ve en iyi uygulamaları içerir.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy