Asp.Net 은 윈도우 전용 프레임워크로 현재는 레거시입니다.
지금 시점에서 사용할 수 있는 버전은 Asp.Net Core 인데, 윈도우 리눅스, 맥에서 구동할 수 있습니다.
어떤 문서나 학습 자료를 보시더라도, 이 두 버전의 구분을 명확히 하는 게 출발점이라고 할 수 있습니다.
Asp.Net Core 는 기본적으로 서버입니다.
Http 요청을 캡슐화한 HttpContext와 Http 응답을 캡슐화한 HttpResponse 객체를 제공하는데, 이들을 미들웨어 파이프라인을 통과하면서 처리하는 구조입니다.
요청 도착 => HttpContext 생성 => 미들웨어1, … , 미들웨어n
응답 전송 <= HttpResponse <= 미들웨어1, … , 미들웨어n (어딘가에서 HttpResponse 생성)
미들웨어는 Short Circuit 구조로 되어 있습니다.
요청을 읽은 후, 어떤 액션을 하고 그 다음 미들웨어로 요청을 넘길 수도 있고, 넘기지 않고, 응답을 보낼 수 있습니다.
개발자는 미들웨어만 정의해도 서버를 구성할 수 있습니다.
Asp.Net Core 는 또한 호스트 앱입니다.
닷넷 호스트 앱의 가장 큰 특징은 서비스 컨테이너를 포함하고 있다는 점입니다.
Asp.Net Core 는 이 컨테이너에 HttpContext 와 HttpResponse, 미들웨어 파이프 라인과 관련된 서비스를 기본적으로 제공하고 있는 것이죠.
이게 기본이고, 여기에 서비스와 미들웨어를 추가하는 방식으로 워크로드를 확장하는 구조입니다.
Wep Api, Minimal API, MVC, Web App, Blazor Web App등은 기본 컨테이너에 각각이 요구하는 서비스와 미들웨어가 추가하는 방식으로 설정됩니다. (프로젝트 템플릿을 사용하면 간편하게 선택할 수 있습니다)
참고로, Blazor 는 Single Pgae App 기술로, Asp.Net Core 의 다른 웹앱 기술과는 약간 차이가 있습니다. 뿐만 아니라, 일반적인 SPA와도 약간 다릅니다.
블레이저 자체는 매우 훌륭한 기술이 맞지만, SPA 에 익숙하지 않으시다면, 선택 여부는 신중하게 결정하시는 게 좋습니다.
프론트 엔드 기술이 있다면, Asp.Net Core Web Api 혹은 Asp.Net Core Minimal Api 가 가장 채택하기 용이할 것입니다.
MVC 구조에 익숙하다면, Asp.Net Core MVC가 코딩 효율적인 선택일 확률이 높습니다.
코드를 숨기는 게 목적이라면, Asp.Net Core MVC, Asp.Net Core Web App, Asp.Net Core Blazor Web App (InteractiveServer) 가 가장 적합하다고 할 수 있습니다.