• 30.10.2026 19:12:38
  • İbrahim Gökyar

ASP.NET Web Forms projelerini modernize etmek için ASP.NET Core MVC ve Blazor yaklaşımlarını karşılaştıran, adım adım geçiş stratejileri ve kod örnekleri içeren pratik bir rehber.

ASP.NET Web Forms'tan ASP.NET Core ve Blazor'a Geçiş Rehberi

Birçok kurumsal projede yıllardır ASP.NET Web Forms kullanıldı. Ancak .NET ekosistemi ASP.NET Core ve Blazor gibi daha modern alternatiflerle evrildi. Bu makalede Web Forms uygulamalarını günümüze taşımanın nedenlerini, stratejilerini ve pratik örnekleri ele alacağız. Hedef, çalışan yazılımcıların gerçek dünya projelerinde karar vermesine yardımcı olacak net bir yol haritası sunmaktır.

Neden Web Forms'tan Taşınmalı?

Web Forms, 2000'li yılların başında web geliştirmeyi masaüstü benzeri deneyimlerle birleştirerek popüler oldu. Ancak zaman içinde front-end ekosistemi değişti: istemci tarafı uygulamalar, bileşen tabanlı mimariler ve daha hafif sunucu tarafı çatıları öne çıktı. Web Forms ise ViewState ve Page Lifecyle gibi paradigmalara sıkıştı.

ASP.NET Core ve Blazor, performans, barındırma esnekliği (Linux, Docker), modern bağımlılık enjeksiyonu, middleware ve daha iyi test edilebilirlik gibi avantajlar sunar. Ayrıca Microsoft tarafından aktif olarak geliştiriliyor ve uzun vadede daha güvenli bir tercih oluşturuyor.

Geçiş Stratejileri: Büyük Yeniden Yazma mı, Kademeli Modernizasyon mu?

Genelde iki temel strateji vardır: uygulamayı baştan yazmak veya kademeli olarak modernize etmek. Baştan yazmak temiz bir başlangıç sağlar ancak maliyetli ve risklidir. Kademeli modernizasyon ise daha yönetilebilir bir yol sunar; parçalar şeklinde dönüşüm yapılır.

Kademeli yaklaşımda uygulanabilecek adımlar:

  • Monolitik uygulamanın sınırlarını belirlemek (modüller, iş kuralları, veri erişimi).
  • Soyutlama katmanları oluşturup iş mantığını UI'dan ayırmak.
  • API katmanı (ASP.NET Core Web API) oluşturup Web Forms ile birlikte çalıştırmak.
  • Yeni sayfaları veya modülleri ASP.NET Core MVC veya Blazor ile yazmak.

Hangi Teknolojiyi Seçmeli: ASP.NET Core MVC mi, Blazor mu?

Seçim, proje gereksinimlerine bağlıdır. ASP.NET Core MVC klasik sunucu tarafı modelini korur ve SEO ile uyumlu, hafif uygulamalar için uygundur. Blazor ise C# ile bileşen tabanlı UI yazmaya izin verir; istemci tarafı için Blazor WebAssembly, sunucu tarafı için Blazor Server seçenekleri vardır.

Karar kriterleri:

  • Ekip yetenekleri: JavaScript/TypeScript tecrübeniz yüksekse SPA çatıları da değerlendirilebilir; C# ağırlıklı ekipler için Blazor cazip.
  • SEO ve ilk yükleme hızı: SEO kritikse server-side rendering/ASP.NET Core MVC veya prerender edilen Blazor tercih edilebilir.
  • Gerçek zamanlı etkileşim: Blazor Server veya SignalR kullanımını düşünebilirsiniz.

Pratik Adım: Web Forms'tan API'ye Geçiş (Örnek)

Çoğu Web Forms uygulaması iş mantığını code-behind içinde tutar. Öncelikli adım iş mantığını servis katmanına alıp Web API üzerinden sunmaktır. Aşağıdaki örnek, bir kullanıcı listesini döndüren eski bir Web Forms kodunu servis katmanına taşıma örneğidir.

<!-- WebForms: Users.aspx.cs (örnek) -->
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var users = UserRepository.GetAll();
        UsersGrid.DataSource = users;
        UsersGrid.DataBind();
    }
}

