.NET CORE NEDİR?

.NET Core, microsoftun farklı platformlarda (cross platform) uygulama geliştirmek için geliştirdiği açık kaynaklı bir ücretsiz yazılım geliştirme platformdur. 

Bugün, modern bir mobil ve bulut platformlarında uygulama geliştirmenin bir işletim sistemi olarak Windows’u çok daha az önemli hale getirdiği, gerçek anlamda platformlar arası bir dünyada yaşıyoruz. .NET ise bildiğiniz üzere windows işletim sistemiyle çok sıkı bir ilişki içerisindedir. Microsoft .NET geliştiricilerin veya geliştirmek isteyenlerin en büyük sıkıntısı ben dahil, daima windows işletim sistemine bağlı kalınması ve açık kaynak kodlu olmayışıydı. Burada microsoft büyük bir politika değişimine gittiğini görmek lazım. Aslında bir nevi bu tekel bir piyasadan rekabetçi bir piyasaya geçişinde kabulü denebilir. Gelişen şartlarda bencede microsoft halen rekabet gücünü korumak istiyorsa bu adımı atması bir zorunluluk haline gelmişti. Dedikleri gibi bükemediğin eli öpeceksin.  Bu nedenle Microsoft, .NET Core ile .NET teknolojisini Windows işletim sisteminden bağımsızlaştıracak bir platform üretme yoluna gitti. Bana görede ve bir çok .NET geliştiricisine görede bu açılım oldukça başarılı bulunmuştur ve bizler çok heyecanlandırmıştır.  Elbette burada Microsoft’un pazarda ki payını düşürmemek veya geliştirici ağını daraltmamak hatta yeni geliştiriciler kazanmak için önemli bir adım olarak .NET Core platformunu oluşturdu. Böylece artık dil ve işletim sisteminden bağımsız bir platform oldu. NET Framework’ü gerçek anlamda çapraz platform olacak şekilde yeniden yazarken, artık çekirdek olarak kabul edilmeyen ana parçaları yeniden düzenleme ve kaldırma fırsatlarını değerlendirdiler.

Bu sayede artık .NET CORE ile geliştirilen uygulamalar Android, MacOS veya Linux gibi çeşitli işletim sistemlerinde çalışabilir hale geldi. Biz yazılım geliştiriciler için ise daha da önemlisi artık .NET geliştirmek için windows pc aramamıza gerek kalmadı. Özellikle kendim için söylüyorum MAC pc ile tanıştıktan sonra o çok sevdiğim .NET geliştirmeden windows yüzünden kendimi uzak tutuyordum. O nedenle buna en çok sevinenlerdenim.

Microsoft’un hamle niteliğinde ki bu yeniliği (veya yenilgiyi :D) artık .NET Core ile yola devam edeliceği anlamıda çıkarmak çok yanlış olur. Windows platformları ile geliştirmeye devam edeceler için .NET Framework alt yapısıda yenillikleri ile yola devam edecektir. Microsoft’a göre .NET Core, çapraz uygulamalar yani platformlar arası uygulama geliştirmek isteyenler için düzenlediği alternatif bir platformdur diyebiliriz. 

.NET Core, CoreCLR olarak bilinen CLR’nin çapraz platform uygulamasını ve CoreFX olarak bilinen basitleştirilmiş bir sınıf kitaplığını içerir.

Bu yeni ürünü, .NET için Microsoft İş Ortağı Program Yöneticisi Scott Hunter, “.NET Core müşterilerimizin yüzde kırkı platforma yepyeni geliştiriciler, ki bu da .NET Core ile istediğimiz şeydir. Yeni insanlar getirmek istiyoruz. . .“ şeklinde .NET Core’un çıkış noktasını açıklamıştır.

Daha fazla bilgi için: https://devblogs.microsoft.com/dotnet/category/net-core/

