13 Ocak 2019 Pazar

.Net Core, MACOS ve JetBrains Rider

Bildiğimiz gibi .NET Core ile birlikte .NET ile kod geliştirmek işletim sistemi  bağımsız hale geldi. Durum böyle olunca yazdığımız kodları Linux ve MACOS ortamında çalıştırmak .NET geliştiricileri için büyük bir avantaj haline geldi.
.NET Core maceramız nasıl başladı ilk olarak oradan başlayayım. .Net 4.5.2 ile geliştirdiğimiz bir projemizi microservis olarak yazmaya karar verdik. .NET framework ile devam etmek yerine .NET Core ile yazıp yazamayacağımızı araştırdık. Projenin 3. parti dll bağımlılığı vardı ve firma .NET CORE versiyonunu çıkarmamıştı. 2019 'da çıkaracağız diye cevap döndüler. Mecburen .NET 4.6.1 ile geliştirmeye başladık. Microservisleri ise mecburen Service Fabric ile çalıştırmayı planladık. Üzülerek söylüyorum ki Microsoft firmasının geliştirdiği .NET framework'un sadece windows ortamında çalışmasından dolayı microservis projemizi mecburen yine microsoftun sunduğu platformda koşturmak durumundaydık. Openshift windows desteğini henüz sağlamamıştı (2019 başında cıkacak demişlerdi).  Projenin ilk sürümünü .NET 4.6.1 ile çıkardıktan sonra ekip olarak bu kadar platform bağımlı olmak çok da içimize sinmedi.  Madem böyle bir proje yapıyoruz, microservis ve container yapısı bizim içinde yeni ve güzel bir tecrübe oluyor platform bağımlılığından bir şekilde kurtulup yazdığımız kodları istediğimiz ortamda  çalıştırıp denemeliyiz diye düşündük. İşe ilk olarak 3. parti kullandığımız dll'leri decompile yapıp .NET standart projesine dönüştürmeye çalışmakla başladık. İlk başta kuşkuluyduk fakat decompile işlemlerini başarılı bir şekilde yaptıktan sonra ve .NET Standart projelerini oluşturunca, bütün projeyi .NET CORE ile yeniden yazmaya cesaretimiz arttı. Decompile işlemlerinde .NET framework ortamında olup .NET Core ortamında olmayan kütüphaneler olabiliyor bunların denklerini (open source kütüphaneler) bulmalısınız veya yöntem değişikliğine gitmek zorunda kalabilirsiniz. Microservis projemizi .NET Core ile geliştirmeye başladık. Ekipteki herkes .NET Core'da  yeni olmasına rağmen büyük bir iştahla bir çok konuyu araştırıp en iyisini yapmaya çalıştık.  Projenin ilk çıktılarını Openshift  platformunda Redhat Linux ile çalıştırdık. Windows'ta kodladık Linux ortamında çalıştırdık. İşletim sistemi bağımsızlığı gerçekten güzel birşeymiş. .NET CORE geliştiricilerine teşekkürler. Tabii işletim sistemi bağımsızlığı gelince geliştirme işini de  diğer  işletim sistemlerinde de denemeye karar verdik. İlk olarak MACOS ile başladık.  MACOS ortamına da oldukça yabancıydık.  Windowsa alışınca MACOS ve Linux biraz korkutucu geliyor.  Bazılarınızın ne gerek var dediğini duyar gibiyim ama  bende şimdiye kadar bu kadar windows  bağımlısı kaldığım için  bir developer olarak kendimden utanıyorum diyorum. Birçok platforma hakim olmamız gerektiğini şuan rahatlıkla söyleyebiliyorum. 
MACOS ortamında .NET Core ile geliştirme yapmak için visual studio for mac, visual studio code veya JET Brains Rider kullanabilirsiniz.  Bir kaç arkadaşım Jet Brains Rider kullanmam gerektiğini visual studio for mac'in windows'ta bulunan visual studio ile aynı olmadığını söyledi. Daha az özelliği olduğundan bahsettiler. Visual Studio Code'u zaten çoğunuz biliyordur, kullanım amacı biraz daha farklı bir react projesini visual studio code ile geliştirmek güzel olabiliyor, özellikle javascript geliştiriceleri çok fazla rahatlık intellisense aramıyor ama .NET geliştiricileri alıştıkları Visual Studio özelliklerini arıyor. Visual Studio Code'un Visual Studio rahatlığına ulaşması biraz zaman alacaktır. Seçenek olarak geriye JetBrains Rider kaldı. Yalnız Jet Brains Rider'ın ücretsiz sürümünü direkt olarak edinemiyorsunuz. Resharper'ı birçoğunuz duymuştur. Resharper ürününü üreten firma aynı zamanda Rider'ı üretiyor. Zaten elimizde Resharper lisansı vardı.  Üzerine  bir miktar daha ödeme yaparak yaklaşık 150$ gibi bir miktar. Rider'ı denemeye karar verdik. Daha sonra baktığımda Rider'ın öğrenciler, öğretmenler, startuplar ve  geliştirici toplulukları için ücretsiz veya indirimli olduğunu gördüm. 

