.Net Core
개요
Web Pages + Web API + MVC, WebApplicationBuilder에서 웹 사이트를 설정하고 WebApplication에서 미들웨어를 실행한다.
wwwroot
웹 사이트의 루트 폴더, 이 폴더의 정적인 파일(css, js)등이 실행되려면 Program.cs에서 app.UseStaticFiles()를 사용해야한다.
미들웨어
Program.cs에서 미들웨어를 추가할 수 있다.
- UseStaticFiles : wwwroot의 정적 파일들을 실행할 수 있다.
- UseDirectoryBrowser : 디렉토리 목록 보기
- UseStatusCodePages : 상태 코드 표시
- UseWelcomePage : 환영 페이지 출력
- UseDeveloperExceptionPage : 개발자용 에러 메시지
라우팅
Program.cs에 라우팅에 대한 정보가 기본으로 들어있다. 기본적으로는 controller나 action에 해당하는 값은 컨트롤러 클래스 이름과 인스턴스 메소드명이지만, [Route(“”)] 어트리뷰트를 통해 다른 URL을 사용하도록 지정할 수 있다.
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
DI
Program.cs의 builder의 Services에서 의존성을 주입할 객체를 지정할 수 있다. 주입을 받을 클래스의 생성자에 주입할 객체의 인터페이스를 인자로 받으면 된다.
- AddSingleton<Interface, Implementation>() : 싱글톤이 주입
- AddTransient<Interface, Implementation>() : 새로운 객체를 생성해 주입
- AddScpoed<Interface, Implementation>() : 현재 스코프에서는 싱글톤, 즉 같은 요청에 대해서는 같은 인스턴스를 사용한다.
서비스에 등록된 인스턴스는 뷰에서도 의존성을 주입하는 것이 가능하다. @Inject 클래스타입 식별자를 통해 뷰에서 주입된 객체에 접근할 수 있다.
JSON->C#
builder.Configuration.AddJsonFile("json파일 경로", optional: true);
builder.Services.Configure<SomeClass>(builder.Configuration.GetSection("json파일 이름"));
//이후 클래스의 생성자에서 IOptions<SomeClass>로 클래스를 얻어올 수 있다.
로깅
생성자 주입으로 ILogger<컨트롤러 클래스="">를 받아 사용하면 로깅을 할 수 있다.컨트롤러>