.NET Framework 는 수 많은 클래스 라이브러리를 제공하기 때문에 어떤 네임스페이스가 기초를 이루는 지 결정 짓기 매우 힘들다. 하지만 공통적으로 개발자들이 많이 쓰는 네임스페이스를 살펴보자면 I/O, Serialization, Reflection, Transactions, Inter Operability 가 아닐까..
#. System.IO
시스템은 데이터의 입력과 출력으로 이루어지기 때문에 I/O 을 위해 제공되어지는 클래스 라이브러리를 알 필요가 있다. System.IO 네임스페이스 안에는 개발자들이 파일을 읽고 쓰기 위해, 파일 시스템의 디렉토리 구조에 관해, 그 외의 데이터 엑세스에 관한 라이브러리를 가지고 있다.
1. 스트림
대표적으로 Stream 클래스이다. 스트림은 Sequence of Bytes 와 스트림 컨텐츠를 읽고/쓰고/찾기 위한 메소드를 포함한다. 스트림은 추상 클래스라서 다른 specialized 클래스들이 상속을 하게 된다.
2. 파일
파일에 저장된 정보를 엑세스하기 위해서는 File 클래스가 사용된다. File 클래스의 Create, Delete, Open 이라는 메소드는 사실 파일의 컨텐츠는 다루지 않는다. 그 대신의 File Object 의 Create, Open 메소드는 파일의 컨텐츠를 갖기 위한 FileStream 의 인스턴스를 리턴한다. 다른 스트림들 처럼, FileStream 또한 마찬가지로 파일의 데이터 엑세스를 위한 동기화 방법인 Read/Write 메소드를 제공한다. 또한, 비동기화 방법인 BeginRead/EndRead 와 BeginWrite/EndWrite 메소드를 제공한다. 파일스트림은 또한 Seek 메소드를 통해 파일을 가리키거나, Flush 메소드를 통해 장치에 데이터를 기록하는 등의 메소드를 제공한다.
파일 스트림은 Binary Data 만을 다룬다. 하지만 System.IO 에서는 다른 포멧을 위한 표준 클래스들을 제공한다. 예를 들면 FileInfo 클래스는 파일스트림을 생성하기 위해서도 쓰이지만 StreamReader 나 StreamWriter 클래스의 인스턴스 생성을 위해서도 쓰인다. File 클래스가 Static 인것과는 달리 FileInfo 클래스는 사용되어지기 이전에 명시적으로 생성과정을 거처야 한다.
FileInfo Object 이 이미 생성되어 있다면 OpenText 메소드를 통해 streamReader Object 이 생성될 수 있다.
그 외에도 Directory 클래스를 통해 디렉토리의 생성/삭제/관리 가 가능하며 MemoryStream 클래스를 통해 메모리에 일시적으로 저장된 Byte 들의 집합을 Read/Write/Seek 할 수 있다. MemoryStream 클래스 또한 StreamWriter 와 StreamReader 메소드를 제공하는데 일반적 경우와는 달리 메모리 안의 String 만을 취할 수 있다 (파일은 불가능).
#. System.Runtime.Serialization
Object 는 공통적으로 State 라는 것을 가지고 있다. 시리얼화하는 것은 이러한 Object 로 부터 state 를 추출해 내는 것을 말한다. 추출의 과정을 serializing an object 라 하면 반대로 추출된 데이터로부터 Object 를 재생산 하는 것을 deserializing 이라 한다. 혼란스럽게도 이 프로그래밍 세계에서는 두 과정을 다 시리얼화라 한다.
시리얼화를 서포트 하는 특정한 Formatter 가 잇는데 .NET Framework 에는 두가지 Formatter 를 지원한다: BinaryFormatter 와 SOAP Formatter 가 그것들이다. BinaryFormatter 는 말 그대로 Object 를 Binary 화 시킨다. 그리고 SOAP Formatter 는 Object 를 SOAP 형태로 추출한다. 전자는 단순하고 Compact 한 형식으로 추출된다면, 후자(SOAP)는 XML 양식으로 된 SOAP Message 로 추출된다.
#. System.Reflection
모든 어셈블리는 메타 데이터를 가지고 있다. 하지만 메타 데이터를 읽어들일 S/W 가 없다면 무용지물이다. 그래서 어셈블리의 메타 데이터를 다룰 수 있는 표준 인터페이스를 가지는 것은 매우 유용한 일이다. System.Reflection 의 타입들은 managed code로 metadata를 액세스 할 수 있도록 해준다.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5