SemaphoreSlim 클래스를 사용하면 비동기에서 lock을 사용할 수 있다. AsyncLock.cs namespace Common;public sealed class AsyncLock{ // 한번에 하나의 스레드만 접근 가능하도록 설정되어, 사실상 뮤텍스처럼 동작한다. private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); // 동시 실행 제한 수 3 //private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(3); public async Task LockAsync() { await _semaphore.WaitAsync(); ..
.NET 8.0으로 신규 프로젝트 개발중인데, string 변수만 쓰면 위에처럼 자꾸 표시되서 이게 갑자기 왜 뜨지? 라고 생각했었다. ( 이전엔 .NET Framework 로만 개발했었음) 찾아보니까 .NET Core 3.0부터 nullable reference types이 도입되었고, 그래서 string?처럼 nullable 표시를 하지 않으면 컴파일러가 경고를 낸다고 하였다. 이를 관리하려면 프로젝트 파일에 enable 또는 disable를 설정을 하면nullable reference types 기능을 활성화하거나 비활성화할 수 있다. .NET 6, 이전에는 enable이 없어서 직접 추가했어야 했는데, 이후에는 projects에 이 속성이 포함이라 .csproj 파일을 열고 disable..
- AddDbContextPool 과 AddPooledDbContextFactory 는 모두 Entity Framework Core에서 DbContext 인스턴스를 풀링(pooling)하여 성능을 최적화 하는데 사용. 그러나 이 둘은 약간의 차이가 있음 1. AddDbContextPool역할: AddDbContextPool은 DbContext 인스턴스를 풀링하여 재사용합니다.이는 주로 단일 인스턴스의 수명이 요청(request) 당 한 번인 웹 애플리케이션 시나리오에 적합합니다.사용법: DbContext를 애플리케이션 서비스로 등록하여 풀링을 활성화합니다.구현 예:services.AddDbContextPool(options => options.UserMySql("YourConnectionStri..
- 컨텍스트 풀링을 사용하면 컨텍스트 설정 비용을 지속적으로 지불하지 않고 프로그램 시작 시 한 번만 지불하면 됨. - 컨텍스트 풀링은 데이터베이스 드라이버에서 하위 수준에서 관리되는 데이터베이스 연결 풀링과 직교한다는 점에 유의 ▶ 종속성 주입builder.Services.AddDbContextPool( o => o.UseSqlServer(builder.Configuration.GetConnectionString("WeatherForecastContext"))); ▶ 종속성 주입없이 var options = new DbContextOptionsBuilder() .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_C..
💡 개요 - 프로그래밍 하다보면 이름 짓는게 여간 어려운게 아님.- 이름을 잘 지어야 기능별 분리도 잘되고 나중에 유지보수 하기도 쉬움- 가독성도 높아짐 그래서 정리함 1. Helper 사용 시점 :Utility 기능: 주로 작은 단위의 유틸리티 함수들을 모아놓은 클래스.독립적 기능: 다른 클래스와 독립적으로 동작하며 특정 기능을 보조.특징 :Stateless: 상태를 가지지 않으며 메서드가 독립적으로 동작.Static Methods: 보통 정적 메서드로 구성되어 객체 인스턴스 생성 없이 사용 가능.예제 :public static class TimeHelper{ public static string ToString(DateTime dateTime) { return dateTime.ToString..