- 닷넷에서 API Server용 게임서버 개발을 위해 학습을 하기 위한 것이다.
- ASP.NET Core 7.0의 새로운 기능
- Announcing ASP.NET Core in .NET 7
직접 예제 코드를 만들어 보면서 학습을 잘하자
- Redis의 기본 데이터 유형 및 명령
- (영상) Redis 야무지게 사용하기
- Redis 기능 학습하기
- C# Redis 프로그래밍 학습
학습자료_2022년_인턴 이라는 디렉토리에 2022년 인턴 사원으로 근무한 분이 만든 학습 자료가 있다.
이 자료들을 순서대로 한번 보기 바란다.
이것들을 본 후 실습을 하나씩 한다.
03_Dapper, 06연습 프로젝트 구현은 따라서 실습을 할 필요는 없다. 그냥 보기만 한다.
학습에서는 데이터 베이스 프로그래밍으로 Dapper를 사용하고 있는데 실제 실습에서는 SqlKata를 사용한다
SqlKata 소개
demo 프로그램 codes 디렉토리에 있는 github_sqlkata_demo.zip 파일이다.
- https://sueshin.tistory.com/category/%EA%B0%9C%EC%9D%B8%EA%B3%B5%EB%B6%80/Web%20API%20%EA%B2%8C%EC%9E%84%20%EC%84%9C%EB%B2%84%20%EA%B3%B5%EB%B6%80
- https://gist.github.com/jacking75/344fd3c8c16fc27fe51d4c983a3a6306
- https://paper-tub-6ae.notion.site/0be4168f7f224f82a89110423e3943cb
- ASP.NET Core로 Web API 만들기
- 워리할수있다 (tistory.com)
- Intro - WebAPI Server (gitbook.io)
- ASP (notion.site)
- https://velog.io/@oak_cassia/%EC%84%9C%EB%B2%84%EC%BA%A0%ED%8D%BC%EC%8A%A4-1%EA%B8%B0-ASP.NET-Core
- https://beathe.at/2023-04/ASP.NET-Core-GameServer
학습자료_2024_서버캠퍼스2기 디렉토리를 보기 바란다
- Web서비스의 서버구성과목적
- DAO, DTO, VO 란? 간단한 개념 정리
- ASP.NET Core Web
- ASP.NET Core 입문 – 미들웨어와 파이프라인 해설
- ASP.NET Core의 속도 제한 미들웨어
- 요청 본문을 Stream 또는 PipeReader로 바인딩
- STREAM
- ASP.NET Core 출력 캐싱 미들웨어
- 외부 자료:
아래 프로그램은 codes 디렉토리의 basic 디렉토리 안에 있다.
ASP.NET Core Web API 기본 템플릿으로 만든 프로그램이다
Get 메소드로 http://localhost:5000/WeatherForecast를 호출하면 Json 데이터를 받을 수 있다.
보통 API 서버에 요청을 할 때 Post 메소드로 Json 포맷으로 요청하고, Josn 포맷으로 응답을 받는다. 로그인 요청을 가정한 아주 간단한 컨트룰러를 하나 만들어서 이 동작을 시연한다.
실제 API 서버를 운용할 때는 앞단에 로드밸런스를 두고, 여기서 HTTPS 처리를 하게 하면 되므로 HTTP 프로토콜은 사용하지 않도록 하였다.
요청은 아래와 같다.
POST http://localhost:11500/Login
Content-Type: application/json
{
"ID":"jacking",
"PW":"dsd"
}
MySQL과 Redis를 사용하여 계정 생성과 로그인 처리를 한다.
라이브러리: MySQL(Sqlkata), Redis(CloudStructures)
DataBase 이름은 account_db, 테이블 이름은 account 이다.
CREATE TABLE IF NOT EXISTS account_db.`account`
(
AccountId BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '계정번호',
Email VARCHAR(50) NOT NULL UNIQUE COMMENT '이메일',
SaltValue VARCHAR(100) NOT NULL COMMENT '암호화 값',
HashedPassword VARCHAR(100) NOT NULL COMMENT '해싱된 비밀번호',
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '생성 날짜'
) COM 아래는 요청
POST http://localhost:11500/Login
Content-Type: application/json
{
"Email":"[email protected]",
"Password":"123qwe"
}
basic_03과 동일하지만 로거가 추가되었다.
ASP.NET Core에서 제공하는 로거를 설정해서 사용한다.
여기에서는 콘솔 출력만 하고 있다.
basic_04과 동일하지만 로거를 표준에서 ZLogger로 변경하였다.
ZLogger를 오픈소스 라이브러리로 표준 로거 보다 더 고성능이다.
조금의 코드 변경으로 표준에서 ZLogger로 변경이 가능하다.
미들웨어를 사용하고 있다.
이번 프로젝트는 구현을 다 하지 않고, 미들웨어를 사용하는 방법만 코드로 보여주고 있다.
이 샘플만으로는 미들웨어의 장점에 대해서 잘 이해시키기 힘들다.
설명이 필요하다.
DI를 사용한다
- 게임 서버를 개발할 때 사용할 기본 템플릿
- 아래 프로그램은
codes디렉토리의net7디렉토리 안에 있다.- 만약 닷넷 8 혹은 9가 나오면 거의 동일한 코드가 있는
net8,net9디렉토리가 있을 것이다
- 만약 닷넷 8 혹은 9가 나오면 거의 동일한 코드가 있는
- 아래 프로그램은
codes디렉토리 안에 있다. - 기획데이터(마스터 데이터)가 json으로 된 것을 로딩
- 미들웨어로 라우팅을 커스텀마이징
- 미들웨어로 클라이언트 보낸 요청 데이터의 암호를 풀어서 핸들러에 전달하도록 한다
- 필터로 클라이언트에 보내는 응답의 포맷을 변환하거나 암호화 하도록 한다
- 아래 프로그램은
codes디렉토리 안에 있다. - 아래 기능을 사용하여 JSON을 주고 받을 수 있도록 한다. 아직 클라이언트에서 gRPC 통신을 쉽게 할 수 없는 경우가 많다.
- MS Docs
- 샘플코드 Transcoder
- ASP.NET Core gRPC 앱에서 gRPC JSON 코드 변환 프로젝트 만들기
- 2022년 신입 사원 교육 프로젝트
codes/robotmon-go디렉토리에 있다..NET 6버전 사용
- 2023년 지니어스 인턴 프로젝트
- 학습에는 LinqPad라는 툴을 사용하면 편리하다
- 빠르게 핵심 위주로 배우고 싶다면 예제로 배우는 C# 프로그래밍 사이트의 글을 본다.
- (인프런 무료 영상) C# 초보 강좌 예제로 배우는 C# - 11 강 ∙ 8시간 17분
- (인프런 무료 영상) C# 처음부터 배우기 - 커리큘럼 총 11 개 ˙ 3시간 53분의 수업
- (인프런 무료 영상) C# 프로그래밍 - 커리큘럼 총 63 개 ˙ 29시간 56분의 수업
- YOUTUBE 닷넷데브