Nedir Bu Microsoft .NET Core ?
Microsoft .NET Core nedir? .NET Core kullanmanın avantajları ve dezavantajları nelerdir? Bunlara hep beraber bu makalede bakacağız.
İçindekiler·2 bölümBölümler arasında hızlı geçiş yapın
⏱️ ~5 dk okuma
Bölümler arasında hızlı geçiş yapın
Nedir Bu Microsoft .NET Core ?
İşletim sistemleri, yazılım geliştiriciler açısından hem yarar hem de zarar sağlamıştır. Geliştirilen uygulamanın x86 ve x64 platformlarda bile farklı çalışması yıllardan beri yazılım geliştiriciler için bir engel olarak karşımıza çıkmıştır. “Aynı dili kullanarak birden fazla platforma yazılım geliştirmek.” her zaman istenilen bir özellik olarak öne çıkmıştır. İlk olarak Java tabanlı uygulamaların platform bağımsız çalışma özellikleri (applet vs.) yazılım teknolojilerinde bir farklılık getirdikten sonra geçen yıllarda son olarak .NET Core platformu ile Microsoft önemli gelişmeler kaydetti.
Microsoft yıllar boyunca öncelikle platform bağımsız bir yazılım dilinin çalışmalarını yaptı. En önemli gelişmelerden biri Mono ile birlikte geldi. Daha sonrasında Azure (Linux makinelerin kurulabilmesi) ve Xamarin ile birlikte son noktada .NET Core ortaya çıktı. Yazılımcıların temel ihtiyaçlarından biri olan platform bağımsız bir şekilde geliştirme yapma hayali böylelikle gerçekleşmiş oldu. Tek cümle ile açıklamak gerekirse .NET Core modern web uygulamaları, servisler, kütüphaneler, masaüstü uygulamalar ve konsol uygulamaları geliştirmek için kullanılan açık kaynak kodlu ve platform bağımsız (cross-platform) bir .NET platformudur.
27 Haziran 2016 yılında 1.0 ile hayatımıza giren .NET Core platformu yenilikçi yaklaşımı ile şu an için yazılımcıların büyük kısmının ihtiyaçlarını çözen bir durumdadır. Şu an .NET Core 2.1 versiyonu ile yayında olan platform yeni özellikleri ile bundan sonra uzun süreler boyunca kullanılacak olan popüler bir platform olmaya devam edecektir. Microsoft üzerinden .NET Core bilgilerine buradan ulaşabilirsiniz.
En önemli özellik olarak Windows, Linux, MacOS işletim sistemlerinde ve .NET Core destekleyen cihazlar, gömülü sistemler (IoT) ve bulut platformlarında (Azure) çalışabilme özelliğine sahiptir.
Aşağıda .NET Core platformunu destekleyen işletim sistemlerini görebilirsiniz.
Windows Client / 7 SP1+, 8.1 / x64, x86 Windows 10 Client / Version 1607+ / x64, x86 Windows Server / 2008 R2 SP1+ / x64, x86 Mac OS X /10.12+ / x64 Red Hat Enterprise Linux / 6 / x64 Red Hat Enterprise Linux / 7 / x64 CentOS / 7 / x64 Oracle Linux /7 / x64 Fedora / 27, 28 / x64 Debian / 9, 8.7+ / x64, ARM32* Ubuntu / 18.04, 17.10, 16.04, 14.04 / x64, ARM32* Linux Mint / 18, 17 / x64 openSUSE / 42.3+ / x64 SUSE Enterprise Linux (SLES) / 12 SP2+ / x64 Alpine Linux / 3.7+ / x64
.NET Core’un temel özelliklerin göz atarsak;
-
Platform bağımsız çalışma (Cross-Platform): Windows, Linux ve MacOS işletim sistemleri ve .NET Core destekleyen ortamlarda çalışabilmektedir.
-
**Komut satırı aracı (Command-line tools): **.NET Core ile birlikte gelen CLI aracı ile yeni proje oluşturmak, derleme ve yaygınlaştırma işlemlerini rahat bir şekilde yapabilme olanağı sağlar.
-
Uyumluluk (Compatible): .NET Standard platformu ile birlikte .NET Framework, Mono ve Xamarin ile uyumlu bir şekilde çalışabilmektedir.
-
Açık kaynak kod (Open Source): .NET Foundation projesi olan .NET Core açık kaynak kod olması sebebi ile hızlı bir gelişim sürecine de tabii konumdadır. Github üzerinden tüm yazılımcıların yorumları ve istekleri doğrultusunda geliştirilmeye devam etmektedir.
-
**Esnek yaygınlaştırma (Flexible deployment): **.NET Core ile geliştirdiğimiz uygulamamızın yaygınlaştırılması açısından kolaylıklar sağlamaktadır. Platform bağımsız çalışma özelliği ile her ortamda birbirine yakın yaygınlaştırma özellikleri ile de karışıklığı önlemektedir.
.NET Core tıpkı .NET Framework gibi temel bileşenlere sahiptir. Bu bileşenler;
-
.NET Runtime: Garbage collector, type system ve temel servislerin dahil olduğu bileşendir.
-
.NET Framework Kütüphaneleri: Temel ve karmaşık değişken tiplerini ve diğer servisleri içeren yapıdır.
-
.NET Core SDK: Dil derleyicilerini içeren ve uygulamaların çalışmasından önceki işlemleri gerçekleştiren bileşendir.
-
.NET Core App Host: .NET Core projelerinin çalışması için gerekli olan alt yapıyı sunmaktadır.
.NET Core Mimarisine bir göz atacak olursak. .NET Core mevcutta şimdiye kadar kullandığımız .NET Framework’ten farklı ve ayrık bir yapıda çalışmaktadır. Bu da bize platform bağımsız bir yazılım geliştirme ortamının kapılarını açmaktadır. Yeni bir framework ve yeni bir yapı ile .NET Core ile geliştirilen uygulamaların performans ve yapılarında büyük gelişmeler olmuştur.

