Modern Web Uygulamalarının Özellikleri

İpucu

Bu içerik, .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan ASP.NET Core ve Azure ile Modern Web Uygulamaları Mimarisi adlı e-Kitap'tan bir alıntıdır.

Architect Modern Web Applications with ASP.NET Core and Azure eBook cover thumbnail.

"... uygun tasarıma sahip olan özellikler ucuza gelir. Bu yaklaşım zorlu olsa da başarılı bir şekilde devam ediyor."
- Dennis Ritchie

Modern web uygulamalarının kullanıcı beklentileri ve talepleri hiç olmadığı kadar yüksektir. Günümüzün web uygulamalarının dünyanın her yerinden 7/24 kullanılabilir olması ve neredeyse her cihazdan veya ekran boyutundan kullanılabilir olması beklenmektedir. Web uygulamalarının talepteki ani artışları karşılamak için güvenli, esnek ve ölçeklenebilir olması gerekir. Gitgide karmaşık senaryolar JavaScript kullanılarak istemci üzerinde oluşturulan zengin kullanıcı deneyimleri tarafından ele alınmalıdır ve web API'leri aracılığıyla verimli bir şekilde iletişim kurulmalıdır.

ASP.NET Core, modern web uygulamaları ve bulut tabanlı barındırma senaryoları için iyileştirilmiştir. Modüler tasarımı, uygulamaların yalnızca gerçekten kullandıkları özelliklere bağımlı olmasını sağlar ve barındırma kaynağı gereksinimlerini azaltırken uygulama güvenliğini ve performansını artırır.

Başvuru uygulaması: eShopOnWeb

Bu kılavuz, bazı ilke ve önerileri gösteren bir başvuru uygulaması olan eShopOnWeb'i içerir. Uygulama, gömlekler, kahve bardakları ve diğer pazarlama ürünleri kataloğunda gezinmeyi destekleyen basit bir çevrimiçi mağazadır. Başvuru uygulaması, anlaşılmasını kolaylaştırmak için kasıtlı olarak basittir.

eShopOnWeb

Şekil 2-1. eShopOnWeb

Başvuru Uygulaması

Bulutta barındırılan ve ölçeklenebilir

ASP.NET Core, düşük bellek ve yüksek aktarım hızına sahip olduğundan bulut (genel bulut, özel bulut, herhangi bir bulut) için iyileştirilmiştir. ASP.NET Core uygulamalarının daha küçük ayak izi, bunların daha fazlasını aynı donanımda barındırabileceğiniz ve kullandıkça öde bulut barındırma hizmetlerini kullanırken daha az kaynak için ödeme yapabileceğiniz anlamına gelir. Daha yüksek aktarım hızı, aynı donanıma sahip bir uygulamadan daha fazla müşteriye hizmet verebileceğiniz ve sunuculara ve barındırma altyapısına yatırım yapma gereksinimini azaltabileceğiniz anlamına gelir.

Platformlar arası

ASP.NET Core platformlar arasıdır ve Linux, macOS ve Windows üzerinde çalıştırılabilir. Bu özellik, ASP.NET Core ile oluşturulan uygulamaların geliştirilmesi ve dağıtımı için birçok yeni seçenek sunar. Hem Linux hem de Windows olan Docker kapsayıcıları ASP.NET Core uygulamalarını barındırarak kapsayıcıların ve mikro hizmetlerin avantajlarından yararlanmalarına olanak tanır.

Modüler ve gevşek bir şekilde bağlanmış

NuGet paketleri .NET Core'daki birinci sınıf vatandaşlardır ve ASP.NET Core uygulamaları NuGet aracılığıyla birçok kitaplıklardan oluşur. Bu işlevsellik ayrıntı düzeyi, uygulamaların yalnızca ihtiyaç duydukları işlevlere bağımlı olmasını ve dağıtılmasını sağlayarak ayak izlerini ve güvenlik açığı yüzey alanını azaltmaya yardımcı olur.

ASP.NET Core, hem dahili hem de uygulama düzeyinde bağımlılık eklemeyi de tam olarak destekler. Arabirimler, gerektiğinde değiştirilebilen birden çok uygulamaya sahip olabilir. Bağımlılık ekleme, uygulamaların belirli uygulamalar yerine bu arabirimlerle gevşek bir şekilde birleştirilmesine olanak tanır ve bu sayede bunları genişletmek, korumak ve test etmek daha kolay hale getirir.

Otomatikleştirilmiş testlerle kolayca test edilebilir

ASP.NET Core uygulamaları birim testini destekler ve bağımlılık eklemeye yönelik gevşek bağlama ve destek, altyapı sorunlarını test amacıyla sahte uygulamalarla değiştirmenizi kolaylaştırır. ASP.NET Core, uygulamaları bellekte barındırmak için kullanılabilecek bir TestServer ile birlikte de birlikte verilir. İşlevsel testler daha sonra bu bellek içi sunucuya istekte bulunabilir, tam uygulama yığınını (ara yazılım, yönlendirme, model bağlama, filtreler vb.) uygular ve bir yanıt alır. Bunların tümü, uygulamayı gerçek bir sunucuda barındırmak ve ağ katmanı üzerinden istekte bulunmak için gereken sürenin çok daha kısa bir bölümünde olur. Bu testler özellikle modern web uygulamalarında giderek daha önemli hale gelen API'ler için kolay ve değerlidir.

Desteklenen geleneksel ve SPA davranışları

