상세 컨텐츠

본문 제목

C# .Net Core에 대하여 알아보기

프로그래밍/C#

by TickTack 2022. 9. 30. 10:49

본문

이번에는 C#의 .Net Core에 대하여 알아보겠습니다.

.Net Core는 기존의 Winform, WPF 등에서 사용하던 .Net Framework와는 차이가 있습니다.

간단하게 설명드리면 .Net Framework의 한계를 개선하기 위하여

처음부터 다시 만든 플랫폼이라고 생각하시면 될 것 같습니다.

 

그리고 .Net Core로 개발한 프로그램은 .Net Framework에서도 실행이 가능하지만 4.0 이상의 버전에서만 가능하며,

Visual Studio 2010 에서는 열리지 않는 것을 확인하였고, 아래 사이트에 나와있는 내용에 의하면

.Net Core 3.1 프로그램을 개발하려면 Visual Studio 2019 업데이트 버전 16.4가 필요하다고 합니다.

 

또한 저는 이미 .Net Core가 설치되어 있었지만 .Net Framework만 설치되어있다면 .Net Core를 별도로 설치해야 합니다.

별도의 설치는 아래를 클릭하시면 나오는 곳에서 가능합니다.

 

 

Download .NET Core 3.1 (Linux, macOS, and Windows)

.NET Core 3.1 downloads for Linux, macOS, and Windows. .NET is a free, cross-platform, open-source developer platform for building many different types of applications.

dotnet.microsoft.com

 

다음은 GraphGuide 라는 사이트에서 발췌한 .Net Core를 사용하는 이유에 대한 내용입니다.

추가적인 내용이나 다른 내용이 궁금하신 경우 해당 사이트에서 추가로 확인하실 수 있습니다.

 

.NET Core 3.1 시작하기 – 1부 - GraphGuide.org

Contents 소개.Net Core란 무엇입니까?.NET Core 버전.NET Core 3.1의 새로운 기능은 무엇입니까?.NET Core 버전의 역사.Net Core를 사용하는 이유.Net Core 2.1 개발을 위한 머신 설정결론 소개 이 기사에서는 .Net Co

graphguide.org

 

.Net Core를 사용하는 이유

  • 크로스 플랫폼 – Windows, Linux 및 Mac에서 실행할 수 있습니다.
  • 통합 – 동일한 코드, 동일한 언어 및 동일한 도구를 사용하는 모든 플랫폼에 대해 .NET Standard 라이브러리와 같은 단일 통합 구성 요소를 제공합니다.
  • 더 나은 성능 – .Net 코어는 브라우저-서버 간의 통신을 위해 system.web.dll에 의존하지 않습니다. .Net 코어에서 모든 것은 우리 애플리케이션에 필요한 패키지입니다. 패키지는 요청 파이프라인을 줄이고 애플리케이션 성능을 향상시킵니다.
  • 경량- – 경량 프레임워크입니다. 개발자는 패키지 세트에 필요한 라이브러리와 구성 요소를 배포할 수 있습니다.
  • 종속성 주입 – 종속성 주입은 .Net Core에 내장되어 있습니다.
  • 호스팅 – .Net Core 응용 프로그램은 IIS, Apache, Docker 등과 같은 여러 웹 서버에서 호스팅될 수 있습니다. IIS에 종속되지 않습니다.
  • 오픈 소스 – 완전히 오픈 소스 프레임워크입니다. 즉, 무료이며 소스 코드를 사용할 수 있습니다.
  • 테스트 가능성 – .Net 핵심 애플리케이션에서 단위 테스트는 매우 쉽습니다.
  • 병렬 앱 버전 관리 – .Net Core는 .NET Core에서 실행되며 여러 버전의 애플리케이션에서 동시에 실행을 지원합니다.

 

내용을 보면 여러 장점들이 있지만 그 중에서도 눈에 띄는

.Net Framework와 .Net Core의 가장 큰 차이점은 .Net Core는 크로스 플랫폼 기능을 지원한다는 것입니다.

예시로 리눅스의 우분투에서도 .Net Framework는 설치가 불가능하지만 .Net Core는 설치가 가능합니다.

 

그래서 프로젝트 생성시에도 별도로 생성하게 되어있고 (선택한 부분이 .Net Core 입니다.)

 

프로젝트 생성 화면

 

다음을 눌러 넘어가다보면 대상 프레임워크를 설정할 수 있는데 .Net Framework는 목록에 없습니다.

 

.Net Core 프로젝트 프레임워크 선택 화면

 

