.NET nedir? Giriş ve genel bakış

.NET, birçok türde uygulama oluşturmaya yönelik ücretsiz, platformlar arası açık kaynak bir geliştirici platformudur. .NET, birçok yüksek ölçekli uygulama tarafından üretimde kullanılan yüksek performanslı bir çalışma zamanı üzerine kurulmuştur.

Bulut uygulamaları

Platformlar arası istemci uygulamaları

Windows uygulamaları

Diğer uygulama türleri

Özellikler

.NET özellikleri, geliştiricilerin verimli bir şekilde güvenilir ve performanslı kod yazmasına olanak sağlar.

.NET kullanma

.NET uygulamaları ve kitaplıkları kaynak kodundan ve proje dosyasından oluşturulur ve kullanılarak oluşturulur. NET CLI veya Visual Studio gibi bir Tümleşik Geliştirme Ortamı (IDE).

Aşağıdaki örnek, en düşük .NET uygulamasıdır:

Proje dosyası:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>

Kaynak kodu:

Console.WriteLine("Hello, World!");

Uygulama .NET CLI ile derlenebilir ve çalıştırılabilir:

% dotnet run
Hello, World!

Ayrıca iki ayrı adım olarak derlenebilir ve çalıştırılabilir. Aşağıdaki örnek, uygulama adlı bir uygulama içindir:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

İkili dağıtımlar

  • .NET SDK -- Uygulama geliştirme, derleme ve test etme için araçlar, kitaplıklar ve çalışma zamanları kümesi.
  • .NET Çalışma Zamanları -- Uygulamaları çalıştırmak için çalışma zamanları ve kitaplıklar kümesi.

.NET'i şu kaynaktan indirebilirsiniz:

Ücretsiz ve açık kaynak

.NET ücretsiz, açık kaynak ve bir .NET Foundationprojesidir. .NET, Microsoft ve GitHub'daki topluluk tarafından çeşitli depolarda tutulur.

.NET kaynağı ve ikili dosyaları MIT lisansı ile lisanslandırılır. İkili dağıtımlar için Windows'ta ek lisanslar geçerlidir .

Destek

Microsoft; Android, Apple, Linux ve Windows işletim sistemlerinde .NET'i destekler. Arm64, x64 ve x86 mimarilerinde kullanılabilir. MacOS Rosetta 2 gibi öykünülmüş ortamlarda da desteklenir.

.NET'in yeni sürümleri kasım ayında yıllık olarak yayınlanıyor. Tek numaralı yıllardaki .NET sürümleri Uzun Süreli Destek (LTS) sürümleridir ve üç yıl boyunca desteklenir. Çift numaralı yıllardaki sürümler, Kısa Vadeli Destek (STS) sürümleridir ve 18 ay boyunca desteklenir. Kalite düzeyi, hataya neden olan değişiklik ilkeleri ve yayınların diğer tüm yönleri aynıdır. Daha fazla bilgi için bkz. Sürümler ve destek.

Microsoft'taki .NET Ekibi, .NET'i çeşitli yollarla dağıtmak ve desteklemek için diğer kuruluşlarla işbirliği içinde çalışır.

Red Hat, Red Hat Enterprise Linux (RHEL) üzerinde .NET'i destekler.

Samsung, Tizen platformlarında .NET'i destekler.

Çalışma Zamanı

Ortak Dil Çalışma Zamanı (CLR), tüm .NET uygulamalarının temelidir. Çalışma zamanının temel özellikleri şunlardır:

  • Çöp toplama.
  • Bellek güvenliği ve tip güvenliği.
  • Programlama dilleri için üst düzey destek.
  • Platformlar arası tasarım.

.NET bazen "yönetilen kod" çalışma zamanı olarak adlandırılır. Bu, öncelikle bellek yönetimi için bir çöp toplayıcı kullandığından ve tür ve bellek güvenliğini zorunlu kılıp kullandığından yönetilir . CLR bellek, iş parçacıkları ve özel durumlar gibi çeşitli işletim sistemi ve donanım kavramlarını sanallaştırır (veya soyutlar).

CLR, kuruluşundan itibaren platformlar arası bir çalışma zamanı olacak şekilde tasarlanmıştır. Birden çok işletim sistemine ve mimariye taşınabilir. Platformlar arası .NET kodunun yeni ortamlarda çalışması için genellikle yeniden derlenmiş olması gerekmez. Bunun yerine, uygulamanızı çalıştırmak için farklı bir çalışma zamanı yüklemeniz yeterlidir.

