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çin www.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ız git, libuv, libunwind8 vb. paketleride yüklememiz gerektiğinden ilk olarak aşağıdaki komutları konsoldan sırasıyla çalıştırmamız gerekmektedir.

$ sudo su
$ printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /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ğlayan libuv tabanlı asenkron web sunucusudur. Pardus da planladığımız yapı gereği kurulumuna ihtiyaç duyulmaktadır. Bu sebeple öncelikle [şu adresten](https://github.com/libuv/libuv/releases v1.8.0) 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şenleri DNX, DNVM ve DNU yakın zamanda dotnet 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, Nuget veya MyGet gibi 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 -sSL https://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 belirledeğ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 yada 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ızlaca test edebilmek için; ASP.NET Core - MVC6 ile geliştirilmiş Angular - RequireJs SPA başlangıç bileşenlerini sunan Github - AspNetCoreAngularBoilerplate projeyi, istediğiniz bir dizine indirebilirsiniz.

git clone https://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çin bu 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 veya Chromium 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.