@
sddk bey,
Yaptığınız alıntılardan vermiş olduğunuz cevaplara bakarak, ilk yorumunuzda söylemiş olduğunuz "Maalesef yazdıklarınızın çoğu hatalı." cümlenizi bir daha gözden geçirmenizi tavsiye ediyorum.
Yazdıklarımı tekrar tekrar okudum.
Sonra sizin alıntılara vermiş olduğunuz cevapları da tekrar okudum, fakat bir hata göremedim.
"Ya ben anlatamadum ya sen anlayamadun!"
Üretilen bir dll.
sunulan veya lanse edilen şey bir cross platform. Hybrid dense söylecek lafım olmaz. Çünkü hibrid te her yol mübah.
Siz müşteri olarak bir ürün istiyorsunuz. Bu bir araba olsun.
Bu ürün yalnızca İki fabrikada üretiliyor.
A fabrikası diyor ki; bunun gitmesi için benzine ihtiyacı var. Şoföre ihtiyacı var. aynı zamanda, akaryakıt tükettiği için periyodik bakımlarını da sık sık yapmanız gerekiyor.
B fabrikası diyor ki; bunun gitmesi için benzine ihtiyacı yok güneş veya ay ışı bile yeterli, üzerindeki akıllı sensörlerle kendi kendine gidebilir. Akaryakıt olmadığı için sık bakıma ihtiyacı da yok.
Hangi ürün size daha cazip gelir?
İki servis var.
A, birkaç servise ve harici konfigürasyon dosyalarına ihtiyaç duyuyor ve servis sürekliliği konusunda tereddütleri var.
B, OS'nin doğal kaynaklarını kullanır, harici bir servise ihtiyacı yok. Yayın yaptığı platformun konfigürasyon dosyalarını kullanıyor. Sürekli çalışabilirliği konusunda, kendisini tamamen OS'e bırakmış.
@
Fesih ARSLAN := Linux konfigürasyon dosyalarından farklı bir (Ini dosya yapısında) dosya olduğunu görüyoruz.
@
sddk := İlgili dosya Linux servislerini ayağa kaldırmak için kullanılan konfigürasyon dosyası. .Net Core ile alakalı değil. Aşağıda iki tane örnek link paylaştım. Mesela Delphi web uygulamanızı yayınlamak için kullandığınız Apache server'in konfigürasyon dosyasına bir göz atın.
@
Fesih ARSLAN := Neden .Net Core ile alakalı değil?
Delphi ile yazdığımız uygulamada, Linux sunucu uygulamasını ayağa kaldırmak için bu veya benzeri harici bir konfigürasyonu kullanmıyoruz. Servisin ayağa kalkması için webmodul dosyasının modüller dizinine taşınması ve bunu os'ye bildirmesi yetiyor.
"Mesela Delphi web uygulamanızı yayınlamak için kullandığınız Apache server'in konfigürasyon dosyasına bir göz atın." demişsiniz.
Microsoft bu dosyaya (Apache server'in konfigürasyon) neden göz atmıyor da harici bir yapı kullanıyor.
Ben zaten sunucu uygulamamı yayınlamak için bu dosyayı (Apache server'in konfigürasyon) kullanıyorum.
Bu hatalı bilgi ise hatalıyım.
@
Fesih ARSLAN := Çalıştırılan ve servis denen uygulama bildiğimiz
dll dosyası.
@
sddk := Çalıştırılan şey doğrudan dll dosyası değil, çalıştırılan .Net Core Runtime'ı. .Net Core Runtime, dll'in içerisindeki MSIL'i koşturuyor. Java'daki JRE'nin Bytecode taşıyan JAR ve WAR dosyalarını koşturmasına benzer bir yapı. (Farklılıkları var, detaylı bir konu)
@
Fesih ARSLAN := Nasıl yani?
.Net Core ile compile ettiğiniz dosyayı bana iletebilir misiniz? Dll olup olmadığına bakayım.
Dll değilse nedir?
Linux üzerinde yüksek bir bağımlılığı olan ek bir framework (.Net Core Runtime) üzerinde çalışması onun bir dll olmadığını mı ispatlıyor?
"Java'daki JRE'nin Bytecode taşıyan JAR ve WAR dosyalarını koşturmasına benzer bir yapı. " demişsiniz. java'nın yakalamış olduğu bu mimariyi başarabiliyorsa (ki hiç inanmıyorum; ne demişler adam olacak çocuk küçüklükten belli olurmuş.) ne ala. Fakat java'cılar biz JAR WAR üretmiyoruz demiyor.
Bu çalışma mantığı ile derlenmiş dosyanın farklı bir sanal platform üzerinde çalışması onun bir dll olmadığını mı ispatlıyor?
Eğer öyleyse yine ben hatalıyım.
@
Fesih ARSLAN := O zaman exe için de böyle bir eklenti yapsınlar. Böylece tüm dosyalarımızı Linux üzerinde çalıştırmış olalım!
@
sddk := url] (bir düzeltme değil, bilgi amaçlı)
@
Fesih ARSLAN :=Bilgilendirme için teşekkür ederim.
Burada benim vurgulamak istediğimi halen anlamamışsınız.
Native platform api'lerinin arada herhangi bir katman olmadan kullanılması gerektiğini söylüyorum.
Geleceğin tek OS'si, bulut OS olacak. bir monitör, dünyanın herhangi bir yerinden bize tahsis edilmiş bulut os'ye ulaşabileceğiz.
Bu OS üzerinde Linux, Mac OS X Windows, iOS ve Android uygulamaları çalışabilecek.
Bunu bizim nesil yakalar mı bilmem, fakat elinin kulağında olduğunu düşünüyorum.
@
Fesih ARSLAN := Dakika bir, gol bir; servis başlamadan kendimi nasıl kapatabilirim in yollarını arıyor.
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10Yani diyor ki "Dotnet servisi kilitlenirse servisi 10 saniye sonra yeniden başlatın". Türkçesi; bana güven olmaz, ara sıra donabilirim. Sen beni ısıt.

@
sddk :=Yeniden başlatılacak olan şey .Net Core Runtime'ı değil, sizin yazdığınız servis. Yani Türkçesi "Size/geliştiriciye güven olmaz, yazdığın servis kırılırsa Linux bunu yeniden başlatsın ister misin?". Mesela aşağıdaki linkte MySql systemd dosyası örneği var, Restart satırını bu dosyada da görebilirsiniz.
https://github.com/charliesome/mysql-5.5...ld.service
@
Fesih ARSLAN := MySql systemd'nin de restart ihtiyacı olması, yazacağımız servisin restart ihtiyacı mutlaka olacak manasına gelmez. Biz servisi yazarken en stabil durumu değerlendiriyoruz.
Olsun fakat, olmadan da olduğunu görüyoruz.
Ayrıca servis neden yeniden başlanma ihtiyacı duyar?
İlk mesajımda yazmıştım. Delphi ile yazdığımız servislerde şu ana kadar buna ihtiyaç duymadım.
.Net ve Windows'un klasikleşmiş yada kanayan yarası mı demeliyim; kapat-aç düzelir.
Delphi ile yazdığımız uygulamalar Apache üzerinden yayınlanıyor ve işletim sisteminin başlaması ile load ediliyor. İşletim sistemi ayakta durduğu sürece de çalışması devam ediyor.
Bunun sebebi sanırım arka planda kullanmış olduğu native metodlar olsa gerek.
Bu bilginin neresi hatalı sizce?
Servisin kendi kendini restart etmemesi gerektiği mi?
@
Fesih ARSLAN :=
KillSignal=SIGINT
Satırında bir emniyet kemeri kullanıyor (teşbihte hata olmaz: eşeği sağlam kazığa bağlıyor); eğer uygulama yeniden başlatılamaz ise, harici bir servisle ben seni sonlandırabileyim diyor. yani harici bir etki ile beni sonlandırabilir veya yeniden başlatabilirsiniz, diyor.
@
sddk :=Kill signal Linux üzerinde kernel'in veya bir prosesin veya kullanıcının bir prosese kill sinyali göndermesi ile alakalı. Sistemin bir şekilde servisinizi durdurması gerekir ise KillSignal ile belirttiğiniz sinyali size gönderir, sizde servisinizde bu sinyali yakalayıp servisinizi doğru şekilde sonlandırmaya çalışırsınız. (aslen bayağı detaylı bir konu) Aşağıda bir mariadb servisinin konfigürasyon dosyası var, KillSignal=SIGTERM satırını görebilirsiniz.
https://github.com/Dlackware/gnome/blob/...db.service
@
Fesih ARSLAN :=Son kullanıcı neden bir servisi kill etsin?
Ha bu bir geliştirici ise zaten istediği gibi kill edebiliyor yada çalışıp çalışmadığını status parametresi ile öğrenebiliyor.
@
Fesih ARSLAN :=
5- msdn'den devam edelim. Sonrasında aşağıdaki komutu çalıştırın diyor.
sudo systemctl enable kestrel-helloapp.service
Yani uygulamayı web servis olarak çalıştırmak için Linux üzerinde çalışan bir servis oluşturun ve bunu çalıştırın. Bir servisin çalışması bu ana servisin çalışmasına bağlı. (İlk maddede bahsetmiş olduğum bağımlılık.)
6- Linux file sistem yapısına aykırı bir dosya (dll), kestrel denilen farklı bir uygulamayla yayınlanıyor. Tabi bunun için bir de kestrel servisinin çalışması gerekiyor. Bunu nereden biliyorum? msdn de işlemin devamında bu servisin loglarını aşağıdaki servis üzerinden takip edebilirsiniz diyor.
sudo journalctl -fu kestrel-helloapp.service
@
sddk := Kestrel bir web sunucusu. Apache'yi durdursak, sizin Delphi ile geliştirdiğiniz so dosyası çalışmaya devam edebilir mi? (CGI olarak derlerseniz evet çalışır ama bunun da dezavantajları var)
@
Fesih ARSLAN :=
Alıntı:NET çerçevesinde https destekler ve .NET Core için geliştirilmiştir.
...
Kestrel, herhangi bir platformda ASP.NET uygulamalarını barındırmak için kullanılan açık kaynaklı kodlu, olaya dayalı ve eşzamansız, I / O tabanlı bir sunucudur.
...
Kestrel’in önerilen kullanımı aşağıda göreceğiniz gibi ön tarafında IIS Nginx,Apache vb. bir sunucu şeklindedir.
....
Kaynak: Nedir Bu Kestrel Web Sunucusu ? Artısı – Eksisi Ve Daha Fazlası
Apache'yi durdurursanız o sunucu üzerindeki tüm web servisleri de durdurmuş olursunuz. Çünkü Linux üzerinde web yayını yapan uygulamaların tümü Apache kullanıyor.
Mikrosoft neden Apache kullanmıyor? Dll'i tanımıyor olmasından olabilir mi acaba?
Yada neden kestrel kullanıyorsanız; "ön tarafında IIS Nginx, Apache vb. bir sunucu kullanın" önerilerinde bulunuyorlar? Bundan hangi sonucu çıkarmalıyız?
Yukarıdaki kaynakta kestrel için; ".NET Core için geliştirilmiştir." deniyor. Yani sizin ürettiğiniz platforma yabancı bir dosyayı "bak bu yabancı değil, buda sizden" gazlarını verecek bir ara katman. OS üzerinden gelecek http handle'larını yakalayacak, sizin servisi ayakta tutmaya çalışacak ve gelen istekler .Net ile ilgili ise ve bu bizim servise istekte bulunuyor ise, isteği bizim servise yönlendir. Sonra o da değerlendirsin, kestrel'e bildirsin o da istemciye aynı kanaldan göndersin.
İşin en ilginç tarafı da açık kaynak kodlu ve MS tarafından geliştirilmeye devam ediliyor olmasıdır.
Tamamen bir MS ürünü.
@
sddk := .Net Core sizin bahsettiğiniz kadar kötü bir platform olsa stackoverflow .Net'ten .Net Core'a taşınır mıydı? Veya çiçeksepeti?
@
Fesih ARSLAN := .Net Core kötü demedim. Kulağı tersten tuttuğunu söylüyorum. Stackoverflow gibi tecrübeye sahip bir form bunu yaptıysa, yarın da başka bir platforma taşınmayı emin olun ki masaya yatırmıştır.
Çiçek sepeti'nin taşınma nedeni belli;
Dünyanın önde gelen e-ticaret sitelerinden Amazon Çiçeksepeti’ne (Ciceksepeti.com) ortak oldu. 
Başkasının ne kullandığından ziyade bir teknolojiyi birlikte irdeleyelim.
Yıllardır yazılım teknolojilerinin içinde olan, full üstü full stack developer'lar olarak

bizler (siz, biz ve Delphican'lar), bir teknolojiye bodoslama atlamadan önce araştıralım. Öğrenelim ve öğretelim.
Değerlendirelim.
Artı ve eksilerine bakalım.
Yazdıklarımın özünü anlayamadığınızı düşünüyorum.
Özetle; MS ile geliştirdiğimiz web service .so uzantılı olsun.
Bu dosyayı Linux servisler dizinine taşıyalım ve OS'nin bunu load etmesini sağlayalım
Apache konfigürasyonunu yapalım.
Yayınlanmış olsun.
Servisin yaşam döngüsü tamamen native ve OS bağımlı olsun. Yani OS'nin gücünü kullansın.
Dünya devi bir yazılım şirketi, yıl olmuş 2020, Unix tabanlı OS'ler bu firma varolduğundan beri var. Peki ne oldu da kafaya yeni dank etti. Sebebini bulmak çok zor olmasa gerek; o OS'nin çalışma prensibi, performansı ve yüksek donanım uyumluluğu.
Peki siz bu OS üzerine sanal bir OS inşa ederseniz bunu gücünden ne kadar fayda göreceksiniz?
Bu teknolojinin akıbeti; başta windows phone olmak üzere, Link-To-SQL, compactFramework, microFramework, SilverLight, wcf, wpf, Windows Forms, Web Forms ölmekte olan Xamarin gibi olacak. (Kaynak:
https://www.youtube.com/watch?v=oyb27_HZb_4 ve
https://www.bayramucuncu.com/microsoftun...olojileri/)
@
Fesih ARSLAN := Zaten bu hatalarımızı düzeltmek için buradayız.
Bu hataları düzeltebilir misiniz?
@
sddk := Bildiğimce düzeltmeye çalışayım;
@
Fesih ARSLAN :="Ya siz anlatamadınız ya ben anlayamadım!"