C# WinForms Turnuva Verilerini Veritabanına Kaydetme — Tim Corey ile Derinlemesine Bir İnceleme
[[academy-video-youtube({"vid": "rm1Avf5XJw8", "start_time": "0", "title": "C# Uygulama Baştan Sona Ders 19 - Turnuva Formu Yaratma Bölüm 5", "creator": "Tim Corey", "length": "2h 32m 16s"})]]
C# Başlangıçtan Bitişe Uygulama serisinin 19. dersinde, Tim Corey projenin en önemli aşamalarından birine değinir: tamamen oluşturulmuş bir WinForms turnuvasını bir veritabanına (ve metin dosyalarına) kaydetmek. WinForms, Windows masaüstü uygulamaları geliştirmek için bir çerçevedir ve gerçek dünya bağlamında veri kalıcılığını göstermek için ideal bir seçenektir.
Bu makale tamamen Ders 19 – Turnuva Formu Oluşturma (Bölüm 5)'a dayanır ve Tim'in kendi adım adım akıl yürütmesi, hata ayıklama süreci ve kodlama örüntülerini izler.
Teori sunmak yerine, Tim gerçek uygulama kodunu göstererek modellerin nasıl kaydedildiğini, nasıl yeniden oluşturulduğunu, hataların nasıl ayıklandığını ve kaçınılmaz olarak yaşanan hata durumlarında nasıl düzeltme yapıldığını adım adım anlatır. Bu, özellikle WinForms'ta pratik veri kalıcılığını anlamak için dersi çok değerli kılıyor.
Giriş
Başlangıçta, Tim 19. Dersi tanıtır ve nihayet bugün Turnuva Oluştur formunun tamamlandığını açıklar. Bu formun şu ana kadar en büyüklerden biri olduğunu ve birçok hareketli parçanın bunaltıcı hissettirebileceğini kabul ediyor. Bu derste, WinForms'un olay odaklı modelini ve hızlı uygulama geliştirme özelliklerini kullanarak gerçek dünya formunu tamamlamayı öğreneceksiniz.
Tim, karmaşıklığın yönetilebilir parçalara ayrıldığını ve bugünün odak noktasının turnuva verilerini kaydetmek için gerekli son mantık—ya bir SQL veritabanına ya da bir metin dosyasına—olduğunu ve ardından özelliğin tamamlandığını izleyicilere güvence veriyor. WinForms, hızlı uygulama geliştirme (RAD) ve dahili iş araçları veya hafif yardımcı programlar oluşturmak için idealdir. Nispeten basit olay odaklı modeli ve çevrimiçi kaynakların bolluğu, yeni geliştiricilerin öğrenmesini kolaylaştırır.
Visual Studio'da Yeni Proje Oluşturma
Visual Studio ile bir Windows Forms uygulamasına başlamak kolaydır. Başlangıç penceresinden Visual Studio'yu açarak ve 'Yeni proje oluştur'u seçerek başlayın. 'Yeni proje oluştur' iletişim kutusunda, arama çubuğuna 'Windows Forms Uygulaması' yazın—bu, ihtiyacınız olan şablonu hızla getirir. Seçeneklerinizi daraltmak için dil olarak C# ve platform olarak Windows'u filtreleyin.
'Windows Forms Uygulaması (.NET Framework)' proje türünü bulduktan sonra, seçin ve İleri'ye tıklayın. 'Yeni projenizi yapılandırın' penceresinde, projenize (örneğin, HelloWorld) ad verin, bir konum seçin ve ardından Oluştur'a tıklayın. Visual Studio yeni bir çözüm oluşturacak ve uygulamanız için grafik kullanıcı arayüzü olarak hizmet eden ana formunuzu açacaktır. Bu form, kullanıcı arayüzünüzü tasarlayacağınız ve kontroller ekleyeceğiniz yerdir, Windows masaüstü uygulamanız için temeli oluşturur. Şablon, gerekli tüm dosyaları ve .NET Framework referanslarını içerir, böylece uygulamanızın özelliklerini ve işlevselliğini oluşturmaya odaklanabilirsiniz.
Turnuva Oluşturma Düğmesi Mantığını Gözden Geçirme
Tim bir inceleme ile başlar. Programda her şeyin Turnuva Oluştur uzunundan başladığını açıklar. Bir C# WinForms programında, olay işleyicileri, kullanıcıların Turnuva Oluşturma düğmesine tıklamak gibi belirli eylemlerine yanıt olarak kodu çalıştırmak için yazılır. Bu noktaya kadar, uygulama zaten:
Kullanıcı girdisini doğruladı
Turnuva nesnesini oluşturdu
- Bellekte turlar ve eşleşmeler oluşturdu
Tim, eksik parçanın bu veriyi kalıcı hale getirmek olduğunu açıklar. Daha önce, uygulama turnuvaları, ödülleri ve girişleri kaydedebiliyor ama tur bilgisi eksikti. Bu ders bunu düzeltiyor.
Turnuvayı SQL'de Kaydetme: Büyük Resim
Tim, SQL bağlayıcısının CreateTournament yöntemine gider ve izleyicilere veri kaydetmenin belirli bir düzeni takip ettiğini hatırlatır:
Turnuvayı kendisi kaydet
Turnuva kimliğini al
Ödülleri kaydet
Girişleri kaydet
- Şimdi: Turları ve eşleşmeleri kaydet
Not: İlişkili tüm verilerin doğru bir şekilde ilişkilendirilmesini sağlamak ve uygulamanın veri bütünlüğünü korumak için bu kaydetme sırasını takip etmek önemlidir.
Tim, modellerin iyi olduğunu vurgular ve bu dersin daha önce belirlenen modelin aynısını takip ettiğini açıklar.
WinForms, ayrıca uygulamanın veri yapısını sürdürmeye yardımcı olan düğmeler, metin kutuları ve etiketler gibi yeniden kullanılabilir UI öğeleri oluşturmayı da destekler.
Veri Yapısı Karmaşıklığını Anlama
Burada, Tim, turları kaydetmenin neden daha karmaşık olduğunu açıklamak için durur.
Bir turnuvanın Turları vardır
Her bir tur MatchupModel'den oluşan bir listedir
- Her eşleşme MatchupEntryModel nesneleri içerir
Tim bunun bir listesinin bir listesi olduğunu ve bu karmaşıklığın bu aşamada normal olduğunu açıklar. İzleyicilerden paniğe kapılmamalarını istiyor - bu, gerçek dünya verilerini modellenmenin doğal bir sonucudur.
Ayrıca, WinForms uygulamalarının, geliştiricilerin zengin özellikli masaüstü uygulamalarını verimli bir şekilde oluşturmalarına yardımcı olan veri ızgaraları ve kullanıcı arayüzü kontrolleri gibi bileşenler kullanılarak inşa edildiğini belirtir. Windows Forms sınıf kütüphanesindeki tüm görsel öğeler Control sınıfından türetilir, bu kullanıcı arayüzünü oluşturmak ve özelleştirmek için tutarlı bir temel sağlar.
Kaydetme Sırasının Neden Önemli Olduğu
Videodaki en kritik açıklamalardan biri burada gerçekleşir.
Tim, verilerin sırayla kaydedilmesi gerektiğini çünkü:
Bir eşleşme girişi, üst eşleşmenin kimliği var olmadan kaydedilemez
- Bir tur, önceki turun kimlikleri olmadan bir sonraki tura referans veremez
Nesnelerin aynı bellek adreslerine atıfta bulunduğundan, bir yerdeki kimlik doldurulduğunda, tüm referansların otomatik olarak güncellendiğini açıklar. Ancak, geliştiricilerin C# WinForms uygulamalarında, kullanıcı eylemleri ve veri değişikliklerine yanıt veren uygulama dahilinde tipik bir kısmı olan kimlikler atandıkça nesne referanslarını değiştirmeleri gerekebilir.
Tüm Modellerin Kimlikleri Olduğundan Emin Olmak
Tim önemli bir düzeltmeye işaret eder: MatchupEntryModel henüz bir kimlik özelliğine sahip değil.
Hemen gerekmese bile, Tim her veri tabanı destekli modelin tutarlılık ve gelecekteki kullanım için bir kimliğe sahip olması gerektiğini açıklayarak yine de ekler. Varsayılan olarak, Windows Forms uygulamaları, uygulamanın standart yapısını ve davranışını sağlamak için otomatik olarak kullanıcı arayüzü kodu üreten Form1.Designer.cs gibi dosyaları kullanır.
Mantığı Basit Adımlara Bölme
Bu bölüm, bir C WinForms uygulamasında veri kaydetme konusunda bir ders işlevi görür.
Tim, favori öğretme benzetmelerinden birini kullanır: bir fili birer ısırıkla yemek.
Kaydetme mantığını temiz adımlara böler:
Her turu döngüyle gezin
Her turun içinde, eşleşmeler için döngüyle gezin
Her eşleşmeyi kaydet
Eşleşme girişleri için döngüyle gezin
- Her girişi kaydet
Her adım kendi başına basittir—ve birlikte güçlüdürler.
Visual Studio'daki sürükle ve bıraklı basit görsel tasarımcı, WinForms'u dahili araçlar, prototipler ve basit uygulamalar yapmak için mükemmel hale getirir.
Turlar ve Eşleşmeler İçinden Dönüş Yapma
Tim, her turun kendisinin bir MatchupModel listesinin parçası olduğu bir tur listesini nasıl döngüyle gezeceğini gösterir.
İlk başta var kullanmaktan özellikle kaçınır ve neden açıklar: açık tipler, özellikle iç içe geçmiş listelerle çalışırken geliştiricilerin ne üzerinde döngü yaptığını anlamasına yardımcı olur. Windows Forms geliştirme sırasında farklı programlama dilleriyle çalışırken net kod özellikle önemlidir, çünkü bu kodun sürdürülebilirliğini artırır ve farklı diller için yerelleştirme desteği sağlar.
Ayrıca önemli bir felsefeyi paylaşır:
'En iyi kod, bir junior geliştiricinin anlayabileceği koddur.'
Windows Forms uygulamaları olay odaklıdır ve Microsoft'un .NET Framework'ü tarafından desteklenir.
Eşleşmeleri Ekle Depolanmış Prosedürü Oluşturma
Tim, SQL'e geçer ve spMatchups_Insert'i oluşturur.
Alanları açıkça açıklar:
Turnuva Kimliği
Eşleşme Turu
- Kazanan Kimliği (boş olabilen)
Eşleşmelerin ne zaman gerçekleştiğini izlemek için tarih gibi ek alanlar da eklenebilir.
Tim, bu aşamada kazanan tanımlamıyor. Bir eşleşmenin bay olduğunu kabul ederse bile, gerçek maçlarla aynı mantığı kullanarak kazananları daha sonra işlemesini tercih eder.
Windows Forms, mevcut Windows API'sini yönetilen kodla sararak yerel Windows Kullanıcı Arayüzü Genel Kontrollerine erişim sağlar.
Eşleşme Girişlerini Kaydetme ve Boş (NULL) İşlemeli
Tim başka bir depolanmış prosedür oluşturur: spMatchupEntries_Insert.
Açıklar:
Oyunlar oynanmadığı için puanlar NULL'dur
NULL sıfır ile aynı değildir
- TeamCompeting daha sonraki turlarda NULL olabilir
Sıfırın gerçek bir değer olduğunu, ancak NULL'un henüz mevcut bir değer olmadığını açıklamak için futbol ve golf içeren unutulmaz bir örnek verir.
NULL değerlerin kontrollerde nasıl görüntülenip işleneceği gibi farklı veri senaryolarını ele almak için Windows Forms projenizde uygulama ayarları yapılandırılabilir.
Windows Forms, Microsoft .NET, .NET Framework veya Mono'nun bir parçası olarak dahildir.
Bir .NET Framework Uygulamasının Özellikleri ve Fonksiyonları
.NET Framework üzerine inşa edilmiş bir Windows Forms uygulaması, modern Windows masaüstü uygulamaları oluşturmak için güçlü bir özellik seti sunar. Windows Forms (WinForms) ile, sezgisel ve etkileşimli kullanıcı arayüzlerini tasarlamayı kolaylaştıran zengin bir grafik kullanıcı arayüzü (GUI) kütüphanesine erişiminiz vardır. WinForms, Microsoft .NET, .NET Framework ve Mono ile birlikte gelen ücretsiz, açık kaynaklı bir çerçevedir ve yönetilen kod yoluyla yerel Windows kontrolleri ve Windows API ile sorunsuz bir entegrasyon sağlar.
Visual Studio IDE, Windows Forms Tasarımcısı gibi araçlarla geliştirme deneyiminizi geliştirir, bu araç formunuza düğmeler, metin kutuları ve etiketler gibi yaygın kontrolleri doğrudan sürükleyip bırakmanıza olanak tanır. Bu görsel yaklaşım, kullanıcı arayüzü tasarımını hızlandırır ve Özellikler penceresini kullanarak özellikleri ve olayları özelleştirmenize olanak tanır. Yerleşik kod düzenleme, hata ayıklama ve proje yönetimi desteği ile Visual Studio, Windows masaüstü uygulamalarınızı oluşturma, test etme ve geliştirme sürecini kolaylaştırır. İster iş araçları, ister yardımcı programlar ya da eğitim yazılımı oluşturuyor olun, .NET Framework ve WinForms, zengin özellikli, duyarlı ve kullanıcı dostu uygulamalar sunmak için güçlü bir platform sağlar.
Hata Ayıklama Düzenleme ve Devam Etme ile
Bir istisna meydana geldiğinde, Tim paniğe kapılmaz—öğretir.
Visual Studio'nun Düzenleme ve Devam Etme özelliğini kullanarak:
Çalıştırmayı duraksatır
NULL kontrolleri ekler
- Uygulamayı yeniden başlatmadan çalışmayı devam ettirir
'Ctrl' kombinasyonlarını (örneğin, Araç Kutusu'nu açmak için 'Ctrl + Alt + X') kullanmak gibi klavye kısayolları, Visual Studio'da hata ayıklamayı ve kullanıcı arayüzü kontrollerine erişimi hızlandırabilir.
Aşağıdaki işlemleri nasıl yapacağını gösterir:
TeamCompeting'in NULL olup olmadığını kontrol edin
SQL'e .ID'ye erişmek yerine NULL gönderin
- Aynı mantığı ParentMatchup için uygulayın
Bu, Tim'in kullandığı tam olarak gerçek dünya hata ayıklama iş akışıdır.
Visual Studio, Windows Forms Tasarımcısı dahil olmak üzere, C# geliştirme için geniş bir özellik ve araç yelpazesi sunar.
SQL'deki Verileri Doğrulama
İki küçük hatayı düzeltikten sonra, Tim veritabanını sorgular.
Şu hususları doğrular:
Eşleşmeler doğru bir şekilde kaydedildi
Tur numaraları doğru
Bay mantığı çalışıyor
- Üst/alt ilişkiler doğru
Kaydettikten sonra veritabanındaki doğru ilişkileri ve verileri gözlemleyin, çünkü bu görsel geri bildirim, uygulama mantığının amacına uygun çalıştığını doğrulamak için önemlidir.
Tim çok karmaşık bir özellikte sadece iki hatanın meydana geldiğine dikkat çeker ve bu başarıyı planlama, modeller ve işi küçük parçalara ayırmaya bağlar.
Windows Forms, müşteriye yönelik masaüstü, dizüstü bilgisayar ve tablet PC uygulamaları yazmak için bir platform sağlar, bu da Windows geliştirme için çok yönlü bir seçim yapar.
Derlemek ve Arama Yöntemlerini Hazırlamak
Tim, projeyi hala derlediğinden emin olarak başlamadan bitmemiş parçalara geçer. 1:17:08'de, sistemin yöntemlere dizeler göndereceğini açıklıyor ve bir veya daha fazla MatchupEntryModel nesnesini geri alacak, metin dosyalarından çekilen.
1:17:40'da Tim, LookupTeamById(int id) adlı bir yöntem uyguluyor. Verilerin bir metin dosyasında saklandığında yalnızca kimliğin kaydedildiğini, tam nesnenin değil olduğunu açıklar. Bu nedenle, veri yüklerken uygulama o kimliği yeniden tam TeamModel'e dönüştürmelidir.
Tim, bunun yeni bir mantık olmadığını belirtiyor—dosyadaki tüm takımları yüklemek için zaten kullanılan aynı modeli yeniden kullanıyor. Bu yeniden kullanımın kasıtlı olduğunu ve kodu düzgün bir şekilde yapılandırmanın temel bir avantajı olduğunu özellikle vurguluyor. Geliştiriciler, benzer mantığı uygularlarken, ek rehberlik için mevcut yöntemlere ve resmi belgelere de başvurabilirler.
Windows Forms, GUI geliştirme için daha önceki ve daha karmaşık olan C++ temelli Microsoft Foundation Class Library'nin yerini alacak şekilde görülüyor.
Dosya Yollarını GlobalConfig ile Merkezileştirme
1:20:27'de, Tim bir tasarım sorununu belirtiyor: dosya adları her yerde geçiriliyor, oysa onlar sabitler. Açıkça bunun 'saçma' hissettirdiğini söylüyor.
Bunu düzeltmek için, Tim dosya adı sabitlerini GlobalConfig'e taşıyor ve bunları genel yapıyor. 1:21:33'te, bunun dosya yollarını birçok yöntem katmanı boyunca geçirmeyi önlediğini açıklıyor. Visual Studio'daki Çözüm Gezgini bu proje dosyalarını ve genel yapıyı yönetmeye yardımcı olur, bu sabitleri bulmak ve güncellemek daha kolay hale gelir.
Ancak, 1:22:24'te, Tim açıkça bir kusur hakkında dürüst: bu sabitler şimdi iki yerde var—GlobalConfig ve TextConnector. Bu, DRY (Don't Repeat Yourself) ilkesinin bir ihlali olduğunu açıkça belirtir ve bunun daha sonra yeniden yapılandırılması gerektiğini ama bugünün o gün olmadığını not eder.
Ayrıca Windows Forms'un, Microsoft Foundation Class (MFC) gibi varsayılan bir uygulama çerçevesi sağlamadığı not edilmesi önemlidir.
Dizeleri Eşleşme Girişi Modellerine Dönüştürme
1:24:37'de Tim, ConvertStringToMatchupEntryModel'i uygulamaya başlar. Eşleşme girişlerinin boru ile ayrılmış kimlikler olarak saklandığını, bu nedenle ilk adımın dizeyi boru üzerinde bölmek olduğunu açıklar.|. Kullanıcı arabirimi navigasyonu ve düzenlemesi için birincil UI konteyneri olarak sayfa kullanan web uygulamalarının aksine, WinForms, kullanıcı arabirimini organize etmek için formlar kullanır.
1:25:17'ye kadar, her kimliği döngüyle gezer, eşleşme girişi dosyasından kontrol eder ve karşılık gelen modeli bir çıktı listesine ekler. Model tutarlıdır:
yükle → dönüştür → kimlikle filtrele → modeli döndür
Tim, tutarlılığın hata ayıklamayı mümkün kıldığını vurgular.
Windows Forms uygulamaları, C# veya Visual Basic gibi .NET programlama dilleri kullanılarak geliştirilebilir.
ConvertToMatchupEntryModels Uzantısını İnşa Etme
1:27:56'da Tim, bir uzantı metodu olan ConvertToMatchupEntryModels(List< string>)'ı oluşturur. Süreç boyunca rehberlik için mevcut bir dönüşüm metodunu (PersonModel için) kopyalar ve bunu sadece bir model referansı olarak kullanır.
1:30:28'e kadar, Tim kolonları açık bir şekilde eşler:
Kolon 0 → Kimlik
Kolon 1 → TeamCompeting Kimliği
Kolon 2 → Puan
- Kolon 3 → Üst Eşleşme Kimliği
Kayıtlı değerin sadece bir kimlik olduğunu ve tam nesnenin arama yöntemlerini kullanarak yeniden inşa edilmesi gerektiğini açıklar. WinForms'taki bazı UI bileşenleri ve temalar, Microsoft Office'ten, Office 2019 Renkli ve Office 2019 Siyah gibi ilham alınmıştır ve bu tanıdık bir kullanıcı deneyimi sağlar.
DevExpress gibi üçüncü taraf satıcılar, WinForms için kapsamlı UI bileşen paketleri sunarlar.
Ebeveyn Eşleşmelerini Güvenli Bir Şekilde Yönetme
1:38:49'da, Tim büyük bir sorun fark eder: ebeveyn eşleşmeler var olmayabilir (özellikle ilk turda. Eksik bir kimlik üzerinde First() çağırmak uygulamayı çökertebilir.
1:39:09'da, int.TryParse kullanan bir düzeltme yapar. Parçalama başarısız olursa, EbeveynEşleşme null olarak ayarlanır. Tim, bunun ilk tur eşleşmeleri için tam olarak olması gereken şey olduğunu dikkatlice açıklıyor. WinForms veya üçüncü taraf kütüphanelerin her sürümünde genellikle dahil edilen yeni özellikler ve düzeltmeler, bu tür senaryoların nasıl ele alındığını geliştirir.
Geçersiz bir takım kimliği gibi asla varolmaması gereken durumlarda, hataların kabul edilebilir olduğunu pekiştirir.
DevExpress WinForms Aboneliği, sağlam uygulamalar oluşturmak için kapsamlı seçenekler sunan 190'dan fazla UI kontrolü ve kütüphanesini içerir.
Eşleşmeleri ve Girişleri Dosyalara Kaydetme
1:44:00'da Tim veri kaydetmeye geçer. Tüm eşleşmeleri yükler, bir sonraki kullanılabilir kimliği belirler, atar ve ardından eşleşme girişlerini kaydetmeye geçer. Verilerinizi kaydettikten sonra, WinForms uygulamanızı çalıştırmak için Visual Studio'da Başlat düğmesine tıklayarak veya F5 tuşuna basarak uygulamayı test edebilirsiniz.
1:46:44'e kadar Tim, yeniden kullanılabilir metodların gücünü vurgular—dosyaları yüklemek ve dönüştürmek artık 'sıkıcı', ki bunun iyi bir şey olduğunu söyler.
Her girişin kimlik alabilmesi için önce eşleşme girişlerini kaydeder, ardından boru ile ayrılmış dizeler olarak o giriş kimliklerini saklayan eşleşmenin kendisini kaydeder.
Ek olarak, DevExpress WinForms Aboneliği, WinForms uygulamalarınıza katma değer sağlayabilecek bir son kullanıcı rapor tasarımcısı ile bir raporlama suitini içerir.
Eşleşme Girişlerini Veritabanına Kaydetme
1:49:43'te, Tim kaydetme mantığını satır satır oluşturur. Daha önceki dönüşüm modelini dikkatlice tersine çevirir:
Kimlik
TeamCompeting Kimliği (veya boş dize)
Skor
- Üst Eşleşme Kimliği (veya boş dize)
Kaydetme mantığını açıkladıktan sonra, WinForms'un çeşitli .NET platformları üzerinde desteklendiği, uyumluluğu ve devam eden güncellemeleri güvence altına almanın önemli olduğunu belirtmek önemlidir.
1:52:02'de, Tim boş dizelerin neden önemli olduğunu açıklar: bunlar, sütun sırasını bozmak yerine, analiz mantığını korurlar.
Ek olarak, DevExpress WinForms kontrolleri, gelişmiş performans için DirectX donanım hızlandırmasını destekler.
Eşleşmeler ve Kazananları Kaydetme
1:55:02'de, Tim eşleşmelerin kendilerini kaydeder. Çünkü eşleşmelerin birden fazla girişi olabilir, yardımcı adı reuse ederek giriş listelerini boru ile ayrılmış dizelere dönüştürür. Geliştiriciler, kullanıcı arabirimini tasarlamayı kolaylaştıran Visual Studio'da Araç Kutusu'nu kullanarak Windows Forms formlarına düğmeler ve etiketler gibi kontroller ekleyebilirler.
1:58:30'de, kazanan alanı için aynı null işleme mantığını uygular. Henüz bir kazanan yoksa, boş bir dize kaydedilir.
Windows Forms, geliştiricilerin masaüstü, tablet ve PC'ler için uygulamalar oluşturmalarını sağlar.
Turlar Yeniden Yüklenirken Turları Hizmet Dışı Bırakma
2:02:03'de, Tim son TODO ile ilgilenir: tur bilgilerini yükleme. Tur bilgilerini borularla ve ardından üst (^) işaretle ayrılmış eşleşme kimliklerinin listeleri olarak saklandığını açıklar.
2:09:13'de, tam olarak iç içe yapıyı yeniden oluşturur:
Kimlikler → MatchupModels
MatchupModels → Tur Listeleri
- Tur listeleri → TurnuvaModeli
Tim, yeniden yapılandırmayı açıkladıktan sonra, bazı diğer frameworklerden farklı olarak, WinForms'un UI ve veriyi organize etmede farklı bir yaklaşım kullandığını ve bu durumun geliştiricilerin iç içe yapıları yönetmelerini nasıl etkileyebileceğini belirtiyor.
Tim, bu iç içe geçmenin kodun neden karmaşık hissettirdiğini ve bu nedenle adım adım incelemenin neden bu kadar önemli olduğunu vurguluyor.
Ayrıca, DevExpress WinForms Aboneliği'nin WinForms uygulamaları için özelleştirilebilir temalar ve görünümler içerdiğini belirtmek gerekir.
Gerçek Hataları Hata Ayıklama
2:11:22'den itibaren, Tim uygulamayı kasten çalıştırır ve hatalarını ayıklar:
NullReferenceException
Giriş dizesi doğru formatta değil
- Dizi hiçbir öğe içermiyor
Tim, hataları gizlemek yerine, bunları nasıl takip edeceğini, değerleri inceleyeceğini ve yürütme sırasını nasıl düşüneceğini tam olarak gösteriyor. WinForms ilk kez yıllar önce piyasaya sürüldü ve zamanla gelişti.
2:20:30'da, dairesel bir kaydetme sorunu tespit ediyor: girişlerin onları referans alabilmesi için eşleşmelerin önceden var olması gerekiyordu. Çözümü pragmatik—iki kez kaydet. Açıkça bunun zarif olmadığını kabul ediyor ama şöyle söylüyor:
"Çalışan kod, hala hatası olan yeniden düzenlenmiş koddan daha iyidir."
Windows Forms artık GitHub üzerinde .NET Core için açık kaynaklı bir proje olarak mevcuttur.
Windows Forms Uygulaması Dağıtımı
Windows Forms uygulamanızı Visual Studio'da oluşturup test ettikten sonra, bir sonraki adım dağıtımdır—uygulamanızı kullanıcılara sunma işlemidir. Visual Studio, Windows masaüstü uygulamaları için en uygun seçeneklerden biri olan ClickOnce ile birçok dağıtım seçeneği sunar. ClickOnce, uygulamanızı bir ağ dosya paylaşımı, web sunucusu veya hatta bir CD/DVD'ye yayınlamanıza olanak tanır, bu da son kullanıcılar için kurulumu kolaylaştırır.
Dağıtmak için, uygulamanızı paketlemek üzere Visual Studio'nun yayınlama araçlarını basitçe kullanın. Yayınlamadan önce, kodunuzda herhangi bir hata veya sorun yakalamak ve düzeltmek için Visual Studio'nun hata ayıklama araçları ile uygulamanızı kapsamlı bir şekilde test edin. Dağıtıldıktan sonra, kullanıcılar uygulamanızı kurulum dosyasını çalıştırarak veya bir kısayola tıklayarak yükleyebilir ve uygulama çalışarak anında etkileşim için grafik kullanıcı arayüzünü gösterecektir. ClickOnce, Windows Installer veya üçüncü taraf bir dağıtım aracını tercih ederseniz edin, süreç kullanıcılarınızın Windows Forms uygulamanızın tam işlevselliğine ve özelliklerine minimum zahmetle erişebilmesini sağlar. Bu sadeleştirilmiş dağıtım süreci, izleyicilerinize güvenilir, profesyonel Windows masaüstü uygulamaları sunmanıza yardımcı olur.
Kapanış Düşünceleri
Bu dersin sonunda, Tim Corey metin dosyalarını veritabanı olarak kullanan, tamamıyla çalışan bir veri kalıcılık sistemi göstermektedir. Daha da önemlisi, gerçek dünya hatalarının nasıl ortaya çıktığını, kalıpların düzeltmeleri nasıl yönlendirdiğini ve yürütme sırasını anlamanın neden mükemmellikten daha önemli olduğunu gösteriyor.
Bu ders, gösterişli veritabanları hakkında değildir—bir geliştirici gibi düşünmekle ilgilidir.

