ASP.Net Core 3.1 “Blazor” (Giriş) - Bölüm 1

{Kamil Kaplan} ®
Kodcular
Published in
4 min readJul 28, 2020

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.

https://codeshare.io/5OwWzP

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.

Blazor WebAssembly

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.”

Blazor Server

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 Server Side vs WebAssembly
  • 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 genellikler REST API'lar üzerinde oluyor. Bu aynı Angular, React, Vue ve diğer JS framework ’leri gibi, yani arka tarafta bir WebAPI 'a çalışıyor. ( RESTful )
    Blazor WebAssembly ’de Offlne çalıştığı için PWA '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çin JS '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 bir blazor.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ğı )

--

--