Understand Files & Folder Structure
Visual studio의 Solution
Visual Studio에서 솔루션(Solution)은 프로젝트들을 관리하고 구성하는 상위 개념이자 아키텍처(architecture)
- 파일 확장자:
.sln
확장자 - 구성 요소: 하나 이상의 프로젝트를 포함할 수 있으며, 각 프로젝트는 고유의 설정, 파일 및 리소스를 가짐
- 역할: 프로젝트 간의 종속성을 관리하고, 빌드 및 디버깅 과정을 통합하며, 여러 프로젝트를 단일 단위로 관리
Visual studio의 Porject File
- 파일 확장자: 주로
.csproj
(C# 프로젝트) 또는.vcxproj
(C++ 프로젝트) 확장자를 가짐. - 구성 요소: 소스 코드 파일, 리소스 파일, 참조, 빌드 설정 등을 포함.
- 역할: 각 프로젝트의 파일과 설정을 관리하고, 빌드 및 디버깅을 위한 정보를 제공함.
<Project Sdk="Microsoft.NET.Sdk.Web"> <!-- 프로젝트 파일의 최상위 요소로, Microsoft.NET.Sdk.Web SDK를 사용하여 웹 애플리케이션 프로젝트를 생성 --> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <!-- 해당 프로젝트의 타겟 .NET 프레임워크 버전을 지정 --> <Nullable>enable</Nullable> <!-- Nullable 참조 유형을 사용하도록 설정 --> <ImplicitUsings>enable</ImplicitUsings> <!-- 암시적 using 지시문을 활성화하여, 흔히 사용되는 네임스페이스를 자동으로 포함 --> </PropertyGroup> <ItemGroup> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> <!-- Swashbuckle.AspNetCore 패키지를 참조하여 OpenAPI(Swagger) 지원 추가 --> <!-- Swashbuckle.AspNetCore 패키지는 ASP.NET Core 애플리케이션에 Swagger/OpenAPI 문서 생성을 위한 기능을 제공합니다. --> <!-- Swagger는 RESTful API를 위한 인터페이스 명세서이며, 이를 통해 API를 시각화하고 테스트할 수 있는 웹 UI를 제공할 수 있습니다.--> </ItemGroup> </Project>
launchSettings.json
launchSettings.json
파일은 .NET 프로젝트에서 디버깅 설정을 관리하는 데 사용
이 파일은 프로젝트의 Properties
폴더 안에 위치해 있으며, 애플리케이션이 디버깅 모드로 실행될 때의 설정을 정의합니다.
주요 섹션
- profiles:
각기 다른 디버깅 프로파일을 정의
예를 들어,IIS Express
와 같은 웹 서버나, 프로젝트 자체의 실행 구성을 정의할 수 있습니다. - environmentVariables:
환경 변수를 설정합니다.
애플리케이션이 실행될 때 사용할 특정 환경 변수 값을 정의할 수 있습니다. - commandName:
애플리케이션이 실행될 때 사용할 명령을 지정합니다.
예를 들어,Project
는 기본 프로젝트 실행을 의미하고,IISExpress
는 IIS Express에서 실행을 의미합니다. - applicationUrl:
애플리케이션이 실행될 때 사용할 URL을 지정합니다.
아래와 같이 값을 수정하여 디버깅 프로필에 적용할 수 있으며 웹브라우저 변경도 가능 (설치된 브라우저)
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:8465", "sslPort": 44390 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://localhost:5118", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "https": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:7256;http://localhost:5118", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "launchSettings_Test": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:7256;http://localhost:5118", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
Controllers Folder
Controllers Folder는 ASP.NET Core MVC (모델-뷰-컨트롤러) 애플리케이션에서 매우 중요한 역할을 합니다.
이 폴더에는 주로 컨트롤러 클래스들이 위치합니다. 컨트롤러는 사용자의 요청을 처리하고, 필요한 데이터를 모델에서 가져와 뷰에 전달하는 역할을 합니다.
appsettings.json
appsettings.json 파일은 .NET Core 및 ASP.NET Core 애플리케이션에서 설정(configuration) 정보를 저장하는 데 사용되는 파일
이 파일은 JSON 형식으로 작성되며, 애플리케이션이 실행될 때 필요한 각종 설정 값을 포함
주요 역할
- 구성 설정: 데이터베이스 연결 문자열, API 키, 애플리케이션 설정 등을 포함한 각종 설정 정보 등… 을 저장
- 환경별 설정:
appsettings.Development.json
,appsettings.Production.json
등과 같은 환경별 설정 파일을 통해 개발, 테스트, 프로덕션 등 각 환경에 맞는 설정 값을 관리 - 구성 공급자(Configuration Provider):
appsettings.json
파일을 통해 설정 값을 로드하고, 필요에 따라 다른 구성 공급자와 결합하여 사용
Program.cs
Program.cs
파일은 .NET Core 및 ASP.NET Core 애플리케이션에서 진입점을 정의
이 파일은 애플리케이션이 시작될 때 처음 실행되는 코드를 포함하고 있으며, 주로 애플리케이션의 설정과 기본적인 실행을 담당합니다.
주요 역할
- 메인 진입점:
애플리케이션 실행의 시작점을 정의합니다. - 호스트 빌드:
웹 애플리케이션의 웹 호스트를 구성하고 빌드합니다. - 서비스 구성:
종속성 주입(DI), 미들웨어, 설정 등을 포함하여 애플리케이션의 기본 설정을 구성합니다.
// 웹 애플리케이션을 생성하기 위한 빌더 객체를 생성 var builder = WebApplication.CreateBuilder(args); // 서비스 컨테이너에 서비스 추가 // 컨트롤러 서비스를 추가하여 MVC 패턴을 지원 builder.Services.AddControllers(); // Swagger/OpenAPI 설정을 위한 서비스 추가 builder.Services.AddEndpointsApiExplorer(); // API 엔드포인트 탐색기 추가 builder.Services.AddSwaggerGen(); // Swagger 생성을 위한 서비스 추가 // 애플리케이션 빌드 var app = builder.Build(); // HTTP 요청 파이프라인 구성 if (app.Environment.IsDevelopment()) { // 개발 환경에서만 Swagger를 사용하도록 설정 app.UseSwagger(); app.UseSwaggerUI(); } // HTTP 요청을 HTTPS로 리디렉션 app.UseHttpsRedirection(); // 권한 부여 미들웨어 사용 app.UseAuthorization(); // 컨트롤러에 대한 요청을 매핑 app.MapControllers(); // 애플리케이션 실행 app.Run();