ASP.NET'ten ASP.NET Core'a artımlı güncelleme
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 HttpContext kullanımıdır. Artımlı yaklaşım ve araçlar olmadan, HttpContext bağımlılığını kaldırmak 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ışabilecek şekilde erişebilmek için bir dizi çalışma zamanı yardımcısı 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üncellemeler üzerinde çalışırken bir uygulamayı üretime dağıtmaya devam edebilmek için, izlenmesi gereken en iyi yol Strangler Fig deseni'dir. 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 istiyorsanız 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:
Geçiş, giriş noktası haline gelen ASP.NET Core tabanlı yeni bir uygulama tanıtarak başlar. Gelen istekler, isteği işleyen veya YARParacılığıyla .NET Framework uygulamasına isteği 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:
HttpContext
kullanan iş mantığını aktarmak için, kitaplıkların Microsoft.AspNetCore.SystemWebAdapters
ile derlenmesi gerekir. kitaplıkları SystemWebAdapters
ile oluşturmak şunları sağlar:
- .NET Framework, .NET Core veya .NET Standard 2.0 için 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.
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 denetleyici aksiyon yöntemleri, işleyicileri veya bir rotanın herhangi bir diğer 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:
- Kodu paylaşılan kitaplıklara taşıma
- Yeni projedeki kodu bağlama
- Kodu kopyala
Sonunda, ASP.NET Core uygulaması .NET Framework uygulamasından daha fazla yolu işler:
işlediği
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ırmaktır.
.NET Yükseltme Yardımcısı Visual Studio uzantı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ükseltmeblog gönderisine bakın.
System.Web Adapters
Microsoft.AspNetCore.SystemWebAdapters
ad alanı, ASP.NET Core'a taşınırken System.Web
karşı 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 veHttpContext
ve diğerleri gibi bağımlılık almış olabileceğiniz System.Web API'lerini 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'i 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 veSystem.Web
API'lerinin davranışını 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ştirme 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 makalesinibakın.
Kullanımla ilgili yönergeler için kullanım kılavuzu makalesine bakın.
Ek Kaynaklar
ASP.NET Core