İçeriğe geç
Teklif al

Hizmet · Danışmanlık, test ve bakım

.NET Framework'ten .NET'e geçiş

.NET Framework 4.x ile yazılmış bir uygulama bugün de çalışıyor olabilir; sorun, çalışmaya devam ettiği yerin daralmasıdır. Framework yalnızca Windows'a bağlı kalır, yeni dil ve çalışma zamanı özellikleri artık güncel .NET'e gelir, kullandığınız NuGet paketlerinin yeni sürümleri eski hedefi birer birer bırakır. Sonuçta ekip, ne güvenle güncelleyebildiği ne de gönül rahatlığıyla yeniden yazabildiği bir kod tabanının bakımına sıkışır.

Kategori
Danışmanlık, test ve bakım
Çalışma modeli
Proje bazlı
Hizmet bölgesi
Türkiye geneli, uzaktan ve yerinde

.NET Framework'ten .NET'e geçiş projesinde önce envanter çıkarırız: hangi proje türleri var, System.Web ve WCF'ye ne kadar bağımlısınız, hangi kütüphanelerin karşılığı yok, Windows'a özgü hangi API'ler kullanılıyor. Bu tabloya göre taşıma sırası belirlenir; ortak kütüphaneler önce .NET Standard ya da çoklu hedefle iki tarafta da çalışır hâle getirilir, ardından uygulama katmanları tek tek taşınır. Hedefimiz büyük bir kesme günü değil, her adımda yayına alınabilen ve geri dönülebilen küçük geçişlerdir.

.NET Framework'ten .NET'e geçiş kimlerin gündeminde

Geçiş ihtiyacı genellikle bir altyapı kararı ya da tıkanan bir geliştirme talebiyle görünür olur.

  • IIS üzerinde çalışan ASP.NET MVC ya da Web API uygulamasını Linux konteynerlerde barındırmak isteyen şirketler
  • Web Forms ile yazılmış iç portalının arayüzünü yenilemek ve iş kurallarını korumak isteyen kurumlar
  • WCF servisleri üzerinden bayi, şube ya da saha cihazlarıyla haberleşen ve bu katmanı modernleştirmek isteyen işletmeler
  • Windows sunucu lisans ve bakım yükünü azaltmak için bulut seçeneklerini değerlendiren BT ekipleri
  • Güncel kütüphane sürümlerine geçemediği için güvenlik açığı kapatmakta zorlanan yazılım ekipleri

Taşımayı zorlaştıran bağımlılıklar

Kodun büyük kısmı genellikle küçük değişikliklerle derlenir; zaman, karşılığı olmayan parçalarda harcanır.

  • 01

    System.Web ve Global.asax

    HttpContext.Current, HTTP modülleri ve oturum kullanımı ASP.NET Core'da aynı biçimde yoktur. Bu kodlar ara katman (middleware) ve bağımlılık enjeksiyonu yapısına yeniden yerleştirilir.

  • 02

    Web Forms sayfaları

    Web Forms güncel .NET'te desteklenmez; sayfalar Razor Pages, MVC ya da Blazor gibi bir arayüz modeline yeniden yazılır. Code-behind içine gömülü iş kuralları önce ayrı sınıflara çıkarılır ki arayüz değişirken kural kaybolmasın.

  • 03

    WCF sunucu tarafı

    İstemci tarafı güncel .NET'te kullanılabilirken servis tarafı için topluluk tarafından sürdürülen CoreWCF, gRPC ya da REST seçenekleri değerlendirilir. Karar, karşı tarafta kimin hangi istemciyle bağlandığına göre verilir.

  • 04

    Entity Framework 6 ve veri erişimi

    EF6 güncel .NET üzerinde de çalışabildiği için veri katmanı ilk adımda yerinde bırakılabilir. EF Core'a geçiş ise sorgu davranışındaki farklar test edilerek ayrı bir aşamada yapılır.

  • 05

    Windows'a özgü bileşenler

    Kayıt defteri erişimi, COM nesneleri, eski raporlama araçları ve Windows kimlik doğrulaması Linux'a taşınmayı engelleyebilir. Bunlar için uyumluluk paketi, alternatif kütüphane ya da Windows üzerinde kalma kararı açıkça verilir.

.NET Framework'ten .NET'e geçiş hizmetinde yaptıklarımız