// Yeni: ASP.NET Core API Controller
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    private readonly IUserService _userService;
    public UsersController(IUserService userService)
    {
        _userService = userService;
    }

    [HttpGet]
    public IActionResult Get()
    {
        var users = _userService.GetAll();
        return Ok(users);
    }
}

Bu adım Web Forms sayfalarının veri alışverişini API üzerinden yapmasını sağlar. Daha sonra ön uç sayfalarını kademeli olarak ASP.NET Core veya Blazor bileşenleriyle değiştirebilirsiniz.

Blazor ile Bileşen Tabanlı Yeniden Yazım Örneği

Aşağıda basit bir Blazor bileşeni örneği yer alıyor. Bu bileşen, API'den kullanıcı listesini çekip gösterir. Blazor, C# ile istemci mantığı yazmayı mümkün kılar; böylece JavaScript altyapısına bağımlılık azalır.

<!-- Users.razor -->
@inject HttpClient Http

<h3>Kullanıcılar</h3>
@if (users == null)
{
    <p>Yükleniyor...</p>
}
else
{
    <ul>
    @foreach (var u in users)
    {
        <li>@u.Name (@u.Email)</li>
    }
    </ul>
}

@code {
    private List users;

    protected override async Task OnInitializedAsync()
    {
        users = await Http.GetFromJsonAsync<List<UserDto>>("/api/users");
    }
}

Bu örnek, kademeli dönüşümde Web Forms sayfalarının yerini alacak yeni UI'ların nasıl yazılabileceğini gösterir.

Mimari Öneriler ve En İyi Uygulamalar

Geçiş sırasında bazı temel prensiplere uymak riski azaltır:

  • İş kurallarını UI'dan ayırın — servis katmanı ve domain modelleri oluşturun.
  • Veri erişimini soyutlayın — repository veya CQRS yaklaşımlarını değerlendirin.
  • Sürekli entegrasyon ve otomatik testleri erken devreye alın — birim testler ve entegrasyon testleri hataları azaltır.
  • Geçişi parçalara bölün — önce read-only kısımları taşımak genelde daha az risklidir.

Ayrıca, ViewState ve server controls gibi Web Forms özelliklerine bağımlılığı en aza indirin. Bu durum, yeniden yazım sürecini kolaylaştırır.

Sık Sorulan Sorular

1. Web Forms projelerini tamamen Blazor'a taşımak mantıklı mı?

Projeye göre değişir. Eğer ekip C#'ta güçlü ve interaktif istemci deneyimi hedefleniyorsa Blazor mantıklıdır. Ancak SEO, ilk render hızı veya geniş bot trafiği önemliyse ASP.NET Core MVC veya hibrit çözümler değerlendirilmelidir. Kademeli geçiş genelde daha güvenlidir.

2. Eski Web Forms kontrollerini yeniden kullanabilir miyiz?

Doğrudan yeniden kullanmak zordur çünkü Web Forms kontrolleri Page Lifecycle ve ViewState'e bağlıdır. Ancak iş mantığı ve servis katmanları ayrıştırıldıysa, veri erişimi ve domain kodu yeniden kullanılabilir. UI katmanı genelde yeniden yazılmalıdır.

3. Geçiş sırasında SEO ve URL sürdürülebilirliğini nasıl koruruz?

URL yapısını korumak için yönlendirmeler (redirect) ve benzer route yapılandırmaları kullanın. ASP.NET Core'da URL Rewrite veya yönlendirme middleware ile eski yolları yeni API/Controller/Blazor sayfalarına yönlendirebilirsiniz. Ayrıca meta etiketleri ve server-side rendering stratejilerini değerlendirin.

İlgili Eğitim

Sonuç

ASP.NET Web Forms'tan modern .NET dünyasına geçiş, doğru planlama ve kademeli uygulama ile yönetilebilir bir süreçtir. ASP.NET Core MVC performans, esneklik ve hosting avantajı sunarken; Blazor, C# bilen ekipler için bileşen tabanlı bir alternatif oluşturur. Anahtar, iş mantığını UI'dan ayırmak, API katmanı oluşturmak ve dönüşümü parça parça gerçekleştirerek riski azaltmaktır. Bu rehberdeki örnekler ve yaklaşımlar günlük projelerde uygulanabilir bir yol haritası sağlar.

📚 Bu konuyu Opendart Akademi'de öğrenin: .NET Core eğitimi · .NET Core ReactJS eğitimi hakkında · YouTube video dersleri · Abone ol