2. ASP.NET Core의 새로운 기능
지난 몇 년 동안 Microsoft는 ASP.NET Core의 능력을 급속히 확장시켜 왔으며 각각의 Version은 아래와 같은 Flatform을 지원합니다.
- ASP.NET Core 1.1 ~ 2.2 : .NET Core 및 .NET Framework
- ASP.NET Core 3.0 ~ : .NET Core 3.0 및 이후 버전
(1) ASP.NET Core 1.0
ASP.NET Core 1.0은 2016년 6월에 릴리즈 되었으며 Windows, macOS, Linux등의 OS에서 cross-platform Web이나 Service를 구축하기 위해 필요한 최소한의 안정된 API를 구현하는데 집중한 버전입니다.
(2) ASP.NET Core 1.1
ASP.NET Core 1.1은 2016년 11월에 릴리즈되었으며 일부 버그 수정과 기능 및 성능 향상에 집중된 버전입니다.
(3) ASP.NET Core 2.0
ASP.NET Core 2.0은 2017년 8월에 릴리즈되었으며 .NET Standard 2.0을 타깃으로 하여 Razor Pages, Microsoft.AspNetCore.All 메타 패키지로의 어셈블리 번들링과 같은 새로운 기능과 새로운 인증모델 및 성능 향상을 제공하는데 초첨을 맞추었습니다.
ASP.NET Core 2.0의 ASP.NET Core Razor Pages에 관한 내용은 아래 글에서 확인하실 수 있습니다.
[.NET/ASP.NET Core] - [ASP.NET Core] Razor Page로 웹프로젝트 만들기
(4) ASP.NET Core 2.1
ASP.NET Core 2.1은 2018년 5월에 LTS(Long Term Support)로 릴리즈 되었으며 이에 3년간 지원 가능한 버전이 되었습니다.(LTS는 2018년 8월 버전 2.1.3에서 공식적으로 지정되었습니다.)
이 버전은 실시간 통신환경 구축을 위한 SignalR과 Web Component의 재사용을 위한 Razor class 라이브러리, 인증을 위한 ASP.NET Core Identity 등의 새로운 기능 추가와 HTTPS 지원 향상 그리고 기타 아래 기능들에 대한 지원이 추가되었습니다.
EU GDPR 지원 | 일반 데이터 보호 규정(General Data Protection Regulation) / ASP.NET Core MVC website프로젝트 생성 |
Identity UI library와 scaffolding | ASP.NET Core MVC website프로젝트 생성 |
TEST 통합 | ASP.NET Core MVC website테스트 |
[ApiController], ActionResult<T> | ASP.NET Core Web API프로젝트 생성 |
Problem details | Web API controller 구현 |
IHttpClientFactory | HttpClientFactory를 사용한 HTTP client 설정 |
(5) ASP.NET Core 2.2
2018년 12월에 릴리즈 되었으며 RESTful HTTP APIs 구축을 위한 기능 향상, Bootstrap 4와 Angular 6을 사용한 프로젝트 템플릿 업데이트, Azure에서의 호스팅 시 설정 최적화등 기타 아래 내용을 포함한 성능 향상 및 기능 추가가 있었습니다.
- HTTP/2 in Kestrel
- In-process hosting model
- Endpoint routing
- Health Check API
- Open API analyzer
(6) ASP.NET Core 3.0
2019년 9월에 릴리즈 되었으며 .NET Core 3.0과 .NET Standard 2.1의 완전한 사용에 초첨이 맞추어진 버전입니다. 이에 따라 고전 NET Framework는 더이상 지원되지 않게 되었으며 기타 아래 기능이 추가되었습니다.
- Razor class library의 Static asset
- MVC service 등록을 위한 새로운 옵션
- ASP.NET Core gRPC
- Blazor Server
(7) ASP.NET Core 3.1
2019년 12월에 릴리즈되었으며 LTS버전이므로 2022년 12월까지 지원됩니다. Razor component에서의 partial class지원과 새로운 <component> 태그 헬퍼의 개선이 이루어졌습니다.
(8) Blazor WebAssembly 3.2
2020년 5월에 릴리즈 되었으며 LTS가 아니므로 프로젝트는 2021년 2월 10일까지 .NET5가 릴리즈되는 시점부터 3개월 이내에 .NET5로 업그레이드되어야 합니다. 그리고 .NET을 통한 웹개발의 풀스택이 가능해졌습니다.
(9) ASP.NET Core 5.0
2020년 11월에 릴리즈되었으며 다수의 버그 수정과 자격 증명 인증에 캐싱을 사용하여 부분적인 성능 향상을 이루었으며 Kestrel에서 HTTP/2 응답 헤더의 HPACK 동적 압축, ASP.NET Core Assembly를 위한 Null가능 Annotation, container 이미지 크기 감소, 웹서비스의 보안과 관련하여 endpoint로의 익명 접근 허용을 위한 확장 메서드, HttpRequest와 HttpResponse를 위한 확장 메서드 등의 개선이 이루어졌습니다.
(10) ASP.NET Core 6.0
2021년 11월에 릴리즈 되었으며 기본적인 웹사이트나 웹서비스 구현을 위해 필요한 기본적인 코드의 양을 줄이면서 생산성을 향상시켰으며 .NET Hot Reload, Blazor를 위한 새로운 호스팅 옵션, .NET MAUI를 사용한 Hybrid App과 새로운 웹 프로젝트 템플릿의 추가, HTTP logging middleware, 미니멀한 API, Blazor error boundary, Blazor WebAssembly AOT 등의 개선 사항이 적용되었습니다.
3. Windows 전용 Desktop App
Windows 전용의 Desktop App을 만드는 데에는 아래와 같은 기술이 사용될 수 있습니다.
- Windows Forms
- WPF(Windows Presentation Foundation)
- UWP(Universal Windows Platform)
- Windows App SDK
(1) 고전 Windows application platform
1985년 Microsoft Windows 1.0이 출시되었을 당시 Windows Application을 만드는 방법은 C언어를 사용하여 kernel, user, GDI라는 세 개의 핵심적인 DLL에서 필요한 함수를 호출하는 것뿐이었습니다. 그러다가 Windows 95라는 32bit 운영체제가 출시되면서 이 DLL들에는 32라는 숫자가 붙게 되었고 곧 Win32 API로 사용되기 시작했습니다.
그런 후 1991년에 마이크로 소프트는 Visual Basic이라는 제품을 출시하면서 drag-and-drop이라는 방식으로 편리하게 사용자 인터페이스를 구축할 수 있는 시각적인 설계 방식의 프로그램 제작기법을 공개하게 됩니다. 이러한 프로그래밍 방식은 상당한 인기를 끌게 되었으며 Windows 11이 나온 현재까지도 Visual Basic runtime은 여전히 운영체제의 일부분으로 배포되고 있습니다.
C#과 .NET의 첫 번째 버전은 2002년에 발표되었는데 마이크로소프트는 이때 처음 Windows Forms라는 Windows desktop application 개발에 관한 공식적인 기술을 제공하게 됩니다. 심지어 사용자 인터페이스를 제작하는 이때의 방식을 Web으로 옮겨 Web Forms라는 이름으로 사용되기도 했는데 이러한 Drag-and-drop방식의 사용자 인터페이스 생성 방식은 뒤편에서 Visual Basic .NET 혹은 C#언어의 코드를 Designer파일에 방대하게 생성함으로써 이루어집니다.
2006년 마이크로소프트는 WPF라는 새로운 Windows desktop application 개발방식을 발표하게 됩니다. 당시 .NET Framework 3.0은 WCF(Windows Communication Foundation)와 WF(Windows Workflow) 그리고 WPF가 가장 큰 핵심 컴포넌트 중 하나였습니다.
당시 WPF의 비즈니스 로직은 C#을 통해서만 사용될 수 있었고, 사용자 인터페이스를 구성하는 방식은 XAML(eXtensible Application Markup Language)이라는 것을 사용했었는데 이후부터 윈도 전용의 Visual Studio에서는 WPF를 일부분으로 포함하게 됩니다.
2012년에 들어 마이크로소프트는 Windows 8 운영체제를 발표하면서 Windows Store app이라는 것을 등장시켰는데 이것은 보호된 sandbox안에서 App을 안전하게 동작시키는 것이었습니다.
그리고 2015년에 Windows 10 운영체제의 발표와 함께 Windows Store app을 Universal Windows Platform (UWP)이라는 콘셉트로 업데이트시키게 됩니다. UWP앱은 C++이나 DirectX UI 또는 HTML/Javascript나 C#을 사용할 수 있었습니다. 비록 cross-platform까지는 아니지만 WinRT API라는 기반 기술에 완전한 접근을 제공할 수 있었습니다.
UWP는 Desktop부분에서는 Windows 10과 그 이상의 운영체제에서만 동작이 가능하며 PC뿐만 아니라 Xbox와 Windows Mixed Reality에서의 Headset과 Motion controller를 갖춘 환경에서도 동작할 수 있습니다.
당시 많은 개발자는 Windows Store와 UWP의 도입에 부정적이었는데 이는 기반 시스템의 자원에 제한된 접근만이 가능했기 때문입니다. 마이크로소프트는 최근 Project Reunion와 WinUI 3을 만들었고 Windows 개발자들이 기존의 WPF App에 최신 윈도즈 개발의 이점을 가져갈 수 있도록 하며 UWP app에도 동일한 이점과 시스템 통합을 가질 수 있도록 했습니다. 이는 Windows App SDK라고도 불립니다.
(2) legacy Windows platforms을 위한 최신 .NET 지원
Linux와 macOS를 위한 .NET SDK의 사이즈 크기는 대략 330MB 정도입니다. 그런데 Windows전용의 .NET SDK의 크기는 440MB 정도인데 이는 Windows Desktop Runtime을 포함하고 있기 때문이며 legacy Windows application platform인 Windows Forms와 WPF가 최신의 .NET에서도 그대로 동작할 수 있도록 합니다.
Windows Forms와 WPF로 개발된 많은 수의 Application들이 여전히 존재하고 동시에 유지관리와 개선이 필요하지만 유감스럽게도 이들 기술은 .NET Framework이후로 최신 .NET에는 '공식적'으로 포함되지 않게 되었습니다. 그러나 관련 개발 컴포넌트가 Windows Desktop Pack이라는 이름으로 추가됨으로써 이들 App은 기존과 호환성을 유지하면서도 최신 .NET의 능력을 완벽히 활용할 수 있게 되었습니다.
'.NET' 카테고리의 다른 글
[.NET] C#과 NET의 프로젝트 유형 - 4. Entity Data Model (0) | 2022.07.20 |
---|---|
[.NET] C#과 NET의 프로젝트 유형 - 3. Project 구조설계및 프로젝트 템플릿 (0) | 2022.07.20 |
[.NET] C#과 NET의 프로젝트 유형 - 1. App Model (0) | 2022.07.20 |
[.NET] 닷넷 Type 사용하기 - 8. image 다루기 (0) | 2022.06.26 |
[.NET] 닷넷 Type 사용하기 - 7. reflection 과 attributes (0) | 2022.06.26 |