.Net Core ile web uygulamalarının geliştirildiği ortama Asp.Net Core denilmektedir. Ayrıca windows uygulamaları, mobil uygulamalar, konsol uygulamaları, Azure ve Cloud uygulamaları, SharePoint uygulamaları geliştirilebilmektedir. Asp.Net Core ile birlikte bir yazılım geliştirme mimarisi olan Asp.NET MVC için de linkte ki makaleyi okuyabilirsiniz.

.Net Core platformunu toparlayacak olursak;

  • Açık kaynak kodlu ve modern bir geliştirme platformudur.
  • Cross Platform olarak bilinen çapraz geliştirme platformudur.
  • Yeni bir çatı platform olmasına karşın içerisinde başlıca C# programlama dili ile geliştirilmektedir. F# ve Visual Basic ile de geliştirilme yapılabileceği Microsoft .Net Core topluluk web sayfasında belirtiliyor olsa da geliştiricilerin çoğu C# dilini tercih etmektedirler.
  • Container desteği bulunması sebebiyle başlıca docker ve diğer container servislerini desteklemektedir.
  • Github için kodların açık bir şekilde yayınlanabilir.
  • Tarayıcı sunucu iletişiminde System.dll dosyasına bağımlılığı olmadığından hızlıdır.
  • Modern UI yapılarıyla uyumlu olduğundan AngularJS, ReactJS, Bootstrap gibi UI yapılar kolaylıkla kullanılabilir ve yönetilebilir.
  • Platform bağımsızlığı sebebiyle sadece IIS web sunucusuna ihtiyaç duymaz IIS veya Apache gibi farklı sunucularda çalışır.
  • Logn-Term Support (Uzun Süreli Destek) ve günceldir.

.NET Core ile ilgili farklı olan nedir?

.NET Core, eski teknolojilerin kaldırılmış olması nedeniyle .NET Framework’ün mevcut sürümünden daha küçüktür. Örneğin, Windows Forms ve Windows Presentation Foundation (WPF), grafik kullanıcı arabirimi (GUI) uygulamaları oluşturmak için kullanılabilir, ancak bunlar Windows ekosistemine sıkı sıkıya bağlıdır, bu nedenle macOS ve Linux’ta .NET Core’dan kaldırılmışlardır.

Windows uygulamaları oluşturmak için kullanılan en son teknoloji, .NET Core’un özel bir sürümüne dayanan Evrensel Windows Platformu’dur (UWP). UWP, çapraz platform olmadığından .NET Core’un bir parçası değildir.

ASP.NET Web Forms ve Windows Communication Foundation (WCF), günümüzde daha az geliştiricinin yeni geliştirme projeleri için kullanmayı seçtiği eski web uygulaması ve hizmet teknolojileridir, bu nedenle bunlar .NET Core’dan da kaldırılmıştır. Bunun yerine, geliştiriciler ASP.NET MVC ve ASP.NET Web API kullanmayı tercih ediyor. Bu iki teknoloji yeniden düzenlenmiş ve ASP.NET Core adlı .NET Core üzerinde çalışan yeni bir üründe birleştirilmiştir.

Entity Framework (EF), Oracle ve Microsoft SQL Server gibi ilişkisel veritabanlarında depolanan verilerle çalışmak üzere tasarlanmış bir nesne ilişkisel haritalama teknolojisidir. Yıllar içinde ivme kazandı, bu nedenle platformlar arası API zayıflatıldı, Microsoft Azure Cosmos DB gibi ilişkisel olmayan veritabanları için destek verilecek ve Entity Framework Core olarak adlandırılacak.

Microsoft, .NET Core hazırlamak için .NET Framework’ten büyük parçaları kaldırmanın yanı sıra, .NET Core’u NuGet paketlerine dönüştürmüştür. Bunlar bağımsız olarak dağıtılabilen küçük işlevsellik parçalarıdır.

Microsoft’un birincil amacı, .NET Core’u .NET Framework’ten daha küçük yapmak değildir. Amaç, modern teknolojileri desteklemek ve daha az bağımlılığa sahip olmak için .NET Core’u bileşenlendirmektir, böylece dağıtım yalnızca uygulamanızın ihtiyaç duyduğu paketleri gerektirir.