Kapsam, envanter raporundan sonra iş kalemleriyle birlikte yazılı olarak netleşir.

  • 01

    Bağımlılık ve uyumluluk envanteri

    Microsoft'un sunduğu yükseltme ve uyumluluk analiz araçlarıyla ve elle yaptığımız kod okumasıyla her projenin hedef çatıda hangi API'leri bulamadığı listelenir. Paketler için güncel sürüm, alternatif ya da çıkarma önerisi yazılır.

  • 02

    Aşamalı taşıma planı

    Büyük web uygulamalarında YARP gibi bir ters vekil sunucu önüne konur; yeni yazılan uç noktalar ASP.NET Core'dan, henüz taşınmayanlar eski uygulamadan yanıt verir. Kullanıcı tek bir adres görür, geçiş sayfa sayfa ilerler.

  • 03

    Yapılandırma ve kimlik

    web.config ayarları appsettings dosyalarına ve ortam değişkenlerine, Forms Authentication çerezleri ASP.NET Core kimlik yapısına taşınır. Gizli değerler koddan çıkarılıp bir anahtar kasasına alınır.

  • 04

    Davranış eşitliği testleri

    Taşıma öncesinde kritik uç noktalar için mevcut yanıtları kaydeden testler yazılır; taşınan sürüm aynı girdilerle aynı çıktıyı vermeden yayına alınmaz. Tarih biçimi, kültür ayarı ve JSON serileştirmedeki farklar en sık yakalanan sorunlardır.

  • 05

    Barındırma ve yayın hattı

    Uygulama Kestrel üzerinde, gerekirse IIS arkasında ya da Docker konteynerinde çalışacak şekilde paketlenir. Derleme ve yayın adımları Azure DevOps, GitHub Actions ya da kullandığınız CI aracına göre yeniden kurulur.

Geçişte birlikte ele alınan sistemler

Uygulama tek başına taşınmaz; bağlı olduğu her sistem yeni çalışma ortamında yeniden doğrulanır.

  • 01

    SQL Server ve diğer veritabanları

    Bağlantı sağlayıcısı System.Data.SqlClient yerine Microsoft.Data.SqlClient olur; şifreleme varsayılanlarındaki fark bağlantı ayarlarında ele alınır.

  • 02

    Active Directory ve kurumsal oturum

    Windows kimlik doğrulaması kullanan iç uygulamalarda Negotiate desteği ya da Entra ID gibi bir kimlik sağlayıcısına geçiş seçenekleri karşılaştırılır.

  • 03

    ERP ve muhasebe bağlantıları

    Logo, Netsis ya da SAP Business One gibi sistemlere eski SOAP istemcileri veya veritabanı bağlantısıyla yazan kodlar yeni ortamda tek tek denenir.

  • 04

    Raporlama ve belge üretimi

    Crystal Reports ya da eski PDF kütüphaneleri gibi yalnızca Framework'te çalışan bileşenler için güncel bir raporlama aracı ya da ayrı bir rapor servisi planlanır.

  • 05

    Zamanlanmış işler ve Windows servisleri

    Görev zamanlayıcısıyla çalışan konsol uygulamaları ve Windows servisleri, Worker Service şablonuna ya da bir iş kuyruğuna taşınır.

.NET Framework'ten .NET'e geçiş hizmeti nasıl ilerler?

  1. Adım 01

    Analiz

    İş akışınızı, kullanıcılarınızı ve mevcut sistemlerinizi dinleriz; kapsamı, öncelikleri ve kabul ölçütlerini yazılı hâle getiririz.

  2. Adım 02

    Tasarım

    Ekran akışlarını ve veri modelini çıkarırız. Arayüzü sizinle gözden geçirip onay almadan geliştirmeye geçmeyiz.

  3. Adım 03

    Geliştirme

    Kısa döngülerle çalışırız; her döngü sonunda çalışan bir sürümü test ortamında görürsünüz.

  4. Adım 04

    Test

    İşlevsel testler, entegrasyon testleri ve temel güvenlik kontrolleriyle hataları yayından önce yakalarız.

  5. Adım 05

    Yayın

    Sunucu, alan adı, yedekleme ve izleme ayarlarını yaparak canlıya alırız; ekibinize kısa bir kullanım eğitimi veririz.

  6. Adım 06

    Bakım

    İsterseniz bakım ve destek anlaşmasıyla güncellemeleri, izlemeyi ve yeni geliştirmeleri sürdürürüz.

