Aracılığıyla paylaş


Kademeli ASP.NET'ten ASP.NET Core'a geçişe başlama

Important

Başlamadan önce: Bu makalede , ASP.NET Core geçişe genel bakış makalesini okuduğunuz varsayılır. Henüz okumadıysanız, artımlı geçişin kavramlarını, yaklaşımını ve avantajlarını anlamak için lütfen buradan başlayın.

Büyük bir geçiş için, özgün .NET Framework uygulamasına proxy'ler sağlayan bir ASP.NET Core uygulaması ayarlamanızı öneririz. Yeni proxy özellikli uygulama aşağıdaki görüntüde gösterilmiştir:

rotaları taşımaya başlat

Bu makalede, yaklaşımı anladıktan sonra artımlı geçişe devam etmek için pratik adımlar sağlanmaktadır.

Prerequisites

Artımlı geçişinize başlamadan önce şunlara sahip olduğunuzdan emin olun:

  1. Genel bakışı okuyun: ASP.NET'ten ASP.NET Core'a kademeli geçiş
  2. Geçirmek istediğiniz çalışan bir ASP.NET Framework uygulaması
  3. En son güncelleştirmelerle Visual Studio 2022
  4. .NET 8 veya üzeri SDK yüklü
  5. Uygulamanızın bağımlılıklarını ve üçüncü taraf kitaplıklarını anlama

Geçiş Adımlarına Genel Bakış

Artımlı geçiş işlemi şu temel adımları izler:

  1. ASP.NET Çekirdek Proje ayarlama
  2. Teknik Borcu Düzeltme
  3. Disiplinler arası konuları belirle ve ele al
  4. Destekleyici kitaplıkları yükseltme

ASP.NET Çekirdek Proje ayarlama

İlk adım, ara sunucunuz olarak görev yapacak yeni ASP.NET Core uygulamasını oluşturmaktır.

Ne yapacaksınız:

  • Mevcut ASP.NET Framework uygulamanızla birlikte yeni bir ASP.NET Core projesi oluşturma
  • YARP (Ancak Başka Bir Ters Ara Sunucu) kullanarak özgün uygulamanıza yönelik ara sunucu istekleri için yapılandırın
  • Artımlı geçiş için temel altyapıyı ayarlama

Ayrıntılı yönergeler:

Teknik Borcu Düzeltme

Bu adımın ne zaman yapılması gerekiyor: Destek kitaplıklarını yükseltmeden önce, geçiş sürecini karmaşıklaştırabilecek teknik borçları giderin.

Destek kitaplıklarınızı yükseltmeye başlamadan önce, geçiş sürecini engelleyebilecek teknik borcu temizlemeniz önemlidir. Daha sorunsuz bir yükseltme deneyimi sağlamak için önce bu adımın tamamlanması gerekir.

Paket Bağımlılıklarını Güncelleştirme

NuGet paketlerinizi gözden geçirin ve en son uyumlu sürümlere güncelleştirin:

  1. Mevcut paketleri denetleme: CLI ASP.NET Framework uygulamalarında çalışmadığından Visual Studio'nun NuGet Paket Yöneticisi'ni dotnet kullanın
  2. Paketleri artımlı olarak güncelleştirme: Uyumluluk sorunlarını önlemek için paketleri birer birer güncelleştirin
  3. Her güncelleştirmeden sonra test edin: Uygulamanızın her paket güncelleştirmesinin ardından düzgün çalıştığından emin olun
  4. Hataya neden olan değişiklikleri giderme: Bazı paket güncelleştirmeleri, çözülmesi gereken hataya neden olan değişikliklere neden olabilir

Yapı Araçlarını Modernleştirme

Derleme araçlarınızı ve proje yapılandırmanızı güncelleştirin:

  1. Güncelleştirme araçları: MSBuild/Visual Studio'nun son sürümünü kullandığınızdan emin olun
  2. Bağımlılıklar için PackageReference'a geçin: Web uygulaması projesinde henüz yapmadıysanız, packages.config biçiminden PackageReference biçimine geçişi göz önünde bulundurun
  3. Kullanılmayan başvuruları temizleme: Kullanılmayan derleme başvurularını veya NuGet paketlerini kaldırın
  4. SDK stili proje dosyalarına geçiş: Mevcut proje dosyalarınızı modern SDK stili biçime dönüştürün. Bu, modern .NET projeleri ile uyumluluk açısından önemlidir ve daha iyi araç desteği sağlar
  5. Derleme betiklerini güncelleştirme: Özel derleme betiklerini veya CI/CD yapılandırmalarını gözden geçirin ve güncelleştirin