그리고 프로젝트를 생성해서 첫 화면이 나타나면 오른쪽의 솔루션 탐색기에도 차이점이 있습니다.

.Net Framework로 생성한 프로젝트는 펼쳐보면 다음과 같이 되어있습니다.

 

.Net Framework 솔루션 탐색기

 

그런데 .Net Core는 솔루션 탐색기가 다음과 같이 되어있습니다.

 

.Net Core 솔루션 탐색기

 

.Net Framework는 Properties, 참조로 구성되어있는데 .Net Core는 종속성만 존재합니다.

그리고 종속성에는 프레임워크가 있고 그 밑으로 Microsoft... 형태의 항목이 2개 있습니다.

그 중 첫 번째인 Microsoft.NETCore.App 을 펼쳐보면 .Net Framework에서 많이 보던

System, System.Core, System.Data 등이 보입니다.

 

Microsoft.NETCore.App 목록

 

다음은 비교를 위한 Winform 프로젝트의 기본 참조 항목입니다.

위에서 본 항목이 포함되어 있는 것을 알 수 있습니다.

 

.Net Framework 기본 참조 항목

 

그렇다면 .Net Core에서도 .Net Framework 처럼 Winform과 WPF를 지원한다고 하였으니

한 번 .Net Core 프로젝트에서 .Net Framework에 있는 기능 중 하나인 SerialPort를 Winform에서 구현해보겠습니다.

 

.Net Core Winform 도구 상자

 

그런데 도구 상자에 SerialPort가 없습니다.

분명 .Net Framework에서의 Winform 도구 상자에는 아래와 같이 존재합니다.

 

.Net Framework Winform 도구 상자

 

그렇다면 도구 상자에만 없을 수도 있으므로 코드로 구현을 시도해보겠습니다.

먼저 .Net Framework 에서 만들어 보겠습니다.

소스 창 진입 후 또는 디자인 화면에서 이벤트나 메서드를 아무거나 만듭니다.

저는 Form_Load 이벤트를 생성했습니다.

 

.Net Framework 프로젝트의 SerialPort 생성

 

.Net Framework의 프로젝트는 SerialPort 입력 후 빨간 줄이 뜬 상태에서 Ctrl + . 을 누르면

위와 같이 using System.IO.Ports 를 추가하는 부분이 나타납니다.

 

그런데 .Net Core는 .Net Framework에서 처럼 using 문을 자동으로 생성해주는 부분이 보이지 않습니다.

 

.Net Core 프로젝트의 SerialPort 생성

 

이와 같은 경우는 기본적으로 System.IO.Ports 를 생성할 수 없는 상황일 때 발생하고

dll 파일을 참조하지 않았을 경우 발생하는 경우가 많습니다.

따라서 무언가를 추가해주어야 할 것 같은데 dll 파일을 직접 추가하기에는 참조라는 항목이 없기 때문에

다른 방법을 사용해야 합니다.

 

그래서 .Net Core에서는 참조 추가가 아닌 패키지 설치 방식을 사용하여 해결합니다.

기존처럼 SerialPort에 빨간 줄이 뜨면 Ctrl + . 을 누른 뒤 아래와 같이 진행하면 됩니다.

 

패키지 설치

 

설치가 완료되면 SerialPort가 활성화되고 using System.IO.Ports 가 추가되며,

솔루션 탐색기에 있는 종속성 목록에 패키지가 추가되고 그 안에 System.IO.Ports 가 들어있게 됩니다.

 

SerialPort 클래스가 활성화 된 모습

 

.Net Framework 처럼 정상적으로 속성 및 이벤트 등에도 접근이 가능한 것을 확인할 수 있습니다.

 

SerialPort 클래스를 활용한 모습

 

이처럼 .Net Core도 .Net Framework와 같이 Winform 및 WPF를 사용할 수 있고

Window 만이 아닌 다른 운영체제에서도 호환이 되는 장점이 있어 사용해서 나쁠 일은 없을 것 같습니다.

물론 제가 현장에 실제로 적용해 본 것은 아니기에 저는 무조건적으로 좋다고는 하기 힘들지만

Microsoft 사이트에서의 사례 등을 보면 기대해 볼 만한 프레임워크가 아닐까 싶습니다.

 

단점이라면 Visual Studio 등이 구버전은 프로젝트가 열리지 않는다는 점이 크게 나타나긴 하지만

그 외의 경우를 제외하면 .Net Framework 보다 더 광범위한 곳에서 사용이 가능해 보입니다.

 

이상으로 .Net Core에 대해서 알아보았습니다.

관련글 더보기

댓글 영역