بهروزرسانی کد ASP.NET Core 5 به ASP.NET Core 6 آسان است. با دنبال کردن این مثالها نحوه انجام کار را بیاموزید.
ASP.NET Core 6 مایکروسافت، که از ۸ نوامبر برای استفاده تولیدی در دسترس است، یک مدل میزبانی ساده را معرفی می کند که کد دیگ بخاری را که در غیر این صورت برای دریافت ASP خود باید بنویسید، کاهش می دهد. برنامه NET Core آماده و در حال اجرا است. ASP.NET Core 6 ایجاد یک برنامه وب جدید را در مقایسه با ASP.NET Core 5 کمی آسان تر می کند.
اما اگر بخواهید یک پروژه ASP.NET Core 5 را به ASP.NET Core 6 به روز کنید چه؟ در این صورت، باید از کدی که برای انتقال کد ASP.NET Core 5 به ASP.NET Core 6 باید بنویسید آگاه باشید. این مقاله چندین نمونه کد ارائه می دهد که نشان می دهد چگونه می توانید این کار را انجام دهید.
برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخهای ندارید، میتوانید Visual Studio 2022 را از اینجا بارگیری کنید.
یک پروژه ASP.NET Core Web API در Visual Studio 2022 ایجاد کنید
ابتدا، اجازه دهید یک پروژه ASP.NET Core در Visual Studio 2022 ایجاد کنیم. با دنبال کردن این مراحل، یک پروژه ASP.NET Core Web API 6 جدید در Visual Studio 2022 ایجاد می کنیم:
- Visual Studio 2022 IDE را راه اندازی کنید.
- روی “ایجاد پروژه جدید” کلیک کنید.
- در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web API” را از لیست الگوهای نمایش داده شده انتخاب کنید.
- بعدی را کلیک کنید.
- در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
- به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست راهنمای» را علامت بزنید.
- بعدی را کلیک کنید.
- در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، اطمینان حاصل کنید که کادر تأیید «استفاده از کنترلکنندهها…» علامت زده شده است، زیرا در این مثال به جای حداقل API از کنترلکنندهها استفاده میکنیم. تنظیم «نوع احراز هویت» را روی «هیچ» (پیشفرض) بگذارید.
- مطمئن شوید که چک باکسهای «Enable Docker»، «Configure for HTTPS» و «Enable Open API Support» علامت نخورده باشند زیرا ما در اینجا از هیچ یک از این ویژگیها استفاده نخواهیم کرد.
- روی ایجاد کلیک کنید.
ما از این پروژه ASP.NET Core 6 Web API برای نشان دادن انتقال کدهای ASP.NET Core 5 به ASP.NET Core 6 در بخش های بعدی این مقاله استفاده خواهیم کرد.
کلاس برنامه در ASP.NET Core 5
قطعه کد زیر نشان می دهد که یک کلاس برنامه معمولی در ASP.NET Core 5 چگونه به نظر می رسد.
public class Program
{
public static void Main(string[] args) {
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) {
return Host.CreateDefaultBuilder(args).
ConfigureWebHostDefaults(x => x.UseStartup <Startup> ());
}
}
کلاس برنامه در ASP.NET Core 6
با معرفی مدل میزبانی ساده شده در ASP.NET Core 6، دیگر لازم نیست از کلاس Startup استفاده کنید. می توانید در مقاله قبلی من در اینجا اطلاعات بیشتری در مورد این موضوع بخوانید. در اینجا نحوه نوشتن یک کلاس برنامه معمولی در ASP.NET Core 6 آمده است:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container
builder.Services.AddControllers();
var app = builder.Build();
// Configure the HTTP request pipeline
app.UseAuthorization();
app.MapControllers();
app.Run();
میان افزار را در ASP.NET Core 5 اضافه کنید
قطعه کد زیر نشان می دهد که چگونه می توانید یک جزء میان افزار را در ASP.NET Core 5 اضافه کنید. در مثال ما، واسط افزار فشرده سازی پاسخ را اضافه می کنیم.
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseResponseCompression();
}
}
میان افزار را در ASP.NET Core 6 اضافه کنید
برای افزودن یک جزء میان افزار در ASP.NET Core 6، می توانید از کد زیر استفاده کنید.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseResponseCompression();
app.Run();
روتینگ را در ASP.NET Core 5 اضافه کنید
برای افزودن نقطه پایانی در ASP.NET Core 5، میتوانید از کد زیر استفاده کنید.
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/test", () => "This is a test message.");
});
}
}
روتینگ را در ASP.NET Core 6 اضافه کنید
میتوانید با استفاده از کد زیر یک نقطه پایانی در ASP.NET Core 6 اضافه کنید.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/test", () => "This is a test message.");
app.Run();
توجه داشته باشید که در ASP.NET Core 6 میتوانید بدون نیاز به برقراری تماسهای صریح با روشهای پسوند UseRouting و UseEndpoints به WebApplication نقاط پایانی اضافه کنید.
خدمات را در ASP.NET Core 5 اضافه کنید
قطعه کد زیر نشان میدهد که چگونه میتوانید سرویسهایی را در ASP.NET Core 5 به کانتینر اضافه کنید.
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Add built-in services
services.AddMemoryCache();
services.AddRazorPages();
services.AddControllersWithViews();
// Add a custom service
services.AddScoped<IProductRepository, ProductRepository>();
}
}
افزودن خدمات در ASP.NET Core 6
برای افزودن سرویسها به کانتینر در ASP.NET Core 6، میتوانید از کد زیر استفاده کنید.
var builder = WebApplication.CreateBuilder(args);
// Add built-in services
builder.Services.AddMemoryCache();
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
// Add a custom service
builder.Services.AddScoped<IProductRepository, ProductRepository>();
var app = builder.Build();
یک برنامه ASP.NET Core 5 یا ASP.NET Core 6 را آزمایش کنید
می توانید یک برنامه ASP.NET Core 5 را با استفاده از TestServer یا WebApplicationFactory آزمایش کنید. برای آزمایش با استفاده از TestServer در ASP.NET Core 5، می توانید از قطعه کد زیر استفاده کنید.
[Fact]
public async Task GetProductsTest()
{
using var host = Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(builder =>
{
builder.UseTestServer()
.UseStartup<WebApplication1.Startup>();
})
.ConfigureServices(services =>
{
services.AddSingleton<IProductService, MockProductService>();
})
.Build();
await host.StartAsync();
var client = host.GetTestClient();
var response = await client.GetStringAsync("/getproducts");
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
قطعه کد زیر نشان می دهد که چگونه می توانید برنامه ASP.NET Core 5 خود را با استفاده از WebApplicationFactory آزمایش کنید.
[Fact]
public async Task GetProductsTest()
{
var application = new WebApplicationFactory<Program>()
.WithWebHostBuilder(builder =>
{
builder.ConfigureServices(services =>
{
services.AddSingleton<IProductService, MockProductService>();
});
});
var client = application.CreateClient();
var response = await client.GetStringAsync("/getproducts");
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
میتوانید از همان کد برای آزمایش با استفاده از TestServer یا WebApplicationFactory در NET 5 و .NET 6 استفاده کنید.
یک ارائه دهنده گزارش در ASP.NET Core 5 اضافه کنید
ارائه دهندگان گزارش در ASP.NET Core برای ذخیره گزارش ها استفاده می شوند. ارائه دهندگان گزارش پیش فرض موجود در ASP.NET Core، ارائه دهندگان گزارش Debug، Console، EventLog و EventSource هستند.
می توانید از روش ClearProviders برای پاک کردن همه ارائه دهندگان گزارش استفاده کنید و یک ارائه دهنده گزارش خاص یا ارائه دهنده گزارش سفارشی خود را اضافه کنید. قطعه کد زیر نشان می دهد که چگونه می توانید تمام نمونه های ILoggerProvider را حذف کنید و ارائه دهنده گزارش Console را در ASP.NET Core 5 اضافه کنید.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>{
logging.ClearProviders();
logging.AddConsole();
})
.ConfigureWebHostDefaults(webBuilder =>{
webBuilder.UseStartup<Startup>();
});
یک ارائه دهنده گزارش در ASP.NET Core 6 اضافه کنید
در ASP.NET Core 6، وقتی با WebApplication.CreateBuilder تماس می گیرید، ارائه دهندگان گزارش Console، Debug، EventLog و EventSource را اضافه می کند. قطعه کد زیر نشان میدهد که چگونه میتوانید ارائهدهندههای گزارش پیشفرض را پاک کنید و فقط ارائهدهنده گزارش Console را در ASP.NET Core 6 اضافه کنید.
var builder = WebApplication.CreateBuilder(args);
//Clear default logging providers
builder.Logging.ClearProviders();
//Code to add services to the container
builder.Logging.AddConsole();
var app = builder.Build();
نمونههای کد ارائهشده در اینجا روشهای مختلفی را که ما ارائهدهندههای میانافزار، مسیریابی، سرویسها و گزارشگیری را در ASP.NET Core 5 و ASP.NET Core 6 اضافه میکنیم، و همچنین تفاوتها در کلاس Program و آزمایش را نشان میدهند. این قطعهها هنگام کار با برنامههای ASP.NET Core 6 به شما کمک میکنند و زمانی که برنامههای ASP.NET Core 5 خود را به ASP.NET Core 6 منتقل میکنید، شروع خوبی داشته باشید.
پست های مرتبط
نحوه انتقال کد ASP.NET Core 5 به ASP.NET Core 6
نحوه انتقال کد ASP.NET Core 5 به ASP.NET Core 6
نحوه انتقال کد ASP.NET Core 5 به ASP.NET Core 6