.NET 5’te Heyecan Verici Yeni Özellikler

.NET 5.0 resmi olarak bu hafta piyasaya sürüldü ve beraberinde .NET ekosistemine bir dizi iyileştirme getirdi. Birçok .NET geliştiricisi gibi ben de hızlıca indirip test ettim. Bu makalede, .NET 5’teki en heyecan verici yeni özelliklerden bazıları anlatılmaktadır.

.NET 5 nedir?

.NET, Microsoft’un web, mobil ve masaüstü uygulamaları dahil bir dizi farklı uygulama için uygulama yazmak için kullanılan geliştirici platformudur. .NET, C #, F # ve VB dillerinde yazan geliştiriciler için en yaygın platformdur.

Başlangıçta .NET Framework yalnızca Windows makinelerinde çalışacak şekilde tasarlanmıştı ve bu ona önemli sınırlamalar getiriyordu. Tüm bunlar 2016’da .NET Core’un ilk sürümü piyasaya sürüldüğünde değişti ve geliştiricilerin neredeyse her tür cihaz için platformlar arası uygulamalar yazmasına izin verdi.

Ancak hem .NET Framework hem de .NET Core aynı anda geliştirilmeye devam etti. Şimdiye kadar.

.NET 5, her ikisinin de en iyi özelliklerini tek bir çerçevede bir araya getiren iki ayrı çerçevenin birleştirilmesini temsil eder. Microsoft, .NET 5’ten başlayarak yalnızca bu yeni birleşik çerçeveyi güncellemeye devam edecektir.

En İyi Yeni .NET 5 Özellikleri

C # 9

.NET 5, C # (C # 9) ve F # (F # 5) dillerinde yapılan güncellemeleri beraberinde getirir. F # konusunda deneyimim olmadığı için F # geliştiricilerinden özür dilerim, bu yüzden onu bu incelemenin dışında bırakacağım.

Üst düzey ifadeler

Herhangi bir C # kodu yazmış olan herhangi biri, çok basit bir uygulama yapmak için bile oldukça fazla standart kod olabileceğini kabul eder, bu da gereksiz ve kafa karıştırıcı olabilir. Örneğin, en temel Hello World programı şöyle görünür:

using System;
namespace MyConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}

Üst düzey ifadeler, kodunuz hakkında basitleştirmenize izin veren bazı varsayımlarda bulunur. Örneğin, herhangi bir ad alanı bildirilmezse, genel ad alanının kullanıldığı varsayılır. Ayrıca, belirtilmezse, kodun Program sınıfının Main yöntemine ait olduğu varsayılır. Bu nedenle, en üst düzey ifadeler kullanılarak, aynı program şu şekilde basitleştirilebilir:

using System;
Console.WriteLine("Hello World");

Benim görüşüme göre, burada amaç çok daha açık, tüm klişe çıkartılmış. En üst düzey ifadeler hakkında daha fazla bilgi edinmek için bu makale çok yararlıdır .

Kayıt türleri

Programlamada gittikçe daha popüler hale gelen bir model, değişmezliktir. Bu, bir nesne oluşturulduktan sonra değiştirilemeyeceği (veya değiştirilemeyeceği) fikridir. Bu, beklenmedik yan etkilerin ortaya çıkma potansiyeli azaldığından daha güvenilir kod oluşturmaya yardımcı olur.

C # 9, değişmez karmaşık referans türleri olarak hareket eden Kayıt türlerini sunar. Örneğin, bir Kişi kaydı tanımlayabiliriz:

public record Person
{
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
    public string FirstName { get; }
public string LastName { get; }
}

Kayıt türü özelliklerinin değerleri, nesne başlatıldıktan sonra değiştirilemez.

Kayıt türlerinin bir başka güzel özelliği, değer türleriyle aynı şekilde karşılaştırılabilmeleridir. Diğer bir deyişle, kayıttaki değerler eşitse, kayıtların kendileri eşit kabul edilir. Bu, aynı örneğe atıfta bulunmalarına bağlı olarak eşitliği belirleyen normal referans türlerinden farklıdır. Örneğin:

// if Person is a class
var sam1 = new Person("Sam", "Walpole");
var sam2 = new Person("Sam", "Walpole");
sam1 == sam2 // false
// if Person is a record
var sam1 = new Person("Sam", "Walpole");
var sam2 = new Person("Sam", "Walpole");
sam1 == sam2 // true

