์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
๋ง์ดํฌ๋ก์ํํธ์์ ๊ฐ๋ฐํ Windows ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๋ฐ ์คํ ํ๊ฒฝ(ํ๋ ์์ํฌ). MS๊ฐ ๊ณต์ ์ง์ํ๋ ์คํ ์์ค ํฌ๋ก์ค ํ๋ซํผ ๋ฒ์ ์ผ๋ก Mono ๋ฑ์ด ์กด์ฌํ๋ค.
FCL(Framework Class Library, ํ๋ ์์ํฌ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ํด๋์ค๋ .NET ํ๋ ์์ํฌ๋ฅผ ๋์์ผ๋ก ํ๋ ๋ชจ๋ ์ธ์ด๊ฐ ์ฌ์ฉํ ์ ์๋ ํด๋์ค๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, CLR(Common Language Runtime, ๊ณต์ฉ ์ธ์ด ๋ฐํ์) ํด๋์ค๋ ๊ณตํต ์ธ์ด ๋ฐํ์ ํด๋์ค๋ก ์๋ ค์ ธ ์๋๋ฐ ์ด ํด๋์ค๋ ์ธ์ด ์ธ์๋ ๋ณด์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ธฐํ ํธ๋ค๋ง ์ญํ ์ ์ ๊ณตํ๋ ๊ฐ์๋จธ์ ์ด๊ธฐ๋ ํ๋ค. ์ด FCL๊ณผ CLR์ด ํฉ์ณ์ง ๊ฒ์ด .NET Framework์ด๋ค.
FCL(Framework Class Library, ํ๋ ์์ํฌ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ํด๋์ค๋ .NET ํ๋ ์์ํฌ๋ฅผ ๋์์ผ๋ก ํ๋ ๋ชจ๋ ์ธ์ด๊ฐ ์ฌ์ฉํ ์ ์๋ ํด๋์ค๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, CLR(Common Language Runtime, ๊ณต์ฉ ์ธ์ด ๋ฐํ์) ํด๋์ค๋ ๊ณตํต ์ธ์ด ๋ฐํ์ ํด๋์ค๋ก ์๋ ค์ ธ ์๋๋ฐ ์ด ํด๋์ค๋ ์ธ์ด ์ธ์๋ ๋ณด์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ธฐํ ํธ๋ค๋ง ์ญํ ์ ์ ๊ณตํ๋ ๊ฐ์๋จธ์ ์ด๊ธฐ๋ ํ๋ค. ์ด FCL๊ณผ CLR์ด ํฉ์ณ์ง ๊ฒ์ด .NET Framework์ด๋ค.
2. ๋ฒ์ [ํธ์ง]
Microsoft .NET | |||||||||||
5.0 Preview | 2020๋
03์ 16์ผ | ||||||||||
5.0 RC1 | 2020๋
09์ 14์ผ | ||||||||||
5.0 RC2 | 2020๋
10์ 13์ผ | ||||||||||
5.0 | 2020๋
11์ 10์ผ | ||||||||||
2.1. 5.x[ํธ์ง]
.NET 5.0์ ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๋น๋ 2019 ์ปจํผ๋ฐ์ค์์ ์ฒ์ ๋ฐํํ๊ณ 2020๋
11์์ ์ถ์ํ ๋ฒ์ ์ด๋ค.
์๋ก์ด .NET 5๋ .NET Core, Xamarin ๋ฑ์ด ํ๋๋ก ํฉ์ณ์ง ๋ฒ์ ์ผ๋ก ์ฌ๋ฌ ์ด์์ฒด์ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง .NET Framework๋ ๋์ด์ ๋ฆด๋ฆฌ์ฆ ๋์ง ์์ผ๋ฉฐ .NET Core๋ .NET Framework์ ์๋ก์ด ํฌ๋ก์ค ํ๋ ํผ ๋ฒ์ ์ด๋ฏ๋ก .NET 5์ .NET Framework๋ ์ถ๋ฐ ์ง์ ์ด ๋ค๋ฅด๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ค์ด๋ก๋
์๋ก์ด .NET 5๋ .NET Core, Xamarin ๋ฑ์ด ํ๋๋ก ํฉ์ณ์ง ๋ฒ์ ์ผ๋ก ์ฌ๋ฌ ์ด์์ฒด์ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง .NET Framework๋ ๋์ด์ ๋ฆด๋ฆฌ์ฆ ๋์ง ์์ผ๋ฉฐ .NET Core๋ .NET Framework์ ์๋ก์ด ํฌ๋ก์ค ํ๋ ํผ ๋ฒ์ ์ด๋ฏ๋ก .NET 5์ .NET Framework๋ ์ถ๋ฐ ์ง์ ์ด ๋ค๋ฅด๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ค์ด๋ก๋
3. .NET Framework[ํธ์ง]
3.1. CIL[ํธ์ง]
.NET ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ธ์ด๋ค๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ ๊ฐ ์ธ์ด์ ๋ง๋ ์ปดํ์ผ๋ฌ[1]๋ฅผ ๊ฑฐ์ณ .NET CLR์ฉ ์ค๊ฐ ์ฝ๋์ธ CIL(Common Intermediate Language)๋ก ์ปดํ์ผ๋ ํ .exe ํ์ผ๋ก ๋ํ(wrapping)๋๋ค.[2] ๊ทธ๋ฆฌ๊ณ .NET CLR์ ์ด ํ์ผ์ JIT ์ปดํ์ผ ๋ฐฉ์์ผ๋ก ์ฝ์ด๋ค์ฌ ๊ธฐ๊ณ์ด ๋ฒ์ญ์ ์ํํ๋ค. CIL์ .NET CLR์ด ์ค์น๋ ๊ณณ์ด๋ผ๋ฉด ์ด๋์๋ ์ปดํ์ผ์ด ๊ฐ๋ฅํ๋ค.
์๋ก ๋ค์ด์ Hello World๋ฅผ ์ถ๋ ฅํ๋ C# ์ฝ๋๊ฐ
์ด๋ผ๋ฉด ์ปดํ์ผ ์ ๋ฐ๋๋ CIL ์ฝ๋๋
์๋ก ๋ค์ด์ Hello World๋ฅผ ์ถ๋ ฅํ๋ C# ์ฝ๋๊ฐ
using System;
namespace HelloWorld
{
public class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Hello, World!\n");
Console.ReadLine();
}
}
}์ด๋ผ๋ฉด ์ปดํ์ผ ์ ๋ฐ๋๋ CIL ์ฝ๋๋
.class public auto ansi beforefieldinit HelloWorld.Program extends [mscorlib]System.Object { .method private hidebysig static void Main ( string[] args ) cil managed { .maxstack 8 .entrypoint IL_0000: ldstr "Hello, World!\n" IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000A: call string [mscorlib]System.Console::ReadLine() IL_000F: pop IL_0010: ret } .method public hidebysig specialname rtspecialname instance void .ctor () cil managed { .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } } |
์ด๋ ๊ฒ ๋๋ค.
3.2. ์ฃผ์ ์ง์ ์ธ์ด[ํธ์ง]
- C# - ๋ท๋ท์, ๋ท๋ท์ ์ํ, ๋ท๋ท์ ์ํ ์ธ์ด.
- Visual Basic .NET - C#๋ณด๋ค ๋จ์ํ์ง๋ง, ๊ธฐ๋ฅ์ ๋๊ฐ์ .NET Framework ์ ๋ฌธ์ ์ ์ ํ๋ค.
- F# - GPU ์ฐ์ฐ ๋ฑ์ ์์ฒด์ง์ํ๋ ์ฐ์ฐ์ ํนํ๋ ์ธ์ด์ด๋ค
- Delphi.NET
3.3. ๋ฒ์ ๋ณ ๋ณ๊ฒฝ์ฌํญ[3][ํธ์ง]
* ํ์๊ฐ ๋ ํญ๋ชฉ์ ์ถ์ ์์ ์ด๋ค.
๋ฒ์ | ๋ณ๊ฒฝ์ฌํญ |
| ๋ท๋ท ํ๋ ์์ํฌ ์ฒซ ๋ฒ์ ์ผ๋ก์, ํต์ฌ ๊ตฌ์ฑ ์์ ๋ฐ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฒ์์ผ๋ก ์์ฑํ ๋ฒ์ |
| ASP.NET ๊ธฐ๋ฅ ๊ฐํ ๋ฐ ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ODBC, OLE DB ์ง์ |
2.0 | ์ ๋ค๋ฆญ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ์ ๋ค๋ฆญ ๋์
, ADO/ASP.net ์ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ถ๊ฐ, AMD64 ํ๋ก์ธ์ ์ฉ ๋ฒ์ ์ถ์ |
3.0[4] | |
3.5 | ๊ธฐ์กด ์ธ์ด๋ค[9]์ ๋ํ ์ง์๊ณผ ์๋ก์ด ๊ธฐ๋ฅ์ด ๋๊ฑฐ ์ถ๊ฐ. ์๋น์ค ํฉ 1์์๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ด ๋ ์ถ๊ฐ ๋ฐ ํ์ฅ |
4.0 | |
4.5 | ๋ฉํธ๋ก ์ฑ ๊ฐ๋ฐ ๊ณต์ ์ง์, ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ C# 5.0 ๋ฐ Visual Basic .NET ์ ์ง์ |
4.6 | 64๋นํธ๋ฅผ ์ง์ํ๋ RyuJIT, SSE2์ AVX2 ์ง์, HiDPI ๋์, TCF 1.1๊ณผ TLS 1.2 ๋์ |
4.7 | ECC๋ฅผ ์ด์ฉํ ์ํธํ ๊ฐํ, TLS 1.2 ๊ฐ์ , WPF์์ ํฐ์น ๋ฐ ์คํ์ผ๋ฌ์ค์ ๋ํ ์ถ๊ฐ ์ง์, WPF๋ฅผ ์ํ ํ๋ฆฐํธ API ์ง์ |
4.8 | UWP์ ํ๋ฃจ์ธํธ ๋์์ธ์ ์ํผ, WPF์์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ๋ฅ, ์ํผ์ด๋ WPF์์ UWP์ ๋ชจ๋ ์ปจํธ๋กค์ ํธ์คํ
ํ๋ ๊ฒ์ด ๊ฐ๋ฅ. |
4. .NET Core[ํธ์ง]
.NET Core๋ ์๋์ฐ ์ธ์ ์ด์์ฒด์ ๊ฐ ๋ท๋ท์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ํ๋ก์ ํธ. ๋ผ์ด์ ์ค๋ MIT ๋ผ์ด์ ์ค ๋ฐ ์ํ์น ๋ผ์ด์ ์ค[12]์ด๋ค.
ํ๋กํ์ ๋ํ๊ณ ํธ๋ฆฌํ C#, ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ๊ฐ๋จํ์ง๋ง ๊ฐ๋ ฅํ Visual Basic.NET, ์ฐ์ฐ์ ํนํ๋ F#, ์ด ์ธ๊ฐ์ง ์ธ์ด๋ก, ๋ฆฌ๋ ์ค, ๋งฅOS๋ฅผ ๊ฐ๋ฐ ํ ์ ์๋ค๋ ์๋ฆฌ. ๊ทธ๋ฆฌ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ฉ์ผ๋ก ASP.NET Core๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค. ๋ํ .NET Standard๋ฅผ ํตํด .NET Framework, Xamarin, Mono์ ํธํ๋๋ค.
์๋์ฐ ์ธ์ ์ด์์ฒด์ ์์๋ ์คํํ๋๋ก ํ๋ ํ๋ก์ ํธ์ด์ง๋ง, ์ปดํ์ผ ์ ๊ฒฐ๊ณผ๋ฌผ์ PE DLL ํ์ผ๋ก ๋์จ๋ค. ์๋์ฐ ๋น์ฃผ์ผ ์คํ๋์ค์์ ์ปดํ์ผ ์ EXE ํ์ผ๋ ๋์ค์ง๋ง, ์ค์ ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฌผ์ธ DLL ํ์ผ์ ๋ก๋ํ์ฌ ์คํํ๋ ๊ฒ์ ๋ถ๊ณผํ๋ค. DLL ํ์ผ์ด ์์ผ๋ฉด ๋น์ฐํ ์คํ๋์ง ์๋๋ค.
๋ค๋ฅธ ์ด์์ฒด์ ๋ค์ ํฐ๋ฏธ๋๋ก .NET Core ๋ฐํ์์ ์ค์นํ ํ dotnet (์คํํ ๋ท๋ท DLL ํ์ผ)๋ฅผ ์ ๋ ฅํ๊ณ ์คํํ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก .NET Core๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ML.NET์ด๋ผ๋ ๊ธฐ๊ณํ์ต ํ๋ซํผ(๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ ์กด์ฌํ๋ค, ๊ทธ๋ฐ๋ฐ ์ด์ํ๊ฒ๋ ๋ฆฌ๋ ์ค์์๋ง ์ง์๋๋ค.์๋ ๋ฉํฐํ๋ซํผ ์๋ ๊ฑฐ๋ฉด ์ .NET Core๋ฅผ ์ฐ๋๊ฑด๋ฐ
๋ฒ์ 3.0๋ถํฐ ๋๋์ด GUI๋ฅผ ์ ์์ผ๋ก ์ง์ํ๋ค. ๊ทธ๋ฌ๋ Windows๋ง ์ง์ํ๋ค.
๊ธฐ์กด์๋ CLI ๊ฐ๋ฐ๋ง ๊ฐ๋ฅ ํ์์ง๋ง, 3.x ๋ฒ์ ๋ถํฐ๋ Windows Form, WPF๋ฅผ ์ง์ํ๋ค.
ํ๋กํ์ ๋ํ๊ณ ํธ๋ฆฌํ C#, ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ๊ฐ๋จํ์ง๋ง ๊ฐ๋ ฅํ Visual Basic.NET, ์ฐ์ฐ์ ํนํ๋ F#, ์ด ์ธ๊ฐ์ง ์ธ์ด๋ก, ๋ฆฌ๋ ์ค, ๋งฅOS๋ฅผ ๊ฐ๋ฐ ํ ์ ์๋ค๋ ์๋ฆฌ. ๊ทธ๋ฆฌ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ฉ์ผ๋ก ASP.NET Core๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค. ๋ํ .NET Standard๋ฅผ ํตํด .NET Framework, Xamarin, Mono์ ํธํ๋๋ค.
์๋์ฐ ์ธ์ ์ด์์ฒด์ ์์๋ ์คํํ๋๋ก ํ๋ ํ๋ก์ ํธ์ด์ง๋ง, ์ปดํ์ผ ์ ๊ฒฐ๊ณผ๋ฌผ์ PE DLL ํ์ผ๋ก ๋์จ๋ค. ์๋์ฐ ๋น์ฃผ์ผ ์คํ๋์ค์์ ์ปดํ์ผ ์ EXE ํ์ผ๋ ๋์ค์ง๋ง, ์ค์ ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฌผ์ธ DLL ํ์ผ์ ๋ก๋ํ์ฌ ์คํํ๋ ๊ฒ์ ๋ถ๊ณผํ๋ค. DLL ํ์ผ์ด ์์ผ๋ฉด ๋น์ฐํ ์คํ๋์ง ์๋๋ค.
๋ค๋ฅธ ์ด์์ฒด์ ๋ค์ ํฐ๋ฏธ๋๋ก .NET Core ๋ฐํ์์ ์ค์นํ ํ dotnet (์คํํ ๋ท๋ท DLL ํ์ผ)๋ฅผ ์ ๋ ฅํ๊ณ ์คํํ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก .NET Core๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ML.NET์ด๋ผ๋ ๊ธฐ๊ณํ์ต ํ๋ซํผ(๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ ์กด์ฌํ๋ค, ๊ทธ๋ฐ๋ฐ ์ด์ํ๊ฒ๋ ๋ฆฌ๋ ์ค์์๋ง ์ง์๋๋ค.
๋ฒ์ 3.0๋ถํฐ ๋๋์ด GUI๋ฅผ ์ ์์ผ๋ก ์ง์ํ๋ค. ๊ทธ๋ฌ๋ Windows๋ง ์ง์ํ๋ค.
๊ธฐ์กด์๋ CLI ๊ฐ๋ฐ๋ง ๊ฐ๋ฅ ํ์์ง๋ง, 3.x ๋ฒ์ ๋ถํฐ๋ Windows Form, WPF๋ฅผ ์ง์ํ๋ค.
4.1. ์ง์ ์ธ์ด[ํธ์ง]
4.2. ์๊ตฌ ์ฌํญ[ํธ์ง]
2.0 ์ด์ ๊ธฐ์ค
4.2.1. Windows[ํธ์ง]
- Windows 7 SP1
- Windows 10 1607 ์ดํ
- Windows Server 2008 R2 SP1 (์ ์ฒด ์๋ฒ ๋๋ Server Core)
- Windows Server 2012 SP1 (์ ์ฒด ์๋ฒ ๋๋ Server Core)
- Windows Server 2012 R2 (์ ์ฒด ์๋ฒ ๋๋ Server Core)
- Windows Server 2016 ์ด์ ๋ฒ์ (์ ์ฒด ์๋ฒ, Server Core ๋๋ Nano Server)
4.2.2. macOS[ํธ์ง]
4.2.3. ๋ฆฌ๋ ์ค[ํธ์ง]
- Red Hat Enterprise Linux 7, 6 - 64๋นํธ
- CentOS 7 - 64๋นํธ
- Oracle Linux 7 - 64๋นํธ
- Fedora 28, 27 - 64๋นํธ
- Debian 9(64๋นํธ, arm32), 8.7 ์ด์ ๋ฒ์ - 64๋นํธ
- Ubuntu 18.04(64๋นํธ, arm32), 16.04, 14.04, 64๋นํธ
- Linux Mint 18, 17 - 64๋นํธ
- openSUSE 42.3 ์ด์ ๋ฒ์ - 64๋นํธ
- SUSE Enterprise Linux(SLES) 12 ์๋น์ค ํฉ 2 ์ด์ - 64๋นํธ
- Alpine Linux 3.7 ์ด์ ๋ฒ์ - 64๋นํธ
4.3. ์ฐธ๊ณ [ํธ์ง]
5. ๊ธฐํ[ํธ์ง]
- Any CPU ๊ธฐ๋ฅ์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ 32, 64๋นํธ์ ๋ง๊ฒ ์๋ํ ์ ์๋ค. ์๋ก ๋ค์ด์ 64๋นํธ ํ๊ฒฝ์์ ์คํํ๋ฉด 64๋นํธ ํ๋ก์ธ์ค๋ก ์คํ๋๋ ์์ด๋ค. ๋ค๋ง 32/64 ๋นํธ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ(32 ๋ฐ 64๋นํธ ๋ฒ์ ๋๋ค ์์ ๊ฒฝ์ฐ)์ด๋ ์ผ๋ถ ์ฝ๋[15]๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํด์ง๋ค.
- ํ์ํธํ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ์ ์ ๊ฐ์ด ์ค์นํด์ผ ํ๋ค. 3.5 ๋ฒ์ ์ ์ค์นํ๋ฉด 2.0์ด๋ 3.0๋ ํธํ์ด ๊ฐ๋ฅํ๋ฐ, 3.5๋ฅผ ์ค์นํ ๋ 2.0๊ณผ 3.0๋ ๊ฐ์ด ์ค์น๋ผ์ ๊ทธ๋ฐ ๊ฒ ๋ฟ์ด๋ค. ๊ทธ๋๋ Windows 7๋ถํฐ๋ 3.5 SP1 ๋ฒ์ ์ด ๊ธฐ๋ณธ ์ค์น๋๋ฉฐ, Windows Update๋ฅผ ํตํ ์๋ ์ค์น๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ด์ด ๋ํ๋ค.
- ์ค์น๋ฅผ ๊ณ์ ์คํจํ๋ ๊ฒฝ์ฐ, ์๋ ค์ง ํด๊ฒฐ์ฑ ์ ์จ๋ ํด๊ฒฐ์ด ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. Windows๋ฅผ ์๋ก ์ ๋ฐ์ดํธํ๊ณ ๋ ํ์ ์ด ํ์์ด ๋ฐ์ํ๋ค๋ฉด ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ๋ฅผ ๊น์์ ์ ๋ฐ์ดํธ๋ฅผ ํด๋ณด์. ์ํํธ์จ์ด๋ฅผ ์ฒ์ ์ ๊ทธ๋ ์ด๋ ํ ๊ฒฝ์ฐ ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ๊ฐ ์ ๋ถ ์ญ์ ๋๊ฑฐ๋ ๋นํ์ฑํ ๋์ด์๋ ๊ฒฝ์ฐ๊ฐ ์์ฃผ ์์ด์ ์ด๋ฐ ๋ฏ.
- ํ๋ ์์ํฌ ์ค์น๋ ์ฌ์ฉ ๊ณผ์ ์์ ๋ฎ์ ๋ฒ์ ๊ณผ ์์ ๋ฒ์ ์ด ๊ผฌ์ด๋ ์ค๋ฅ ๋ฑ์ผ๋ก๋ ์ค์น์คํจ๋ ์๋ฌ๊ฐ ๊ณ์ ๋ ์ ์๋๋ฐ ๋ง์ดํฌ๋ก์ํํธ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๋ฉด ๊ฐ๋ณ ๋ฒ์ ์ ์ง์ ์ค์นํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ๊ทธ๋๋ ์ ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ง์ดํฌ๋ก์ํํธ์์ ์ ๊ณตํ๋ .NET Framework ํด๋ฆฐ ์ ๊ฑฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์ ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์๋ค,
- ๋น์ฃผ์ผ ์คํ๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ ๊ฒ์ ์๋๋ค. .NET Framework๋ ์ค์น ์ ์ปดํ์ผ๋ฌ๋ ๊ฐ์ด ์ค์น๋๋ฏ๋ก ์ปดํ์ผ๋ฌ๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค.
- ๋ฆฌ๋ ์ค, macOS, iOS, ์๋๋ก์ด๋ ๋ฑ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ํฌํ ํ๋ ค๊ณ ๋ง๋ค์ด์ง ์คํ ์์คํ๋ค์ด ์กด์ฌํ๋ค.
- Mono ํ๋ก์ ํธ๊ฐ ๊ฐ์ฅ ์ ๋ช ํ๋ค. ํ๋ก์ ํธ๊ฐ ์์๋ ์ด๊ธฐ์๋ ๋ฆฌ์ฒ๋ ์คํจ๋จผ ๋ฑ์ด Mono๋ ์ ์ฌ์ ์ผ๋ก MS์ ๊ณ ์ ์ํ์ ์๋ฌ๋ฆด ์ ์์ผ๋ ์ฐ์ง ๋ง์์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๊ธฐ๋ ํ์๋ค. ํ์ง๋ง ์ฌํฐ์ ๋๋ธ๋ผ๊ฐ MS์ CEO๊ฐ ๋ ์ดํ ์คํ ์์ค ์ปค๋ฎค๋ํฐ ๋์ด์๊ธฐ์ ์ ๊ทน์ ์ผ๋ก ๋์๋ฉด์ MS๊ฐ ์ธ์ด .NET Foundation๊ณผ MS๊ฐ ์ธ์ํ Xamarin์ด ์์ Mono์ ๊ณต์ ๊ฐ๋ฐ ํ์ด ๋ ์ํ์ด๋ค. ์ด๋ก์จ Mono ํ๋ก์ ํธ๋ ๋ฒ์ ๋ถ์ ๊ฐ๋ฅ์ฑ์ด ์ผ์๋์์ผ๋ฉด์ .NET๊ณผ์ ํธํ์ฑ๋ ํ์คํ ๋ณด์ฅ๋๋ ํ์คํ ์คํ ์์คํ์ด ๋์๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
- .NET Core๋ผ๋ ๋ฆฌ๋ ์ค์ macOS์์ ์ปดํ์ผ๊ณผ ์คํ์ด ๊ฐ๋ฅํ Mono์ ๋ณ๋์ ์คํ ์์ค ํ๋ซํผ์ด ์กด์ฌํ๋ค. ํ์ง๋ง, ์ปดํ์ผ์ ํ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ฌผ์ด PE๋ก ๋์จ๋ค. ์ด๊ฒ๋ .NET Foundation์ด ๊ฐ๋ฐ์ ๋งก๊ณ ์๊ณ Mono ์ต์ ํ์ .NET Core๊ฐ ์ด์๋์๋ค.
- DotGNU๋ผ๋, ํ๋ GNU ํ๋ก์ ํธ์ ์ผ๋ถ์์ผ๋ ํ์ฌ๋ ์ฌ๊ธฐ์ ์ ์ธ๋ ์คํ ์์ค ํ๋ก์ ํธ๋ ์๋ค.
- ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๋น๋ 2019 ์ปจํผ๋ฐ์ค์์ 2020๋ 11์ ๊ฒฝ์ ์ถ์๋ ์์ ์ธ 5.0 ๋ฒ์ ์์ ํ์ฌ๊น์ง ์ถ์๋ .NET Framework์ .NET Core, Xamarin ๋ฑ์ด ํ๋์ ํ๋ซํผ์ผ๋ก ํฉ์ณ์ง ๊ฒ์ด๋ผ๊ณ ์๊ณ ํ๋ค.# ์ ํํ๋ .NET Framework๋ ๋ ์ด์ ์ ๊ทธ๋ ์ด๋ ๋์ง ์๊ณ .NET Core๋ง ์ ๊ทธ๋ ์ด๋ ๋๋ค๋ ๋ป์ด๋ค. ๋ํ .NET Core๋ ๋๋ฒ๋ง์ ๋ง์ถ๊ธฐ ์ํด 3.0 ๋ฒ์ ์ดํ 4๋ฒ๋๋ฅผ ๋ฐ์ด๋์๊ณ , 4.8 ๋ฒ์ ์ด ๊ธฐ์กด ๋ท๋ท ํ๋ ์์ํฌ์ ๋ง์ง๋ง ๋ฉ์ด์ ๋ฒ์ ์ด ๋์๋ค.
- 2019๋ 9์ 1์ผ์ .NET Core๊ฐ 3.0์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ฉด์ .NET Core๋ฅผ ์ฌ์ฉํ Windows Forms์ WPF์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
- ์์ธ(์ํํธ์จ์ด)์์ ๋ท๋ท ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ ์คํ์ด ๊ฐ๋ฅํ๋ค. ๋ค๋ง TmaxOS์ ๊ฒฝ์ฐ ํธํ ๋ ์ด์ด ์์ฒด๊ฐ ๋ท๋ท์ ์ง์ํ์ง ์์์ ์คํ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ๋ง์ดํฌ๋ก์ํํธ ๋น๋ 2020 ์ปจํผ๋ฐ์ค์์ Win32์ UWP๋ก ํํธํ๋ ์๋์ฐ ์ฑ ๊ฐ๋ฐ ํ๋ซํผ์ ํตํฉํ๋ ํ๋ก์ ํธ ๋ฆฌ์ ๋์จ์ด ๊ณต๊ฐ๋์๋ค.
6. ๊ด๋ จ ๋ฌธ์[ํธ์ง]
[1] C#์ ๊ฒฝ์ฐ csc๋ผ๋ ์ด๋ฆ์ ์ปดํ์ผ๋ฌ๊ฐ ์๋ค. ๋ฐ๋ผ์ ๊ตณ์ด ๋น์ฃผ์ผ ์คํ๋์ค๋ฅผ ๊ฑฐ์น์ง ์์๋ ์ปดํ์ผ์ด ๊ฐ๋ฅํ๊ธด ํ๋ค.
[2] .NET Core ์ ํ๋ฆฌ์ผ์ด์
์ .dll ํ์ผ์ ์ถ๋ ฅํ๋ค.
[3] ์ถ์ฒ๋ MSDN ๋ฐ ์ํคํผ๋์
[4] ์ด ๋ฒ์ ์ .NET Framework ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ๋์ง ์์๋ค.
[5] Windows Presentation Foundation
[6] Windows Communication Foundation
[7] Windows Workflow Foundation
[8] Using Cardspace in Windows Communication Foundation
[9] C# 3.0 ๋ฐ Visual Basic .NET ๋ฑ
[10] System.Numerics.BigInteger
[11] System.Numerics.Complex
[13] .NET Core 1.x๋ง ์ง์
[14] Nt ํค๋ > ์ต์
๋ ํค๋ > ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ์ค ๋ฉค๋ฒ ์ค์ ๋งจ ๋ง์ง๋ง ๋ถ๋ถ์ ๋ท๋ท ๋ฉํ๋ฐ์ดํฐ ์์น๋ ํฌ๊ธฐ๊ฐ ์๋ค. ์ด๋ PE(Portable Executable)๊ฐ ๋ณ์กฐ๊ฐ ๋๋ฉด ๊ทธ ์์น๊ฐ ๋ฐ๋๊ฑฐ๋ ์๋์ ํ๋ก๊ทธ๋จ EP(Entry Point)๊ฐ ๋ฐ๋๊ฒ ๋์ด ์คํ์ด ๋ถ๊ฐ๋ฅํ๋ค.
[15] Process.MainModule ๋ฑ
[16] ์ปดํ์ผ๋ก ๋์จ IL ์ฝ๋๋ฅผ ์ด์
๋ธ๋ฆฌ์ด๋ก ๋ฒ์ญ์ํค๋๋ฐ, ๊ทธ๋ ๊ฒ ๋ฒ์ญ ๊ณผ์ ์ ๋ง์ณ์ ๋์จ ASM ํ์ผ์ ํฌ๊ธฐ๊ฐ MB ๋จ์๋ก ๋์จ๋ค.