Rider'ı https://www.jetbrains.com/rider/download/download-thanks.html adresinden indirip kullanmaya başlayabilirsiniz. sadece MACOS ortamında değil windows ortamında da kullanabilirsiniz. 

Rider'ı kullanmaya başlayıp keşfettikçe hoşunuza gideceğini düşünüyorum. Her tarafında farklı bir özellik var. Visual Studio'da olan Rider'da olmayan birşeye rastlamadım. Rider'da fazlası var diyebilirim. Visual Studio'da olmayan ve Rider'da karşılaştığım en önemli ve hoşuma gider özellik ise kullandığınız her kütüphaneyi decompile yapıp debug yapmanızı sağlaması. .NET Core ile birlikte kullandığınız kütüphanelerin çoğunun open source ve  neredeyse çok az dökümantasyona sahip olduğunu düşünürsek kendi kodunuzu debug esnasında kullandığınız kütüphaneleri de debug yapıp neler yaptıklarını görmek ve anlamak hoşunuza gidecektir. 

























Visual Studio'da görmediğim Rider ile gelen özelliklerden ilki 3. parti kütüphaneleri on the fly  decompile ve debug özelliği idi.

Diğer bir özellik ise kendi içinde gelen bir  REST Client'ı olması. Bildiğiniz bir nevi Postman'i adamlar Rider'ın içine eklemişler. REST  Api'lerinizi ayağa kaldırdıktan sonra buradan  request atabilirsiniz.



Yine alt menülerde
TODO : TODO' larınızı tek bir ekrandan görebilirsiniz.



Package yönetimi ekranı. Bizde nuget.org ve nexus üzerinden paketlerimizi yönetiyoruz.




Version Control : Biz Git  kullanıyoruz. Rider'ın gerçektende çok güzel bir Git yönetim ekranı var. Branch üzerinde yaptığımız bütün değişiklikleri buradan yönetebiliyoruz.  Aynı zamanda yaptığımız değişikliğin local ve remote branch arasındaki farkı anında gösteriyor.  Git'i komut ekranından yönetmek istemeyen ve görsel bir ekran isteyenler için bire bir.




Unittest, Terminal ve TeamCity gibi menülerde alt menüde listelenmiş durumda. Rider'ın alt menüsü bir çok ihtiyacınızı karşılayacak düzeyde ve yeterlilikte.

Tabii henüz bende 1 haftadır MACOS ortamında Rider üzerinde geliştirme yapıyorum. Muhtemelen henüz yüzde 10 özelliğini keşfetmişimdir ama bu haliyle bile Visual Studio eksikliğini aramadım fazlası var eksiği yok diyebiliyorum.

Bizim Core Framework solution da 20 adet proje olmasına rağmen açılış ve build hızı da gayet iyi.


Projeler sol tarafta listeleniyor. Biliyorsunuz eğer Visual Studio'yu özelleştirmediyseniz solution explorer  default sağdadır. Burada ise default olarak solda açılıyor. Solution yapısıda biraz Visual Studio Code gibi. Direkt klasör yapısını görüyorsunuz. Hem solution hem klasör yapısını aynı anda görmekde hoşunuza gidebilir. Özellikle bu tarz editör kullanmış olanlar alışmak için zorluk çekmeyecektir.













MACOS ortamında veya Linux ortamında kodunuzu build etmek ve çalıştırmanın  bir diğer faydasıda windows ortamında çalışan bazı kodların burada çalışmadığını veya farklı şekilde yazılması gerektiğini anlamanız oluyor. Mesela Server IP adresini aldığımız kodun MACOS ortamında çalışmadığını görmem iyi oldu. Her platformda çalışacak şekilde değiştirdim.

Yazıyı çok da uzun tutmak istemiyorum. Rider üzerinde çalıştıkça tecrübelerimi paylaşmak ve siz değerli yazılımcı arkadaşlarıma faydalı olmak istiyorum. Umarım yararlı olmuşumdur. Umarım benim gibi yıllarca windows ortamında çalışan ve diğer işletim sistemi ve platformları tecrübe etmek isteyen arkadaşlarıma  cesaret verebilmişimdir. Rider beni çok şaşırttı. Gerçekten geliştiren ekibi tebrik ediyorum. Teşekkürler.