ASP.NET Core의 새로운 구성 모델ASP.NET Core는 기존 ASP.NET을 완전히 재설계한 프레임워크입니다. 이전 버전에서는 System.Configuration과 web.config 파일의 XML 구성에 의존해 설정을 관리했지만, ASP.NET Core에서는 솔루션 전역 설정, 프로젝트별 설정, 클라이언트별 설정 등을 훨씬 쉽게 선언하고 접근할 수 있는 새로운 구성(Configuration) 모델을 도입했습니다. 이 새로운 구성 모델은 XML, INI, JSON 파일을 모두 지원합니다.ASP.NET Core의 주요 J
개요 ASP.NET Core는 내장 IoC(Inversion of Control) 컨테이너를 사용해 생성자 또는 메서드를 통해 종속성 클래스의 객체를 자동으로 주입합니다. 이를 종속성 주입(Dependency Injection, DI)이라고 합니다. 내장 컨테이너는 IServiceProvider 구현체로 표현되며, 기본적으로 생성자 주입(constructor injection)을 지원합니다. 내장 IoC 컨테이너가 관리하는 타입(클래스)들을 서비스(service)라고 부릅니다. IoC 컨테이너가 애플리케이션 서비스를 자동으로 주입하
ASP.NET Core의 기본 제공 IoC(제어 반전) 컨테이너는 등록된 서비스 형식의 수명을 관리합니다. 컨테이너는 개발자가 지정한 수명에 따라 서비스 인스턴스를 자동으로 생성하고, 더 이상 필요하지 않으면 자동으로 삭제(Dispose)합니다.세 가지 서비스 수명기본 제공 IoC 컨테이너는 다음과 같은 세 가지 수명을 지원합니다.Singleton(싱글톤) — IoC 컨테이너가 애플리케이션의 전체 수명 동안 단 하나의 인스턴스만 생성하여 모든 곳에서 공유합니다.Transient(일시적) — 해당 서비스 형식을 요청할 때마다 매번 새
ASP.NET Core로 마이그레이션을 고려하는 개발자라면 가장 먼저 마주치는 질문 중 하나가 기존의 HttpModule과 미들웨어(Middleware)는 무엇이 다른가?입니다. 두 기술 모두 HTTP 요청 파이프라인에서 공통 로직을 처리한다는 점에서 유사하지만, 구성 방식과 실행 흐름 제어 측면에서 큰 차이가 있습니다. HttpModule의 특징 전통적인 ASP.NET의 HttpModule은 web.config 또는 global.asax 파일을 통해 구성됩니다. 모듈의 실행 순서는 주로 애플리케이션 수명 주기(Life Cycle)
Kestrel은 ASP.NET Core를 위한 크로스 플랫폼(cross-platform) 웹 서버입니다. .NET Core가 지원하는 모든 플랫폼과 버전에서 동작하며, ASP.NET Core에는 기본적으로 내장 웹 서버로 포함되어 있어 별도의 설치 없이 바로 사용할 수 있습니다.Kestrel의 주요 특징Kestrel은 단독으로 엣지 서버(edge server), 즉 인터넷에 직접 노출되어 클라이언트로부터 들어오는 HTTP 요청을 직접 처리하는 웹 서버로 활용할 수 있습니다. Kestrel 환경에서 앱을 호스팅하는 프로세스는 dotn
IWebHostEnvironment는 애플리케이션이 현재 실행 중인 웹 호스팅 환경에 대한 정보를 제공하는 인터페이스입니다. 이를 통해 개발자는 애플리케이션의 루트 경로나 정적 파일 경로 같은 환경 정보를 코드 내에서 손쉽게 확인하고 활용할 수 있습니다. IWebHostEnvironment 개요 IWebHostEnvironment 인터페이스는 Microsoft.AspNetCore.Hosting 네임스페이스에 속해 있으며, 컨트롤러에 종속성 주입(Dependency Injection)으로 전달받은 뒤 컨트롤러 전반에서 사용할 수 있습
모든 ASP.NET Core 애플리케이션에는 애플리케이션과 웹 서버의 역할을 수행하는 WebHost 객체가 반드시 필요합니다. 그리고 이 WebHost를 구성하고 생성하는 데 사용되는 것이 바로 WebHostBuilder입니다. 일반적으로 WebHostBuilder 설정 코드에서 UseKestrel()과 UseIISIntegration() 메서드를 자주 볼 수 있습니다.각 메서드는 어떤 역할을 할까요?UseKestrel() — 애플리케이션을 호스팅할 웹 서버로 Kestrel의 IServer 인터페이스를 등록합니다.향후에는 Windo
Program.cs 파일이란?ASP.NET Core 웹 애플리케이션은 겉모습은 웹 앱이지만, 실제로는 하나의 콘솔 프로젝트입니다. 애플리케이션은 Program 클래스의 public static void Main() 진입점에서 실행을 시작하며, 바로 이 위치에서 웹 애플리케이션을 구동할 호스트(Host)를 생성하게 됩니다.public class Program{ public static void Main(string[] args){
ASP.NET Core 메타패키지란?Microsoft.AspNetCore 패키지는 수많은 ASP.NET Core 프로젝트 템플릿에 기본적으로 포함되어 있는 패키지 중 하나입니다. 새로운 ASP.NET Core 프로젝트를 생성할 때마다 이 패키지가 일반적인 프로젝트 종속성으로 반복해서 추가되는 것을 확인할 수 있으며, 기본적인 ASP.NET Core 애플리케이션을 구축하는 데 필요한 핵심 패키지들을 제공합니다.흥미로운 점은 이 패키지 자체에는 실제 DLL이나 코드가 전혀 들어 있지 않다는 것입니다. 단지 다른 패키지들에 대한 종속성
ASP.NET Core 애플리케이션에서 전역 예외 처리를 구현하려면 커스텀 예외 미들웨어(Custom Exception Middleware)를 활용하는 것이 가장 효과적입니다. 이 글에서는 미들웨어를 직접 작성하고 파이프라인에 등록하여 모든 HTTP 요청에서 발생하는 오류를 일관되게 처리하는 방법을 단계별로 살펴봅니다.1. 예외 미들웨어 클래스 생성먼저 프로젝트에 CustomExceptionMiddleware라는 이름의 새 폴더를 만들고, 그 안에 ExceptionMiddleware.cs 클래스를 생성합니다.가장 먼저 해야 할 일은
개요ASP.NET Core에서는 Startup.cs의 ConfigureServices 메서드를 통해 서비스(의존성)를 DI 컨테이너에 등록할 수 있으며, 대표적인 등록 방식으로 AddSingleton, AddScoped, AddTransient 세 가지가 있습니다. 각 방식은 인스턴스가 생성되고 유지되는 수명(Lifetime)이 다르기 때문에, 애플리케이션의 특성에 맞게 선택하는 것이 매우 중요합니다.AddSingleton – 애플리케이션 전체에서 단일 인스턴스타입을 싱글턴(Singleton)으로 등록하면 애플리케이션 전체에서 단
List<T>는 인덱스로 접근할 수 있고, 정렬·검색·수정을 위한 다양한 메서드를 제공하는 강력한 형식(Strongly Typed)의 개체 컬렉션입니다. System.Collections.Generic 네임스페이스에 속하며, 사실상 ArrayList의 제네릭 버전이라고 할 수 있습니다.List<T>는 IList<T> 인터페이스를 구현하며, ArrayList와 동일한 역할을 수행하지만 다음과 같은 장점이 있습니다.지정된 형식의 요소만 저장할 수 있습니다.제네릭이므로 컴파일 타임에 형식 검사가 이루어지고
열거형(enum)은 변경할 수 없는 상수(읽기 전용 변수)들의 그룹을 하나로 묶어 표현하는 특수한 클래스입니다.열거형을 선언하려면 class나 interface 대신 enum 키워드를 사용하며, 각 항목은 쉼표(,)로 구분합니다.열거형의 기본 동작기본적으로 열거형의 첫 번째 항목은 0, 두 번째 항목은 1의 값을 가지며, 이후 항목들도 순차적으로 1씩 증가합니다.열거형 항목에서 정수 값을 얻으려면 해당 항목을 int 타입으로 명시적으로 형 변환해야 합니다.필요하다면 각 항목에 원하는 값을 직접 할당할 수도 있습니다. 이 경우 다음
C#에서 확인할 수 있는 CPU 관련 정보C#으로 시스템의 프로세서 정보를 조회할 때 얻을 수 있는 항목은 크게 세 가지입니다.물리적 프로세서 수 – 실제로 장착된 CPU(소켓)의 개수코어 수 – 각 프로세서 내부에 포함된 물리적 코어의 총합논리적 프로세서 수 – 운영체제가 인식하는 스레드(논리 코어)의 총합이 세 가지 값은 서로 다를 수 있습니다. 예를 들어 하이퍼스레딩이 활성화된 듀얼 코어 프로세서 2개를 장착한 시스템이라면 물리적 프로세서는 2개, 코어는 4개, 논리적 프로세서는 8개가 됩니다.논리적 프로세서 수는 Enviro
스레드(Thread)란 프로그램의 실행 경로를 의미합니다. 각 스레드는 고유한 제어 흐름을 정의하며, 애플리케이션이 복잡하고 시간이 오래 걸리는 작업을 처리할 때 여러 실행 경로, 즉 스레드를 나누어 각 스레드가 특정 작업을 전담하도록 구성하는 것이 매우 유용합니다.스레드는 경량 프로세스(lightweight process)라고도 불립니다. 현대 운영체제가 동시성 프로그래밍(Concurrent Programming)을 구현하는 대표적인 수단이 바로 스레드이며, 스레드를 활용하면 CPU 사이클 낭비를 줄이고 애플리케이션의 전반적인 효
CSV(Comma-Separated Values) 파일은 데이터를 쉼표로 구분하여 저장하는 텍스트 파일 형식입니다. 주로 표 형태로 데이터를 체계적으로 관리하는 데 사용되며, 많은 기업과 조직이 업무 데이터를 CSV 파일로 저장하고 있습니다. C#에서는 StreamReader 클래스를 사용해 파일을 다룰 수 있습니다. 이 클래스는 파일을 열고 읽는 기능을 제공하며, CSV 파일을 포함한 다양한 형식의 파일에 대해 여러 작업을 수행할 수 있도록 도와줍니다. 핵심 메서드 File.OpenRead(): 지정된 경로의 CSV 파일을 읽기
Language-Integrated Query(LINQ)는 쿼리 기능을 C# 언어에 직접 통합하는 것을 기반으로 하는 일련의 기술을 가리키는 이름입니다.C#에서 LINQ 쿼리를 작성하면 SQL Server 데이터베이스, XML 문서, ADO.NET DataSet은 물론, IEnumerable 또는 제네릭 IEnumerable<T> 인터페이스를 지원하는 모든 개체 컬렉션까지 다양한 데이터 소스를 대상으로 조회를 수행할 수 있습니다.LINQ의 빈 결과 처리 방식LINQ to SQL에서 조건에 맞는 결과가 하나도 없는 쿼리에
C#에서는 WebClient 클래스를 사용하여 Web API에 데이터를 손쉽게 가져오거나 전송할 수 있습니다. WebClient는 서버와 데이터를 주고받기 위한 다양한 공용 메서드를 제공하며, Web API를 호출하는 가장 간단한 방법 중 하나입니다.참고로 최신 .NET 환경에서는 HttpClient를 사용하는 것이 권장되지만, 간단한 요청 처리에는 여전히 WebClient가 유용하게 사용됩니다.WebClient의 동작 원리WebClient 클래스는 내부적으로 WebRequest 클래스를 기반으로 리소스에 접근합니다. 또한 WebR
정규식이란 무엇인가?정규식(Regular Expression)은 입력 텍스트와 비교하여 일치 여부를 판별할 수 있는 패턴입니다. .NET 프레임워크는 System.Text.RegularExpressions 네임스페이스를 통해 강력한 정규식 엔진을 제공하며, 이를 활용하면 문자열 검증, 검색, 치환 등의 작업을 손쉽게 처리할 수 있습니다.정규식 패턴은 하나 이상의 문자 리터럴, 연산자 또는 구문으로 구성됩니다.기본 메타문자 살펴보기정규식에서 자주 사용되는 기본 메타문자는 다음과 같습니다.* = 0개 이상? = 0개 또는 1개^ = 부
C#에서 파일의 크기를 확인하려면 System.IO 네임스페이스에 포함된 FileInfo 클래스를 사용하면 됩니다. FileInfo 클래스는 파일 생성, 삭제, 읽기 등 파일 관련 다양한 작업을 수행할 수 있는 속성과 메서드를 제공하며, 내부적으로 StreamWriter 클래스를 사용해 파일에 데이터를 기록할 수도 있습니다.FileInfo 클래스의 주요 속성Directory – 파일이 위치한 부모 디렉터리를 나타내는 객체를 반환합니다.DirectoryName – 파일의 부모 디렉터리 전체 경로를 반환합니다.Exists – 파일을 조