01Sorun ve çözüm
.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.
02Kimler için
.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
03İhtiyaçlar
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.
04Özellikler
.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.
05Entegrasyonlar
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.
06Süreç
.NET Framework'ten .NET'e geçiş hizmeti nasıl ilerler?
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.
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.
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.
Adım 04
Test
İşlevsel testler, entegrasyon testleri ve temel güvenlik kontrolleriyle hataları yayından önce yakalarız.
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.
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.
07Teknoloji
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.
08Çalışma modelleri
Bu hizmette çalışma modelleri
09Sık sorulan sorular
.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.
10İlgili hizmetler