ASP.NET Core에서 사용하는 ZLogger를 알아보자. ZLoggerZLogger는 .Net에서 제공하는 Logger보다 향상된 기능을 제공하는 라이브러리다.그림과 같이기존의 Logger는 오브젝트를 박싱하고, string을 UTF8로 인코딩하는데 추가적인 비용이 발생한다.하지만, ZLogger를 이용하면, 이 과정을 줄일 수 있다.zero allocation string 빌더인 ZString을 사용하여 버퍼영역에 직접 UTF8로 작성함로그 문자열을 콘솔에 출력하기 위한 ConsoleStream에 한번에 보내기 때문에 Boxing이 발생하지 않음비동기적으로 작동하기 때문에 애플리케이션에 부하를 주지 않음ConsoleLogging 외에도 FileLogger, RollingFileLogger, Str..
Study/GameServer
redis를 사용하기 위해 cloudstructes라는 라이브러리를 알아보자. CloudStructures.NET용 Redis클라이언트 라이브러리다.StackExchange.Redis를 기반으로 더 편리한 API를 제공한다. 왜 사용할까?일반 Redis 클라이언트 (StackExchange.Redis)를 직접사용한다면, // 문자열 저장await db.StringSetAsync("user:1:name", "John");// 문자열 읽기var name = await db.StringGetAsync("user:1:name");이런식으로 사용하게 되지만, // 타입 안전하게 저장var redisString = new RedisString(connection, "user:1:name");await redisSt..
Redis에 대해서 설치하는 방법과 기초 예제를 알아보자. RedisRedis는 데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스다.Key-Value 형태로 데이터를 저장한다.인 메모리 (In-Memory)에 모든 데이터를 저장한다. 그래서 데이터 처리 성능이 굉장히 빠르다.캐싱 -> 현업에서 가장 많이 사용됨세션관리실시간 분석 통계메세지 큐지리공간 인덱싱속도제한실시간 채팅 및 메세징이런 용도로 주로 사용된다.설치하기 [Redis] 윈도우10 환경에서 레디스 설치하기Redis 설치 프로그램 다운로드 아래 링크에 접속하여 msi 확장자의 Redis 설치 프로그램을 다운로드한다. https://github.com/microsoftarchive/redis/releases Releases · microsof..
SQLKata의 개념과 설치 방법을 알아보자.공식 문서는 아래에 있다. SqlKata | SqlKatafluent SQL query builder, supports SqlServer, MySql, PostgreSql, SQLite, Oracle and Firebirdsqlkata.com SQLKataSQLKata는 다양한 데이터베이스 플랫폼에서 SQL 쿼리 작성을 더욱 쉽고 효율적으로 만들어주는 라이브러리이다.데이터베이스 쿼리 작성 시 보다 직관적이고 편리한 문법을 제공한다. 예를 들어, SELECT 문에서 컬럼을 선택할 때, 별칭을 지정할 수 있다.WHERE절에서는 다양한 조건문을 쉽게 작성할 수 있다.IEnumerable posts = await db.Query("Posts") .Where("L..
이제 .NET Core에 MySQL을 연결하는 방법을 알아보자.1. MySqlConnector 설치dotnet add package MySqlConnector프로젝트 터미널에서 위의 명령어를 입력해 MySqlConnector를 설치해주자. 2. SQL 연결MySQL의 일반적인 연결 문자열은 다음과 같다."Server=YOURSERVER;User ID=YOURUSERID;Password=YOURPASSWORD;Database=YOURDATABASE"해당 문자열의 값을 데이터베이스에 적합한 설정으로 바꾸자.appsettings.json에 해당 문자열을 등록해주면 된다.{ .... "ConnectionStrings": { "Default": "Server=YOURSERVER;User ID=YOURUS..
API 서버 간 통신 때 HttpClientFactory를 사용하는 방법을 알아보자.문제상황예를 들어서 외부 API에서 데이터를 가져오는 기능을 구현한다고 가정해보자.public class BadService{ public async Task GetDataAsync() { // 매번 새로운 HttpClient를 만듦 -> X var client = new HttpClient(); var response = await client.GetAsync("https://api.example.com/data"); return await response.Content.ReadAsStringAsync(); // client가 자동으로 Dispos..
API 서버의 디렉토리는 어떻게 구성되어있는지 확인해보자. Controllers : 컨트롤러 클래스를 저장하는곳.DTO : 클라이언트와 데이터를 주고 받을 때, 모델 클래스를 저장하는 곳Infrastructure : DB, 메일, 기타 시스템 연동 등의 설정 파일을 저장하는 곳Libraries : 프로젝트 내 공통 처리를 저장하는 곳Repositories : DB 접근 처리를 저장하는 곳Services : 비즈니스 로직을 저장하는 곳│ ├── Controllers│ │ └── TodoController.cs│ ├── Dto│ │ ├── CreateRequestDto.cs│ │ └── CreateResponseDto.cs│ ├── Infrastructure│ │ ├─..
C#의 종속성 주입(DI)에 대해서 공부해보자. 종속성 주입(DI)C#에서의 종속 주입(DI)에는 세 가지 종속 주입 방법의 수명 주기 (AddSingleton, AddScoped, AddTransient)를 사용할 수 있다.수명인스턴스 생성 타이밍AddTransient각 요청에 대해 새 인스턴스 생성AddScoped요청당 하나의 인스턴스 생성AddSingleton애플리케이션 전체에서 하나의 인스턴스 생성 AddTransient, AddScoped, AddSingleton을 아래의 코드로 전환하면서 serve 엔드포인트를 요청해보자.Program.csusing Microsoft.AspNetCore.Mvc;var builder = WebApplication.CreateBuilder(args);// 의존성 ..
미들웨어와 파이프라인의 개념에 대해 설명한다. 미들웨어와 파이프라인미들웨어는 소프트웨어 구성 요소다. 그리고, 이러한 미들웨어를 연결한 것을 요청 파이프라인이라고 한다. 파이프라인 구축 방법요청 파이프라인을 구성하는 소스코드는 program.cs 파일이다.(범용 호스트를 사용하는 경우, Startup.cs의 Configure 메서드에 작성된다는데 이건 공부하면서 알아가면 될듯하다.)var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers(); // 컨트롤러 서비스 추가// Learn more about configuring OpenAPI at https://a..
Action 메서드에서 응답을 제어하는 방법을 알아보자.JSON Response 처리ASP.NET Core에서 별 다른 설정 없이 객체를 반환하면, JSON으로 자동 변환되어 쏴준다. 조건이 조금 있는데public struct CreateProductRequestDTO{ [Required] public int Id { get; set; } [Required] public string Name { get; set; } [Required] public double Price { get; set; }}이전 글에서 썼던 코드다.여기에서 보이듯, 각 필드가 대문자로 시작해야 하고, get/set 프로퍼티여야 한다.[Route("hello")][HttpGet]public CreateProductRe..
