본문 바로가기
C#/기본

Program.cs

by ddanss 2025. 5. 7.
728x90
using BusinessLayer.Service;
using DataAccessLayer.Mappers;
using Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns;

namespace HelloASP
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            builder.Services.AddControllersWithViews();
            builder.Services.AddTransient<ILoginService, LoginService>();
            builder.Services.AddTransient<ILoginMapper, LoginMapper>();
            builder.Services.AddSession();
            var app = builder.Build();

            app.UseSession();

            app.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}"
            );
            
            app.Run();
        }
    }
}

var builder = WebApplication.CreateBuilder(args);

ASP.NET Core 앱을 구성할 수 있는 WebApplicationBuilder 객체를 생성합니다.

 

builder.Services.AddControllersWithViews();

MVC 패턴을 위한 컨트롤러 + 뷰 지원 등록

HomeController, LoginController 같은 컨트롤러와 Razor 뷰(.cshtml)를 사용할 수 있게 됩니다

 

builder.Services.AddTransient<ILoginService, LoginService>();
builder.Services.AddTransient<ILoginMapper, LoginMapper>();

의존성 주입(DI)을 위해 서비스 등록

ILoginService 인터페이스를 사용할 경우 실제로는 LoginService 인스턴스를 주입

AddTransient는 매번 새 인스턴스를 생성해주는 방식 (요청마다 새로운 객체)

BusinessLayer.Service.LoginService와 DataAccessLayer.Mappers.LoginMapper 클래스가 이미 정의되어 있어야 함

 

builder.Services.AddSession();

세션 상태 지원을 추가

이후 사용자별로 데이터를 유지하고 싶을 때 HttpContext.Session을 사용할 수 있게 됨

 

var app = builder.Build();

위에서 설정한 builder를 기반으로 실제 실행 가능한 웹 앱 객체를 생성

 

app.UseSession();

세션 미들웨어 활성화

세션을 사용하려면 반드시 이 미들웨어를 파이프라인에 포함

 

 

 

 

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}"
);

기본 라우팅 설정

/로 접근하면 HomeController의 Index 액션이 실행됨

URL이 /Login/Check이면 LoginController.Check() 실행됨

id?는 선택적 파라미터

 

 

 

 

 

 

 

 

 

 

반응형

'C# > 기본' 카테고리의 다른 글

.cshtml  (1) 2025.05.07
관심사의 분리 (Separation of Concerns, SoC)  (0) 2025.05.07
launchSettings.json  (0) 2025.05.06
appsettings.json과 appsettings.Development.json  (0) 2025.05.06
.csproj 파일  (0) 2025.05.06

댓글