Çalışma zamanı hata ayıklayıcılar, dökümler ve izleme araçları ve gözlemlenebilirlik için çeşitli tanılama hizmetlerini ve API'leri kullanıma sunar. Gözlemlenebilirlik uygulaması öncelikli olarak OpenTelemetry'yi temel alır ve esnek uygulama izleme ve site güvenilirliği mühendisliği (SRE) sağlar.

Çalışma zamanı, P/Invoke, değer türleri ve değerleri yerel/yönetilen kod sınırında yarıda ayırma özelliği aracılığıyla alt düzey C stili birlikte çalışma işlevselliği sunar.

Diller

Çalışma zamanı, birden çok programlama dilini destekleyecek şekilde tasarlanmıştır. C#, F# ve Visual Basic dilleri Microsoft tarafından desteklenir ve toplulukla işbirliği içinde tasarlanmıştır.

  • C# modern, nesne odaklı ve tür açısından güvenli bir programlama dilidir. C dil ailesine kökenleri vardır ve C, C++, Java ve JavaScript programcıları tarafından hemen tanıdık gelecek.

  • F# kısa, sağlam ve performanslı kod yazmaya yönelik birlikte çalışabilen bir programlama dilidir. F# programlama, kodun işlevlerle verileri dönüştürmeyi içerdiği veri odaklıdır.

  • Visual Basic , sıradan bir insan diline daha yakın olan daha ayrıntılı bir söz dizimi kullanır. Programlamaya yeni yeni gelen kişiler için öğrenmesi daha kolay bir dil olabilir.

Derleme

