.NET 6 ํ”Œ๋žซํผ ๊ฐœ๋ฐฉํ˜• ํ”Œ๋žซํผ ๋ฆด๋ฆฌ์Šค

Microsoft๋Š” .NET Framework, .NET Core ๋ฐ Mono ์ œํ’ˆ์„ ํ†ตํ•ฉํ•˜์—ฌ ๋งŒ๋“  ๊ฐœ๋ฐฉํ˜• ํ”Œ๋žซํผ .NET 6์˜ ์ƒˆ๋กœ์šด ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. .NET 6์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ํ˜•์— ๋…๋ฆฝ์ ์ธ ๊ณตํ†ต ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €, ํด๋ผ์šฐ๋“œ, ๋ฐ์Šคํฌํ†ฑ, IoT ์žฅ์น˜ ๋ฐ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์šฉ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET SDK 6, .NET Runtime 6 ๋ฐ ASP.NET Core Runtime 6 ๋นŒ๋“œ๋Š” Linux, macOS ๋ฐ Windows์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Desktop Runtime 6์€ Windows์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์€ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

.NET 6์—๋Š” RyuJIT JIT ์ปดํŒŒ์ผ๋Ÿฌ, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, CoreFX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, WPF, Windows Forms, WinUI, Entity Framework, dotnet ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋œ ๋Ÿฐํƒ€์ž„ CoreCLR์€ ๋ฌผ๋ก  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„œ๋ฒ„ ์ธก, GUI ๋ฐ ์ฝ˜์†” ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์Šคํƒ ASP.NET Core 6.0 ๋ฐ ORM ๊ณ„์ธต Entity Framework Core 6.0(๋“œ๋ผ์ด๋ฒ„๋Š” SQLite ๋ฐ PostgreSQL์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)๊ณผ C# 10 ๋ฐ F# 6 ์–ธ์–ด ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ณ„๋„๋กœ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. .NET 6.0 ๋ฐ C# 10์šฉ์€ ๋ฌด๋ฃŒ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ Visual Studio Code์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์˜ ๊ธฐ๋Šฅ:

  • ํŒŒ์ผ I/O ์ตœ์ ํ™”๋ฅผ ํฌํ•จํ•˜์—ฌ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • C# 10์—๋Š” ๋ ˆ์ฝ”๋“œ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ์ง€์›, ์ „์—ญ using ์ง€์‹œ๋ฌธ, ํŒŒ์ผ ๋ฐ”์ธ๋”ฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ๋žŒ๋‹ค ์‹์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ๋ถ„ ์†Œ์Šค ์ฝ”๋“œ ์ƒ์„ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ์ปดํŒŒ์ผ๋Ÿฌ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • F# 6์—๋Š” ๋น„๋™๊ธฐ ์ž‘์—… ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ๋””๋ฒ„๊น…์— ๋Œ€ํ•œ ์ง€์›์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ฆ‰์‹œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜๋Š” ํ•ซ ๋ฆฌ๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰์„ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จ์ ์„ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” "dotnet watch"๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ ํ›„ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž๋™์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • dotnet ํ”„๋กœ์„ธ์Šค์˜ ์ง„๋‹จ ์ •๋ณด์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด "dotnet ๋ชจ๋‹ˆํ„ฐ" ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ํ”„๋กœํŒŒ์ผ๋ง(PGO - Profile-guided Optimization) ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ƒˆ๋กœ์šด ๋™์  ์ตœ์ ํ™” ์‹œ์Šคํ…œ์ด ์ œ์•ˆ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ๊ธฐ๋Šฅ ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด๋‹ค ์ตœ์ ์˜ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PGO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด TechEmpower JSON "MVC" ์ œํ’ˆ๊ตฐ์˜ ์„ฑ๋Šฅ์ด 26% ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • HTTP/3 ํ”„๋กœํ† ์ฝœ ์ง€์›์ด ASP.NET Core, HttpClient ๋ฐ gRPC์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • JSON ํ˜•์‹๊ณผ ๊ด€๋ จ๋œ API๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ System.Text.Json๊ณผ JSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • C#์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ธ Blazor์—๋Š” JavaScript์—์„œ Razor ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  ๊ธฐ์กด JavaScript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • .NET ์ฝ”๋“œ๋ฅผ WebAssembly ๋ณด๊ธฐ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • File IO API์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ๊ทœ์ •๋œ FileStream.
  • OpenSSL 3 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ChaCha20/Poly1305 ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋Ÿฐํƒ€์ž„์€ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ W^X(Write XOR Execute, ๋™์‹œ ์“ฐ๊ธฐ ๋ฐ ์‹คํ–‰ ์•ก์„ธ์Šค ๊ธˆ์ง€) ๋ฐ CET(Control-flow Enforcement Technology, ๋ฐ˜ํ™˜ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์ต์Šคํ”Œ๋กœ์ž‡ ์‹คํ–‰ ๋ฐฉ์ง€)๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • TFM ํ”Œ๋žซํผ(Target Framework Moniker)์œผ๋กœ iOS ๋ฐ Android์— ๋Œ€ํ•œ ์‹คํ—˜์  ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Arm64 ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. M1 ARM ์นฉ(Apple Silicon) ๊ธฐ๋ฐ˜ Apple ์žฅ์น˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œ์Šค ์ฝ”๋“œ์—์„œ .NET SDK๋ฅผ ๋นŒ๋“œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๊ณต๋˜์–ด Linux ๋ฐฐํฌ์šฉ .NET ํŒจํ‚ค์ง€ ์ƒ์„ฑ ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€