프로젝트 구조
SunuerManage
├─ appsettings.json # 애플리케이션 설정 파일, DB 연결 문자열 및 기타 설정 포함
├─ bin # 컴파일된 바이너리 파일 디렉터리
│ ├─ Debug # 디버그 모드 컴파일 출력
│ └─ Release # 릴리스 모드 컴파일 출력
├─ Code # 비즈니스 로직 및 데이터 액세스 레이어 코드
│ ├─ Admin # 관리자 관련 비즈니스 로직
│ │ ├─ AdminDal.cs # 관리자용 데이터 액세스 레이어
│ │ ├─ AdminModel.cs # 관리자 데이터 모델
│ │ ├─ AdminPowerDal.cs # 관리자 권한 데이터 액세스 레이어
│ │ ├─ AdminPowerModel.cs # 관리자 권한 데이터 모델
│ │ ├─ AdminRolesDal.cs # 관리자 역할 데이터 액세스 레이어
│ │ └─ AdminRolesModel.cs # 관리자 역할 데이터 모델
│ ├─ Articles # 기사(글) 관련 비즈니스 로직
│ │ ├─ ArticleCategoryDal.cs # 기사 카테고리 데이터 액세스 레이어
│ │ ├─ ArticleCategoryModel.cs # 기사 카테고리 데이터 모델
│ │ ├─ ArticlesDal.cs # 기사 데이터 액세스 레이어
│ │ └─ ArticlesModel.cs # 기사 데이터 모델
│ └─ ManageSet # 관리 설정 관련 비즈니스 로직
│ └─ ManageSetModel.cs # 관리 설정 데이터 모델
├─ Controllers # 컨트롤러(API), HTTP 요청을 처리
│ ├─ Admin # 관리자 관련 컨트롤러
│ │ ├─ AdminController.cs # 관리자 컨트롤러
│ │ ├─ AdminPowerController.cs # 관리자 권한 컨트롤러
│ │ └─ AdminRolesController.cs # 관리자 역할 컨트롤러
│ ├─ Articless # 기사(글) 관련 컨트롤러
│ │ ├─ ArticleCategoryController.cs # 기사 카테고리 컨트롤러
│ │ └─ ArticlesController.cs # 기사 컨트롤러
│ ├─ Files # 파일 관련 컨트롤러
│ │ ├─ CaptchaController.cs # CAPTCHA 컨트롤러
│ │ ├─ FilesController.cs # 파일 업로드 컨트롤러
│ │ └─ QRCodeController.cs # QR 코드 생성 컨트롤러
│ └─ ManageSets # 관리 설정 관련 컨트롤러
│ └─ ManageSetController.cs # 관리 설정 컨트롤러
├─ Data # 데이터 액세스 레이어 및 DB 컨텍스트
│ ├─ ApplicationDbContext.cs # DB 컨텍스트, DB와 상호작용
│ └─ SunuerManage.sql # DB 스크립트 파일(백업/복원)
├─ Pages # Razor 페이지(프론트엔드 표시용)
│ ├─ About.cshtml # "About" 페이지
│ ├─ Cases.cshtml # 케이스(사례) 페이지
│ ├─ Contact.cshtml # 연락처 페이지
│ ├─ Error.cshtml # 오류 페이지
│ ├─ Index.cshtml # 메인 페이지
│ ├─ News.cshtml # 뉴스 페이지
│ ├─ newsview.cshtml # 뉴스 상세 페이지
│ ├─ Manage # 관리자 백엔드 페이지
│ │ ├─ Admins # 관리자 관리 페이지
│ │ │ ├─ AdminAdd.cshtml # 관리자 추가 페이지
│ │ │ ├─ AdminEdt.cshtml # 관리자 수정 페이지
│ │ │ ├─ AdminList.cshtml # 관리자 목록 페이지
│ │ │ ├─ AdminPassWord.cshtml # 관리자 비밀번호 변경 페이지
│ │ │ ├─ AdminPowerAdd.cshtml # 관리자 권한 추가 페이지
│ │ │ ├─ AdminPowerEdt.cshtml # 관리자 권한 수정 페이지
│ │ │ ├─ AdminPowerList.cshtml # 관리자 권한 목록 페이지
│ │ │ ├─ AdminRolesAdd.cshtml # 관리자 역할 추가 페이지
│ │ │ ├─ AdminRolesEdt.cshtml # 관리자 역할 수정 페이지
│ │ │ ├─ AdminRolesList.cshtml # 관리자 역할 목록 페이지
│ │ │ ├─ Adminview.cshtml # 관리자 상세 페이지
│ │ ├─ admin_index.cshtml # 관리자 백엔드 메인 페이지
│ │ ├─ Agreement.cshtml # 사용자 약관 페이지
│ │ ├─ Articless # 기사(글) 관리 페이지
│ │ │ ├─ ArticleCategoryAdd.cshtml # 기사 카테고리 추가 페이지
│ │ │ ├─ ArticleCategoryEdt.cshtml # 기사 카테고리 수정 페이지
│ │ │ ├─ ArticleCategoryList.cshtml # 기사 카테고리 목록 페이지
│ │ │ ├─ ArticlesAdd.cshtml # 기사 추가 페이지
│ │ │ ├─ ArticlesEdt.cshtml # 기사 수정 페이지
│ │ │ ├─ ArticlesList.cshtml # 기사 목록 페이지
│ │ ├─ consoles # 콘솔 페이지
│ │ │ ├─ console.cshtml # 콘솔 페이지
│ │ ├─ Login.cshtml # 로그인 페이지
│ │ ├─ LoginOut.cshtml # 로그아웃 페이지
│ │ └─ ManageSets # 관리 설정 페이지
│ │ ├─ ManageSetEdt.cshtml # 관리 설정 수정 페이지
│ ├─ Shared # 공용 뷰 및 레이아웃
│ │ ├─ Menu.cshtml # 메뉴 뷰
│ │ ├─ _indexLayout.cshtml # 메인 페이지 레이아웃
│ │ ├─ _Layout.cshtml # 기본 레이아웃
│ │ ├─ _ManageIndexLayout.cshtml # 관리자 백엔드용 레이아웃
│ │ └─ _ValidationScriptsPartial.cshtml # 유효성 검사 스크립트 파셜 뷰
│ ├─ _ViewImports.cshtml # 뷰 임포트 파일(네임스페이스 정의)
│ └─ _ViewStart.cshtml # 뷰 시작 파일(레イ아웃 설정)
├─ Tools # 유틸리티 클래스
│ ├─ ApiResponse.cs # API 응답 유틸 클래스 - 통일된 API 응답 포맷
│ ├─ CBC.cs # 암호화/복호화 유틸 클래스
│ ├─ ConfigurationHelper.cs # appsettings.json에서 설정 값을 가져오는 클래스
│ ├─ DataTableToList.cs # DataTable -> List 변환 유틸
│ ├─ DBHelper.cs # DB 헬퍼 클래스
│ ├─ JsEncryptHelper.cs # JS 암호화 헬퍼 클래스
│ └─ Tools.cs # 범용 유틸 클래스
├─ wwwroot # 정적 리소스 파일
│ ├─ css # CSS 스타일
│ ├─ favicon.ico # 사이트 아이콘
│ ├─ images # 이미지 리소스
│ ├─ js # JavaScript 파일
│ └─ Uploadfile # 업로드된 파일 디렉터리
├─ Program.cs # 애플리케이션 진입점
├─ Properties # 프로젝트 속성
│ ├─ launchSettings.json # 실행 설정 파일
│ └─ PublishProfiles # 배포 프로필
│ ├─ FolderProfile.pubxml # 폴더 배포 프로필
│ └─ FolderProfile.pubxml.user # 사용자 전용 폴더 배포 프로필
├─ Sunuer Manage Disclaimer (Read Carefully).txt # 프로젝트 면책 조항 파일├─ SunuerManage.csproj # 프로젝트 파일(설정 및 종속성 관리)
├─ SunuerManage.csproj.user # 사용자 전용 프로젝트 설정 파일
├─ SunuerManage.sln # 솔루션 파일(프로젝트 구조 및 설정 포함)
구성 파일 launchSettings.json
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:32430", //http://localhost:32430,애플리케이션이 해당 주소를 통해 접근함을 의미합니다. "sslPort": 0 } }, "profiles": { "http": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "http://localhost:5021", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" //Development: 개발 환경. Staging: 스테이징(사전 배포) 환경. Production: 운영(프로덕션) 환경. } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
구성 파일 appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=nhdSQLEXPRESS;Database=SunuerManage;User Id=sa;Password=123456;MultipleActiveResultSets=true;TrustServerCertificate=True;Max Pool Size=100;Min Pool Size=5;Pooling=true;"
},
Server=nhd/SQLEXPRESS: 연결하려는 데이터베이스 서버 및 인스턴스 이름 지정.
Database=SunuerManage: 연결할 기본 데이터베이스 이름 지정.
User Id=sa; Password=123456: SQL Server에 로그인하기 위한 인증 정보(계정명 및 비밀번호).
MultipleActiveResultSets=true: 동일한 데이터베이스 연결(세션)에서 여러 데이터 읽기 작업을 동시에 수행할 수 있도록 허용. 예: 한 쿼리가 데이터를 읽는 동안, 다른 쿼리를 동시에 실행 가능. 특히 Entity Framework 사용 시, 하나의 연결에서 반복적으로 데이터를 읽으면서 다른 작업을 수행하려면 이 옵션이 true여야 지원됨.
TrustServerCertificate=True: TLS/SSL 암호화 연결로 SQL Server에 접속할 때, 서버가 제공하는 인증서를 신뢰할지 여부 설정. True로 설정하면 인증서가 신뢰할 수 있는 CA에 의해 서명되지 않았거나 다른 검증 문제가 있어도 연결을 강제로 신뢰하고 암호화 연결을 맺음. 보안 유의사항: 프로덕션 환경에서 자체 서명 인증서나 공식 신뢰 기관에 등록되지 않은 인증서를 사용하는 경우, 연결은 가능하지만 보안 위험이 있을 수 있으므로 실제 상황에 맞추어 신중히 구성해야 함.
Max Pool Size=100; Min Pool Size=5; Pooling=true: 데이터베이스 연결 풀(Connection Pool)의 동작을 제어함.
Pooling=true: 연결 풀 활성화. 애플리케이션에서 데이터베이스를 자주 액세스할 때 성능을 높이고, 매번 연결을 열고 닫는 오버헤드를 줄임.
Max Pool Size=100: 풀에 유지될 수 있는 유휴 연결의 최대 개수. 이 개수를 초과하면 새 연결 요청은 기존 연결이 해제되기를 기다리거나 설정에 따라 예외를 발생시킴.
Min Pool Size=5: 풀에서 유지될 최소 유휴 연결 수. 애플리케이션이 처음 DB에 연결할 때 5개의 연결을 미리 생성해 두어 이후 요청에 빠르게 대응할 수 있도록 함.