.NET Core ile daha hafif ve hızlı bir framework;
.NET Core, .NET Framework’e göre daha hafif ve daha hızlı bir yazılım geliştirme ve daha performanslı bir uygulama işletimi sağlamaktadır. (%2300 daha fazla saniyede karşılanan istek sayısı)
ASP.NET Core MVC’yi varsayılan olarak kullanmaktadır.
Daha önceleri Web Forms ile geliştirdiğimiz uygulamalarımızı artık ASP.NET MVC ile geliştirmekteyiz. (Web Forms’tan kopamadığımız projelerimizin olmadığını düşünerek) Daha önceden hem WEb Forms hem de MVC’yi destekleyen ASP.NET yerine ASP.NET Core sadece MVC desteği sunmaktadır. Hem MVC yapısının hızı hem de .NET Core alt yapısının sunduğu hız düşünüldüğü zaman uygulamaların performansında büyük artışlar sağlanmaktadır.
Web API ve MVC yapılarının beraber sunulması ile birlikte geliştirdiğimiz web servislerimizin temiz ve anlaşılabilir kod yapılarına sahip olması ve uygulama performanslarında artış vazgeçilemez bir hal almaktadır.
ASP.NET Core projeleri NPM (Node Package Manager) desteği sunmaktadır.
Daha önceden de ASP.NET MVC5 ile birlikte kullanılabilen bir yapı aslında NPM. Fakat bu yapıyı kullanabilmek için belirli konfigurasyonları yapmamız gerekmekteydi. Artık ASP.NET Core projelerinde bu desteği hazır halde bulabiliyoruz. Angular için de destek mevcut :)
ASP.NET Core kendi “Dependency Injection” yapısını sunmaktadır.
Daha önceden DI/IoC yapılarını kullananlar için (anlatmak için bir makale yazmayı düşünüyorum) bu yapıları kurmak biraz zahmetli olmaktaydı. (Ninject, Unity Container) Fakat .NET Core ile birlikte bu biraz değişti. ASP.NET Core projeleri kendi içlerinde hazır halde bir DI/IoC yapısını geliştiricilere sunmaktadır. DI/IoC yapılarını kullanmak için sunulan rahatlık da ayrı bir güzel diye düşünüyorum. ASP.NET Core Web uygulamamızda çok büyük konfigurasyonlar yapmadan tüm controller ve repository yapılarımızda bu özelliği kullanabiliyoruz.
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureCors();
services.ConfigureIISIntegration();
services.ConfigureLogggerService();
services.ConfigureMySqlContext(Configuration);
services.ConfigureRepositoryWrapper();
services.AddMvc();
}
Böylelikle daha ayrık yapılara sahip (loosely coupled), temiz ve anlaşılabilir yapılar kurarak uygulamalarımızı geliştirebiliriz.
Evet, genel olarak .NET Core nedir ? nasıldır ? konularına değinmeye çalıştık. Devamında ise proje tiplerine ve örnek projelere bakıyor olacağız.