.NET에는 수많은 네임스페이스가 포함되어 있으며, 서드파티 라이브러리까지 더하면 그 종류는 더욱 방대해집니다. 하지만 실제 개발 과정에서 반복적으로 사용하게 되는 네임스페이스는 생각보다 많지 않습니다. 아래에서 소개하는 20가지 네임스페이스만 제대로 익혀두면, 일상적인 프로그래밍 문제의 약 80%를 손쉽게 해결할 수 있습니다.
System
.NET에서 가장 근본적인 타입들을 담고 있는 핵심 네임스페이스입니다. 자주 사용되는 클래스, 구조체, 열거형(enum), 이벤트, 인터페이스 등 대부분의 기본 타입이 여기에 포함됩니다.
System.Text
ASCII 및 유니코드 문자 인코딩을 다루는 클래스들을 제공합니다. 문자 블록과 바이트 블록 사이의 상호 변환을 처리하는 클래스도 이곳에 속합니다.
System.Text.RegularExpressions
정규식(Regular Expression) 기능을 제공합니다. 복잡한 문자열 패턴 매칭, 검색, 치환 작업을 효율적으로 수행할 때 활용됩니다.
System.Linq
LINQ(Language-Integrated Query)를 사용한 쿼리를 지원하는 클래스와 인터페이스를 제공합니다. 컬렉션 데이터를 SQL처럼 간결하고 선언적인 방식으로 조회·가공할 수 있게 해줍니다.
System.Xml.Linq
LINQ to XML 관련 클래스를 포함합니다. LINQ to XML은 메모리 내에서 XML 문서를 효율적이고 직관적으로 생성·수정할 수 있게 해주는 XML 프로그래밍 인터페이스입니다.
System.Xml
XML 문서의 생성, 읽기, 쓰기 등 XML 처리 전반에 필요한 기능을 지원합니다.
System.Xml.Serialization
객체를 XML 형식의 문서나 스트림으로 직렬화(serialize)하거나, 그 반대로 역직렬화(deserialize)하는 데 사용되는 클래스들을 포함합니다.
System.Text.Json
JSON(JavaScript Object Notation)을 처리하기 위한 고성능·저할당·표준 준수 기능을 제공합니다. 객체를 JSON 텍스트로 직렬화하고 JSON 텍스트를 객체로 역직렬화할 수 있으며, UTF-8 지원이 기본으로 내장되어 있습니다.
System.Diagnostics
시스템 프로세스, 이벤트 로그, 성능 카운터와 상호 작용할 수 있는 클래스를 제공합니다. 애플리케이션 디버깅과 성능 모니터링에 필수적인 네임스페이스입니다.
System.Threading
멀티스레드 프로그래밍을 가능하게 하는 클래스와 인터페이스를 제공합니다. 스레드 활동과 데이터 접근을 동기화하기 위한 Mutex, Monitor, Interlocked, AutoResetEvent 등의 클래스 외에도, 시스템이 제공하는 스레드 풀을 활용할 수 있는 ThreadPool 클래스와 스레드 풀 스레드에서 콜백 메서드를 실행하는 Timer 클래스가 포함됩니다.
System.Threading.Tasks
동시성(concurrency) 및 비동기(asynchronous) 코드 작성을 크게 단순화해 주는 타입들을 제공합니다. 대기하거나 취소할 수 있는 비동기 작업을 나타내는 Task와, 결과값을 반환할 수 있는 Task<T>가 대표적입니다. 또한 TaskFactory 클래스는 작업 생성 및 시작을 위한 정적 메서드를, TaskScheduler 클래스는 기본 스레드 스케줄링 인프라를 제공합니다.
System.IO
파일과 데이터 스트림을 읽고 쓸 수 있는 타입들, 그리고 파일 및 디렉터리 조작을 위한 기본 기능을 제공하는 타입들을 포함합니다.
System.Net
오늘날 네트워크 환경에서 널리 사용되는 다양한 프로토콜을 손쉽게 다룰 수 있는 간결한 프로그래밍 인터페이스를 제공합니다.
System.Net.Http
현대적인 HTTP 애플리케이션 개발을 위한 프로그래밍 인터페이스를 제공합니다. REST API 호출 등 웹 통신 작업의 표준으로 널리 사용됩니다.
System.Net.Mail
SMTP(Simple Mail Transfer Protocol) 서버로 이메일을 전송하는 데 사용되는 클래스들을 포함합니다.
System.Net.Sockets
네트워크 접근을 세밀하게 제어해야 하는 개발자를 위해 Windows Sockets(Winsock) 인터페이스의 관리형(managed) 구현을 제공합니다.
System.Reflection
메타데이터를 검사하여 어셈블리, 모듈, 멤버, 매개변수 등 관리 코드의 다양한 요소에 대한 정보를 조회하는 타입들을 포함합니다. 런타임에 타입 정보를 동적으로 확인하거나 조작할 때 사용됩니다.
System.Security
권한(permission) 관련 기본 클래스를 포함하여 공용 언어 런타임(CLR) 보안 시스템의 기반 구조를 제공합니다.
System.Security.Cryptography
데이터의 안전한 인코딩 및 디코딩은 물론, 해싱, 난수 생성, 메시지 인증 등 폭넓은 암호화 서비스를 제공합니다.
System.Dynamic
런타임에 타입이 결정되는 동적 프로그래밍(dynamic programming)을 지원하는 기능을 제공합니다.