.NET uygulamaları (C# gibi üst düzey bir dilde yazıldığı gibi) ara dilde (IL) derlenir. IL, herhangi bir işletim sisteminde veya mimaride destekleyebileceğiniz kompakt bir kod biçimidir. Çoğu .NET uygulaması, birden çok ortamda desteklenen API'leri kullanır ve yalnızca .NET çalışma zamanının çalıştırılmasını gerektirir.

IL'nin arm64 veya x64 gibi bir CPU üzerinde yürütülebilmesi için yerel koda derlenmesi gerekir. .NET hem Önceden Gelen (AOT) hem de Tam Zamanında (JIT) derleme modellerini destekler.

  • Android, Linux, macOS ve Linux'ta JIT derlemesi varsayılandır ve AOT isteğe bağlıdır (örneğin , ReadyToRun ile).
  • iOS'ta AOT zorunludur (simülatörde çalıştırma dışında).
  • WebAssembly (Wasm) ortamlarında AOT zorunludur.

JIT'nin avantajı, temel alınan işletim sistemi ve donanıma göre belirli bir ortamdaki CPU yönergelerine ve çağırma kurallarına bir uygulama (değiştirilmemiş) derleyebilmesidir. Ayrıca daha iyi başlangıç ve kararlı durum aktarım hızı performansı sağlamak için daha yüksek veya daha düşük kalite düzeylerinde kod derleyebilir.

AOT'nin avantajı, en iyi uygulama başlatmayı sağlaması ve (bazı durumlarda) daha küçük dağıtımlarla sonuçlanabilir olmasıdır. Birincil dezavantajı, ikili dosyaların her ayrı dağıtım hedefi için (diğer yerel kodlarda olduğu gibi) derlenmiş olmasıdır. AOT kodu bazı yansıma desenleriyle uyumlu değildir.

Çalışma zamanı kitaplıkları

.NET, kapsamlı bir standart sınıf kitaplıkları kümesine sahiptir. Bu kitaplıklar, genel amaçlı ve iş yüküne özgü birçok tür ve yardımcı program işlevselliği için uygulamalar sağlar.

.NET çalışma zamanı kitaplıklarında tanımlanan türlerin bazı örnekleri aşağıda verilmiştir:

Daha fazla bilgi için bkz . Çalışma zamanı kitaplıklarına genel bakış.

NuGet Paket Yöneticisi

NuGet , .NET için paket yöneticisidir. Geliştiricilerin derlenmiş ikili dosyaları birbirleriyle paylaşmasına olanak tanır. NuGet.org topluluktan birçok popüler paket sunar.

Araçlar

.NET SDK, .NET uygulamaları geliştirmeye ve çalıştırmaya yönelik bir kitaplık ve araçlar kümesidir. MSBuild derleme altyapısını, Roslyn (C# ve Visual Basic) derleyicisini ve F# derleyicisini içerir. Komutların çoğu komutu kullanılarak dotnetçalıştırılır. CLI araçları yerel geliştirme ve sürekli tümleştirme için kullanılabilir.

Visual Studio IDE ailesi.NET ve C#, F# ve Visual Basic dilleri için mükemmel destek sunar.

GitHub Codespaces ve GitHub güvenlik özellikleri .NET'i destekler.

Notebooks

.NET Interactive, kullanıcıların web, markdown ve not defterleri arasında etkileşimli deneyimler oluşturmasını sağlayan bir grup CLI aracı ve API'dir.

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

CI/CD

MSBuild ve .NET CLI, aşağıdakiler gibi çeşitli sürekli tümleştirme araçları ve ortamlarıyla kullanılabilir:

Daha fazla bilgi için bkz. Sürekli Tümleştirme (CI) ortamlarında .NET SDK'sını kullanma.

Dağıtım modelleri

.NET uygulamaları iki farklı modda yayımlanabilir:

  • Bağımsız uygulamalar .NET çalışma zamanını ve bağımlı kitaplıkları içerir. Bunlar tek dosyalı veya çok dosyalı olabilir. Uygulamanın kullanıcıları bunu .NET çalışma zamanının yüklü olmadığı bir makinede çalıştırabilir. Bağımsız uygulamalar her zaman tek bir işletim sistemini ve mimari yapılandırmasını hedefler.
  • Çerçeveye bağımlı uygulamalar, .NET çalışma zamanının uyumlu bir sürümünü gerektirir ve genellikle genel olarak yüklenir. Çerçeveye bağımlı uygulamalar tek bir işletim sistemi ve mimari yapılandırması için veya desteklenen tüm yapılandırmaları hedefleyen "taşınabilir" olarak yayımlanabilir.

.NET uygulamaları varsayılan olarak yerel bir yürütülebilir dosyayla başlatılır. Yürütülebilir dosya hem işletim sistemine hem de mimariye özgüdür. Uygulamalar komutuyladotnet da başlatılabilir.

Uygulamalar kapsayıcılara dağıtılabilir. Microsoft, çeşitli hedef ortamlar için kapsayıcı görüntüleri sağlar.

.NET geçmişi

2002'de Microsoft, Windows uygulamaları oluşturmaya yönelik bir geliştirme platformu olan .NET Framework yayımladı. Bugün .NET Framework sürüm 4.8'dedir ve Microsoft tarafından tam olarak desteklenmektedir.

2014'te Microsoft, .NET Core'u .NET Framework için platformlar arası, açık kaynak ardılı olarak kullanıma sunmaçtaydı. Bu yeni .NET uygulaması , sürüm 3.1'e kadar .NET Core adını korumuştur. .NET Core 3.1'den sonraki sürüm .NET 5 olarak adlandırıldı.

Her biri ana sürüm numarası daha yüksek olan yeni .NET sürümleri yıllık olarak yayınlanmaya devam ediyor. Bunlar önemli yeni özellikler içerir ve genellikle yeni senaryolara olanak tanır.

.NET ekosistemi

Her biri farklı bir uygulama türünü destekleyen birden çok .NET varyantı vardır. Birden çok değişkenin nedeni kısmen geçmiş, kısmen tekniktir.

.NET uygulamaları (geçmiş sırası):

  • .NET Framework -- Windows ve Windows Server'ın geniş özelliklerine erişim sağlar. Ayrıca Windows tabanlı bulut bilişim için de yaygın olarak kullanılır. Özgün .NET.
  • Mono -- .NET Framework platformlar arası bir uygulaması. Özgün topluluk ve açık kaynak .NET. Android, iOS ve Wasm uygulamaları için kullanılır.
  • .NET (Core) -- .NET'in platformlar arası ve açık kaynak uygulaması, bulut çağı için yeniden kullanılırken .NET Framework ile önemli ölçüde uyumlu kalır. Linux, macOS ve Windows uygulamaları için kullanılır.

Sonraki adımlar