ASP.Net Core 3.1 “Blazor” (Giriş) - Bölüm 1
Herkese selamlar, dostlar nasılsınız? Uzun zaman oldu bir şeyler yazmayalı. Bu aralar işler yoğun tam hızla çalışmalar devam ediyor. Zaman bulduğum şu kısa saatte yeni bir seriye başlıyoruz. ASP.NET CORE 3.1 "BLAZOR"
en temelden başlayıp. Ardında daha detaylı bir inceleme ile devam edeceğiz.
Bu arada yazımı alkışlamayı ve paylaşmayı, bi de beni takip etmeyi unutmayın :)
BLAZOR,
browser üzerinde C# ve HTML kullanarak geliştirme yapabilmemizi sağlayan bir web kütüphanesidir.
1. JS kütüphaneleri kullananan web uygulamalarının çalışma şekillerine bakalım. Normalde JS
framework ’ünü client browser ’ına indirir. İndirilen JS kütüphaneleri Parse
edilir, Parse
edildikten sonra Compile
edilir, Compile
edildikten sonrada Byte Code 'a
çevrilirler ondan sonra DOM
ile manipülasyonunu mümkün olur.
2. Ama BLAZOR
bundan farklı olarak WebAssembly
kullanır. WebAssembly,
C# ve herhangi başka bir dilin byte kodunu alıp direkt olarak browser’da çalıştırmamıza imkan sağlar.
3. .NET kendi run time .dll ’lerini WebAssembly
aracığı ile blazor kütüphanesi ile browser ’ın içerisine gömüyor ve DOM manipülasyonunu mümkün kılıyor.
4. WebAssembly,
aslında Microsoft’un çıkardığı birşey değil. WASM, Mozilla, Microsoft, Goggle, Apple ve W3C'un
beraberce oluşturduğu ve 2017 'de çıkarttıkları bir teknolojidir.
‘Temel olarak binary code’un browser üzerinde çalışabilmesine imkan sağladılar.’
5. Blazor Client
ile .NET
ekosisteminin avantajlarını web ortamına taşımış oluyoruz. C# linq kullanıp asenkron programlama yapabiliriz. C# kodumuzu front-end ve back-end ‘te paylaşabiliriz. C# ekositeminde yapabileceğimiz herşeyi browser ’da yapabiliriz.
6. Blazor Server Side
modelimizde, uygulama server üzerinde çalışıyor yani .NET
kodumuz server üzerinde ayakta, kodumuz server ’da çalışır vaziyette olduğundan Browser ’a client muhamelesi yapılır. Client ’ta sadece küçük bir blazor paketi bırakılır ve bütün SignalR bağlantıları ve DOM etkileşimi bu küçük paket üzerinden kuruluyor. Client ’ın her bir event ’i SignalR bağlantısı üzerinden Server ile iletişim kuruyor. Örneğin kodumuzda sadece bir html elementi değişikli olsun, bu SignalR üzerinden binary datası olarak server ’a iletilip, server ’da bağlı olduğu aksiyon alındıktan sonra client browser ’ın sadece o kısmı güncellenebilir.
“Burada şunu belirtmekte fayda var biz geliştirme yaparken SignalR ile ilgili hiç bir kodlama yazmıyoruz. Blazor tamamını arka tarafta hallediyor.”
7. Blazor Server Side vs WebAssembly : bu iki proje modeli veya hosting modeli olarak bahsetsekte, geliiştirilen projelerin code alt yapısı nerdeyse tamamen aynıdır.
- Blazor WebAssembly :
✔ Code client ’ın browser ’ına gittiğinden işlem yükü client tarafına aktarılıyor. ( Code yükü client tarafında )
✔ Server ile iletişimler genelliklerREST API'lar
üzerinde oluyor. Bu aynıAngular, React, Vue
ve diğerJS
framework ’leri gibi, yani arka tarafta birWebAPI 'a
çalışıyor. ( RESTful )
✔ Blazor WebAssembly ’deOfflne
çalıştığı içinPWA 'e
dönüştürülebiliyor.
( Offline & PWA dönüştürülebilir. )
✔ Kodumuz binary olduğu için yani binary olarak browser ’ın içerisinde bulunduğu içinJS 'den 6–12
kat daha hızlı çalışabilmektedir. ( Çok hızlı çalışma 6 - 12 > js )
✘ Blazor WebAssembly ’de yine .NET run time dll ’lerini client browser ’ına gönderdiğimizi söylemiştik, bu dll ’lerin boyutu şuan 2.2MB bir web sitesi için çok büyük bir rakam değil, bunun için halen bir çalışma var. - Blazor Server-Side :
✔ Client ’a sadece küçük birblazor.js
paketi gönderiyoruz, server SignalR ile haberleşiyor. ( Küçük payload )
✔ Kodumuz server üzerinde çalıştığı için DB ’de aynı server ’da ise Entity framework ’ü direk olarak sayfamıza enjekte edebiliriz. Bu bizi büyük bir API katmanından kurtarabilir. Bu Server-Side Blazor ’un development süresini çok kısaltan bit yöntem olur. ( Kaynağa direk erişim )
✔ Yeterli işlem gücü olmayan client ’lar için Server-Side yerinde bir karar olacaktır. İşlemci gücü olmayan cihazlar için çok kullanışlı bir yöntemdir.
( Güçsüz clientlarda çok kullanışlı )
✔ Şuanda Release versiyonundadır.
✘ Her zaman internet gerekli
✘ Sürekli server kaynağı harcanacaktır, bu kaynak çok büyük bit kaynak değildir. ( Server Kaynağı )
Bir sonraki makalede görüşmek ümidi ile sağlıcakla kalın.