Kayıt türlerinin, burada daha ayrıntılı olarak incelenebilecek başka güzel özellikleri vardır .

Yalnızca başlatmalı ayarlayıcılar

Sınıfları aşağıdaki şekilde başlatmak yaygındır:

var person = new Person
{
FirstName = "Sam",
LastName = "Walpole"
};

Bununla birlikte, belirli bir mülk için ayarlayıcıya veya özel ayarlayıcıya sahip olmak istemediğiniz durumlarda, başlangıçtan sonra değerinin değiştirilmesini istemiyor olabilirsiniz. Bununla ilgili sorun, yukarıdaki örnek artık kullanılabilir bir ayarlayıcıya sahip olmaya dayandığından işe yaramıyor. Bu, tüm başlatılabilir özellikleri sınıfınızın kurucusuna dahil etmeye başvurmanız gerektiği anlamına gelir; bu, karmaşık sınıflar için kolayca anlaşılması uzun ve zor olabilir.

C # 9, yukarıdaki sözdiziminin başlatma için kullanılmasına izin veren, yalnızca başlatma ayarlayıcıları sunar, ancak daha sonra özelliğin bir ayarlayıcısı yoktur ve bu nedenle değiştirilemez.

public class Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}

.NET MAUI

.NET MAUI, .NET Çok Platformlu Uygulama Kullanıcı Arabirimi anlamına gelir ve aynı kodun Android, iOS, macOS ve Windows’u tek bir projede dağıtmak için yeniden kullanılmasına izin veren bir kullanıcı arabirimi çerçevesidir.

.NET MAUI, iyi bilinen MVVM (Model Görünümü Görünüm Modeli) modelinin yanı sıra yeni bir MVU (Model Görünümü Güncelleme Düzeni) destekler. .NET MAUI hakkında daha fazla bilgi edinmek için lütfen buraya bakın .

Entity Framework Core 5.0

Teknik olarak resmi olarak .NET 5’in bir parçası olmasa da, EF Core birçok .NET geliştiricisi için en uygun ORM’dir ve yayın döngüsü .NET 5’inki ile çakışır.

EF Core 5’e gelen bir dizi güncelleme var ve bunların tümü burada bulunabilir . Ancak, en çok heyecanlandığım güncelleme aşağıdadır.

Çoktan çoğa ilişki eşlemesi

Bu, EF Core kullanıcıları için uzun süredir büyük bir hayal kırıklığı olmuştur. EF Core’un önceki sürümlerinde, çoktan çoğa bir ilişki yapılandırmak için, yabancı anahtarları tutmaktan başka bir amacı olmayan birleştirme tablosu için açıkça bir sınıf oluşturmak gerekiyordu.

public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Text { get; set; {
    public ICollection<PostTag> PostTags { get; set; }
}
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
    public ICollection<PostTag> PostTags { get; set; }
}
public class PostTag
{
public int Id { get; set; }
    public int PostId { get; set; }
public Post Post { get; set; }
    public int TagId { get; set; }
public Tag Tag { get; set; }
}

Gördüğünüz gibi, bu çok fazla ek standart koddur ve başa çıkmanız gereken çoktan çoğa ilişkiniz olduğunda çok sinir bozucu olabilir.

Neyse ki EF Core 5’te çoktan çoğa ilişkiler, her iki varlıkta da bir koleksiyon özelliğine sahip olarak yapılandırılabilir ve bu birleştirme sınıfa duyulan ihtiyacı ortadan kaldırır.

public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Text { get; set; {
    public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
    public ICollection<Post> Posts { get; set; }
}

Sonuç

Yukarıda, en çok heyecanlandığım .NET 5’teki bazı yeni özelliklerden bahsetmiştim. .NET 5 beraberinde bir dizi başka büyük değişiklik de getiriyor, bu yüzden kaçırdığım özellikler olduğuna şüphe yok. .NET 5’te en sevdiğiniz özellikler nelerdir? Aşağıdaki yorumlarda bana bildirin!

Kaynaklar:

Microsoft – .NET 5’teki yenilikler

Richard – Announcing .NET 5.0

You may also like...