Aracılığıyla paylaş


System.Web bağdaştırıcıları

dotnet/systemweb-adapters deposundaki bağdaştırıcıların ana kullanım örneği, sınıf kitaplıklarındaki türlere System.Web ASP.NET Core'a geçmek isteyen geliştiricilere yardımcı olmaktır.

Bağdaştırıcıların önemli özelliklerinden biri, bağdaştırıcıların kitaplığın hem ASP.NET Framework hem de ASP.NET Core projelerinden kullanılmasına olanak sağlamasıdır. Birden çok ASP.NET Framework uygulaması ASP.NET Core'a güncelleştirilmesi genellikle tüm uygulamaların tam olarak güncelleştirilmediği ara durumları içerir. Kitaplık, bağdaştırıcılar kullanılarak System.Web hem ASP.NET Core çağıranlarından hem de yükseltilmemiş ASP.NET Framework çağıranlarından kullanılabilir.

.NET Framework'ten ASP.NET Core'a taşınan bağdaştırıcıları kullanan bir örneğe göz atalım.

ASP.NET Framework

Aşağıdaki gibi bir şey kullanan bir denetleyici düşünün:

public class SomeController : Controller
{
  public ActionResult Index()
  {
    SomeOtherClass.SomeMethod(HttpContext.Current);
  }
}

daha sonra, son zamana kadar bunu geçiren HttpContext ayrı bir derlemede mantığı olan bir iç yöntem, bunun üzerinde aşağıdaki gibi bir mantık yapar:

public class Class2
{
  public bool PerformSomeCheck(HttpContext context)
  {
    return context.Request.Headers["SomeHeader"] == "ExpectedValue";
  }
}

ASP.NET Core

Yukarıdaki mantığı ASP.NET Core'da çalıştırmak için bir geliştiricinin paketi eklemesi Microsoft.AspNetCore.SystemWebAdapters gerekir ve bu da projelerin her iki platformda da çalışmasını sağlar.

Kitaplıkların bağdaştırıcıları anlamak için güncelleştirilmiş olması gerekir, ancak paketi eklemek ve yeniden derlemek kadar basit olacaktır. Bir sistemin üzerinde System.Web.dllsahip olduğu tek bağımlılıklar bunlarsa, kitaplıklar geçiş sırasında daha basit bir derleme işlemini kolaylaştırmak için .NET Standard 2.0'ı hedefleyebilecektir.

ASP.NET Core'daki denetleyici şimdi şöyle görünür:

public class SomeController : Controller
{
  [Route("/")]
  public IActionResult Index()
  {
    SomeOtherClass.SomeMethod(HttpContext);
  }
}

Bir HttpContext özellik olduğundan bunu geçirebileceklerine ancak genellikle aynı göründüğüne dikkat edin. örtük dönüştürmeler kullanılarak, HttpContext daha sonra aynı şekilde kod kullanılarak düzeyler arasında geçirilebilen bağdaştırıcıya dönüştürülebilir.

Ayrıca bkz.