Aracılığıyla paylaş


ASP.NET Core güncelleştirmesi için artımlı ASP.NET

Bir uygulamanın ASP.NET Framework'ten ASP.NET Core'a güncelleştirilmesi, üretim uygulamalarının çoğu için önemsiz değildir. Bu uygulamalar genellikle kullanıma sunulduklarında yeni teknolojiler içerir ve genellikle birçok eski karardan oluşur. Bu makalede, mümkün olduğunca az değişiklikle ASP.NET Framework uygulamalarını ASP.NET Core'a güncelleştirmeye yönelik araçlara yönelik yönergeler ve bağlantılar sağlanır.

En büyük zorluklardan biri, bir kod tabanı boyunca kullanımın HttpContext her geçen gün daha fazla kullanılmasıdır. Artımlı yaklaşım ve araçlar olmadan, bağımlılığı kaldırmak HttpContext için büyük ölçekli yeniden yazma gerekir. dotnet/systemweb-adapters içindeki bağdaştırıcılar , ASP.NET Framework uygulamasında kullanılan türlere en az değişiklikle ASP.NET Core'da çalışacak şekilde erişmek için bir çalışma zamanı yardımcıları kümesi sağlar.

Tam geçiş, uygulamanın boyutuna, bağımlılıklarına ve kullanılan taşınabilir olmayan API'lere bağlı olarak büyük çaba gösterebilir. Güncelleştirme üzerinde çalışırken bir uygulamayı üretime dağıtmaya devam etmek için en iyi desen, Strangler Fig desenini izlemektir. Strangler Fig deseni, belirli işlev parçalarını yeni hizmetlerle değiştirmek için artımlı bir yaklaşımla eski sistemde sürekli gelişim sağlar. Bu belgede, ASP.NET Core'a doğru güncelleştirilen bir ASP.NET uygulamasına Strangler Fig deseninin nasıl uygulanacağı açıklanmaktadır.

Bu genel bakış makalesini atlayıp kullanmaya başlamak isterseniz bkz . Başlarken.

ASP.NET Core'a uygulama geçişi

Geçişe başlamadan önce uygulama, ASP.NET Framework'i hedefler ve destekleyici kitaplıklarıyla Windows üzerinde çalışır:

Before starting the migration

Geçiş, giriş noktası haline gelen ASP.NET Core tabanlı yeni bir uygulama tanıtarak başlar. Gelen istekler, isteği işleyen veya isteği YARP aracılığıyla .NET Framework uygulamasına proxy'leyen ASP.NET Core uygulamasına gider. İlk başta, yanıt sağlayan kodun çoğu .NET Framework uygulamasındadır, ancak ASP.NET Core uygulaması artık yolları geçirmeyi başlatacak şekilde ayarlanmıştır:

start updating routes

kullanan iş mantığını HttpContextgeçirmek için kitaplıkların ile Microsoft.AspNetCore.SystemWebAdaptersderlenmiş olması gerekir. Kitaplıkları SystemWebAdapters oluşturmak şunları sağlar:

  • .NET Framework, .NET Core veya .NET Standard 2.0'da oluşturulacak kitaplıklar.
  • Kitaplıkların hem ASP.NET Framework hem de ASP.NET Core'da kullanılabilen API'leri kullanmasını sağlar.

Microsoft.AspNetCore.SystemWebAdapters

YARP kullanan ASP.NET Core uygulaması ayarlandıktan sonra, yolları ASP.NET Framework'ten ASP.NET Core'a güncelleştirmeye başlayabilirsiniz. Örneğin, WebAPI veya MVC denetleyicisi eylem yöntemleri, işleyicileri veya bir yolun başka bir uygulaması. Rota ASP.NET Core uygulamasında kullanılabiliyorsa eşleştirilir ve sunulur.

Geçiş işlemi sırasında, .NET Core'da çalışacak şekilde güncelleştirilecek ek hizmetler ve altyapı tanımlanır. Bakım sırasına göre listelenen seçenekler şunlardır:

  1. Kodu paylaşılan kitaplıklara taşıma
  2. Yeni projedeki kodu bağlama
  3. Kodu çoğaltma

Sonunda, ASP.NET Core uygulaması .NET Framework uygulamasından daha fazla yolu işler:

the ASP.NET Core app handles more of the routes

ASP.NET Framework uygulaması artık gerekli olmadığında ve silindikten sonra:

  • Uygulama ASP.NET Core uygulama yığınında çalışıyor ancak bağdaştırıcıları kullanmaya devam ediyor.
  • Kalan geçiş çalışması, bağdaştırıcıların kullanımını kaldırıyor.

final pic

Visual Studio uzantısı .NET Yükseltme Yardımcısı , ASP.NET Framework web uygulamalarını ASP.NET Core'a yükseltmeye yardımcı olabilir. Daha fazla bilgi için .NET projelerinizi Visual Studio ile yükseltme blog gönderisine bakın.

System.Web Adapters

Ad Microsoft.AspNetCore.SystemWebAdapters alanı, ASP.NET Core'a taşınırken üzerinde System.Web yazılan kodun kullanılmasını kolaylaştıran bir çalışma zamanı yardımcıları koleksiyonudur. Bu bağdaştırıcıların özelliklerini kullanmak için kullanılabilecek birkaç paket vardır:

  • Microsoft.AspNetCore.SystemWebAdapters: Bu paket destekleyici kitaplıklarda kullanılır ve bağımlılık almış olabileceğiniz System.Web API'lerini (ve diğerleri gibi HttpContext ) sağlar. Bu paket .NET Standard 2.0, .NET 4.5+ ve .NET 6+ değerlerini hedefler.
  • Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices: Bu paket yalnızca .NET Framework'leri hedefler ve artımlı geçişler sağlaması gerekebilecek ASP.NET Framework uygulamalarına hizmet sağlamayı amaçlar. Bu genellikle kitaplıklardan değil, uygulamaların kendilerinden başvurulması beklenir.
  • Microsoft.AspNetCore.SystemWebAdapters.CoreServices: Bu paket yalnızca .NET 6+ sürümünü hedefler ve API'lerin davranışını System.Web yapılandırmak ve artımlı geçiş için herhangi bir davranışı kabul etmek üzere ASP.NET Core uygulamalarına hizmet sağlamayı amaçlar. Bu genellikle kitaplıklardan değil, uygulamaların kendilerinden başvurulması beklenir.
  • Microsoft.AspNetCore.SystemWebAdapters.Abstractions: Bu paket, oturum durumu serileştirmesi gibi hem ASP.NET Core hem de ASP.NET Framework uygulaması tarafından kullanılan hizmetler için soyutlamalar sağlayan bir destekleyici pakettir.

Bunun yararlı olduğu senaryo örnekleri için bağdaştırıcılar makalesine bakın.

Kullanımla ilgili yönergeler için kullanım kılavuzu makalesine bakın.

Ek Kaynaklar