Kod Kalitesi Sorunlarını Giderme

Geçişi karmaşık hale getiren bilinen kod kalitesi sorunlarını düzeltin:

  1. Derleyici uyarılarını düzeltme: Özellikle kullanım dışı API'lerle ilgili derleyici uyarılarını ele alın
  2. Geçersiz kodu kaldırma: Kullanılmayan sınıfları, yöntemleri ve diğer kod öğelerini temizleme
  3. Kullanım dışı API kullanımını güncelleştirme: Kullanım dışı API'lerin kullanımını mümkün olduğunca modern eşdeğerleriyle değiştirin

Bu hazırlık çalışması kitaplık yükseltme işlemini çok daha sorunsuz hale getirecek ve geçiş sırasında karmaşık sorunlarla karşılaşma olasılığını azaltacaktır.

Hizmetler arası endişeleri belirleme ve ele alma

Bu adım ne zaman yapılmalıdır: Teknik borcu düzeltirken ancak destekleyici kitaplıkları yükseltmekten önce, uygulamanızın tamamını etkileyen genel sorunları belirleyin ve yapılandırın.

Uygulamanızın farklı katmanları veya bileşenleri kapsayan kesimsel endişeler, kimlik doğrulama, oturum yönetimi, günlüğe kaydetme ve önbelleğe alma gibi konulardır. ASP.NET Framework ve ASP.NET Core uygulamalarınızın artımlı geçiş sırasında iletişim kurma ve paylaşma durumunu etkilemesi nedeniyle bunların geçiş sürecinin erken aşamalarında ele alınması gerekir.

Aşağıdaki bölümlerde en yaygın genel kaygılar ele alınıyor. Yalnızca uygulamanıza uygulananları yapılandırın:

Oturum Desteği Yapılandırması

Şu durumda bunu yapılandırın: ASP.NET Framework uygulamanız oturum durumunu kullanıyor.

Burada yönergeler için genel oturum geçişi belgelerine bakın.

ASP.NET'te yaygın olarak kullanılan "Oturum" adlı özellik, ASP.NET Core'da aynı adı taşıyan bir başka özellik ile karıştırılabilir, ancak API'ler tamamen farklıdır. Oturum durumunu kullanan kitaplıkları yükseltirken oturum desteğini yapılandırmanız gerekir. Uygulamalarınız arasında oturum durumu paylaşımını etkinleştirme hakkında ayrıntılı yönergeler için uzak oturum desteği belgelerine bakın.

Kimlik Doğrulama Yapılandırması

Şu durumda bunu yapılandırın: ASP.NET Framework uygulamanız kimlik doğrulaması kullanıyor ve eski ve yeni uygulamalar arasında kimlik doğrulama durumunu paylaşmak istiyorsunuz.

Burada yönergeler için genel kimlik doğrulaması geçiş belgelerine bakın.

System.Web adapters uzak kimlik doğrulama özelliğini kullanarak özgün ASP.NET uygulamasıyla yeni ASP.NET Core uygulaması arasında kimlik doğrulamasını paylaşmak mümkündür. Bu özellik, ASP.NET Core uygulamasının kimlik doğrulamasını özgün ASP.NET uygulamasına ertelemesine olanak tanır. Daha fazla ayrıntı için uzaktan kimlik doğrulaması belgelerine bakın.

Dikkate Alınması Gereken Diğer Genel Geçer Konular

Uygulamanıza bağlı olarak şunları da ele almanız gerekebilir:

  • Loglama: Her iki uygulamada da tutarlı loglama olduğundan emin olun. Paylaşılan günlük sağlayıcısı kullanmayı veya günlüklerin düzgün bir şekilde toplandığından emin olun.
  • Önbelleğe alma: Uygulamanız önbelleğe alma (bellek içi, dağıtılmış veya çıkış önbelleğe alma) kullanıyorsa, uygulamalar arasında önbellek tutarlılığını nasıl koruyacağınızı planlayın.
  • Hata İşleme: hem ASP.NET Framework hem de ASP.NET Core uygulamalarında tutarlı hata işleme ve raporlama oluşturun.
  • Yapılandırma Yönetimi: Yapılandırma ayarlarının iki uygulama arasında nasıl paylaşılacağını veya yönetileceğini planlayın.
  • Sistem Durumu İzleme: Geçiş işlemi sırasında her iki uygulama için de izleme ve sistem durumu denetimleri ayarlayın.
  • Bağımlılık Ekleme: ASP.NET Framework uygulamanızda BIR DI kapsayıcısı kullanıyorsanız, ASP.NET Core'un yerleşik DI kapsayıcısına geçişi planlayın.

