[C#] Singleton, Scoped, Transient 차이점 – DI Container 생명주기 완전 정리
·
프로그래밍/C#
[C#] Singleton, Scoped, Transient 차이점 – DI Container 생명주기 완전 정리C#에서 의존성 주입(Dependency Injection)을 사용할 때, DI Container에 등록할 수 있는 Singleton, Scoped, Transient는 각기 다른 생명주기를 가지고 있습니다.실무에서 자주 쓰이는 이 3가지 생명주기의 차이점과 사용 시 주의할 점, 그리고 예제를 통한 설명을 함께 정리해보겠습니다.🔁 1. Singleton – 앱 전체에서 단 하나Singleton으로 등록된 서비스는 애플리케이션 실행 동안 딱 1개 인스턴스만 생성되어, 모든 곳에서 공유됩니다.// 등록 방법services.AddSingleton(); 처음 요청 시 1회 생성 → 이후 모든 ..
[C#] Singleton 패턴 잘못 쓰면 발생하는 문제 – 메모리 누수 & DI 문제
·
프로그래밍/C#
[C#] Singleton 패턴 잘못 쓰면 발생하는 문제 – 메모리 누수 & DI 문제C#에서 Singleton 패턴은 전역 인스턴스를 하나만 유지한다는 점에서 자주 사용됩니다. 하지만 잘못된 싱글톤 사용은 메모리 누수, 테스트 어려움, 의존성 주입(DI) 충돌 등의 문제를 발생시킬 수 있습니다.이 글에서는 Singleton 패턴의 기본 구조와 함께 실무에서 문제가 되는 사용 예, 그리고 올바른 구현 방법을 소개하겠습니다.✅ Singleton 패턴 기본 구조// 기본 싱글톤 구현 (Lazy + Thread-safe)public sealed class MyService{ private static readonly Lazy instance = new Lazy(() => new MyServ..
[C#] 디자인 패턴 - 실무에서 가장 많이 쓰는 디자인 패턴 3가지 정리 (Singleton, Factory, Command)
·
프로그래밍/C#
[C# 디자인 패턴] 실무에서 가장 많이 쓰는 디자인 패턴 3가지 정리C# 개발을 하다 보면 다양한 디자인 패턴을 접하게 됩니다. 하지만 실무에서는 자주 쓰는 몇 가지 패턴만 집중적으로 활용되곤 합니다.이 글에서는 C# 실무에서 가장 자주 쓰이는 디자인 패턴 3가지를 소개하고, 구현 코드 예제와 함께 어떤 상황에서 쓰면 좋은지 설명드리겠습니다.1. 싱글톤 패턴 (Singleton Pattern)싱글톤 패턴은 하나의 인스턴스만 생성되도록 제한하고, 전역 접근이 가능하게 만드는 디자인 패턴입니다.주로 설정 클래스, DB 연결 클래스 등에 사용됩니다.// Thread-safe Singleton 예제public sealed class ConfigManager{ private static readonly L..
[C#] 경로 유효성 체크 - IsValidPath
·
프로그래밍/C#
경로 유효성 체크 IsValidPath 설치파일 등에서 경로 체크시에 사용된다. /// /// 경로가 유효한지 체크한다. /// /// 경로 private bool IsValidPath(string path) { // 경로 길이 체크 if (path.Length < 3) return false; // 드라이브 문자열 체크 Regex driveCheck = new Regex(@"^[a-zA-Z]:\\$"); if (driveCheck.IsMatch(path.Substring(0, 3)) == false) return false; // 경로 이름에 사용할 수 없는 문자가 있는지 체크 string invalidPathChars = new string(Path.GetInvalidPathChars()); inva..