학습
C# ASP.NET Core 프레임워크
C# ASP.NET Core 프레임워크 — 고급
ASP.NET Core 프레임워크
1. 도입 (왜 배워야 하는가)
ASP.NET Core는 현대 웹 애플리케이션 개발을 위한 강력한 프레임워크로, 마이크로소프트가 지원하며 크로스 플랫폼 환경에서 사용할 수 있습니다. 오늘날 많은 기업들이 클라우드 기반의 애플리케이션을 개발하고 있으며, ASP.NET Core는 이러한 환경에서 성능과 확장성을 제공합니다.
이 프레임워크를 익히지 않으면, 새로운 기술 트렌드에 뒤처질 수 있으며, 특히 팀워크와 협업이 중요한 실무 환경에서 경쟁력을 잃을 수 있습니다. 또한, 최신 웹 기술을 활용하지 않으면 보안, 성능, 유지보수 측면에서 심각한 문제가 발생할 수 있습니다.
2. 핵심 개념 설명
ASP.NET Core의 주요 개념 중 몇 가지를 살펴보겠습니다.
| 개념 | 설명 |
|---|---|
| Middleware | 요청과 응답 사이에서 실행되는 구성 요소로, 파이프라인을 형성합니다. |
| Dependency Injection | 객체 간의 의존성을 관리하고, 코드의 재사용성을 높여줍니다. |
| Routing | HTTP 요청을 처리할 특정 엔드포인트로 매핑하는 과정입니다. |
비유: Middleware는 식당의 주방과 같이, 손님이 주문한 음식이 나오는 과정에서 여러 단계를 거치는 것과 비슷합니다. Dependency Injection은 요리를 위해 필요한 재료를 미리 준비해 두는 것과 같아서, 필요할 때마다 쉽게 꺼내 사용할 수 있습니다.
3. 기본 코드 예제
다음은 ASP.NET Core의 기본적인 웹 애플리케이션을 생성하는 코드입니다.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(); // MVC 패턴을 사용하기 위한 서비스 추가
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage(); // 개발 중에 에러 페이지 사용
}
else
{
app.UseExceptionHandler("/Home/Error"); // 운영 중 에러 핸들링
app.UseHsts(); // 보안 강화
}
app.UseHttpsRedirection(); // HTTPS 리다이렉션
app.UseStaticFiles(); // 정적 파일 제공
app.UseRouting(); // 라우팅 미들웨어 사용
app.UseAuthorization(); // 권한 부여 미들웨어
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"); // 기본 라우팅 설정
});
}
}
실행 결과
- 이 코드를 실행하면, 기본적인 웹 서버가 설정되고,
/Home/IndexURL에 접근 시 기본 페이지가 제공됩니다. services.AddControllersWithViews();: MVC 패턴 사용을 위한 서비스 등록app.UseDeveloperExceptionPage();: 개발 중 에러 페이지 표시app.UseHsts();: HTTPS 보안을 강화하는 미들웨어 설정app.UseRouting();: 라우팅 기능 활성화endpoints.MapControllerRoute(...): URL 패턴에 따라 컨트롤러와 액션 메서드를 매핑
코드 한 줄씩 동작 설명
4. 실전 활용 예제
1. 장바구니 구현
쇼핑몰 애플리케이션에서 장바구니 기능을 구현할 때 ASP.NET Core의 Dependency Injection을 활용할 수 있습니다.
public interface ICartService
{
void AddItem(string item);
List<string> GetItems();
}
public class CartService : ICartService
{
private List<string> items = new List<string>();
public void AddItem(string item)
{
items.Add(item);
}
public List<string> GetItems()
{
return items;
}
}
// Startup.cs에서 서비스 등록
services.AddSingleton<ICartService, CartService>(); // 싱글턴으로 서비스 등록
2. 사용자 인증
사용자 인증을 위해 ASP.NET Core Identity를 사용하는 패턴입니다.
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
3. API 서버 구축
RESTful API를 구축하여 클라이언트와의 데이터 통신을 관리하는 방법입니다.
[ApiController]
[Route("[controller]")]
public class ProductController : ControllerBase
{
[HttpGet]
public IEnumerable<Product> Get()
{
return new List<Product>
{
new Product { Id = 1, Name = "Apple" },
new Product { Id = 2, Name = "Banana" }
};
}
}
5. 흔한 실수와 주의사항
실수 1: 미들웨어 순서 오류
잘못된 코드:
app.UseAuthorization();
app.UseRouting(); // 이 순서는 잘못됨
올바른 코드:
app.UseRouting();
app.UseAuthorization(); // 올바른 순서
실수 2: Dependency Injection 사용 오류
잘못된 코드:
public void Configure(IApplicationBuilder app)
{
var cartService = new CartService(); // 잘못된 인스턴스 생성
}
올바른 코드:
public void Configure(IApplicationBuilder app, ICartService cartService) // DI로 주입
{
}