Destekleyici kitaplıkları yükseltme

Bu adımın ne zaman yapılması gerekiyor: Yalnızca iş mantığı içeren sınıf kitaplıklarına bağlı belirli yolları geçirmeniz gerektiğinde, eski ve yeni uygulamalar arasında paylaşmanız gerekir.

Note

Artımlı yaklaşım: Artımlı geçiş işlemiyle tüm destekleyici kitaplıklarınızı aynı anda yükseltmeniz gerekmez. Sadece şu anda taşımakta olduğunuz belirli yollar için gerekli olan kitaplıkları yükseltmeniz gerekir. Bu, geçişi daha küçük ve daha yönetilebilir parçalar halinde ele almanızı sağlar.

Kitaplık Yükseltme İşlemi

Important

Destekleyici kitaplıklar , sıra sonrası derinlik öncelikli arama sıralamasında yükseltilmelidir. Bu, şu anlama gelir:

  1. Yaprak bağımlılıkları ile başlayın: Çözümünüzdeki diğer kitaplıklara bağımlılığı olmayan kitaplıklarla başlayın
  2. Bağımlılık ağacında yukarı doğru çalışın: Yalnızca tüm bağımlılıkları başarıyla yükseltildikten sonra kitaplığı yükseltin
  3. Ana uygulamayla son: Ana ASP.NET Framework uygulaması değiştirilecek son öğe olmalıdır

Şu nedenden dolayı bu sıralama çok önemlidir:

  • Bir kitaplığı yükselttiğiniz zaman, tüm bağımlılıklarının zaten uyumlu olmasını sağlar
  • Yükseltme işlemi sırasında döngüsel bağımlılık sorunlarını önler
  • Bağımlılarına geçmeden önce her kitaplığı bağımsız olarak test etmenizi sağlar

NOT: Çözümünüzün bütünü için değil, yalnızca şu anda taşımakta olduğunuz yolların gerektirdiği kütüphanelerin alt kümesi için bu sıralamayı takip etmeniz gerekir.

Her kitaplık için yükseltme işlemi:

Çözümünüzde geçiş yaptığınız yollar için kullanmanız gereken destekleyici kitaplıklarınız varsa, mümkünse .NET Standard 2.0'a yükseltilmelidir. GitHub Copilot uygulama modernleştirmesi bu konuda size yardımcı olabilir. .NET Standard'ı hedefleyemeyen kitaplıklar için, ya özgün projedeki .NET Framework hedefiyle birlikte .NET 8 veya üzerini hedefleyebilir ya da özgün projeye paralel yeni bir projede hedefleyebilirsiniz.

System.Web bağdaştırıcıları, sınıf kitaplıklarında kullanım desteğini etkinleştirmek için HttpContext bu kitaplıklarda kullanılabilir. Bir kitaplıkta HttpContext kullanımını etkinleştirmek için:

  1. System.Web Proje dosyasındaki referansı kaldırın
  2. Microsoft.AspNetCore.SystemWebAdapters paketini ekleyin
  3. Çoklu hedeflemeyi etkinleştirin ve bir .NET 8 hedefi veya üzerini ekleyin ya da projeyi .NET Standard 2.0'a dönüştürün.

Bu adım, çözüm yapınıza ve hangi yolları geçirmekte olduğunuza bağlı olarak bir dizi projenin değiştirilmesini gerektirebilir. GitHub Copilot uygulama modernizasyonu , hangilerinin değişmesi gerektiğini belirlemenize ve işlemdeki birkaç adımı otomatikleştirmenize yardımcı olabilir.

Sonraki Adımlar

Yukarıdaki kurulum ve kitaplık yükseltme adımlarını tamamladıktan sonra:

  1. Küçük başlangıç: İlk olarak basit, durum bilgisi olmayan uç noktaları geçirerek başlayın
  2. Kapsamlı test: Geçirilen her bileşenin her iki ortamda da düzgün çalıştığından emin olun
  3. Performansı izleme: Ara sunucu kurulumundan gelen performans etkilerini izleyin
  4. Yinele: Geçiş tamamlanana kadar bileşenleri artımlı olarak geçirme işlemine devam edin