โอเค! 😎 เรามาเจาะลึก Microsoft.AspNetCore.App
กันแบบเข้าใจง่าย ๆ
1️⃣ Microsoft.AspNetCore.App คืออะไร
-
Microsoft.AspNetCore.App
เป็น Framework reference หลักของ ASP.NET Core -
รวม ทุกอย่างที่จำเป็นสำหรับการสร้าง Web API, MVC, Razor Pages ไว้แล้ว
-
ไม่ใช่ NuGet package แยกต่างหาก แต่จะมาพร้อมกับ SDK
-
ตัวนี้จะรวมไลบรารีหลายตัว เช่น:
Component | หน้าที่ |
---|---|
Microsoft.AspNetCore.Mvc |
MVC / API controllers |
Microsoft.AspNetCore.Routing |
Routing requests |
Microsoft.AspNetCore.Http |
HttpContext, Request/Response |
Microsoft.Extensions.Logging |
Logging |
Microsoft.Extensions.Configuration |
Config settings |
Microsoft.AspNetCore.Authentication |
Auth |
💡 ข้อดี:
-
ไม่ต้องเพิ่มหลาย package ทีละตัว
-
มี version ที่เข้ากันกับ SDK โดยตรง
2️⃣ การใช้งานในโปรเจกต์
แบบ .NET Core 3.1+ หรือ .NET 5/6/7/8
ใน csproj
จะใช้ FrameworkReference แทน PackageReference:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
-
TargetFramework
ต้องเป็นnetcoreapp3.1
หรือใหม่กว่า -
ไม่จำเป็นต้องใช้
PackageReference
ของ MVC หรือ Kestrel แยก เพราะรวมอยู่แล้ว
3️⃣ ตัวอย่างการสร้าง Web API
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
// Add services
builder.Services.AddControllers(); // ใช้ Microsoft.AspNetCore.App
var app = builder.Build();
// Middleware pipeline
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.Run();
อธิบาย:
-
AddControllers()
ใช้ MVC จาก Microsoft.AspNetCore.App -
UseRouting()
/MapControllers()
มาจากMicrosoft.AspNetCore.Routing
-
Middleware, Auth, Logging ต่าง ๆ ก็รวมอยู่ใน App framework
4️⃣ ข้อควรรู้
-
ไม่ต้อง install แยก
-
แค่ใช้ SDK เวอร์ชันล่าสุด ก็มี App framework ให้พร้อมใช้งาน
-
-
รวมทุกอย่างที่จำเป็น
-
ไม่ต้อง
Add NuGet
ของ MVC, Razor, Kestrel, Routing, Logging แยก
-
-
เป็นมาตรฐานใน Web API / MVC
-
หากทำ Web API, Razor Pages, Blazor Server ก็ใช้
Microsoft.AspNetCore.App
ได้ทั้งหมด
-
คุณอยากให้ผมทำไหม?