from : https://andromedarabbit.net/metadata_oriented/

.NET Framework에서 메타데이터라고 하면, 어셈블리의 클래스, 개체, 메서드 등에 대한 정보를 말한다. 그러나 여기서는 메타데이터의 본래 의미에 초점을 맞춘다. 메타데이터는 데이터를 기술한 데이터이다. 윈도우 계열 소프트웨어에서 많이 쓰이는 .ini 파일이나 블로그의 RSS 등에 쓰이는 XML이 대표적인 메타데이터 포맷이다. RSS의 경우를 생각해 보자면 블로그의 글은 데이터이고, RSS를 구성하는 XML 포맷은 데이터를 기술한 데이터가 된다.

일반적으로 어플리케이션 관점에서 메타데이터는 환경설정파일을 의미한다. 데이터베이스 연결문자, 서버응용프로그램의 포트 번호와 같이 컴파일타임이 아닌 런타임에 접근해야 하는 정보를 주로 설정파일에 저장한다. 만약 데이터베이스의 네트워크 주소가 127.0.0.1에서 1.0.0.127로 바뀌었다고 해서 소스코드를 다시 빌드해야 한다면 무척 괴로울 것이다.

그러나 메타데이터의 중요성은 정보를 저장하는 것 이상이다. 『실용주의 프로그래머』의 한 대목을 빌리자면, 코드에는 추상화를, 메타데이터에는 세부 내용을 부여함으로써 보다 유연한 소프트웨어를 개발할 수 있게 된다. 이어지는 글에서 XML과 리플렉션이라는 C#의 강력한 기능을 사용하여 어떻게 유연한 응용프로그램을 개발할 수 있는지 알아보도록 하겠다.