닷넷 코어 (.NET Core)

닷넷 프레임워크는 2002년 단일 프레임워크로 등장했다. 바로 이어서, 윈도우 모바일을 위한 경량 버전인 닷넷 컴팩트 프레임워크라는 서브셋(subset)을 출시했는데, 이 컴팩트 프레임워크는 닷넷 프레임워크에 기반해서 만들었지만 그 자체로 실행환경(runtime), 프레임워크, 애플리케이션 모델을 갖는 형태로 디자인되었기 때문에 별도의 코드 기반(code base)이라 할 수 있다. 즉, 윈도우 모바일에서 애플리케이션을 작성하기 위해서는 닷넷 프레임워크가 아닌 닷넷 컴팩트 프레임워크를 사용해야 한다는 의미다.

이렇게 실행환경, 프레임워크, 애플리케이션 모델을 모두 갖춘 형태를 버티컬(vertical)이라고 한다. 이런 방식의 지원은 실버라이트, 윈도우 폰, 최근의 윈도우 스토어까지 이어져 여러 개의 버티컬들을 만들어 냈고 닷넷 플랫폼은 하나가 아닌 여러 플랫폼의 집합이 됐다.

닷넷 버티컬

[그림-1] 닷넷 버티컬

특별한 환경, 특별한 요구사항을 만족시키기 위해 특화된 버티컬을 제공하는 것이 잘못된 것은 아니다. 그러나, 지금하고 있는 프로젝트의 요구 사항을 한번 살펴보자. 오늘날, 웹 서버를 백엔드로 두면서 관리자용 데스크톱 애플리케이션과 일반 사용자를 위한 웹과 모바일 애플리케이션을 제공하는 건 더 이상 특별한 요구사항이 아니다. 따라서, 여러 버티컬에서 수평적으로 운영할 수 있는 애플리케이션을 만들 수 있는 효과적인 방법이 필요하다.

닷넷 프레임워크와 닷넷 코어

[그림-2] 닷넷 프레임워크와 닷넷 코어

닷넷 코어는 모놀리식(monolithic) 닷넷 프레임워크를 모듈화하고자 하는 접근법에서 비롯되었다. 닷넷 코어는 닷넷 코어 런타임인 CoreCLR과 닷넷 코어 라이브러리인 CoreFX로 구성되고 이들은 버티컬에서 각각 런타임과 프레임워크에 해당한다. 좀더 자세한 구조는 아래 그림과 같다.

닷넷 코어 버티컬

[그림-3] 닷넷 코어 버티컬

CoreCLR을 런타임으로 하는 축을 살펴보면 애플리케이션 모델로 ASP.NET 5가 있다 - ASP.NET 5 앱 모델의 이해하기 쉬운 예는 MVC 다. 반면에 닷넷 네이티브 런타임(.NET Native Runtime)은 터치기반 장치들의 실행환경이고 애플리케이션 모델을 통해 윈도우 클라이언트용 앱 개발을 지원한다. 주목할 부분은 Unified BCL인데 런타임과 애플리케이션 모델이 달라도 BCL이 같다는 것이다.

이 사실은 <그림 1>의 프레임워크와 근본적인 차이를 갖는다. 프레임워크에서 제공되는 Collection을 예로 들면, <그림 1>의 구조가 모든 버티컬에서 Collection을 똑 같이 구현하고 있는 반면, 닷넷 코어의 프레임워크는 여러 개가 아닌 단일 프레임워크에서 Collection을 구현한다.

닷넷 코어가 통합된 BCL을 중심으로 하는 새로운 버티컬을 정의했다는 것은 중요한 의미를 갖는다. 통합된 BCL을 통해 개발자에게 일관적인 프로그래밍 모델을 지원하면서 또 다른 런타임과 애플리케이션 모델을 추가할 수 있는 확장적인 버티컬이 탄생한 것이다.

닷넷 코어 플랫폼은 NuGet 패키지의 집합으로 배포된다.

닷넷 코어 버티컬 누겟

[그림-4] 닷넷 코어 플랫폼은 NuGet 패키지의 집합

현재의 모놀리식 닷넷 프레임워크도 유지되지만 동시에 점차 NuGet 패키지로 모듈화되어 CoreFX 라이브러리를 구성해갈 것이다. WCF를 모듈화하는 작업이 근래에 시작되었고 CoreFx 라이브러리로써 NuGet에서 다운로드하여 설치할 날이 곧 올 것이다. 이렇게 애플리케이션에 필요한 기능만을 가져다 사용하는 pay-as-you-play 모델이라 가볍고 배포상의 이점이 있다. 또한, 모놀리식 프레임워크에서 분리되는 각 모듈들은 작은 단위의 패키지로 배포되기 때문에 업데이트/패치의 주기가 빨라져서 개발자의 입장에서는 환영할 일이다.

CoreFX 라이브러리들이 NuGet 패지지로 제공되는 것처럼CoreCLR 또한 NuGet 패키지로 애플리케이션에 포함되는데, CoreCLR은 런타임으로써 운영체제에 독립적인 실행환경을 제공하는 것이 목적이다. CoreCLR에 대한 자세한 내용은 Github 리포지토리를 참고하자.

닷넷 코어는 일년에 네 번 정도 업데이트를 하며 닷넷 프레임워크 보다 버전이 앞서 갈 것이고 닷넷 프레임워크는 닷넷 코어의 변화를 수용하는 방식으로 일년에 한 번 정도 업데이트가 될 것이다.

comments powered by Disqus