.NET이란?
누군가가 .NET이라는 용어를 사용하는 경우 그 의미는 상황에 따라 크게 다릅니다. 이 단원에서는 .NET을 에코시스템으로 간주하여 .NET이 무엇인지 알아봅니다. 다시 말해서 .NET은 애플리케이션을 빌드하기 위한 강력한 환경을 제공하는 여러 부분과 사용자로 구성된 컬렉션입니다.
.NET은 애플리케이션 개발을 위한 에코시스템입니다.
에코시스템이라는 용어는 애플리케이션 개발 환경의 다중 패싯 영역과 이 환경을 둘러싼 커뮤니티를 설명합니다. 결합된 여러 패싯은 .NET에서 애플리케이션을 학습하고 빌드하는 데 투자해야 할 이유가 됩니다.
.NET 언어 및 컴파일러를 사용하여 .NET 런타임으로 애플리케이션 실행
소프트웨어 개발자는 C#, F# 같은 .NET 언어를 사용하여 소스 코드를 작성합니다. 작성하는 각 코드 줄은 프로그램이 실행되는 동안 컴퓨터에서 수행할 명령을 나타냅니다.
소프트웨어 개발자가 코드를 실행하려면 먼저 코드를 컴파일해야 합니다. .NET 컴파일러는 지원되는 모든 프로그래밍 언어의 소스 코드를 IL(중간 언어)이라는 이식 가능한 언어로 변환하는 프로그램입니다. .NET 컴파일러는 IL 코드를 .NET 어셈블리라는 파일에 저장합니다. 중간 형식으로 코드를 컴파일하면 Windows나 Linux 또는 32비트나 64비트 컴퓨터 하드웨어 등 코드 실행과 관계없이 동일한 코드 베이스를 사용할 수 있습니다.
.NET 런타임은 컴파일된 .NET 어셈블리의 실행 환경입니다. 다시 말해서 .NET 런타임은 호스트 운영 체제에서 실행되어 애플리케이션을 실행하고 관리합니다. .NET 런타임이 어떤 작업을 수행하는지에 대해서는 이후에 자세히 알아봅니다.
다행히 .NET을 시작한 소프트웨어 개발자의 경우 이러한 메커니즘의 작동 방법을 자세하게 이해하지는 않아도 됩니다. 경험을 통해 .NET 언어, 컴파일러, 런타임의 기본 기능을 더욱 완전하게 이해하고 파악하게 됩니다.
팁
C# 프로그래밍 언어를 .NET이라고 생각하는 경우가 있습니다. 그러나 C#과 .NET은 서로 다릅니다. C#은 프로그래밍 언어 구문입니다. 구문의 일부로 .NET 코드 라이브러리 또는 어셈블리에 정의된 메서드를 참조하고 호출할 수 있습니다. 다음으로, .NET SDK와 함께 설치된 C# 컴파일러를 사용하여 C# 코드에서 어셈블리를 만듭니다. 그런 다음 .NET 런타임은 .NET 어셈블리를 실행합니다. 이런 차이는 .NET 및 C#에 대해 자세히 알아볼 때 중요한 개념입니다.
.NET 애플리케이션 프레임워크 및 라이브러리를 사용하여 미리 빌드된 기능 활용
모든 소프트웨어는 레이어로 빌드됩니다. 다시 말해서 컴퓨터에서 다양한 추상화 수준으로 실행되는 소프트웨어가 있습니다.
- 가장 낮은 수준에서 소프트웨어는 컴퓨터의 하드웨어와 직접 통신합니다. 마더보드, 프로세서, 메모리 및 하드 드라이브의 데이터 흐름을 제어합니다.
- 다음 수준에는 최종 사용자가 운영 체제를 통해 지침을 제공하도록 지원하는 소프트웨어가 있습니다.
- 다음 수준에는 .NET과 같은 소프트웨어는 애플리케이션을 개발 및 실행하는 방법을 제공합니다.
- 다음 수준에서는 애플리케이션 프레임워크와 기능 라이브러리를 통해 이전 개발 방식보다 더 적은 작업으로 풍부한 애플리케이션을 빠르게 빌드할 수 있습니다.
코드 라이브러리는 특정 용도의 기능을 단일 어셈블리로 캡슐화합니다. .NET의 경우 수천 개의 라이브러리를 사용할 수 있습니다. 이러한 라이브러리는 자사 또는 타사 라이브러리일 수 있으며 상용 또는 오픈 소스일 수 있습니다. 라이브러리는 애플리케이션에서 사용할 수 있는 다양한 기능을 제공합니다. 이러한 어셈블리를 참조하고 필요한 메서드를 호출합니다. 개발자는 이러한 방식으로 다른 소프트웨어 개발자의 작업을 빌드할 수 있습니다. 모든 기능을 직접 작성하고 유지 관리할 필요가 없으므로 시간과 노력을 절약할 수 있습니다.
애플리케이션 프레임워크는 시작 프로젝트, 파일 템플릿, 코드 생성기, 기타 도구와 함께 몇 가지 관련 라이브러리를 결합할 수 있습니다. 이러한 리소스를 사용하여 특정 용도의 전체 애플리케이션을 빌드할 수 있습니다. 이러한 애플리케이션 프레임워크를 앱 모델이라고 합니다. 예를 들어 웹 개발, 데스크톱 및 모바일 개발, 게임 개발과 같은 인기 있는 앱 모델에 사용할 수 있는 .NET 애플리케이션 프레임워크가 있습니다.
Visual Studio 2022를 설치하여 .NET SDK를 직접 설치할 수 있습니다. .NET SDK는 기본 클래스 라이브러리라는 포괄적인 라이브러리 및 애플리케이션 프레임워크 집합을 사전 설치합니다. 빌드하고자 하는 플랫폼 또는 앱 모델과 무관하게 프로그램의 라이브러리 코드를 사용할 수 있습니다.
다른 타사 라이브러리의 경우 개발자는 NuGet 같은 패키지 관리자를 사용하여 NuGet 갤러리 같은 패키지 리포지토리에서 코드 라이브러리를 찾아 통합합니다.
주요 앱 모델이란?
어느 프레임워크가 어느 앱 모델을 지원하는지 궁금하실 수 있습니다. 다음 표를 사용하여 앱 모델을 .NET 프레임워크에 매핑합니다.
앱 모델 | 프레임워크 | 참고 |
---|---|---|
웹 | ASP.NET Core | 서버 쪽 논리를 빌드하기 위한 프레임워크입니다. |
웹 | ASP.NET Core MVC | 웹 페이지 또는 웹 API의 서버 쪽 논리를 빌드하기 위한 프레임워크입니다. |
웹 | ASP.NET Core Razor Pages | 서버에서 생성된 HTML을 빌드하기 위한 프레임워크입니다. |
웹 클라이언트 | Blazor | Blazor는 ASP.NET Core의 일부입니다. 두 가지 모드를 통해 서버 쪽 코드를 실행하기 위한 통신 수단으로 소켓을 활용하여 DOM(문서 개체 모델)을 조작하거나 컴파일된 C#을 브라우저에서 실행하기 위한 WebAssembly 구현으로 활용하여 조작할 수 있습니다. |
바탕 화면 | Mac용 .NET | .NET 개발자가 네이티브 UI와 API 액세스를 사용하여 Mac 디바이스용 앱을 빌드할 수 있습니다. |
바탕 화면 | WinForms | “배틀십 그레이” Windows 스타일 애플리케이션을 빌드하기 위한 프레임워크입니다. |
바탕 화면 | WPF(Windows Presentation Foundation) | 다양한 폼 팩터를 따르는 동적 데스크톱 애플리케이션을 구축하는 프레임워크입니다. WPF를 사용하면 폼 요소가 다양한 애니메이션 라이브러리의 도움을 받아 움직임, 페이드, 글라이드 등 기타 효과를 수행할 수 있습니다. |
휴대폰 | Android용 .NET | .NET 개발자가 네이티브 UI와 API 액세스를 사용하여 Android 디바이스용 앱을 빌드할 수 있습니다. |
모바일 | iOS용 .NET | .NET 개발자가 네이티브 UI와 API 액세스를 사용하여 iOS 및 iPadOS 디바이스용 앱을 빌드할 수 있습니다. |
다중 플랫폼 앱 UI | .NET MAUI | 네이티브 UI와 네이티브 API에 대한 액세스 권한으로 단일 공유 코드 베이스에서 iOS, Android, Mac 및 Windows용 앱을 빌드하는 최고의 방법입니다. |
또한 .NET은 인기 있는 타사 및 오픈 소스 게임 개발 환경과 Unity 같은 엔진을 사용하도록 지원합니다.
.NET 도구를 사용하여 .NET 앱 빌드
소프트웨어 개발자는 코드 작성, 코드 라이브러리에 참조 추가, 코드 컴파일, 코드 디버그 등의 작업에 도구를 사용합니다. 이 섹션에서는 .NET 애플리케이션을 빌드하는 데 사용할 수 있는 몇 가지 .NET 도구에 대해 설명합니다.
Visual Studio 2022는 Microsoft의 주력 개발 환경입니다. 수백만 명의 개발자들이 이를 사용하여 .NET 애플리케이션을 빌드합니다. 메뉴, 창, 비주얼 디자이너, 대화 상자, 마법사를 포함한 그래픽 사용자 인터페이스는 애플리케이션 개발 프로세스를 안내합니다. Visual Studio 2022는 Community, Professional 및 Enterprise의 세 가지 에디션으로 제공됩니다. 각 버전은 서로 다른 도구를 포함하고 있으며 서로 다른 용도로 사용이 허가됩니다.
Visual Studio Code는 여러 프로그래밍 언어를 지원하는 Microsoft 주력 코드 편집기이며 Windows, Mac 및 Linux에서 지원됩니다. C# Dev Kit 확장은 솔루션 탐색기, 프로젝트 시스템, 테스트 강화 및 탐색기, AI 지원 개발 및 동급 최고의 C# 언어 기능(코드 탐색, 리팩터링, 의미 체계 인식 등)을 위한 강력한 langauges 서비스를 지원하여 Visual Studio Code에 향상된 편집기 우선 C# 개발을 제공하고 .NET 프로젝트 작업 환경을 향상합니다.
명령줄 워크플로를 선호하는 개발자는 세계적으로 가장 인기 있는 코드 편집기인 Visual Studio Code와 .NET 명령줄 인터페이스(.NET CLI라고도 함)의 조합을 사용할 수 있습니다.
추가로 많은 고급 .NET 사용 사례에 대해 여러 자사 및 타사 도구를 선택할 수 있습니다. 옵션에는 코드 프로파일러, 단위 테스트 러너 및 코드 검사 분석기가 포함됩니다.
다른 시나리오를 위한 .NET 도구도 있습니다. 예를 들어 이후 모듈에서 Try .NET을 사용합니다. 이 브라우저 기반 인터페이스를 사용하여 C# 프로그래밍 언어를 학습하는 데 도움이 되는 간단한 애플리케이션을 작성합니다.
설명서와 자습서에 솔루션 및 답변 찾기
Microsoft는 다양한 설명서, 자습서 및 교육을 적극적으로 제공합니다. 학습 프로세스의 각 단계에서 도움이 되는 인기 소프트웨어나 학습 자료를 찾을 수 있습니다.
다음 표에서는 책갈피를 지정할 수 있는 몇 가지 유용한 리소스를 제공합니다.
리소스 | 목적 |
---|---|
Microsoft Learn | 빠른 시작 자습서 및 자세한 참조 설명서를 제공합니다. |
패턴 및 실습 | 개발자와 소프트웨어 설계자가 일반적인 애플리케이션 개발 요구 사항에 대한 솔루션을 찾을 수 있습니다. 리소스는 종종 코드 작성에 대한 자세한 세부 정보를 초월하고 무한한 확장성의 아키텍처를 사용할 수 있도록 하는 제품 및 서비스 선택을 조사합니다. |
.NET 비디오 | .NET 팀의 비디오 자습서를 제공합니다. 이 비디오는 일반 사용 시나리오를 통해 개발자에게 안내를 제공합니다. |
C# 시작 | 지침, 연습, 미디어, 지식 점검, 진행 상황을 추적하는 수단을 결합하여 기술을 쌓는 데 도움을 주는 실습 랩을 제공합니다. |
.NET 커뮤니티와 상호 작용하여 솔루션 학습 및 공유
.NET 에코시스템은 언어, 라이브러리, 도구를 넘어 사용자로 확장됩니다. 자유롭게 커뮤니티에서 학습하고 커뮤니티에 참가할 수 있습니다.
- 학습: .NET 커뮤니티 구성원은 라이브 온라인 이벤트와 대면 이벤트를 개최합니다. 오픈 소스 소프트웨어를 구축하고, Q&A 포럼에 참여하고, 비디오 자습서를 녹화합니다. 다음에 수행할 작업을 잘 모르는 경우 학습할 수 있도록 책과 블로그 게시물을 작성합니다.
- 참가: .NET은 GitHub의 오픈 소스입니다. 해당 리포지토리의 프로젝트는 .NET Foundation에서 관리합니다. 이 독립적인 조직은 .NET 개발 플랫폼에 대한 신뢰할 수 있고, 상업적으로 친숙한 오픈 소스 에코시스템을 확장하는 데 주력합니다. 이 리포지토리에서 다른 사용자가 학습할 수 있도록 고유한 관점과 의견을 공유할 수 있습니다.
.NET 에코시스템은 다른 에코시스템과 어떻게 비교됩니까?
소프트웨어 개발 환경에 대해 대체로 잘 알고 있다면 .NET 에코시스템이 다른 에코시스템과 어떻게 비교되는지 궁금할 수 있습니다. 다른 에코시스템도 이 단원에서 설명하는 정도까지는 아니더라도 일부 에코시스템에 대해 비슷하게 주장할 수 있습니다.
하지만 .NET의 가장 독특한 기능 중 하나는 주요 기술 리더뿐만 아니라 커뮤니티도 조합하여 지속적인 개발 및 지원이 제공된다는 것입니다. .NET의 상당 부분은 오픈 소스를 통해 개발되었습니다. Microsoft는 커뮤니티의 의견과 기여를 환영하고 권장합니다. 실제로 기여자의 87%가 Microsoft 외부인입니다. 커뮤니티의 의견에 따라 Microsoft는 기능 향상, 버그 수정, 성능 개선 등을 통해 더 발전시켜 적극적으로 플랫폼을 지원합니다. 10만 건 이상의 끌어오기 요청이 커뮤니티에서 수락되었습니다.
또한 .NET 에코시스템에는 다음과 같은 추진력이 있습니다.
- .NET 개발자는 500만 명이 넘습니다.
- Stack Overflow 설문 조사 결과는 .NET Core 및 .NET이 가장 사랑받는 프레임워크임을 계속해서 보여줍니다.
- 학생들 역시 .NET을 선호합니다. .NET을 처음 사용하는 개발자의 40%가 학생입니다.
- .NET 및 ASP.NET용 GitHub 리포지토리는 가장 빠른 개발 속도를 보인 상위 30개의 OSS(오픈 소스 소프트웨어) 프로젝트에 속합니다.
- GitHub는 상위 5개 프로그래밍 언어 목록에 C#을 포함시켰고, 2020년 TIOBE 프로그래밍 커뮤니티 인덱스에 따르면 이 언어의 인기는 점점 높아지고 있습니다.
- 수십 개의 언어와 애플리케이션 프레임워크를 측정하는 독립적인 오픈 소스 웹 성능 벤치마크 세트인 TechEmpower 벤치마크에 따르면 .NET에는 세계적으로 가장 빠른 웹 프레임워크가 있습니다.
.NET의 간략한 역사
원본 .NET Framework는 2002년 초에 처음으로 출시되었습니다. 이후 많은 업데이트와 기능이 추가되었습니다. 몇 년 동안의 향상 기능과 새로운 기능을 통해 원본 .NET Framework, 특히 키 코드 라이브러리는 규모가 크게 성장했습니다.
2002년 이후, Microsoft는 플랫폼 간 호환성을 갖춘 .NET 버전을 만들었습니다. 목표는 개발자가 하나의 코드 베이스를 작성하고 macOS, Linux 및 Windows 운영 체제에서 이를 사용할 수 있도록 돕는 것이었습니다.
이러한 노력을 통해 .NET Core가 2014년에 출시되었습니다. Microsoft는 원본 .NET Framework를 유지 관리해 왔지만, 새로운 기능과 개선 사항이 .NET Core를 위해 유보되어 있습니다. 이후 이름에서 Core가 삭제되었습니다. 다음 주 버전은 .NET 5, .NET 6, .NET 7, .NET 8 등입니다. 버전은 일반적으로 매년 11월 릴리스됩니다.
.NET의 역사를 언급할 가치가 있는 이유는 무엇입니까? 원본 .NET Framework를 대상으로 하는 블로그 게시물, 동영상, 소스 코드를 찾아볼 수 있기 때문입니다. 지침 또는 코드가 여전히 작동하는 경우도 있지만 새 .NET에 맞춰 수정해야 하는 경우도 있습니다.