Skip to content

Latest commit

 

History

History
253 lines (211 loc) · 17.4 KB

README.md

File metadata and controls

253 lines (211 loc) · 17.4 KB

ASP.Net Core Web API Server 학습

이 저장소에 있는 코드는 약간의 오류나 좋지 않은 코드는 일부러 놓아두고 있습니다. 학습하는 사람이 학습하면서 수정하는 것을 유도하고 있습니다. PR은 받지 않습니다.


1. 학습하기

직접 예제 코드를 만들어 보면서 학습을 잘하자

Redis 프로그래밍

MySQL 프로그래밍

로그 라이브러리 ZLogger

.NET 에서 로그 라이브러리로 ZLogger를 추천한다.
사용 방법은 ZLogger 디렉토리를 보기 바란다.

2022년 인턴 사원이 만든 학습 자료

학습자료_2022년_인턴 이라는 디렉토리에 2022년 인턴 사원으로 근무한 분이 만든 학습 자료가 있다.
이 자료들을 순서대로 한번 보기 바란다.
이것들을 본 후 실습을 하나씩 한다. 03_Dapper, 06연습 프로젝트 구현은 따라서 실습을 할 필요는 없다. 그냥 보기만 한다.

학습에서는 데이터 베이스 프로그래밍으로 Dapper를 사용하고 있는데 실제 실습에서는 SqlKata를 사용한다
SqlKata 소개
demo 프로그램 codes 디렉토리에 있는 github_sqlkata_demo.zip 파일이다.

서버 캠퍼스 1기 수료생 정리 자료

서버 캠퍼스 1기 수료생 정리 자료

학습자료_2024_서버캠퍼스2기 디렉토리를 보기 바란다

문서



단계 별로 따라하면서 API 서버 만들기

아래 영상과 예제 코드를 참고하면서 단계 별로 만들면서 배운다.


API Server 개발하기

  • code 디렉토리의 APIServer_Templete 디렉토리에 있는 코드를 참고해서 만들기 바란다.
  • 프로젝트는 새로 만들고 구조나 코드 등을 참고한다.
  • APIServer_Templete에 있는 코드 보다 더 좋은 코드를 만드는 것을 목표로 한다.

example_filter_APIServer

  • 아래 프로그램은 codes 디렉토리 안에 있다.
  • 기획데이터(마스터 데이터)가 json으로 된 것을 로딩
  • 미들웨어로 라우팅을 커스텀마이징
  • 미들웨어로 클라이언트 보낸 요청 데이터의 암호를 풀어서 핸들러에 전달하도록 한다
  • 필터로 클라이언트에 보내는 응답의 포맷을 변환하거나 암호화 하도록 한다

gRPC Server


참고할 실습 프로젝트

  • (2022년) 신입 사원 교육 프로젝트
    • codes/practice_robotmon-go 디렉토리에 있다.
    • .NET 6 버전 사용
  • 2023년 지니어스 인턴 프로젝트
  • (2024년 1월) 신입 사원 교육 프로젝트
    • 미니게임천국 모작
    • codes/practice_MiniGameHeavenAPIServer 디렉토리에 있다.
    • .NET 8 버전 사용
  • 2024년 API 서버로 만든 오목 게임 서버
    • 두 개의 프로젝트가 있다. 둘다 만드는 게임은 같지만 각각 개발자는 달라서 구현도 조금씩 다르다
    • API 서버로 실시간 게임 콘텐츠를 구현하는 방법을 볼 수 있다. 롱 폴링 방식 사용
    • codes/practice_omok_game-1 , 'codes/practice_omok_game-2`


API 서버의 디렉토리 구성 예

  • Controllers: 컨트롤러 클래스를 저장하는 곳
  • Dto: 클라이언트와 데이터를 주고받을 때 모델 클래스를 저장하는 곳
  • Infrastructure: DB, 메일, 기타 시스템 연동 등의 설정파일을 저장하는 곳
  • Libraries: 프로젝트 내 공통 처리를 저장하는 곳
  • Repositories: DB 접근 처리를 저장하는 곳
  • Services : 비즈니스 로직을 저장하는 곳
│   ├── Controllers
│   │   └── TodoController.cs
│   ├── Dto
│   │   ├── CreateRequestDto.cs
│   │   └── CreateResponseDto.cs
│   ├── Infrastructure
│   │   ├── Configure
│   │   │   ├── DatabaseConfigure.cs
│   │   │   └── ServiceConfigure.cs
│   │   └── Database
│   │       └── TodoEntity.cs
│   ├── Libraries
│   │   ├── Exception
│   │   │   └── ValidationException.cs
│   │   └── Middleware
│   │       └── CustomExceptionMiddleware.cs
│   ├── Program.cs
│   ├── Properties
│   │   └── launchSettings.json
│   ├── Repositories
│   │   └── Todo
│   │       ├── ITodoRepository.cs
│   │       └── TodoRepository.cs
│   ├── Services
│   │   └── Todo
│   │       ├── ITodoService.cs
│   │       └── TodoService.cs
│   ├── TodoApi.csproj
│   ├── TodoApi.sln	
│   ├── TodoApi.http
│   ├── appsettings.Development.json
│   └── appsettings.json
├── Api.Tests
│   ├── Api.Tests.csproj
│   ├── Api.Tests.sln	
│   ├── GlobalUsings.cs
│   └── UnitTests
│       └── Services
│           └── TodoServiceTests.cs
└── dotnet-todo-web-api.sln	

실습

  • 팜 게임 만들기: api_server_training_tany_farm 디렉토리
  • 수집형 RPG 게임 만들기: api_server_training_dungeon_farming 디렉토리

C# 학습 자료