00. ASP.Net Core

Bir Bilgisayar Mühendisliği Bölümünde öğretim üyesi olmanın en kötü tarafı bazı derslerde güncel teknolojileri takip etme zorunluluğudur. Bir çok bölümde çoğu teorik ders uzun yıllar değişmez iken bilgisayar dünyası teknolojik olarak gelişmeye devam etmektedir.  Web programlama dersinde sunucu tarafı için PHP’yi tanıttıktan sonra bir MVC framework’ü teknolojisi de tanıtmayı amaçlıyorum. Bunun içinde seçtiğim ortam .Net Framework üzerine inşa edilmiş ASP.Net idi. Yalnız bu teknoloji de yerini .Net Core’a bırakmaya başladı. 2016 yılında ilk sürümü yayınlanan .Net Core sayesinde Microsoft platform bağımsız bir yapı oluşturmaya çalıştı. Bu günlerde 3.0 versiyonunun yolda olduğu bu yapıyı derslere taşıma zamanı geldi. Bu bölümde, ASP.Net Core’un mevcut teknolojilerini tanıtacaktır.
Geçmiş yıllarda Visual Studio üzerinden ASP.Net’i tanıtıyorduk. Bu yıl Microsoft’un açık kaynak kodlu ve birçok programlama diline desteği olan IDE’si Visual Studio Code’a geçiyoruz. Hatta PHP, Javascript, HTML, Python gibi uzantılara da sahip ve yeni uzantılar ekleyebileceğiniz bir IDE ile karşı karşıyayız. Bu bölümde geçmişte Visual Studio’da yazdığımız kodları bu yeni IDE’de nasıl geliştirmeye başlayacağımızı göstermeyi amaçlıyorum. Başlangıç bizden gerisi sizden, iyi dersler 🙂

00.01. Temel Özellikleri

ASP.NET Core, modern, bulut tabanlı, internet bağlantılı uygulamalar geliştirmek için çok platformlu, yüksek performanslı, açık kaynak bir farmework’tür. ASP.NET 4.x çatısı (framework) tekrar inşa edilerek çok daha modüler ASP.NET Core çatısı oluşturulmuştur.

  • Web uygulamaları ve servisleri, IoT uygulamaları ve mobile arka plan uygulamaları
  • Web API’leri oluşturma
  • Razor Pages, sayfa odaklı senaryoları daha kolay ve daha üretken bir yapı
  • Test edilebilirlik
  • Windows, macOS ve Linux ortamında kod geliştirme ve geliştirme araçlarını kullanabilme
  • Uygulamaları bulutta veya yerelde kolayca yayınlama
  • Açık kaynak kodlu
  • İstemci tarafı uygulama geliştirme desteği
  • Modern web geliştirmeyi kolaylaştıran bir yapı
  • Bulut tabanlı uygulama geliştirme
  • Hafif, yüksek performanslı ve modüler bir HTTP istek hattı
  • Kendi işleminizde IIS, Nginx, Apache, Docker veya kişisel sunucunuz üzerinde barındırılabilir.

00.02. Neden Net Core

Bu bölümde neden .NET Core’u tercih ettiğimizi hakkında genel bilgiler verilecektir.

Çoklu platform ihtiyaçları

Uygulamanızın (web / servis) birden fazla platformda çalışması gerekiyorsa (Windows, Linux ve macOS), .NET Core iyi bir seçenek olma yolundadır. .NET Core, bu işletim sistemlerini geliştirme iş istasyonunuz olarak destekler. Ayrıca, Visual Studio Code uygulamasını bu üç platformda da kullanabilirsiniz. Visual Studio Code,  IntelliSense ve debug gibi bir IDE’de bulunması gereken temel özelliklere sahiptir. Bunun yanında Sublime, Emacs ve VI gibi çoğu üçüncü taraf IDE’ler .NET Core ile çalışır. Omnisharp ile bu IDE’lere IntelliSense özelliği kazandırılabilir. Ben IDE kullanmadan kod geliştireceğim diyorsanız, .NET Core CLI araçları ile doğrudan kullanıma destek verir.

Microservices mimarisi

Bir microservices (Mikroservis diyebiliriz, ancak Türkçesi yerine İngilizcesi kullancağım) mimarisi, bir hizmet sınırında birçok teknolojilerin birlikte kullanımını sağlar. Bu teknoloji Java, .Net, Ruby, Python gibi diğer dillerde geliştirilmiş microservices ve services ile çalışabilmesi anlamına gelir.

Birçok microservice tabanlı altyapı platformu vardır. Örneğin, Azure Service FAbric büyük ve karmaşık microservice sistemleri için tasarlanmıştır. Azure App Service, durum bilgisi olmayan microservices için bir seçimdir. Tüm bu platformlar .NET Core’u destekler ve bunları kişisel microservice’lerinizi barındırmak için ideal hale getirir.

Containers

Containers, yaygın olarak microservice mimarileriyle birlikte kullanılır. Containers, herhangi bir mimari modelini takip eden web uygulamalarını ve hizmetlerini barındırmak ve çalıştırmak için kullanılır. .Net Framework her ne kadar Windows containers kullanabilse de, .Net Core containers için daha iyi bir çözümdür. .Net Core ile geliştirilen bir container, .Net Framework’e göre hem boyutu daha az olur  hem de daha modüler bir yapıya sahiptir. Çünkü .Net Core platform bağımsızdır, Linux Docker containers ile de çalışabilir. Hatta, bulut tabanlı Azure Container servisinde de çalışabilir. Azure Container Servisi, buluttaki container tabanlı uygulamaları yönetebilir, düzenleyebilir ve ölçeklendirebilir.

Yüksek performanslı ve ölçeklenebilir sistemlere duyulan ihtiyaçlar

Sisteminiz mümkün olan en iyi performansa ve ölçeklenebilirliğe ihtiyaç duyduğunda, .NET Core ve ASP.NET Core en iyi seçeneklerdir. Windows Server ve Linux için yüksek performanslı sunucu çalışma zamanı, .NET’i TechEmpower kriterlerinde en iyi performansa sahip olduğunu göstermiştir. Performans ve ölçeklenebilirlik, özellikle yüzlerce microservices’in çalışabileceği mikro servis mimarileri için önemlidir. ASP.NET Core ile, sistemler çok daha az sayıda sunucu veya Sanal Makine (VM) ile çalışır.

Uygulama düzeyine göre uygun .NET sürümü ihtiyacı

.Net Core’un bir çok versiyonu sistemde yüklü olabilir. Yüklenen bir uygulama için .Net Core uygun versiyonu kullanır.

Konular:

Kaynaklar:

  • https://docs.microsoft.com/tr-tr/aspnet/core/?view=aspnetcore-2.2