Geleneksel web uygulamaları çok az istemci tarafı davranışı içerir, ancak bunun yerine uygulamanın yapması gereken tüm gezinti, sorgular ve güncelleştirmeler için sunucuya dayanır. Kullanıcı tarafından yapılan her yeni işlem yeni bir web isteğine çevrilir ve sonuç son kullanıcının tarayıcısında tam sayfa yeniden yüklenir. Klasik Model-Görünüm Denetleyicisi (MVC) çerçeveleri genellikle bu yaklaşımı izler ve her yeni istek farklı bir denetleyici eylemine karşılık gelir ve bu da modelle çalışır ve bir görünüm döndürür. Belirli bir sayfadaki bazı tek tek işlemler AJAX (Zaman Uyumsuz JavaScript ve XML) işlevselliğiyle geliştirilebilir, ancak uygulamanın genel mimarisi birçok farklı MVC görünümü ve URL uç noktası kullandı. Ayrıca ASP.NET Core MVC, MVC stili sayfaları düzenlemenin daha kolay bir yolu olan Razor Pages'ı da destekler.

Bunun aksine, Tek Sayfalı Uygulamalar (SPA'lar), dinamik olarak oluşturulan çok az sunucu tarafı sayfa yükü (varsa) içerir. Birçok SPA, uygulamayı başlatmak ve çalıştırmak için gerekli JavaScript kitaplıklarını yükleyen statik bir HTML dosyası içinde başlatılır. Bu uygulamalar, veri ihtiyaçları için web API'lerini yoğun bir şekilde kullanır ve çok daha zengin kullanıcı deneyimleri sağlayabilir. BlazorWebAssembly , .NET kodu kullanarak SPA oluşturmanın bir aracıdır ve istemcinin tarayıcısında çalışır.

Birçok web uygulaması geleneksel web uygulaması davranışının (genellikle içerik için) ve SPA'ların (etkileşim için) birleşimini içerir. ASP.NET Core, aynı araç kümesini ve temel alınan çerçeve kitaplıklarını kullanarak aynı uygulamada hem MVC (Görünümler veya Sayfa tabanlı) hem de web API'lerini destekler.

Basit geliştirme ve dağıtım

ASP.NET Core uygulamaları basit metin düzenleyicileri ve komut satırı arabirimleri veya Visual Studio gibi tam özellikli geliştirme ortamları kullanılarak yazılabilir. Monolitik uygulamalar genellikle tek bir uç noktaya dağıtılır. Dağıtımlar, sürekli tümleştirme (CI) ve sürekli teslim (CD) işlem hattının bir parçası olarak kolayca otomatikleştirilebilir. Microsoft Azure, geleneksel CI/CD araçlarına ek olarak git depoları için tümleşik desteğe sahiptir ve belirtilen git dalında veya etiketinde yapıldıklarında güncelleştirmeleri otomatik olarak dağıtabilir. Azure DevOps tam özellikli bir CI/CD derleme ve dağıtım işlem hattı sağlar ve GitHub Actions burada barındırılan projeler için başka bir seçenek sunar.

Geleneksel ASP.NET ve Web Forms

ASP.NET Core'a ek olarak geleneksel ASP.NET 4.x, web uygulamaları oluşturmak için sağlam ve güvenilir bir platform olmaya devam ediyor. ASP.NET, zengin sayfa tabanlı uygulama geliştirme için uygun olan ve zengin bir üçüncü taraf bileşen ekosistemine sahip Web Forms'un yanı sıra MVC ve Web API geliştirme modellerini destekler. Microsoft Azure, ASP.NET 4.x uygulamaları için uzun süredir büyük destek sunar ve birçok geliştirici bu platform hakkında bilgi sahibidir.

Blazor

Blazor ASP.NET Core 3.0 ve sonraki sürümlere dahildir. Razor, C# ve ASP.NET Core kullanarak zengin etkileşimli web istemcisi uygulamaları oluşturmak için yeni bir mekanizma sağlar. Modern web uygulamaları geliştirirken dikkate alınması gereken başka bir çözüm sunar. göz önünde bulundurulacak iki sürümü Blazor vardır: sunucu tarafı ve istemci tarafı.

Sunucu tarafı Blazor , 2019'da ASP.NET Core 3.0 ile piyasaya sürüldü. Adından da anlaşılacağı gibi sunucuda çalışır ve istemci belgedeki değişiklikleri ağ üzerinden tarayıcıya geri işler. Sunucu tarafı, istemci tarafı Blazor JavaScript gerektirmeden ve her istemci sayfası etkileşimi için ayrı sayfa yüklemeleri gerektirmeden zengin bir istemci deneyimi sağlar. Yüklenen sayfadaki değişiklikler sunucudan istenir ve sunucu tarafından işlenir ve ardından SignalR kullanılarak istemciye geri gönderilir.

2020'de yayımlanan istemci tarafı Blazor, değişiklikleri sunucuda işleme gereksinimini ortadan kaldırır. Bunun yerine, istemci içinde .NET kodunu çalıştırmak için kullanılır WebAssembly . İstemci, veri istemek için gerekirse sunucuya API çağrıları yapmaya devam edebilir, ancak istemci tarafındaki tüm davranış, tüm ana tarayıcılar tarafından zaten desteklenen ve yalnızca bir JavaScript kitaplığı olan aracılığıyla WebAssemblyistemcide çalışır.

Başvurular – Modern Web Uygulamaları