Blazor ve ASP.NET Core'da neler oluyor... - Arda Çetinkaya
.NET Core 3 Preview 3 ile beraber, ASP.NET Core içindeki “Razor Components” kavramı ile tanışmıştık. Basitçe, istemci tarafında interaktif web ara yüzleri geliştirmek için yeni bir ön yüz(UI) modeli diye özetleyebilirim. Tarayıcıda(browser), yazdığımız C# kodlarının çalıştırılabilir olması temeline dayanan yeni bir yaklaşım(dı). -Dı diyorum çünkü biraz değişti…
Bu yazının çıkış noktası .NET Core 3.0 Preview 4‘ü indirmek için bu adresi ziyaret edebilirsiniz.
Temelinde Blazor, “Web Assembly(Wasm)” kavramının gücü ile olabilen, Wasm’nin tarayıcılarda binary olarak belli yapıların çalışabilmesi sağlaması yaklaşımından ortaya çıkan bir framework. Wasm’ın genel olarak daha yeteri kadar olgunlaşmaması ve kabul görmemesinden dolayı Blazor’da deneysel olarak paylaşılmıştı, daha çok yolumuz var bilinci ile geliştiriliyordu.
.Net Core 3.0 Preview 3 ile beraber deneysellikten çıkıp biraz daha gerçeğe Microsoft tarafında yakınlaşmıştı. “Client-side hosting” ve “Server-side hosting” çalışma modelleri ile Blazor uygulamalarının çalışma yöntemlerini biraz mevcut kavramlara yakınlaştırarak aktif olarak hayatımıza girecek izlenimi verdi. “Client-side” modelini, direkt olarak Wasm yaklaşımı ile tarayıcının UI thread’inde çalışan bir .NET uygulaması olarak düşünebilirsiniz. Mesela bu şekilde geliştirilen bir web uygulamasına tarayıcınızdan eriştiğinizde, uygulama içeriği, .NET Runtime’ı vs. tarayıcınıza inip, Wasm sayesinde çalışabilecek. Çalışabilecek diyorum çünkü şu an için .NET Core 3.0 ile beraber bu çalışma modeli çok sağlıklı mümkün değil, direkt mümkünde olmayacak gibi. En azından şu an için bu şekilde açıklanıyor. Belki 4.0’da falan…İleride göreceğiz.
Küçük bir düzeltme, doğrusu biraz daha netleşmesi için ekleme yapmak isterim. Client-side hosting modelinde, bir uygulamanın *.dll ve .net runtime‘ı tarayıcı tarafına inmek durumda. Burda tahmin edersiniz ki, web uygulamalarında indirme olayı boyut açısından önemli bir kriter. Dolayısıyla daha sağlıklı, daha optimum bir durum olana kadar “üretim” senaryoları için .NET Core 3.0 ve Blazor’da “Client-side hosting” beklenen sonuçları veremeyeceği için temkinle yaklaşılıyor.
Güncelleme: 20 Nisan 2019
Mesela bir HTML Input tag’inde onkeydown DOM event’inde, C# ile yazılmış bir methodu çalıştırmak mümkün.
<input type=”text” onkeydown=”@SomeMethod”>
ASP.NET tarafında zaten yıllardır olan bir şey dediğinizi duyuyorum. Bu noktada yapılan Request ve dönen Response‘un tarayıcı açısından farklı olduğunu, daha yalın ve basit olduğunu söyleyebilirim. Bunlara daha sonra girişeceğim, yani umarım 🙂
Dediğim gibi .NET Core 3.0 Preview 3 ile beraber bu yapı Razor Components adı ile yer almıştı. Blazor’ın client-side hosting modeline, Blazor, server-side hosting modeline Razor Components denmişti. Biraz karışıklığa sebep oluyordu. Bunun üzerine çok fazla tartışma, yazışma döndü. GitHub taraflarını takip ederseniz, görebilirsiniz. Belli bir mantık çerçevesinde anlaşılmış olacak ki, .NET Core 3.0 Preview 4 ile beraber Razor Components kavramı ortadan kalktı ve Blazor(Server-side)‘a dönüştü. Olması gereken, gerçek adına geri döndü yani… Yazının başında -Dı diye dediğim değişiklik kısmı bu oldu yani.
.NET Core 3.0 Preview 4’ü yükledikten sonra Visual Studio 2019’da proje şablonu olarak Blazor’ı görebilirsiniz
.NET Core 3.0 Preview 4 ile beraber Blazor uygulama modeli de deneysel bir model olmaktan çıktı ve ilk Preview versiyonuna kavuştu. .NET Core 3.0 RTM olduğu zaman Blazor(Server-side) modeli de kullanılabilir olacak gibi.
Açıkcası Razor Components ile ilgili bir şeyler karalamış ve örnekler üzerinden paylaşmaya hazırlanıyordum. Ama .NET Core tarafında bu değişiklikler gündeme gelince duraksamış ve biraz daha net çıktıların oluşmasını bekledim. Hala Preview aşamasında bir çok şey. Beta, Release Candidate derken yine bir çok şey değişebilir. Ama şu an yol haritasında Blazor(Server-Side) biraz daha net gibi… Ayrıca yazıları bekleteceğime, en azından öğrendiklerimi, tecrübe ettiklerimi paylaşmış olurum diye bu kısa yazıyı yazasım geldi. 🙂
Şimdilik bu kadar… “Çok konuştun, kes sesini ve biraz kod göster” dediğinizi duyar gibiyim. Belli örnekler üzerinden bir sonraki yazı ile daha çok kod okumanız için çalışacağım. Şimdilik anahtar kelimeler ile araştıracak konular için ön ayak olmuş olayım…
*Bir sonraki yazıya kadar https://dotnet.microsoft.com/apps/aspnet/web-apps/client adresinden tüm gelişmeleri takip edip, öğrenebilirsiniz.