Taşıma kararlarında izlediğimiz ilkeler

Her şeyi aynı anda değiştirmeyiz. Çatı geçişi, veri erişim katmanının yenilenmesi ve arayüzün yeniden yazılması ayrı aşamalardır; üçünü birden yapmak bir hatanın hangi değişiklikten geldiğini bulmayı neredeyse imkânsız kılar. Önce çalışma zamanını değiştirip davranışı sabit tutar, mimari iyileştirmeleri sonraya bırakırız.

Devamını okuDaha az göster

Hedef sürüm olarak uzun süreli destek alan (LTS) bir .NET sürümünü öneririz; böylece taşıma bittiğinde bir sonraki zorunlu yükseltmeye kadar makul bir alan kalır. Masaüstü tarafta WinForms ve WPF uygulamaları da güncel .NET'e geçebilir, ancak Windows'a bağlı kalmaya devam eder; bu beklentiyi baştan netleştiririz.

Taşınan kodu her aşamada üretimdekiyle yan yana çalıştırıp günlükleri ve hata oranlarını karşılaştırırız. Geri dönüş yolu, yani eski sürüme trafiği yeniden yönlendirmek, eski kod tamamen kaldırılana kadar açık tutulur.

Bu hizmette çalışma modelleri

  • 01

    Proje bazlı

    Sabit kapsam, sabit fiyat ve belirli teslim tarihi

    Kapsamı belli, teslim tarihi olan işler için.

    • Yazılı kapsam ve kabul ölçütleri
    • Sabit fiyat ve belirli teslim tarihi
    • Teslim ve kabul adımları sözleşmede
    Bu modelle teklif alın: Proje bazlı

.NET Framework'ten .NET'e geçiş hakkında sık sorulan sorular

.NET Framework'ten .NET'e geçiş fiyatları neye göre değişir?

Proje sayısı, Web Forms ve WCF oranı, karşılığı olmayan paket sayısı, mevcut test kapsamı ve Linux'a çıkılıp çıkılmayacağı belirleyicidir. Envanter çalışmasından sonra her aşama ayrı kalem olarak fiyatlandırılır.

Uygulama geçiş sırasında kullanılmaya devam edebilir mi?

Evet. Aşamalı yöntemde eski ve yeni uygulama aynı anda çalışır, trafik uç nokta bazında yeni tarafa yönlendirilir. Kullanıcılar çoğu adımda bir değişiklik fark etmez.

Web Forms projemizi otomatik olarak dönüştürebilir misiniz?

Web Forms için güvenilir bir otomatik dönüştürme yolu yoktur. İş kurallarını sayfalardan ayırıp korur, arayüzü seçilen modelle yeniden kurarız; bu aşama çoğu projede işin en büyük kalemidir.

VB.NET ile yazılmış kodu da taşıyor musunuz?

VB.NET güncel .NET'te derlenir ve sınıf kütüphaneleri genellikle dil değiştirmeden taşınabilir. Web katmanında örnekler ve yeni özellikler C# odaklı olduğundan, arayüz yeniden yazılırken C#'a geçmeyi öneririz.

Geçiş ne kadar sürer?

Kod büyüklüğüne ve bağımlılıkların durumuna göre değişir; birkaç sınıf kütüphanesinden oluşan bir servis ile yüzlerce sayfalık bir portal aynı takvimde ele alınmaz. Envanterden sonra aşama aşama yazılı bir takvim sunarız.

.NET Framework'ten .NET'e geçiş firması seçerken nelere bakmalıyım?

Önerilen yöntemin aşamalı olup olmadığına, davranış eşitliğinin nasıl test edileceğine ve geri dönüş planına bakın. Kodu bir kez dönüştürüp teslim eden bir yaklaşım, canlıda ortaya çıkan farkları size bırakır.

İlgili hizmetler ve sayfalar

.NET Framework'ten .NET'e geçiş için teklif alın

Kısa bir ön görüşmede ihtiyacınızı dinleyip kapsamı, çalışma modelini ve takvimi yazılı olarak paylaşırız.

+90 552 579 93 21