Pardus’ta .NET Core
Pardus’ta .NET Core
Bulut teknolojileri için optimize edilmiş, hızlı, mobil ve konteyner yapıları ile uyumlu sistemler tercih edilme sebeplerini kuvvetlendiren argümanlar üretmeye devam ederken, bu özelliklerin geliştiricilere sağladığı kolaylıkları örnekleriyle çoğaltmanın önemli olduğu anlaşılmaktadır.
Windows, Mac OSX, Ubuntu, Debian, FreeBSD gibi işletim sistemlerinin yanı sıra mevcut durumu veya daha önceki süreçlerine takılmadan yerli işletim sistemimiz Pardus ile de .NET Core tabanlı web veya konsol uygulaması geliştirebilmenin teknik uygunluğunu kapsamlıca değerlendirebilir, çıktıları analiz edebiliriz. Bu sayede; rekabetin tavan yapmış olduğu bir sektörde, üretkenliğimizi, çözüm hızımızı, alternatifler ve farklı mimariler sayesinde yeni bir perspektif ile değerlendirebiliriz. Girişimcileri, geliştiricileri ve yerli başarı hikayelerini diri tutan bu buluş ve yapıların ateşleyici gücü, tüm cihazlara uyarlanabilen sistemler bütününe evrilmesi sağlanabilmektedir. (IoT, Mobility, Cross-Platform)
Build2016 ile birlikte Windows tarafında Linux a olan ilgi daha da belirginleşti. Windows için Bash Shell, geliştirme araçları (Xamarin, Visual Studio Code) ve açık kaynak kodlu bir çok proje geliştiricilerin beğenisine sunuldu.
Veri işleme, yoğun işlemci tüketen süreçler ve istek bazlı iş kuralları için (API, Servis) basit ayarlarla hızla işlem (compute) istasyonları üretebilmek ve bunları çevre bileşenleri bağımlılıkları ile uyumlu hale getirmek ve saniyeler içerisinde çoğaltmak, ölçeklendirmek yeni trendin çıkış noktasına ciddi temas eden unsurlar olarak sıralanmaktadır.
Ürünün test veya gerçek ortamlarının kolaylıkla yönetilebilmesi, versiyonlama, entegrasyon, dağıtım süreçlerinin tümünün otomatize edilmesi ve çoklu platform desteği yine yukarıda bahsedilen yapıların en kilit özellikleri arasında yer almaktadır.
Bu kapsamda, farklı platformları destekleyecek şekilde geliştirilen .NET Core için Pardus tarafında yapmamız gerekenleri sıralayalım.
Pardus için .NET Core Çevre Bileşenlerinin Ayarlanması
Pardus kurulumu içinwww.pardus.org.tr adresinden en güncel ISO’yu temin edebilirsiniz. İster fiziksel bir makine ister kullandığınız işletim sistemi üzerine sanallaştırma (Virtualbox, VMware, Hyberv) sayesinde Pardus kurulumu yapabilirsiniz. (Kurulum için internette yeterince kaynak mevcut! “virtualbox pardus” şeklinde aratabilirsiniz.)
Pardus için varsayılan paket kaynak listelerine (sources.list) ek olarak; izleyeceğimiz adımlar gereği ihtiyaç duyacağımızgit,libuv,libunwind8vb. paketleri de yüklememiz gerektiğinden, ilk olarak aşağıdaki komutları konsoldan sırasıyla çalıştırmamız gerekmektedir.
$ sudo su
$ printf “debhttp://ftp.us.debian.org/debian jessie mainn” >> /etc/apt/sources.list
$ apt-get update
Böylelikle Debian paket kaynak listesine erişebileceğimiz tanımları yapmış bulunuyoruz.
Kestrel.NET Core destekli bir web uygulamasının Windows, Mac OSX ve Linux tabanlı bir işletim sisteminde çalıştırılmasını sağlayanlibuvtabanlı asenkron web sunucusudur. Pardus’ta planladığımız yapı gereği kurulumuna ihtiyaç duyulmaktadır. Bu sebeple öncelikleşu adresten libuv kaynak kodlarının indirilmesi gerekmektedir. Daha sonra indirilen dizin de:
tar zxfv libuv-1.8.0.tar.gz -C /usr/local/src/
komutu ile kaynak dosyalar çıkarılarak derlenmeye hazır hale getirilmelidir.
apt-get install autoconf automake build-essential libtool
Derleme işleminde kullanacağımız bağımlılıkları da yükledikten sonra libuv’u çıkardığımız dizinde sırasıyla (root izni ile):
sh autogen.sh
./configure
make
make check
sudo make install
ldconfig
komutları çalıştırılmalı ve libuv un yüklendiğinden emin olunmalıdır.
.NET Core Gereksinimleri
.NET Core bileşenleriDNX, DNVM ve DNU yakın zamandadotnet cli ismi ile tek çatı altında daha basit bir işlem arayüzü ile düzenlenecektir. Bu üçlemenin gereksinimleri için çalıştırılması gereken komutumuz:
apt-get -qq update && apt-get -qqy install unzip curl libicu-dev
libunwind8 gettext libssl-dev libcurl3-gnutls zlib1g sqlite3 libsqlite3-dev
Pardus için DNVM .NET Versiyon Yöneticisinin Kurulumu
Dnvm; .NET Çalışma zamanı versiyonlarını yönetmek, güncellemek,NugetveyaMyGetgibi beslemelerini ayarlamak amacıyla kullanılmaktadır.
Yukarıdaki adımları tamamladıktan sonra:
DNX_VERSION=1.0.0-rc1-update1 && echo $DNX_VERSION && export DNX_VERSION && DNX_BRANCH=v$DNX_VERSION && export DNX_BRANCH
DNX_USER_HOME=/opt/$DNX_BRANCH && export DNX_USER_HOME && echo $DNX_USER_HOME
ortam değişkenleri tanımlanmalıdır.
curl -sSLhttps://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_USER_HOME=$DNX_USER_HOME DNX_BRANCH=v$DNX_VERSION sh
Ortam değişkenleri sayesinde belirlediğimiz .NET Core DNX versiyonu ve yükleme dizini,curl programı ile indirilen dnvm yükleyicisi tarafından kullanılacak ve dnvm komutunun çıktısı aşağıdaki gibi olacaktır.
Eğer curl ile dosya indirilemez veya SSL ile ilgili sorun yaşanırsa aşağıdaki komut ile curl insecure modu ile register edilebilir.
echo insecure ~/.curlrc
Konsolu tekrar açtığınızda dnvm komutu bulunamaz ise “dnvm.sh” dosyasının bulunduğu dizin için aşağıdaki komutu kullanabilirsiniz
source /foo/path/dnvm.sh
Dnvm hazır olduğunda .NET Core çalışma zamanı (runtime) belirlememiz gerekmektedir. Bunun için mono ya da coreclr alternatifleri tercih edilebilir.
dnvm upgrade -r coreclr
Dnx yüklendikten sonraki çıktı
dnx
şeklinde olmalıdır.
Artık .NET Core RC1 Update1 bilgisayarımızda hazır durumda. Örnek bir uygulama ile hızlıca test edebilmek için; ASP.NET Core – MVC6 ile geliştirilmiş Angular – RequireJsSPA başlangıç bileşenlerini sunanGithub – AspNetCoreAngularBoilerplate projeyi, istediğiniz bir dizine indirebilirsiniz.
git clonehttps://github.com/gencebay/AspNetCoreAngularBoilerplate.git
Projede “project.json” dosyasının bulunduğu dizinde
dnu restore
komutu ile çalışma zamanı bağımlılıklarını, paketleri indirebilirsiniz. Side-by-side versiyonlamanın kendini belirginleştiği bu noktanın detayları içinbu linki inceleyebilirsiniz.
Kestrel ve libuv un devreye girdiği noktayı harekete geçirmek ve web uygulamamızı çalıştırmak için “project.json” dosyasındaki bu bölümü gözlemlememiz yeterli olacaktır.
“commands”: {
“web”: “Microsoft.AspNet.Server.Kestrel”
}
Uygulamamazı aşağıdaki komut ile çalıştırdığımızda
dnx web
Kestrel web sunucusunun istekleri işlediğini ve log kayıtlarını konsola yazdığını gözlemleyebiliriz.
Tüm bunların yanı sıra web ve basit konsol uygulamaları için bir çok imkan ve kütüphane sunan teknolojilere ek olarak;Electron veyaChromium EF temelli HTML-CSS-JS üçlemesi kullanılarak Spotify, Slack veya Visual Studio Code gibi her platformda çalışabilen Masaüstü uygulamaları geliştirmenin tercih edilebileceği değerlendirilmektedir.