https://github.com/aspnet/Announcements/issues/324์ ๋ํ ํ ๋ก ํญ๋ชฉ์ ๋๋ค
์ง๊ธ ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์์ ์ด๊ฒ์ด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. .NET Core์ ASP.NET Core๋ ๋ชจ๋ ์ฌ๋๋ค์ด ์ด๋ฏธ ํฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๊ณ ์ด๋ฏธ ์ ํ ํ ์์๋ ๊ธฐํ๋ฅผ ๊ฐ์ก๊ฑฐ๋ ์ฌ์ ํ ๊ฐ์ง๊ณ ์์ ์ ๋๋ก ์ถฉ๋ถํ ์ค๋ซ๋์ ์ฌ์ฉ๋์ด ์์ต๋๋ค (๊ณผ๊ฑฐ 2.0์์ ์ง์์ด ์ฒ์ ์ค๋จ๋์์ ๋์ ๋น๊ต). .
๊ทธ๋ฌ๋ ํ์ฌ ๋ณ๋์ ์ข ์์ฑ์ผ๋ก ์กด์ฌํ ์์๋ ASP.NET Core์ ํน์ ๊ตฌ์ฑ ์์์ ๋ํ ์ํฅ์ ๋ํด ์ฌํ๋ค. ์ด๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์๊ฐ netstandard ์ง์์ ์ค๋จํ๊ณ ๋์ netcoreapp3.0์ด ํ์ํจ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํนํ # 3756์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ASP.NET Core ์ปจํ ์คํธ ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด RazorLight ์ ๊ฐ์ ํ๋ก์ ํธ๋ .NET Framework์ ๋ ์ค์ํ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก .NET Standard ์ง์์ ํจ๊ณผ์ ์ผ๋ก ์ค๋จํด์ผํฉ๋๋ค.
์ด๋ก ์ธํด ํ๋งค ํ ๋ง์ ์ฌ๋๋ค์ด ์กฐ์ง์ ์๋ก์ด ASP.NET Core ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๋ก ์ด๋ํ์ฌ ์ง์๋์ง ์๋ ํ๋ซํผ์์ ์ง์๋๊ณ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐ ๋ ํ๋ซํผ์ 3 ๋ ์ด๋ด์ (. NET Core 2.1 LTS).
์ด ์์ง์์ ์ ๋นํํ๊ธฐ ์ํด ์ด๋ค ๋ถ์์ ์ฌ์ฉํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง .NET Framework์์ ServiceStack ASP.NET Core ์ฑ ์ ์คํํ๋ ๊ฒฝ์ฐ ASP.NET Core ํ๋ก์ ํธ๋ฅผ ์คํํ๋ ๋ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ web-corefx ํ ํ๋ฆฟ์ด .NET Framework๋ 1/3 (33.8 %) ๊ณต์ ๋ฅผ ๋์ด .NET Core์์ ์คํํ๊ธฐ์ํ ๊ฐ์ฅ ์ธ๊ธฐ์๋ ํ๋ก์ ํธ ํ ํ๋ฆฟ ์ธ ๋์ผํ ๋น ์น ํ ํ๋ฆฟ์ ๋๋ค.
IMO 3 ๋ ์ ์๋ก์ด ASP.NET ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ (์ ์ฒด ๋ ASP.NET Framework ํ๋ซํผ์์ ๋ฒ์ด๋๊ธฐ ์ํด)์ ์์ํ๊ฑฐ๋ ์ด์ ํ ๊ณ ๊ฐ์ ๋ฒ๋ฆฌ๊ธฐ์ ์ถฉ๋ถํ ์๊ฐ์ด ์๋๋๋ค. ์ด๋ํ๋ ค๋ ์กฐ์ง์ด ๋ฒ๋ ค์ก์ต๋๋ค.
์ด๋ค ์ด์ ๋ก ๋ .NET Framework ์ ์ฉ ์ข ์์ฑ์ ์์กดํ๊ธฐ ๋๋ฌธ์ .NET Core๋ก ์ด๋ํ ์์๋ ๊ณ ๊ฐ์ด ์์ต๋๋ค. MS๊ฐ ํฅํ IMO์์ ASP.NET Core 3.0์์ .NET Framework์ ๋ํ ์ง์์ ์ ์งํ์ง ์์ผ๋ ค๋ฉด ์ง์์ ํ์ฅํด์ผํฉ๋๋ค. .NET Framework์ ASP.NET Core 2.1์ ๋ํด 7 ๋ ๊ณผ ๊ฐ์ ์ฐ์ฅ ๋ ๊ธฐ๊ฐ์ผ๋ก. ๊ธฐ์กด ํ๋ก๋์ ์์คํ ์ ๋ง์ด๊ทธ๋ ์ด์ ์๋ ๋ช ๋ ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. .NET Core๋ฅผ ์์ํ๋ฉด ASP.NET Framework๊ฐ ASP.NET Core๊ฐ .NET์ ๋ฏธ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด๋ผ๋ ๊ณต์ ์ ์ฅ์ผ๋ก ์ ์ฒด ๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ์ด์ ๋์ผํ ๊ณ ๊ฐ์ด ๊ณง ๊ทธ๋ค์ด ์ด๋ / ์ด๋ ํ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด ๋ช ๋ ์์ ์ง์๋์ง ์์ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์์ ๋ด๊ธฐ ์์ํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์กด .NET ๊ณ ๊ฐ์ ์์ฉํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ณด์ ํจ์น์ ๋ํด ์ถ๊ฐ LTS ๊ธฐ๊ฐ ๋์ .NET 2.1์ ์ง์ํ๋ ๊ฒ์ ๋๋ค (์ด์์ ์ผ๋ก๋ ๋ฒ๊ทธ ํด๊ฒฐ์๋ ์ ํฉ).
"killing .NET Framework", ์ํผ์๋ 2 : ๊ฐ์ ์ด์ผ๊ธฐ, ๊ฐ์ ์บ๋ฆญํฐ : rofl :
์ํ๊น๊ฒ๋ ์ด๊ฒ์ ํ ๊ฐ์ง๋ฅผ ๊ฐ์กฐํฉ๋๋ค. .NET Standard๋ฅผ .NET ์์ฝ ์์คํ ์ ์์ฐจ๋ก ๋ง๋๋ ๋ฐ ์์ ํ ์คํจํ์ต๋๋ค . ๋ชจ๋ ํ๋ซํผ์ด ์๋ก์ด API๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ๋ ค๊ณ ํ๋ ๋ง์ง๋ง ์๊ฐ์ ํญ์ ์ ๋ฐ์ดํธ๋๋ ๊ฐ์ฅ ๋ฎ์ ๊ณตํต ๋ถ๋ชจ ์ผ๋ฟ์ ๋๋ค.
์๋ง๋ ๊ทธ๊ฒ์ ๋์ผ ์๋ ์์ง๋ง, netcoreapp
๋งํผ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ์ต๋๋ค (์ ์์ ๋ฐ๋ผ ์ API๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ป์).
NuGet ํจํค์ง ์์ฑ์์ด๋ฉฐ ์ต์ ํญ๋ชฉ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ์ญ๋๊น? ๊ฐ์ฅ ์ต๊ทผ์ netstandard
๋ฒ์ ์ ๋์์ผ๋กํฉ๋๋ค. ์ฒ์์๋ netcoreapp
๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ ๋ง ์ฌ์ฉํ ์ ์์ง๋ง ๊ฒฐ๊ตญ์๋ Xamarin, Mono ๋๋ .NET Framework์ ๊ฐ์ ๋ค๋ฅธ ํ๋ซํผ์ด ๋ฐ๋ผ ์ก์ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ผ์ด ์๋ํ๋ ๋ฐฉ์์
๋๋ค.
๋ฌผ๋ก .NET Framework์ ๊ฐ์ ๋น .NET Core ํ๋ซํผ์ด ๋ฆด๋ฆฌ์ค๊ฐ ๋๋ฌผ๊ณ ์์ ์ฑ ๋ง๋๊ฐ ํจ์ฌ ๋ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผ ์ก๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ง๋ง 6 ๊ฐ์, 12 ๊ฐ์ ๋๋ 18 ๊ฐ์์ด ๊ฑธ๋ฆฐ๋ค๊ณ ํด๋ ์ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค. .NET Framework๋ฅผ ์ฌ์ฉํ ๋ ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋น ๋ฅด๊ฒ ์์ง์ด๋ ๋์์ด ์๋๋ผ ์์ ์ ์ธ ํ๋ ์ ์ํฌ์ ๋๋ค.
IMHO, ASP.NET Core 3.0์ด ํ์ํ ๋ชจ๋ .NET Core API๋ฅผ ๋
ธ์ถํ๋ ์๋ก์ด netstandard
TFM์ ๋์์ผ๋กํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ์ API๊ฐ ์ถฉ๋ถํ ์์ ์ ์ด๋ผ๊ณ ํ์ ํ๋ฉด ์ต์ ํ์ค๊ณผ ํธํ๋๋๋ก .NET Framework๋ก ๋ฐฑ ํฌํธํฉ๋๋ค.
๋๋ ์ฌ๋๋ค์ด .NET Framework ์ฑ์ ์ต์ ASP.NET Core ๋ฒ์ ์ผ๋ก ์ฎ๊ธธ ์ ์๊ธฐ ์ ์ ๋งค์ฐ ์งง์ 3 ๋ ์ง์์ผ๋ก ์ด์ ๋ฒ์ ์์ ์์ํ ์ฐจ๋จ๋๋ ๊ฒ๋ณด๋ค ๋ช ๋ฌ์ ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ฝ์ ํ๋๋ก ์ํ : .NET Framework๋ฅผ ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ฌ์ฉ์๋ฅผ ์ ๋ขฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ง ๋ค๋ฅธ ๊ณจ๋ชฉ ๋์ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ ์์ ์ ์ธ ํ๋ ์ ์ํฌ๋ก ๋ง๋ญ๋๋ค.
๋๋ ์ด๊ฒ์ ์ข์ํ์ง ์๋๋ค. .net core์ ์์ ๋ถ๋ถ์์ Microsoft๋ ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก mono
๋๋ .net framework
๋ฅผ ์ ํํ์ง ์์์ผ๋ฉฐ ์ฌ๊ธฐ์ ์ฌ๋ฌ .net ๋ฐํ์์ด ์์ผ๋ฏ๋ก .netstandard
์ค๊ณํ์ต๋๋ค .net standard
๋ ์ด๋ฆ์ผ๋ก ๋ง ์กด์ฌํฉ๋๋ค (์ ์ด๋ asp.net ์ฝ์ด์ ๊ฒฝ์ฐ ์ฌ๋๋ค์ netcoreapp
ํจํค์ง ๋ง ๋น๋ํ๊ธฐ ์์ํฉ๋๋ค).
์ธ์ ๊ฐ๋ .net ์ฝ์ด๊ฐ ์ฐฝ์์ .net ํ๋ ์ ์ํฌ๋ฅผ ๋์ฒด ํ ์ ์์ง๋ง mono ๋ฐ ๋ค๋ฅธ ํ๋ซํผ์ mono (xamarin, unity3d)์ ์์กดํฉ๋๋ค.
.net ํ๋ ์ ์ํฌ๋ฅผ ์ ํธํ๋ ๋ ๋ค๋ฅธ ์ด์ ๋ .net ์ฝ์ด ๊ณต์ ํ๋ ์ ์ํฌ๊ฐ ์ ๋ง ํฌ๋ค๋ ๊ฒ์
๋๋ค. .net ์ฝ์ด 2.0์์ ์ต์ .net ์ฝ์ด 2.1๋ก ์ฑ์ ์
๊ทธ๋ ์ด๋ํ๋ฉด C:/program file/dotnet
ํด๋๊ฐ ์ผ๋ง๋ ํฝ๋๊น? ๋ด ํด๋์ GBs ํ์ผ์ด ์์ผ๋ฉฐ .net ์ฝ์ด ๋ฐํ์์ ์
๋ฐ์ดํธํ๋ฉด ์ปค์ง๋๋ค. ๊ทธ๋ฌ๋ .net ํ๋ ์ ์ํฌ๋ ์ด์ ๋ฒ์ ์ ๋์ฒดํฉ๋๋ค.
์ฝ์ ํ๋๋ก ์ํ : .NET Framework๋ฅผ ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ฌ์ฉ์๋ฅผ ์ ๋ขฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ง ๋ค๋ฅธ ๊ณจ๋ชฉ ๋์ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ ์์ ์ ์ธ ํ๋ ์ ์ํฌ๋ก ๋ง๋ญ๋๋ค.
FWIW ์ด๊ฒ์ด ์ต์ ์ ์ ๋ต์ด ๋ ๊ฒ์ ๋๋ค. LTS ํ์ฅ์ ๋ํ ์ ์ ์ ์์ ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋๋ก ์ ๊ทน์ ์ผ๋ก ๋ง์ผํ ํ ๊ธฐ์กด ๊ณ ๊ฐ์๊ฒ ๋ ๋ง์ ์๊ฐ์ ์ ๊ณตํ๊ธฐ์ํ ์ต์ ๊ธฐ์ค์ ๋๋ค. ๋ฐํ.
๊ทธ๋์ .net ํ์ค์ ๋๋ด์ ๋๊น? ํฌ๋ง ๋ชจ๋ ธ ํ์ aspnetcore repos๋ฅผ ํฌํฌํ๊ณ aspnetmono๋ก ์ด๋ฆ์ ๋ฐ๊พธ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด .net ์คํ์ ๋ ๋ ์ ์์ต๋๋ค .๐
์ด๊ฒ์ ๋ด ์์ ์์ ASP.NET Core๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ์ด์ ๋ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋๋ฏ๋ก ์ฑ์ Core๋ก ํฌํ ํ๋ ๊ฒ์ ์ผ๋์ ๋์ง ์๊ณ ASP.NET์ ๋จธ๋ฌผ ๊ฒ์ ๋๋ค.
๋ฌผ๋ก , ๋ชฉํ๊ฐ ๋ณํ๊ฐ์๋ ๊ฒ์ด๋ผ๋ฉด ๋๊ฐ์ ์ผ์ ์์ํ ๊ณ์ํ ์ ์์ต๋๋ค. ์ ๊ฐ ์ผํ๋ ๊ณณ์์๋ ๋ช ๋ ์ ์ ASP.NET Core๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ผ๋ฉฐ ์ฒ์์๋ .NET Framework์์ ์คํ๋์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ .NET Core ํ๋ซํผ์ด ์ฑ์ ํด์ง๊ณ ๊ธฐ๋ฅ์ด ํ๋ณด๋๋ฉด์ ํ๋ก์ ํธ๋ฅผ netcoreapp์ผ๋ก ์ ํํ์ต๋๋ค. ํ๋ ๋๋ ๋ ๊ฐ์ ์ด์ ํ๋ก์ ํธ๊ฐ ์ฌ์ ํ ASP.NET์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ์ด๋ฅผ ๋ค์ ์์ฑํ ๊ณํ์ด ์์ต๋๋ค. ์๋ ์ฝ๋์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํด์๋ Span๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
๋ณํ๋ ๋ฏธ๋ฃฐ ์ ์์ง๋ง ์์ํ ํผํ ์ ์๊ฑฐ๋ ํผํด์ผํ๋ ๊ฒ์ ์๋๋๋ค. ๊ธฐ์ ์ ๋ณํ์ด๋ฉฐ ๊ฐ๋ฐ์์ ์ง์ ์ ํญ์ ์๋ก์ด ๊ฒ์ ๋ฐฐ์์ผํฉ๋๋ค. ํ์ฌ .NET Framework์์ ASP.NET Core๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ .NET Core๋ก ์ด๋ํ๋ ๋ฐ 3 ๋ ์ด ๊ฑธ๋ฆฌ์ง ์์ ๊ฒ์ ๋๋ค.
.NET Core๋ก ์ค์ธ์. ๋ฌผ์ด ๋ฐ๋ปํฉ๋๋ค ...
์ด๋ค ์ด์ ๋ก ๋ .NET Framework์๋ง ์์กดํ์ฌ .NET Core๋ก ์ด๋ํ ์์๋ ๊ณ ๊ฐ์ด ์์ต๋๋ค.
๋ ์ฌ๊ฐํ๊ฒ๋ .NET Standard 2.0 ์ดํ .NET Core 2.0์์ .NET 4.x ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค . .NET Core์์๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ง์ ๊ตฌ๋ฉ์ ๋ง๋ .NET Core ์ฉ Windows ํธํ์ฑ ํฉ ์ด ์์ง๋ง COM interop ๋ฐ WinForms ๋ฐ WPF ๋ฑ๊ณผ ๊ฐ์ ๊ธฐํ ์ฑ ๋ชจ๋ธ์ ํฌํจํ์ฌ .NET Core 3.0์์ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์ง์๋๊ณ ์์ต๋๋ค.
ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ด .NET Framework์์ .NET Core๋ก ์ด๋ํ๋ ๊ฒ์ ๋ฐฉํดํ๋ ๋ชจ๋ ์ฐจ๋จ๊ธฐ๋ dotnet / corefx ์์ ๋ฐ์ํด์ผํฉ๋๋ค.
Xamarin์ ๊ฒฝ์ฐ; ๋ด๊ฐ ํ๋ ธ์ ์๋ ์์ง๋ง iOS ๋๋ Android์์ ์น ์๋ฒ๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
Mono ํด๋ผ์ด์ธํธ ์ฑ์ ๊ฒฝ์ฐ UI๊ฐ Mono์์ ์คํ๋๋ ๋์ ์น ์๋ฒ๊ฐ ํ๋ก์ธ์ค ๋ถ์กฑ ๋ฐ .NET Core์์ ์คํ๋ ์ ์์ต๋๋ค. Kestrel์ BSD ๋ฒ์ ์ด ํ์ฌ .NET Core ๊ฒฉ์ฐจ์ด์ง๋ง Mono์ ๋ค๋ฅธ ํ๋ซํผ ์ค ์ผ๋ถ๋ฅผ ์ ๊ฑฐ ํ๋ Big Endian ํ๋ซํผ์์ ์คํํ ์ ์์์ต๋๋ค .
Unity์ ๊ฒฝ์ฐ ๊ฒ์์ ๋ชจ๋ ์ข ๋ฅ์ ์ด์ํ ์ผ์ํฉ๋๋ค. ๊ทธ๋์ ์๋ง๋ ๊ทธ๊ฒ์ ๋ค๋ฃจ์ง ์์ ์๋๋ฆฌ์ค ์ผ ๊ฒ์ ๋๋ค. ๊ฒ์์ด ํด๋ผ์ด์ธํธ์์ ์น ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์์๋ค๋ฉด; ์๋ฒ ๋ proc ์ธ๋ถ๊ฐ ์๋๋ผ; .NET Core๊ฐ ํด๋น ๋ถ๋ถ์ ์คํํ ์์์ ๋.
ASP.NET Core ์ฑ ๋ชจ๋ธ ์ธ๋ถ ์๋ฅผ ๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ .NET Standard๋ ASP.NET Core์ ๋ชจ๋ ์ข ๋ฅ์ ์ ์ฉํ ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก Razor๊ฐ ํน์ ์์ด๋ฏ๋ก ๋ ์ค์ํฉ๋๋ค.
๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ .NET Core๋ก๋ง ์ด๋ํ๋ ๊ฒ์ ์๋๋ฉฐ (์ : Microsoft.Extensions.*
์ด .NET Standard๋ก ์ ์ง๋จ) @daveaglick ์ด https : //์์ ์ํ ํ ๊ฒ์ฒ๋ผ ์ํฅ์๋ฐ๋ ํน์ ์๋๋ฆฌ์ค ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ณ ๋ คํ ์ ์๋๋ก github.com/aspnet/AspNetCore/issues/3757#issuecomment-434140416 ๋ชจํธํ "๋ชจ๋ ๊ฒ"์ด ์๋ .NET Standard์์ ์ฌ์ฉํ ์์๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ / ๋๋ ๊ธฐ๋ฅ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
ASP.NET Core๋ .NET Core์์ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์๋ก์ด API๋ฅผ ์ฃผ๋ํ๊ณ ์์ผ๋ฉฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ ์๊ตฌ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค (์ฌ์ฉ ์ฌ๋ก ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์). ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๊ฐ์ ์๊ธฐ ํจ๋ฐฐ์ ๋๋ค.
๋ฐ๋ฉด์ .NET Standard ๋ฒ์ ์ ์์ผ๋ฉด ๋ค๋ฅธ ๋ฐํ์์ด ASP.NET Core 3.0์ ๊ตฌํํ ๋ ์ง์ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํ์ค์ ์ผ๋ก ๊ทธ๊ฒ์ ๊ณง๋์ง ์์ ๊ฒ์ ๋๋ค (.NET Standard 2.1์ ์์ง ์์ฑ๋์ง ์์๊ณ ๊ทธ ์ด์์ ๋ฒ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค).
์๋ง๋ ASP.NET Core ์ฑ ๋ชจ๋ธ์ด ๋์ค์ ์ํฉ์ด ์กํ๋ฉด .NET Standard๋ก ๋์ ๊ฐ๊น์? ํ์ฌ ์๋ํ๋ ๊ฒ์ฒ๋ผ .NET Standard ํ๋ก์ธ์ค์์๋ ํญ์ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ด๋ํ๊ณ ์์ ์ ์์ง๋ง?
@gulbanana com์ ์ฌ์ฉํ๋ .net ํ๋ ์ ์ํฌ์ asp.net ์ฝ์ด๋ ์ด๋ป์ต๋๊น? ๋๋ .net ํ๋ ์ ์ํฌ ๋ง ์ง์ํ๋ ๋๊ฒ ํจํค์ง๊ฐ ์์ต๋๊น?
์ด์ฌ๋ฅผํด์ผํ๋์ง ๋ง์์ผํ๋์ง์ ๋ํ ์ง๋ฌธ์ด ์๋๋ผ ์ธ์ ์ผํ๋์ง์ ๋ํ ์ง๋ฌธ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ง๋๋ฒ์ ์ด๋ก ์ธํด ~ ํ ๋ก ~ ๋ ํญํ์ด ๋ฐ์ํ์ ๋ ์ํ๊ณ๋ ๊ธฐ์กด ์ฑ์ ์ด์ ํ ์ค๋น๊ฐ๋์ง ์์์ต๋๋ค.
์ด์ Windows ํธํ์ฑ ํจํค์ง๊ฐ ์์ผ๋ฉฐ WinForms ๋ฐ WPF๊ฐ .NET Core์ ์ ๊ณต๋ฉ๋๋ค.
.NET Framework ์ฉ 2.1 ํจํค์ง๊ฐ ์ข์ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋ค๊ณ ์๊ฐํฉ๋๋ค. netfx์์ 2.1๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ค์ .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค.
์ด๊ฒ์ AngularJS ๋ Angular์ ์ ์ฌํฉ๋๋ค. ๊ธฐ์กด ์ฝ๋๋ฅผ ์ต์ 1. *์ ๊ตฌ์ฑ ์์ (ํ๋)๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ค์ ์ต์ Angular ๋ฒ์ ์ผ๋ก ์ด๋ํฉ๋๋ค. ๋งค์ฐ ์ด๋ ต์ง๋ง ์คํ ๊ฐ๋ฅํฉ๋๋ค.
CoreCLR ๋ฐ ๋ชจ๋
ธ ๋ชจ๋์ ํฅ๋ฏธ๋ก์ด ์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ (์ : ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๋ฐฉ๋ฒ ๋๋ ๋น ๋ฅธ Span
์ด๋ ๋ฐ๋์ .NET Framework๋ฅผ "์ง์ํ์ง ์์"์ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ๋๋ก ๋๋ ๊ฒ์
๋๋ค.
์ฌ์ ํ ๊ณ ์ ์ ์ธ ASP (ASP.NET์ด ์๋๋ผ ์ ๋ง ์ค๋๋ ๊ฒ)๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ดํธ๊ฐ ์์ต๋๋ค. ์ฌ์ ํ ์๋ํ๊ณ Windows์์ ์ ๊ณต๋๋ฉฐ ์๋ก์ด ์ฑ์ ๋ง๋ค์ง ์์ ๊ฒ์
๋๋ค.
๋๋ <10 ๋
์์ .NET Framework์ ์ํฉ์ด ๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
2.1์ ๋ํด ์์ฒญ ๋ ํ์ฅ ์ง์์ ๋์ํ์ง๋ง ํ์ด 2.1 ํจํค์ง ๋ค์ด๋ก๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ 2 ~ 3 ๋ ๋ด์ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค (= ์ค์ํ ๋ณด์ ๋ฌธ์ ์์ ). ์กฐ๊ธ ๋.
@ John0King COM์ .NET Core 3.0์์ ์ง์๋ฉ๋๋ค.
๋ํ : .NET Remoting๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ๋ ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ๋ค์ ์ด๋ฏธ ์ ์ฐ์
๋๋ค.
์ธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฑฐ์ ์ฝ๋๋ก ์คํ๋๋ฉฐ ๊ณ์ํด์ ๊ทธ๋ ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ฌด์ธ๊ฐ๋ฅผ "์ง์"๋๋ "์๋ก์ด"๊ฒ์ผ๋ก ์ด์ํ ์ง ์ฌ๋ถ์ ๋ํ ๋น์ฆ๋์ค ๊ฒฐ์ ์ด์ง๋ง ๊ทธ๋๊น์ง๋ @dylanbeattie ๊ฐ ๋งํ๋ฏ์ด :
์, ์ด๋ค ๊ฒ์ด "์ง์"๋๋์ง ์ฌ๋ถ๊ฐ ๊ทธ๋ค์ง ๊ด๋ จ์ฑ์ด์๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์ธ๊ธ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ธฐ์กด ์ฑ์ ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ํด์ ์๋ก์ด ํ๋ ์ ์ํฌ๋ก ์ด์ ํ ํ์๊ฐ ์์ต๋๋ค. ์น ์๋ฒ๋ ๋ณด์ ์ํ์ผ๋ก ์ธํด ์ฝ๊ฐ์ ํน๋ณํ ๊ฒฝ์ฐ์ ๋๋ค. LTS์ ๋ํ ์ฅ๊ธฐ๊ฐ์ ๋ณด์ ํจ์น ์ง์์ ์ฌ๋๋ค์ ๋์ธ ๊ฒ์ ๋๋ค.
@gulbanana ์น ํ๋ ์ ์ํฌ, ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์ ์ํฌ๋ฅผ ๋ณ๊ฒฝ ํ ๋ค์ ํธํ๋์ง ์๋ ์ข ์์ฑ์ ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋ ๊ต์ฒดํด์ผํ๊ธฐ ๋๋ฌธ์ System.Web์์ ASP.NET Core๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํ ํ๋ ๋ฐ ๋ ๋์ ๊ธฐ์ค์ ์ถ๊ฐ ํ ๋ฟ์ ๋๋ค (์๋ก ๊ตฌ๋งคํด์ผ ํ ์ ์์). ๋ผ์ด์ผ์ค).
๋น์ฉ / ํธ์ต ๋ถ์์ ์ํํ๋ค๋ฉด ASP.NET Core์ ์ด์ ์ ์์์ง ํ์ ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ํนํ ํ๋ก์ ํธ ๊ธฐ๋ฐ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ์ ์ฉ ํ ์ ์์ผ๋ฉฐ, ๋ฌผ๋ก ๊ฐ ํ๋ก์ ํธ๋ ์์ฐ์ด ์ถฉ๋ถํ ๋ถ์กฑํ๋ฏ๋ก ์ ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง ๋ช ๋ฐฑํ ์ค์ง์ ์ธ ์ด์ ์์ด ์ ์ฒด ํ๋ ์ ์ํฌ๋ฅผ ๊ต์ฒดํ๋ ๊ฒ์ ์ ๋นํํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. .
๋น์ฉ / ํธ์ต ๋ถ์์ ์ํํ๋ค๋ฉด ASP.NET Core์ ์ด์ ์ ์์์ง ํ์ ํ ์ ์์ต๋๋ค.
๊ทธ๋์ .. ์ .. ๋๋ฌ? ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ํ์ ๊ฐ ์์ผ๋ฉด ์ํํ์ง ๋ง์ญ์์ค.
๋์์ ์ผ๋ก ๋ค๋ฆฌ๋ ค๊ณ ํ์ง ์์ง๋ง "์ต์ ํญ๋ชฉ"์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์งํด์ผํ๋ ์
๋ฌด๊ฐ ์๋ค๋ฉด ์ด์ํ์ง ๋ง์ญ์์ค. ์ฅ์ ์ .NET Framework / ASP.NET ํด๋์์ด ๊ณ์ ์ง์๋๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ทธ๋๋ก ์คํ๋๋ค๋ ๊ฒ์
๋๋ค.
์ด์์ ์์ฃผ ํ์ํ์ง ์์ต๋๋ค. ๋์ํฉ๋๋ค. ASP.NET์์ ASP.NET Core ๋ก์ ์ ํ์ ํฐ ๋ณํ์ด๋ฉฐ, ๊ทธ ์ค ์ผ๋ถ๋ Core๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ด๋ํ๋ค๋ ๊ฒ์ ๋๋ค (2.0์์์ ๋ง์ฐฌ๊ฐ์ง๋ก 3.0์๋ API ๋ณ๊ฒฝ ์ฌํญ์ด ์์). ์ด ํ ๋ก ๋ฌธ์ ๋ netfx์์ corefx ๋ก์ ๋ณ๊ฒฝ์ ๊ดํ ๊ฒ์ด๋ฉฐ ๋ ์ด์ ํฐ ๋ณ๊ฒฝ์ด ์๋ ๋๋ถ๋ถ์ ASP.NET Core ์ฑ์ ๊ฒฝ์ฐ
์ด๊ฒ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํจ์ฌ ๋ ์ ์ง์ ์ด๊ณ ์ฝ๊ฒ ๋ง๋ค ์์๋ ".NET Framework์ ASP.NET Core"์ค๊ฐ ์ง์ ์ ์ ๊ฑฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ASP.NET MVC / WebAPI ๋ฑ์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ASP.NET Core์ ๋ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์น ํ๋ ์ ์ํฌ์ ๊ธฐ๋ณธ ๋ฐํ์์ ํ ๋ฒ์ ๋ชจ๋ ๋ณ๊ฒฝํ๋ ๋งค์ฐ ํฐ ๋ณํ๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋๊ธฐ์ ์ฑ์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ์๋นํ ๊ณ ํต ์ค๋ฌ์ธ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ ํฌ ํ์ 1 ~ 2 ๋ ๋์์ด๋ฅผ ๋ฉด๋ฐํ ์ฃผ์ํ๊ณ ์์ง๋ง :
EntityFrameworkCore๋ ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๋ชจ๋ ์์ ์ ์ํํ์ง ์์ผ๋ฉฐ .NET Core 3.0์์๋ EntityFramework ์์ฒด๊ฐ .NET Core์ ์ ๊ณต๋ฉ๋๋ค. ๊ทธ ์ค ์ด๋ ์ ๋์ ์ด๋ค ํ๋ซํผ์์ ์คํ ๋ ์ง ๋ช ํํ๊ฒ ์ ๋ฌ๋์ง ์์๋ค๊ณ ์๊ฐํ๋ฉฐ ์ค์ ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋น๋๋ฅผ ํ ์คํธํด์ผ ํ ๊ฒ์ ๋๋ค.
OData ์ด์ผ๊ธฐ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ธก๋ฉด์์ ์ฌ์ ํ ๊ณต์ค์ ๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. OData 3 / System.Data.Services์์ OData 4 / WebAPI ๋ฐ ๊ทธ ์ด์์ผ๋ก ์ด๋ํ๋ ค๋ฉด _ ์ค์ง์ ์ธ _ (์ฌ) ์์ ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ ํ์ฌ ๋ช ๋ ๋์ ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ์ด๋ฉฐ ์์งํ ๊ทธ๋ด ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง ์์ต๋๋ค.
๋ํ ์ด์ ๋ ์ง์๋์ง ์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ (AppDomains, Remoting ๋ฑ) _first_๋ฅผ ๋ณ๋ ฌ๋ก ๋๋ ์ดํ ๋จ๊ณ์์ ์ํ ํ ์์๋ ๋์ ์ ๊ฑฐํด์ผํฉ๋๋ค.
๋ํ ์ด์ ๋ ์ง์๋์ง ์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ (AppDomains, Remoting ๋ฑ)์ ๋จผ์ ์ ๊ฑฐํด์ผํฉ๋๋ค. ๊ทธ ์์ ์ ๋ณ๋ ฌ๋ก ์ํํ๊ฑฐ๋ ์ดํ ๋จ๊ณ์์ ์ํ ํ ์์๋ ๊ฒ์ด ์๋๋๋ค.
2.1๋ก ๋จผ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@davidfowl 3.0 / 3.1 / etc์์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฐ๊ฒฌํ์ง ์๋ ํ ์ค๊ฐ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ํ์ํฉ๋๋ค. ์์ง ์ ์ฒด ๋ถ์์ ์ํํ์ง ์์์ผ๋ฉฐ ์ง๊ธ๊น์ง ๋๋ถ๋ถ EF ๋ฐ OData์์ ์ฐจ๋จ๋์์ต๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ํ์ํ ASP.NET Core 2.1์ ์๋ก์ด ๊ธฐ๋ฅ? .NET Framework์ ASP.NET Core 2.1์ ์๋ฏธํ์ต๋๋ค.
๋ช ๋ ์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ชจ๋ ๊ฒ์ ํฌํ ํ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ค์ ๋ค ๊ณ ๋ถํํ๋ ๊ธฐ์ต์ด๋ฉ๋๋ค. ๋ค์์ ๋ด๊ฐ ๊ทธ๋ ์์ฑํ ์ค๋๋ github ์ฃผ์์ ์ธ์ฉ๋ฌธ์ ๋๋ค.
Active Directory ๋๋ Office COM ์๋ํ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ผ๋ถ System.Drawing ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ํ ๊ทธ๋ฆผ์ ์์ฑํ๊ฑฐ๋ WPF ์ฑ๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ์น์ฑ์ ์์ํด๋ณด์ญ์์ค.
๋ฉ์ง ์ ์ .NET Core 3.0๋ถํฐ ์ด๋ฌํ ๋ชจ๋ ์๋๋ฆฌ์ค๊ฐ ์ง์๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์์ฒญ๋ ์์ ์์ ์ด ์ํ๋์์ต๋๋ค.
@davidfowl ๋๋ ๊ทธ๋ ๊ฒ ํ์ด.
๊ฐ์ค ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ASP.NET/MVC/WebAPI์์ ์ฌ์ฉํ๊ณ ์๋ ๊ธฐ๋ฅ ์ค 2.1์์๋ ๊ตฌํ๋์ง ์์์ง๋ง ์ดํ ๋ฒ์ ์ผ๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ด์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ 2.1์ ์คํ ๊ฐ๋ฅํ ๋๋ค๋์ด ์๋๋๋ค.
2.1์์๋ ์ค์ํ ๊ฒ์ด ์ค์ ๋ก ํ์ํ์ง ํ์ธํ๋ ค๋ฉด ๋ ์ฒ ์ ํ ๋ถ์์ํด์ผํฉ๋๋ค.
์๋ ํ์ธ์.
์ํ๊น๊ฒ๋ ์ด๊ฒ์ ํ ๊ฐ์ง๋ฅผ ๊ฐ์กฐํฉ๋๋ค. .NET Standard๋ฅผ .NET ์์ฝ ์์คํ ์ ์์ฐจ๋ก ๋ง๋๋ ๋ฐ ์์ ํ ์คํจํ์ต๋๋ค . ๋ชจ๋ ํ๋ซํผ์ด ์๋ก์ด API๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ๋ ค๊ณ ํ๋ ๋ง์ง๋ง ์๊ฐ์ ํญ์ ์ ๋ฐ์ดํธ๋๋ ๊ฐ์ฅ ๋ฎ์ ๊ณตํต ๋ถ๋ชจ ์ผ๋ฟ์ ๋๋ค.
๋น์ ์ ํ๋ฆฐ ๊ฒ์ ์๋์ง๋ง .NET Standard์ ๋ชฉํ์ ๋ํด ๋ค์ ๋ฌด์งํฉ๋๋ค. ํ์ค์ ๋ชฉํ๋ ํ์ ์ ์ฃผ๋ํ๋ ๊ฒ์ด ์๋๋ผ ์ตํฉ์ ์ฃผ๋ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๊ฐ๋์์ ์ ๊ทผํ๋ค๋ฉด ์ด๋ค ๊ฐ๋ ์ด ๋ณดํธ์ ์ด๊ฑฐ๋ ๋ณดํธ์ ์ด์ด์ผํ๋์ง ์๊ฐํด์ผํ๋ฏ๋ก ์ค๊ณ ์ ๋ค์ณ ์ ธ์ผํฉ๋๋ค. ์ด๊ฒ์ด ์ด๋ค ๋ชจ์ต์ธ์ง ๊ถ๊ธํ๋ค๋ฉด ๋ชจ๋ .NET ๊ตฌํ ์์ ์๊ฐ ๊ฒํ ํ ํ ์ง๋ 3 ์ฃผ ๋์ ๋ณํฉ ํ 35 ๊ฐ ์ด์์ PR์ ์ดํด ๋ณด๋๋ก ๊ถํฉ๋๋ค.
.NET Core๋ ํ์ ์ด ์ผ์ด๋๋ ์ต์ฒจ๋จ ํ๋ซํผ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ .NET Framework๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋์ ์ดํ๊ณผ ๊ทธ๋ก ์ธํ ์ํ์ ์ฒ๋ฆฌ ํ ์์๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ ๊ตฌ์ถํ์ต๋๋ค. ๊ทธ๋ฌ๋ .NET ์์ฝ ์์คํ ์ ์ค์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ด .NET Core ํ๊ฒฝ์ ์ผ๋ถ๋ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ ์ปดํ์ผ์ Xamarin ๋ฐ Unity์์ ํจ์ฌ ๋ ๋๋๋ฌ์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ .NET Core ๊ธฐ๋ฅ์ ํ์ค์ ์ถ๊ฐ ํ ๋ ๋ฐํ์ ํ๊ฒฝ, ์ด์ ์ฒด์ ๋ฐ ํ๋์จ์ด ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํด์ผํฉ๋๋ค.
์๋ง๋ ๊ทธ๊ฒ์ ๋์ผ ์๋ ์์ง๋ง,
netcoreapp
๋งํผ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ์ต๋๋ค (์ ์์ ๋ฐ๋ผ ์ API๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ป์).
ํ์ค์ "๋น ๋ฅด๊ฒ ์์ง์ด๊ณ ๊นจ๋จ๋ฆฌ๋ ๊ฒ"์ด โโ์ฐ๋ฆฌ ์ฒญ์ค ์ ์ฒด๊ฐ ๋์ด ํ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ๋๋ค. .NET Core์ ์ฃผ์ ๋ฒ์ ์์ API๋ฅผ ์ ๊ฑฐํด์ผํ๋ ๊ฒฝ์ฐ์๋ ์ถฉ๋ถํ ๋์์ง๋ง .NET Standard๋ก๋ ์ฌ์ค์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ค์ ๋๋ฆฌ๊ฒ ์์ง์ด๊ณ ์ถ๊ฐ ํ ๋งํผ ์ถฉ๋ถํ ์ฑ์ํ๋ค๊ณ ์๊ฐํ๋ ๊ฐ๋ ๋ง ํฌํจํด์ผํฉ๋๋ค.
์ฝ์ ํ๋๋ก ์ํ : .NET Framework๋ฅผ ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ฌ์ฉ์๋ฅผ ์ ๋ขฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ง ๋ค๋ฅธ ๊ณจ๋ชฉ ๋์ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ ์์ ์ ์ธ ํ๋ ์ ์ํฌ๋ก ๋ง๋ญ๋๋ค.
์ด๋ .NET Framework๊ฐ ๊ฒฐ๊ตญ .NET Core๊ฐ ๊ฐ์ง ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ง ์๊ฐ์ด ์ง์ฐ๋๋ค๋ ๊ฐ์ ์ ๊ณ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๋จ์ํ ํ์ค์ ์ด์ง ์๋ค๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. .NET Core์์ ๊ณผ๊ฐํ๊ฒ ํ์ ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ๊ฑฐ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ข์ ๋ฉ์ด๋ฆฌ๊ฐ .NET Framework๋ก ๋ค์ ๋์ ๊ฐ์ง ์๋๋ค๋ ์์ง๋์ด๋ง ํ์ค์ ๋ฐ์ ๋ค์ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ์ด .NET Core์์ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋๋กํ๋ฉด์ .NET Framework์ ํต์ฌ ๊ฐ์น ์ ์ (์ฑ์ํ๊ณ ํ๋ถํ ๊ฐ๋ฐ ํ๋ซํผ)์ ๋ณด์กดํ๊ธฐ ์ํด ์ต์ ์ ๋คํ๊ณ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์์ผ๋ก๋ Span<T>
ํ๋ ๊ฒ์ฒ๋ผ ๋ฐํ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ธ์ด ๋ณ๊ฒฝ์ด ํ์ํ ์์ญ์์ ๋ ๊ธฐ๊บผ์ด ํ์ ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ์ด๋ฌํ ๊ฒ๋ค์ ๋น์ฉ์ด ๋ง์ด ๋ค์ง๋ง ์ฌ๋๋ค์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์ข์ ์๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๊ตฌํ, ์ฐ์ ๊ณผ ๊ด๋ จ๋ ์ผ๋ฐ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ, ํ๋์จ์ด ๋ด์ฅ ํจ์ ๋ฑ์ ์ฌ์ฉํ ์์๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํ์ผ๋ก ์ธํด .NET Framework๋ก ๋ฐฑ ํฌํธํ์ง ์์ ๊ฒ์
๋๋ค. .
์ฐ๋ฆฌ์ ์น ์คํ์ด ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ค๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ASP.NET Core๊ฐ .NET Framework์์๋ ์คํ๋๋ ์ ํ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค. ASP.NET Core๋ฅผ .NET Framework์์ ์คํ ํ ์๋ ์ด์ ๋ .NET Core์ API๊ฐ ์ถฉ๋ถํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. .NET Core 3.0 ์์๋ ๊ธฐ์กด API ๊ฐ
@ yaakov-h ๊ทธ๊ฒ ์ฌ์ค์ด๋ผ๋ฉด ๋๋ ๋๋ ๊ฒ์ ๋๋ค. ๋ถ์์ ํ ๋ ์๋ ค์ฃผ์ธ์.
๋น์ ์ ํ๋ฆฐ ๊ฒ์ ์๋์ง๋ง .NET Standard์ ๋ชฉํ์ ๋ํด ๋ค์ ๋ฌด์งํฉ๋๋ค. ํ์ค์ ๋ชฉํ๋ ํ์ ์ ์ฃผ๋ํ๋ ๊ฒ์ด ์๋๋ผ ์ตํฉ์ ์ฃผ๋ํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ํํ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ต๋๋ค. ASP.NET Core ์ฉ .NET Standard๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์ด๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐํ๊ณ , ASP.NET Core๋ฅผ ๋์์ผ๋กํ๋ NuGet ํจํค์ง๋ ํฌ๊ธฐํด์ผํฉ๋๋ค. ์๋ ด์ด๋ผ๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค. ์ ๋ ๊ทธ๋ ๊ฒ ๋ฌด์งํ์ง ์์ต๋๋ค . : rofl :
๊ทธ๋ฐ ๊ฐ๋์์ ์ ๊ทผํ๋ค๋ฉด ์ด๋ค ๊ฐ๋ ์ด ๋ณดํธ์ ์ด๊ฑฐ๋ ๋ณดํธ์ ์ด์ด์ผํ๋์ง ์๊ฐํด์ผํ๋ฏ๋ก ์ค๊ณ ์ ๋ค์ณ ์ ธ์ผํฉ๋๋ค.
์ด๋ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ํ์ ๋๋ค. corefx / coreclr์ ํฌํจ๋๋์ง ๊ฒํ ํ ๋ ํน์ API๊ฐ ์ ๋ฒ์ ์ .NET Standard์ ํฌํจ๋์ด์ผํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ๋๋ ๊ฒ์ ์์ต๋๋ค.
์ด๊ฒ์ด ์ด๋ค ๋ชจ์ต์ธ์ง ๊ถ๊ธํ๋ค๋ฉด ๋ชจ๋ .NET ๊ตฌํ ์์ ์๊ฐ ๊ฒํ ํ ํ ์ง๋ 3 ์ฃผ ๋์ ๋ณํฉ ํ 35 ๊ฐ ์ด์์ PR์ ์ดํด ๋ณด๋๋ก ๊ถํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์ฌ์ด ์ผ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ๋ด ์์ ์ ์ฆ๋ช
ํ๋ค. ๋น์ ์ ์๋ก์ด netstandard
๋ฒ์ ์ ๋ง๋ค๊ธฐ ์ํด ๋๋ฌด ๋ง์ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ ๋๋ฌผ๊ฒ ๊ทธ๋ ๊ฒํ๋ ๊ฒฝ์ฐ, ๊ทธ๊ฒ์ ๋ง์ ์์์ ํจ๊ป ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ๊ณ ํต์ค๋ฌ์ด ๊ณผ์ ์ด๋ค. ๋์์ ์๋ก์ด API.
ํ์ค์ "๋น ๋ฅด๊ฒ ์์ง์ด๊ณ ๊นจ๋จ๋ฆฌ๋ ๊ฒ"์ด โโ์ฐ๋ฆฌ ์ฒญ์ค ์ ์ฒด๊ฐ ๋์ด ํ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๋ชจ๋ ASP.NET Core ๋ฐ๋ณต์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ๋ค์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๋ฒ์ ์ฉ์ผ๋ก ์์ฑ๋ ํจํค์ง๋ฅผ ๋ง๋๋ (๋๋ก๋ ๋๊ท๋ชจ) ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์๊ฒ ์ด์ ๋ฒ์ ๊ณผ๋ ์๋ฌด๋ฐ ๊ด๋ จ์ด์๋ ์ง์ ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ๋ ๊ฑฐ์ ๋ฒ์ ์ ์์ํ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ์งํ๋ ๋ฑ ๋ง์ ์ต์ ์ ์ ๊ณตํ์ง ์์ต๋๋ค (ASP.NET/.NET๋ฟ๋ง ์๋๋ผ Windows์ ์๋ช ์ฃผ๊ธฐ๋ ๋ง์). ์์ฆ์ ์งง์์ง๋๋ค).
์์ผ๋ก๋ Span๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐํ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ธ์ด ๋ณ๊ฒฝ์ด ํ์ํ ์์ญ์์ ๋ ๊ธฐ๊บผ์ด ํ์ ํ ์์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
. ์ด๋ฌํ ๊ฒ๋ค์ ๋น์ฉ์ด ๋ง์ด ๋ค์ง๋ง ์ฌ๋๋ค์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์ข์ ์๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๊ตฌํ, ์ฐ์ ๊ณผ ๊ด๋ จ๋ ์ผ๋ฐ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ, ํ๋์จ์ด ๋ด์ฅ ํจ์ ๋ฑ์ ์ฌ์ฉํ ์์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํ์ผ๋ก ์ธํด .NET Framework๋ก ๋ฐฑ ํฌํธํ์ง ์์ ๊ฒ์ ๋๋ค. .
์ด๋ฌํ "์ํํ"๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ ๋ ์๋ก์ด ๋ณ๋ ฌ .NET Framework ๋ฒ์ (.NET Framework 5)์ ๋์ ํ์ง ๋ชปํ๊ฒํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค์ ๋งํ์ง๋ง ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
๋ชจ๋ ๊ธฐํ๋ ํ๋ณด Microsoft.AspNetCore.Razor.Language
๋ฐ Microsoft.AspNetCore.Razor
์ธ๋ถ aspnet
๋์ ๋ณด๊ด netstandard
์จ์ด๋ธ๋ฅผ? razor๋ HTML ์ ์ฉ์ด์ง๋ง ๋ฉ์ผ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ๋ฌ ๊ฐ ์์ผ๋ฉฐ ๊ทธ๋๋ก ๊ณ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
์ด ์์ง์์ ์ด์ ์ ๋งํ ๊ฒ๊ณผ ๋ฌ๋ฆฌ .NET ๋ก๋๋งต์์ netstandard์ ๋ํ ์ง์์ด ๋ถ์กฑํจ์ ๋ณด์ฌ์ค๋๋ค. ์๋ก์ด ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๊ฐ netstandard๋ฅผ ํฌ๊ธฐํ๋ฉด ์ฑํ์ ๋ํ ์ข์ ์ง์กฐ๊ฐ ์๋๋๋ค.
์ด๊ฒ์ ์ด์ .NET ๊ฐ๋ฐ์๊ฐ Microsoft๊ฐ ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๋ฐ ํ ๋ค๋ฅธ ๋ชจ๋ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์์ํด์ผํ๋ ์์ง์์ ๋๊น? ์ปค๋ฎค๋ํฐ๊ฐ netstandard์ ๋ฏธ๋์ ์ฑํ์ ๋ํ ๊ณต์์ ์ธ ์ฑ๋ช ์ ์ป์ ์ ์์ต๋๊น?
@terrajobst ๋ชจ๋ ํ๋ซํผ์ ํฌ๊ด ํ ์ค๋น๊ฐ๋์ด ์์ง ์์ ๊ฒ ๊ฐ์ API๋ฅผ .netstandard์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ ๋ํด ๋น์ ์ด
๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ ํํ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ต๋๋ค : ASP.NET Core ์ฉ .NET Standard๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐํ๋ ๊ฒ์ ๋๋ค.
ASP.NET Core๋ .NET Framework ๋ฐ .NET Core์์๋ง ์๋ฏธ๊ฐ ์์ง๋ง .NET Standard๋ ๋ชจ๋ ์ฌ๋์ด ๊ตฌํํด์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด Xamarin / Unity๊ฐ ์๋ฒ ์น ์คํ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ API๋ฅผ ์ ๊ณตํ๋๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ด๋ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ํ์ ๋๋ค. corefx / coreclr์ ํฌํจ๋๋์ง ๊ฒํ ํ ๋ ํน์ API๊ฐ ์ ๋ฒ์ ์ .NET Standard์ ํฌํจ๋์ด์ผํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ๋ฐฉํด๊ฐ๋๋ ๊ฒ์ ์์ต๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ .NET Core v1 ์ผ์์ ํ ์ผ์ ๋๋ค. ํ์ค์ .NET Core์์ v2๋ก ๋ถ๋ฆฌํ์ต๋๋ค. ๊ทธ๋ ์ต๋๋ค. ์ด๊ฒ์ ์ ํ์ด์ง๋ง ์์์ ๊ฒ์ด ์๋๋๋ค. ๋ชฉํ๋ .NET Core๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ด๋ํ ์์๋ ๊ฒ์ ๋๋ค. ๋จ์ผ ๋ฐํ์๋ณด๋ค N ๊ฐ์ ๋ค๋ฅธ ๋ฐํ์ ์ปจํ ์คํธ์์ ๊ธฐ๋ฅ์ด ์๋ํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
๋์์ ์๋ง์ ์๋ก์ด API๊ฐ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ๊ณ ํต์ค๋ฌ์ด ํ๋ก์ธ์ค์ ๋๋ค.
์ฌ๋ฌ ๊ตฌํ ์์ ์ฌ๋ฌ ๋ฐํ์์ผ๋ก ์ค๊ณ๋ฅผ ๊ฒํ ํด์ผํ๋ฏ๋ก ๊ณ ํต์ค๋ฌ์ด ํ๋ก์ธ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌํ์ ์ง๊ณ ๋ฐ ๋ฒ๋ค๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์งํํ๋ฉด์ ์กฐ์ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ๋ ดํฉ๋๋ค. CoreFx ์ ์ฅ์๋ ๋์ฉ๋ ์ ์ฅ์์ ๋๋ค. Xamarin๊ณผ Unity๊ฐ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ๊ฒํ ํ๋ ๊ฒ์ด Firehose์์ ์ ์ ๋ง์๊ณ CoreFx์ ๋ํ ๋ชจ๋ API ํ ๋ก ์ ๊ตฌ๋ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๋ชจ๋ ASP.NET Core ๋ฐ๋ณต์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ๋ค์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ๋ฒ์ ์ฉ์ผ๋ก ์์ฑ๋ ํจํค์ง๋ฅผ ๋ง๋๋ (๋๋ก๋ ๋๊ท๋ชจ) ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ .NET Standard๋ฅผ .NET Core์ ์ผ์น์์ผ ๋ชจ๋ ์ฌ๋์๊ฒ ์ ์ฉํ๊ณ ์ถ์ต๋๊น? ๋ฏธ์ํ์ง๋ง์ด ์ฃผ์ฅ์ ์ดํด๊ฐ๋์ง ์์ต๋๋ค.
์ด๋ฌํ "์ํํ"๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ ๋ ์๋ก์ด ๋ณ๋ ฌ .NET Framework ๋ฒ์ (.NET Framework 5)์ ๋์ ํ์ง ๋ชปํ๊ฒํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค์ ๋งํ์ง๋ง ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋๋ผ๊ณ ์๊ฐํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? .NET Framework์ ๋ณ๋ ฌ ๋ฒ์ ์ ์ ๊ณตํ๋ ๊ฒ์ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด ์๋๋๋ค. ์ฐ์ OS ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ์๋น์ค๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๋น์๋๋ค. .NET Framework 3.5 ๋ฐ 4.x์ ๋ํ ๋ถ๊ธฐ / ์๋น์ค / ํจ์นญ ์ ๋ต์ด ์ผ๋ง๋ ๋ณต์กํ ์ง ์ ์ ์์ต๋๋ค. ์ธ ๋ฒ์งธ ๊ฒ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋น์ค์ฉ์ ์ ๋๋ค. ๋์งธ, COM ํ์ฑํ ๊ด๋ฆฌ ๊ตฌ์ฑ ์์์ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์ฌ๋ฐ๋ฅธ ๋ฐํ์์ ์ ํํ๋ ค๋ฉด ํ์ฑํ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ฏ๋ก ๊ทธ๋ ๊ฒํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ํ์ด ๋ฐ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ in-proc์ ๋๋ํ ์ง์ํ๋์ง ์ฌ๋ถ์ ์ผ๋ง๋ ๋ง์ ์กฐํฉ์ ์ง์ํ๋์ง์ ๋ํ ์ง๋ฌธ์ ์ ๊ธฐํฉ๋๋ค. ๋จ์ํ ์์ ์ด ์๋๋ฉฐ ์ํ๋ ์์ต๋๋ค.
์๋ ด์ด๋ผ๊ณ ์๊ฐํ๊ฒ ํ์ง๋ง
@PinpointTownes ๊ทธ๊ฒ์ ์๋ ด์ ๋๋ค ... .NET Core ๐
์๋ฅผ ๋ค์ด Xamarin / Unity๊ฐ ์๋ฒ ์น ์คํ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ API๋ฅผ ์ ๊ณตํ๋๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
.NET Core๋ฟ๋ง ์๋๋ผ UWP์์๋ ASP.NET Core๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์ด ์๋๋ฐ Xamarin์์๋ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? https://aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/32626766-support-for-asp-net-core-running-on-uwp-as-windows
๋ง์ด ์๋๋ ๊ฒ-๋น์ ์๊ฒ-๋น์ ์ด ์ง์ํ๊ณ ์ถ์ง ์์ ๊ฒ ์ฌ์ด์๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
CoreFx ์ ์ฅ์๋ ๋์ฉ๋ ์ ์ฅ์์ ๋๋ค. Xamarin๊ณผ Unity๊ฐ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ๊ฒํ ํ๋ ๊ฒ์ด Firehose์์ ์ ์ ๋ง์๊ณ CoreFx์ ๋ํ ๋ชจ๋ API ํ ๋ก ์ ๊ตฌ๋ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฝ์ต๋๋ค.
๊ทธ๋ฐ ๊ทน๋จ์ ์ธ ์ ๊ทผ์ ์ ์ ํ์ต๋๊น? ์๋ก์ด ํ์ค API๊ฐ .NET Core์ ๋์ ๋ ์งํ (์ : ๋ช ์ฃผ), ์ผ๋จ ๋จผ์ง๊ฐ ํด๊ฒฐ๋๋ฉด ๊ณง๋ฐ๋ก (์ฆ, ๋ช ์ฃผ) ๋ ผ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ํํ ํ ์์๋ ํํ์ด์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ .NET Standard๋ฅผ .NET Core์ ์ผ์น์์ผ ๋ชจ๋ ์ฌ๋์๊ฒ ์ ์ฉํ๊ณ ์ถ์ต๋๊น? ๋ฏธ์ํ์ง๋ง์ด ์ฃผ์ฅ์ ์ดํด๊ฐ๋์ง ์์ต๋๋ค.
๋น์ ์ ๋ด๊ฐ ๊ทธ๊ฒ์ ์ข์ํ์ง ์๋๋ค๊ณ ์๊ฐํ์ง๋ง ๋น์ ์ ํ๋ ธ๋ค. ๋๋ ๋น ๋ฅด๊ฒ ์์ง์ด๋ ๊ฒ์ ์ข์ํ๋ค. 60 ๊ฐ์ NuGet ํจํค์ง์ ์ ์ง ์๋ก์ ๋๋๋ก ๊ฝค ๊ณ ํต ์ค๋ฝ๋๋ผ๋. ๋ด๊ฐ ์ซ์ดํ๋ ๊ฒ์ ๋ชจ๋ ์ฌ๋๋ค์ด ๊ฐ์ ์๋๋ก ์์ง ์ด๋๋ก ๊ฐ์ํ๊ณ , ๋ฐ๋ผ ์ก์ ์ ์๊ธฐ ๋๋ฌธ์ ๊ธธ ํ๊ฐ์ด๋ฐ์์๋ ์ฌ๋๋ค์ ๋ฒ๋ฆฌ๋ ๊ฒ์ ๋๋ค.
.NET Standard๋ฅผ .NET Core๋งํผ ๋น ๋ฅด๊ฒ ์ด๋์ํค๋ ๊ฒ์ด ์ฒ๋ฒ๋ก ๋ณด์ผ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ต์ netstandard
TFM์ ๋ชฉํ๋ก ์ผ๋๋ก ๊ฐ์ํ๋ ๊ฒ์ ์์ต๋๋ค. ์ต์ API ์ธํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ํํฉ๋๋ค. ํ์ํ์ง ์์ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ ๋์์ผ๋ก ์ง์ ํ์ฌ ๋ ๊ด๋ฒ์ํ ํ๋ซํผ์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋๋กํฉ๋๋ค.
ํ๊ท ์ ์ธ ๊ฐ๋ฐ์์ ๊ด์ ์์ ๋ณผ ๋ ์ด๋ ์์ ํ ์น๋ฆฌ์ ๋๋ค. ์ต์ .NET Core ๋ฐํ์์์ ์ฌ์ฉํ ์์๋ ์ต์ ์ ๋ฐ์ง์ด๋ API๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ซํผ์ด ๋ฐ๋ผ ์ก์ผ๋ฉด ์ฌ๊ธฐ์์๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์ค ํ๊ฒํ ์ ์ฌ์ฉํ๊ฑฐ๋ ํจํค์ง๋ฅผ ๋ค์ ๊ฒ์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ฐ์ OS ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ์๋น์ค๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๋น์๋๋ค. .NET Framework 3.5 ๋ฐ 4.x์ ๋ํ ๋ถ๊ธฐ / ์๋น์ค / ํจ์นญ ์ ๋ต์ด ์ผ๋ง๋ ๋ณต์กํ ์ง ์ ์ ์์ต๋๋ค. ์ธ ๋ฒ์งธ ๊ฒ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋น์ค์ฉ์ ์ ๋๋ค.
ASP.NET Core 3.0์ ๋ํ .NET Framework ์ง์์ ์ ๊ฑฐํ๋ ๊ฒ์ด .NET Core๋ก ์ด๋ํ ์์๋ ์ฌ๋๋ค์๊ฒ๋ ์ด์์ ์ด์ง ์์ ๊ฒ์ฒ๋ผ ์ด๊ฒ์ด ์ฌ๋ฌ๋ถ์๊ฒ ์ด์์ ์ด์ง ์๋ค๋ ๊ฒ์ ํ์คํ ์์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋น์ ์ด ๋ง์ดํฌ๋ก ์ํํธ๋ผ๋ ํ๋ฒํ ํ์ฌ๊ฐ .NET Core๋ก ์ฎ๊ฒจ์ผํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์์์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด ์์ ํ ํ๋ ธ์ต๋๊น? (๋๋ ๋น์ ์ด ์์ ํ๊ณ ํต์ ํ์ง ์๋ ์ธ๋ถ ์์กด์ฑ์ ๋ํด์๋ ์ด์ผ๊ธฐํ์ง ์์ต๋๋ค).
๋์งธ, COM ํ์ฑํ ๊ด๋ฆฌ ๊ตฌ์ฑ ์์์ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์ฌ๋ฐ๋ฅธ ๋ฐํ์์ ์ ํํ๋ ค๋ฉด ํ์ฑํ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ฏ๋ก ๊ทธ๋ ๊ฒํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ํ์ด ๋ฐ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ in-proc์ ๋๋ํ ์ง์ํ๋์ง ์ฌ๋ถ์ ์ผ๋ง๋ ๋ง์ ์กฐํฉ์ ์ง์ํ๋์ง์ ๋ํ ์ง๋ฌธ์ ์ ๊ธฐํฉ๋๋ค. ๋จ์ํ ์์ ์ด ์๋๋ฉฐ ์ํ๋ ์์ต๋๋ค.
๋ฌผ๋ก ์ฝ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ฃผ์ ๋ฒ์ ์ด ๋ํ๋ด๋ ๊ฒ์ ๋๋ค. ์ผ์ด ๊นจ์ง ์์๋ ์ํ์ด ์์ต๋๋ค. ์ด์ ASP.NET Core 2.2์ ์์ํ ๋จธ๋ฌผ๋ฌ์ผํ๋ ๊ฒ๊ณผ ASP.NET Core 3.0์ ์ฌ์ฉํ๊ธฐ ์ํด .NET Framework 5๋ก ์ด๋ํ๋ ์ํ์ ๊ฐ์ํ๋ ๊ฒ ์ฌ์ด์ ์ฌ๋๋ค์ด ๋ฌด์์ ์ ํํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
ํ์ง๋ง ๋น์ ์ด ๋ง์ดํฌ๋ก ์ํํธ๋ผ๋ ํ๋ฒํ ํ์ฌ๊ฐ .NET Core๋ก ์ฎ๊ฒจ์ผํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์์์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด ์์ ํ ํ๋ ธ์ต๋๊น?
์ ๊ฒฝํ์ ์ฌ๋๋ค์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ์์์ ์์ ํ์ ์ ์ง๋ง์ ์ง์ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐํด์ผํ๋ ์์์ ์์ ์ง์์ ์ผ๋ก ๊ณผ๋ ํ๊ฐํฉ๋๋ค.
ํ์ง๋ง์ด ๊ฒฝ์ฐ์๋ ์์ ๋ฌธ์ ๋ ์๋๋๋ค. ์คํ ์์ค .NET Framework ๋ง ์์ผ๋ฉด ๋ชจ๋ PR์ด .NET Framework๋ก ์ง์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๊ธฐ๊ณ์ ๋ณต์ก์ฑ ๋ฐ ๊ฒฝ์ ์ํ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ์ค์ ์ง์ค์ ํ๋ ์ ์ํฌ์ด๋ฉฐ ๋ณ๋ ฌ ๋ฆด๋ฆฌ์ค๋ ํ์ฑํ์ ๊ฐ์ ๊ณตํต ๋ฆฌ์์ค ์งํฉ์ ๊ณต์ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋๋ํ ์ฌ๋๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ค๋ฉด ํ ๋น ํ ์ ์๋ค๋ ์๋ชป๋ ์๊ฐ์ ๊ฑฐ๋ญ ์ฆ๋ช ํ์ต๋๋ค.
์ด์ ASP.NET Core 2.2์ ์์ํ ๋จธ๋ฌผ๋ฌ์ผํ๋ ๊ฒ๊ณผ ASP.NET Core 3.0์ ์ฌ์ฉํ๊ธฐ ์ํด .NET Framework 5๋ก ์ด๋ํ๋ ์ํ์ ๊ฐ์ํ๋ ๊ฒ ์ฌ์ด์ ์ฌ๋๋ค์ด ๋ฌด์์ ์ ํํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
์ ์๊ฐ์๋ .NET Core ๊ธฐ๋ฅ์ .NET Framework๋ก ๋ฐฑ ํฌํธํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฌ๋๋ค์ด .NET Core๋ก ์ํํ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก .NET Core์์ ์ง์๋๋ API์ ๋ฒ์๋ฅผ ๋ฐ์ด ๋ถ์ด๋ ๊ฒ์ด ํจ์ฌ ๋ ์ค์ฉ์ ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์์๋ ์ผ์ ์ฌํ์ ์ ๋ฐํ๋ ๊ฒ๋ฟ์ ๋๋ค. ๋ณ๋ ฌ ๋ฆด๋ฆฌ์ค์๋ IT๋ฅผ ์ค์นํ์ฌ ์ค์น ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ํธ์คํ ์ ์ฒด๊ฐ ์์คํ ์ ์ ๊ณต ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋ฑ์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋ฐ๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค.
์ด๊ฒ์ ASP.NET Core์ ๋ชจ๋ ๋ถ๋ถ์ ์ ์ฉ๋ฉ๋๊น, ์๋๋ฉด ์ ์ฉํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ถ๋ถ (์ Microsoft.AspNetCore.Http.Extensions
)์ด .NET Standard์ ๋จ์ ์์ต๋๊น?
ํํ
@terrajobst ๋ชจ๋ ํ๋ซํผ์ ํฌ๊ด ํ ์ค๋น๊ฐ๋์ด ์์ง ์์ ๊ฒ ๊ฐ์ API๋ฅผ .netstandard์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ ๋ํด ๋น์ ์ด
์. .NET Standard 2.0์๋ ์์ ํ ์๋ก์ด API๊ฐ ์์ต๋๋ค. .NET Framework์ Xamarin์ ๊ต์ฐจ์ ์ผ๋ก ์ ์๋์์ต๋๋ค. ๋ธํ๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ๊ธฐ์กด ์ฝ๋์ ํฉ๋ฆฌ์ ์ผ๋ก ํธํ๋๋ ๊ธฐ์ค์ ๋๋ฌํ๋ ค๋ฉด ๋ธํ๊ฐ ํ์ํฉ๋๋ค. ์ ์ผํ ์์ ์ UWP ๋ฐ .NET Core์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ฝ๋๋ฒ ์ด์ค๋ ์๋ .NET์ ํ๋์ ์ธ ์ฌ์ค์ ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ ์คํ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๊ฒ๋์์ต๋๋ค. ์ถ๊ฐ ๋ API / ๊ธฐ์ ์ด ๋์ฒด๋ก ์ฑ์ํ๊ณ ์ ํ๋ ํ๊ฒฝ (Xamarin iOS)์์ ์ง์ ๋์๊ธฐ ๋๋ฌธ์ ๋ณต์ก์ฑ์ด ๋ฎ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด์ ์ฐ๋ฆฌ๋ ์์ ํ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ๋ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ๋ค๋ฅธ ์ง์น์ ๋๋ค.
์ ๊ฒฝํ์ ์ฌ๋๋ค์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ์์์ ์์ ํ์ ์ ์ง๋ง์ ์ง์ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐํด์ผํ๋ ์์์ ์์ ์ง์์ ์ผ๋ก ๊ณผ๋ ํ๊ฐํฉ๋๋ค.
๋ด ๊ฒฝํ์ Microsofties๋ ํ์ฌ ์ํ๋ง์ ์ง์ํ๊ธฐ ์ํด ๋ณด์ ํ ๋ฆฌ์์ค์ ์์ํด์ผ ํ ์ผ์ ์์ ์ง์์ ์ผ๋ก ๊ณผ๋ ํ๊ฐํ๊ณ ์์ต๋๋ค. ๋น์ ์ ์ฃผ์ฅ์ ์ค์ ๋ก ์๋ฐฉํฅ์ผ๋ก ์๋ํฉ๋๋ค : sweat_smile :
์ ์๊ฐ์๋ .NET Core ๊ธฐ๋ฅ์ .NET Framework๋ก ๋ฐฑ ํฌํธํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ฌ๋๋ค์ด .NET Core๋ก ์ํํ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก .NET Core์์ ์ง์๋๋ API์ ๋ฒ์๋ฅผ ๋ฐ์ด ๋ถ์ด๋ ๊ฒ์ด ํจ์ฌ ๋ ์ค์ฉ์ ์ ๋๋ค.
๋ช ํํ๊ฒํ์ : ๋๋ ๊ทธ๊ฒ ์ ๋ถ ์ด์ง๋ง .NET Core๊ฐ .NET Framework๊ฐ ๊ฐ์ง ๋๋ถ๋ถ / ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ก๊ณ ๊ตฌํํ ๋๊น์ง ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ๋๊ธฐ ์ ๊น์ง๋ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ด๋ ๋๋ฝ ๋ API๋ก ์ธํด ์ฌ๋๋ค์ด ์ฐจ๋จ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋๋ฝ ๋ ํญ๋ชฉ์ด ๋๋ฌด ๋ง์์ ํฐ ๋ ๊ฑฐ์ ๋ชจ ๋๋ฆฌ ์ ์ฑ์ด ๋ฌธ์ ์์ด .NET Core๋ก ์ด๋ํ ์ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๋ค.
๋๋ ๋น์ ์ ์ฐ๋ ค๋ฅผ ํ์คํ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ถ๊ทน์ ์ผ๋ก ๋น์ ์ ์ถ์ ๋ ํธํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ๋ ๊ณ ํต์ค๋ฝ๊ฒ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. .NET Framework๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ PITA๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋๋ ๋น์ ์ ์ฐ๋ ค๋ฅผ ํ์คํ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ถ๊ทน์ ์ผ๋ก ๋น์ ์ ์ถ์ ๋ ํธํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ฐ๋ฆฌ๋ฅผ ๋ ๊ณ ํต์ค๋ฝ๊ฒ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. .NET Framework๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ PITA๊ฐ ๋ ๊ฒ์ ๋๋ค.
๊ทธ ๋ถ๋ถ์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์์ .NET Framework์ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๋๋ผ ๋จ์ํ ๋ ๊ฐ๋ ฅํ ASP.NET Core์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ง๋ ๋ช ๋ ๋์ .NET Framework์ .NET Core๋ฅผ ํจ๊ป ๋ฐ์ ์ํค๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ์ผ์ ํผ ํ๋ ค๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ธ๋ฉ ๋ฆฌ๋๋ ์ ์ ์ ๋ชฝ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐํ์ ์์ง๋์ด์ ์ด์ผ๊ธฐํ๋ฉด์ ๊ฐ์ธ์ ์ผ๋ก ์์ฒญ๋ ์๊ฐ์ ๋ณด๋์ต๋๋ค. ๋๋ 4.6.1์์ .NET Standard 2.0 ์ง์์ด ์ค๋จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋ํ์ต๋๋ค. ์์ง๋ ฅ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ค์ฉ์ฑ์ ๋ฌธ์ ์ ๋๋ค.
.NET Core๊ฐ .NET Framework๊ฐ ๊ฐ์ง ๋๋ถ๋ถ์ / ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ก๊ณ ๊ตฌํํ ๋๊น์ง ์๋ํ์ง ์์ต๋๋ค.
๋ด ๊ฒฝํ์ ์ํ๋ฉด, ์ผ๋ถ์ API์ ๊ฐ์ฉ์ฑ ์ฌ์ง์ด๋ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ง์ ๋ฐ ๋ฐฐํฌ ๋ณต์ก์ฑ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ "์ด์ ์ฒด์ ์์ ์ง์, ์ ๊ณต ๋ฐ ์๋ ์ ๋ฐ์ดํธ" ๋ .NET Core LTS ๋ฆด๋ฆฌ์ค์์๋ฐ๋ 3 ๋ ์ง์ ๋ฐ ํ์ฌ ์ฌ์ ํ ํฌํจ ๋ ๊น๋ค๋ก์ด ๋ฐฐํฌ๋ณด๋ค ํจ์ฌ ๋ ๋งค๋ ฅ์ ์ ๋๋ค. ์์งํ ๋งํด์ .NET Core ๋ฐ ASP.NET Core๋ฅผ์ํ ์์ ์ ์ธ ๋๊ตฌ๋ ์์ง ์์ต๋๋ค. 1 ๋ ํ์๋ ์ฌ์ ํ ํ์ ์ ์ง๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋งค ๋ฆด๋ฆฌ์ฆ๋ง๋ค ๋ณ๊ฒฝ์ด ์์๊ณ 3.0์ ์๋ก์ด ํ๋ ์ ์ํฌ ์ฐธ์กฐ๊ฐ ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ด ๋ ์ง ๋๊ฐ ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ฐ์ดํธ ๋ง ์ํ ํ ์ ์๊ฑฐ๋ ์ํํด์ผํ๋ ๋ฐฉ์์ผ๋ก ์ํ ํ ์์๋ ๊ธฐ์ ์ ๋ค๋ฃฐ ๋ ์ด๋ ํ์คํ ํฐ ๊ณ ํต์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ค์ ์ง๋ 5 ๋ ์ด์ ๋์ ํด์ ๋ ๋ฐฉ์๋๋กํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ค์ ํ๋ ์ ์ํฌ์ ์ํด ๋ง๊ฐ์ก๊ณ ๊ทธ๋ค์๊ฒ ํธ์ํ์ง ์์ ๊ฒ์ ๊ฑฐ์ ๋๋ณด์ ๋๋ค.
๊ทธ๋ฌ๋ ๋์์ .NET Framework์ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์๋๋ผ ๋จ์ํ ๋ ๊ฐ๋ ฅํ ASP.NET Core์ ๋๋ค.
์๋
์ ์ ๊ฐ ์ ์ํ ๊ฒ๊ณผ ๊ฑฐ์ ๊ฐ์ต๋๋ค. .NET Framework์์ ๊ณ์ ์๋ํ์ง๋ง (์ : netstandard20
๋ฐ netcoreapp30
) ํจ์ฌ ๋ ์ ์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํ๋ ASP.NET Core ํจํค์ง ํฅ๋ฏธ๋ก์ด ์ฑ๋ฅ. ๋๋๋ก ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ ์๋ํ๋ ๊ฒ์
๋๋ค. ์๋กญ๊ณ ๋น๋๋ ๊ฒ๋ค์ด ์๋๋๋ค. ์ด๊ณ ์์ด ์๋๋๋ค.
์ฐ๋ฆฌ๋ ์ง๋ ๋ช ๋ ๋์ .NET Framework์ .NET Core๋ฅผ ํจ๊ป ๋ฐ์ ์ํค๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ์ผ์ ํผ ํ๋ ค๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ธ๋ฉ ๋ฆฌ๋๋ ์ ์ ์ ๋ชฝ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐํ์ ์์ง๋์ด์ ์ด์ผ๊ธฐํ๋ฉด์ ๊ฐ์ธ์ ์ผ๋ก ์์ฒญ๋ ์๊ฐ์ ๋ณด๋์ต๋๋ค. ๋๋ 4.6.1์์ .NET Standard 2.0 ์ง์์ด ์ค๋จ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋ํ์ต๋๋ค. ์์ง๋ ฅ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ค์ฉ์ฑ์ ๋ฌธ์ ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋ถ๋ช
ํ ๋ชจ๋ ๊ฒ์ ๋์ํ์ง๋ ์์ง๋ง ๋งํ ํ์๋์์ด ์ฌ๋ฌ๋ถ์ด ํ ์ผ์ ๋งค์ฐ ๊ฐ๋ช
์ ๋ฐ์์ต๋๋ค (์, HttpClient
๋ธ๊พน์ง๊ณผ ๊ฐ์ ์ผ์ด ์ฒ๋ฆฌํ๊ธฐ๊ฐ ์๋นํ ๊ณ ํต ์ค๋ฌ์ ๋๋ผ๋).
๊ทธ ๋จ์๊ฐ๋์ด์ ์ ๋ง ๋ฏธ์ ํด์ : sweat_smile :
์ง๊ธ๊น์ง ASP.NET Core ์ ๋ฉด์์ Razor๋ ์ฌ๋๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ASP.NET Core ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ์ฐ๋ฆฌ๋ ๋ ๋ง์ ์์ญ์ ์๋ณํด์ผํฉ๋๋ค (๋ ์ ์ฉํ ํ ๋ก ์ด ๋ ๊ฒ์ ๋๋ค). ASP.NET Core 2.1 ๋ฐ 2.2๋ ์ฌ์ ํ .NET Framework๋ฅผ ์ง์ํ์ง๋ง .NET Framework๋ฅผ ์์ํ ์ง์ํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฟก๋ฟก
์ด์ ๋ํ ์ข์ ์๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๊ตฌํ์ ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํ์ผ๋ก ์ธํด .NET Framework๋ก ๋ฐฑ ํฌํธํ์ง ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ง์ ๋ก DIM์ด ์ฃฝ์์ต๋๋ค. ์์ ์ ์ ์ฐ์ ์งํ์ ๋๋ค. ๋ ๊ฑฐ์์ ์ ์ฉ๋์ง ์๊ณ ๋ ๊ฑฐ์์ ์๋ก์ด ๊ฒ์ ์ฐ๊ฒฐํ๋ ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ ์ฉ ํ ์ ์๋ค๋ฉด ๋๊ตฌ์๊ฒ๋ ๋์์ด๋์ง ์์ต๋๋ค.
์ง๊ธ๊น์ง ASP.NET Core ์ ๋ฉด์์ Razor๋ ์ฌ๋๋ค์ด ์ผ๋ฐ์ ์ผ๋ก ASP.NET Core ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
Microsoft.Owin.Security.Interop
backcompat 'ํจํค์ง, ASP.NET Core ๋ฐ์ดํฐ ๋ณดํธ ๋ฐ ๊ธฐ๋ณธ ์ข
์์ฑ ์ ๋ชฉ๋ก์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
์๋ ์ ์ ๊ฐ ์ ์ํ ๊ฒ๊ณผ ๊ฑฐ์ ๊ฐ์ต๋๋ค. .NET Framework์์ ๊ณ์ ์๋ํ์ง๋ง (์ :
netstandard20
๋ฐnetcoreapp30
) ํจ์ฌ ๋ ์ ์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํ๋ ASP.NET Core ํจํค์ง ํฅ๋ฏธ๋ก์ด ์ฑ๋ฅ. ๋๋๋ก ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ ์๋ํ๋ ๊ฒ์ ๋๋ค. ์๋กญ๊ณ ๋น๋๋ ๊ฒ๋ค์ด ์๋๋๋ค. ์ด๊ณ ์์ด ์๋๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํด์๋ ๋ ผ์ํ์ต๋๋ค. ๋ฌธ์ ๋ ์ผ๋ถ ๊ธฐ๋ณธ ํ๋ซํผ API ๋ฐ ๊ธฐ๋ฅ์ด ๊ณต๊ฐ API๋ก ํ๋ฌ ๋ค์ด๊ฐ์ผํ๊ธฐ ๋๋ฌธ์์ด๋ฅผ ์์ ํ ์บก์ํ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ASP.NET Core์ ๋ฏธ๋ค์จ์ด์ ํตํฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ๋ฌ ๊ตฌํ์ ์ ๊ณตํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ์ด์ ํธํ๋์ง ์๋ ๋ ๊ฐ์ง ๋ฒ์ ์ ASP.NET Core๋ฅผ ์์ฑํ๋ ๊ณต์ฉ ๊ตํ ์ ํ์ด ์ฝ์ด ์ ์ฉ ์ผ ์ ์์ผ๋ฏ๋ก ๋ถ์ด์ ์์ฑํ์ง ์๊ณ ๋ ๋ถ๊ฐ๋ฅํ ์๋ ์์ต๋๋ค.
ํํ
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ง์ ๋ก DIM์ด ์ฃฝ์์ต๋๋ค. ์ ์ฐ์ ์ ์ฒด ์งํ ์ง์ . ๋ ๊ฑฐ์์ ์ ์ฉ๋์ง ์๊ณ ๋ ๊ฑฐ์์ ์๋ก์ด ๊ฒ์ ์ฐ๊ฒฐํ๋ ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ ์ฉ ํ ์ ์๋ค๋ฉด ๋๊ตฌ์๊ฒ๋ ๋์์ด๋์ง ์์ต๋๋ค.
๋ ๊ฑฐ์ ์ฝ๋ ๋ฅผ ๊ธฐ์กด ์ค์น ์ ํตํฉํ๊ณ ์๋ค๊ณ ์๊ฐ
@terrajobst ๋น์ ์ Unity๋ฅผ ๊ณ์ ์ธ๊ธํฉ๋๋ค. ์์ฒด CLR ๊ตฌํ์ด ์์ต๋๊น? ๋๋ ๊ทธ๋ค์ด Mono๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ์ธ์์ ๋ฐ์์ต๋๋ค.
Unity์๋ ์์ฒด ๋น ๋ชจ๋ ธ AOT ๋ฒ์ ์ธ IL2CPP๋ฅผ ํฌํจํ์ฌ ์ฌ๋ฌ .NET ๊ตฌํ์ด ์์ต๋๋ค. ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ง์๋๋ API๋ ํ์ค Mono์ ๋ค๋ฆ ๋๋ค.
๋ฟก๋ฟก
๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ๊ธฐ์กด ์ค์น์ ํตํฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"๋ ๊ฑฐ์"์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฌ์ ํ ํ๋ฐํ๊ฒ ์ ์ง ๊ด๋ฆฌ๋๊ณ ๊ฐ๋ฐ๋๊ณ ์๋ ๊ฒฝ์ฐ์๋ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ํ๋ ์ ์ํฌ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ๊ณผ .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํด์ผํ๋ ๊ฒ์๋ ์์ฒญ๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
.NET Core ์ ์ฉ ๊ธฐ๋ฅ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง .NET Framework์ ๋ํด ์ปดํ์ผ ๋ ์ฝ๋๋ฅผ ๊ณ์ ์ฌ์ฉํ ์์๋ ๋์์ .NET Core๋ฅผ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค.
๋ฌด์์ ์ํด? .NET Core์ ์ด๋ฌํ "์งํ ๋"API๋ .NET Standard์ ์ ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๋ ์์ฒด API์์ ํธํ๋์ง ์๋ ๋ถ๊ธฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ๋์ด๋ฅผ ๋ง์ง ์ ์์ต๋๋ค.
@HaloFour์ ๋์ํฉ๋๋ค. DIM์ ์ฌ์ฉํ ์์๋ ์ ์ผํ ์ฌ๋์ .NET Core๋ง์ ๋์์ผ๋กํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก corefx ๋ฐ aspnetcore ๋ง ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ๊ทผ์ฒ์ ๊ฐ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์์ต๋๋ค.
DIM์ ์ฌ์ฉํ ์์๋ ์ ์ผํ ์ฌ๋์ .NET Core๋ง์ ๋์์ผ๋กํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก corefx ๋ฐ aspnetcore ๋ง ์์ต๋๋ค.
์, ๋ ๋ค๋ฅธ ํํ ๋ฐฉ์์ .NET Core, Xamarin, Mono ๋ฐ Unity์์ ์ฌ์ฉํ ์์๋ ๋์ ์ฌ์ฉํ ์์๋ ์ ์ผํ ํ๋ซํผ์ .NET Framework๋ผ๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ฌ๋์ด ๊ทธ ๊ทผ์ฒ์ ๊ฐ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์์ต๋๋ค.
๋๋ ์ด์ ๊ฐ์ ๊ธฐ๋ฅ์ด ๋์๊ด์์ ํํค ์คํฑ ์ฑํ ํจํด์ ๊ฐ์ง ๊ฒ์ด๋ผ๊ณ ์์ํ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๋ ํญ์ ๋๋ฌ ๋ฒ์ ๋ ๊ธฐ๋ฅ ์งํฉ์ ๊ณ ๋ คํฉ๋๋ค. ์ฑ์ ๊ฒฝ์ฐ ๋์ ํ๊ฒฝ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ์ ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
@ yaakov-h
ASP.NET Core์ ๋ชจ๋ ๋ถ๋ถ์ ์ ์ฉ๋ฉ๋๊น?
์ด๋ค ํจํค์ง์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง์ ๋ํ ์์ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/aspnet/AspNetCore/issues/3756
@terrajobst ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๊ตฌํ์ด C #์ ์ธ์ด ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. .NET Framework๊ฐ์ด๋ฅผ ์ง์ํ์ง ์๋๋ค๊ณ ๋งํ๋ฉด .Net Framework๊ฐ C # ๋ฒ์ 7.3 ๋๋ ๊ธฐ๊ปํด์ผ ๋ค์ ๋ฒ์ ์์ ์์ํ ๋ฉ์ถ ๊ฒ์ ๋๋ค. ๊ทธ ์ฐจ์ด๋ ์ํ๊ณ์์ ๋๊ตฌ๋ ์ผ์ด๋๊ณ ์ถ์ง ์์ ์ผ์ด ์๋๋๋ค.
๋ช ๊ฐ์ง .NET Core ์ํฌ๋ก๋๋ฅผ ์คํํ์ง๋ง ๋ค๋ ๊ฐ์ .NET FX ํ๋ก์ ํธ๋ ์คํํฉ๋๋ค.
.NET Core๋ก ์์ ํ๊ฒ ์ ๊ทธ๋ ์ด๋ (์์ํ๋ .NET Framework์์๋)๋ ๋งค์ฐ ํฐ ์์ ์ ๋๋ค.
Microsoft๊ฐ .NET FX์ ASP.NET ์ด์์์ ASP.NET Core์์ .NET FX๋ก ํ๋ก์ ํธ๋ฅผ "์ ๊ทธ๋ ์ด๋"ํ๋ ๋ฐ ๋์์ด๋๋ ์ผ๋ถ ๋๊ตฌ๋ฅผ ์ถ์ ํ ๊ณํ์ด ์์ต๋๊น?
์ VS ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋ทฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์ง๊น ํ๋ ๋ฐฉ๋ฒ์ ๋ํ MSDN ๊ธฐ์ฌ๊ฐ ์์ง๋ง ๋ ๊ฑฐ์ ํญ๋ชฉ (Global asax, ๋ผ์ฐํ , ....)์ด ๋๋ฌด ๋ง์์ ์ด์ ๊ณผ ์ ๋ฐฉ๋ฒ์ ๋ฌธ์ํ ํ ์ค์ ์์น๊ฐ ์์์ผ๋ฉดํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ ํฌํ .
์ด๋ฌํ "์ํํ"๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ ๋ ์๋ก์ด ๋ณ๋ ฌ .NET Framework ๋ฒ์ (.NET Framework 5)์ ๋์ ํ์ง ๋ชปํ๊ฒํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ทธ ์์ ์์ .NET Core 3.0์ด ์๋๋ผ๋ฉด ์ด๋ค ์ด์ ์ด ์์ต๋๊น? ์ด๋ฏธ ๋๋ํ ์๊ณ "์ํํ"๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. .NET Core์ ๋ค์ ๊ธฐ๋ฅ ์ธํธ์ .NET Framework 6 ๋ฑ์ด ํ์ํฉ๋๊น?
.NET Core 2.0์ ์ด๋ฏธ ํฌํจ ๋ API์ .NET Core 3.0์ ์ ๊ณต๋๋ ์๋ก์ด ๊ธฐ๋ฅ ์ธํธ๋ก ์ธํด .NET Core๋ ๋งค์ฐ ๊ธด LTS ๋ฒ์ ์ธ Framework 4.x์ ํจ๊ป ".NET Framework 5"๋ฅผ ์ถฉ์กฑํ์ง ๋ชปํฉ๋๊น?
์ถ์ธก์; ์ด ์์ ์์ .NET Core๋ก ์๋ํ๋๋ก .NET Framework๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ณด๋ค .NET Core 3.0์ด .NET Framework 4.x์์ ํ์ธํ ํน์ ๊ฒฉ์ฐจ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ์์ ์์ง๋์ด๋ง ๊ณผ์ ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ค์ฉ์ ์ธ ์ ์ : ASP.NET Core 2.2๊ฐ ์ผ๋ฐ์ ์ธ 3 ๋ ์ด์์ _extended_ ์ง์ ๊ธฐ๊ฐ์ผ๋ก LTS๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
์ง๊ธ์ ์ ์ฒด ํ๋ ์ ์ํฌ๋ฅผ ๊ณ ์ํด์ผํ๋ ์ฌ๋๋ค์ ๋ง์กฑ์ํค๋ฉด์ (1) ์ค์ ๋ก .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ถฉ๋ถํ ์๊ฐ๊ณผ (2) ASP.NET MVC์์ ASP๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ถฉ๋ถํ ๋๊ธฐ๋ฅผ ๋ถ์ฌํฉ๋๋ค. .NET Core (.NET Core _yet_๋ก ์ด๋ํ ์์๋ ๊ฒฝ์ฐ).
์ฌ์ ํ ์ด๊ฒ์ด ๋ช ํํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. .NET Framework์ ASP.NET Core๊ฐ .NET Core 2.1 LTS๋ฅผ ๋ฐ๋ฅด๊ฑฐ๋ .NET Framework v4.6.1 + ์ง์์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ฅด๋์ (์ฆ, .NET FX์์ ์คํ๋๊ธฐ ๋๋ฌธ์). ๊ฐ๊น์ด ๋ฏธ๋์ ์ง์๋ฉ๋๊น?
@mythz ASP.NET Core๋ ์คํํ๋ ํ๋ซํผ์ ๊ด๊ณ์์ด .NET Core ์ง์ ์๋ช ์ฃผ๊ธฐ ์ ์ ์ฉ์๋ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ .net ํ์ค์ 3.0, 4.0 ๋ฐ 5.0 ์ด์์ ๋ํด ์ค์ ๋ก ์
๋ฐ์ดํธํ๊ณ ์ค์ ๋ก ์ด๋ค ์์ ์์ .net ํ๋ ์ ์ํฌ๊ฐ .net ์ฝ์ด๋ก ์์ ํ ๋ง์ด๊ทธ๋ ์ด์
๋ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์ ๋ฌํ๋ ๊ฒ์
๋๋ค.
๋๋จธ์ง๋ ๋ชจ๋ ๋ฐ๋ง ๊ตฌ์ด ๊ฒ์
๋๋ค.
์ค๋ ์ด๋ฏธ LTS ์ง์ ๋น์ฉ์ ์ง๋ถํ๋ ๊ณ ๊ฐ์ด ์์ต๋๊น? (๊ทธ๋ฅ ์กฐ์ฌ ์ง๋ฌธ). ์ถฉ๋ถํ ์๊ฐ์ ์ผ๋ง์ ๋๊น?
@terrajobst ์ง์ง ๋ฌธ์ ๋ netstandard๊ฐ ๋ชจ ๋๋ฆฌ ์์ด๋ผ๋ ๊ฒ์ ๋๋ค. netstandard ๋์ ๋ฒ์ ์ด ์ง์ ๋ API ์ธํธ๊ฐ ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด base2.0 + span์ ๋ ๊ฐ์ API ์ธํธ๊ฐ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ API ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ค์ ๋ฐ์ ์ํค๊ณ ์ ์ฒด ํ๋ ์ ์ํฌ์์ ์ผ๋ถ API ์ธํธ ๋ง ๊ตฌํํ ์ ์์ต๋๋ค. (์ผ๋ถ API ์ธํธ๋ฅผ ์๋ต ํ ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํ๋ซํผ์์ netstandard๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.)
API ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ๋ ์ ์ํฌ์ ๊ฐ์ด ์ง์์ด ๋ํ ๋์์ ๋ํด ๋ณ๋์ ASP.NET Core ๋น๋๊ฐ ์์ฑ๋ฉ๋๋ค.
@Sebazzz ๋ ๋งค์ฐ ์ด์ํ ์ฃผ์ ์ ๋๋ค. netstandard๋ฅผ ์ฌ ์ค๊ณํ๋ ค๋ ์๋๋ก์ด ์ค๋ ๋๋ฅผ ํ์ ์ํฌ ์ ์์ต๋๊น? ์ด์ ๋ํด dotnet / standard์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐ ํ ์ ์์ง๋ง์ด ์์ด๋์ด๋ ์ด๋ฏธ ์ ์๋์ด ์ค๋จ๋์๋ค๊ณ ๋ง์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@davidfowl ๋๋ ๊ทธ๊ฒ์ด ์ ํ "์ด์ํ๋ค"๋๋ "ํ์ "์ด๋ผ๊ณ ์๊ฐํ์ง ์๋๋ค. ๊ทธ๊ฐ ์ ์ํ ๋ฐฉ์๋ณด๋ค ์กฐ๊ธ ๋ ์ธ๋ถํ๋์ด ์๋ค๋ฉด ์ ํํ ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ด ๋ชจ๋ ๋ฌธ์ ๊ฐ ์ฐ๋ฆฌ๊ฐ ์น ์๋ฒ๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์๋ Xamarin ๋ฐ Unity์ ๊ฐ์ ๊ตฌํ์์ด ๋ชจ๋ ์น ์๋ฒ ํญ๋ชฉ์ ํตํฉํด์ผํ๋ค๋ ๊ฒ์ด๋ผ๋ฉด IMO๋ ๋ณ๋์ ".NET Web Server Standard"API ๊ทธ๋ฃน์ ๋ง๋ญ๋๋ค. ์ด์์ ์ธ ์๋ฃจ์ ์ด ๋ ๊ฒ์ ๋๋ค.
ํธ์ ๋ด์ ๊ฐ๊ธฐ
@terrajobst ์ง์ง ๋ฌธ์ ๋ netstandard๊ฐ ๋ชจ ๋๋ฆฌ ์์ด๋ผ๋ ๊ฒ์ ๋๋ค. netstandard ๋์ ๋ฒ์ ์ด ์ง์ ๋ API ์ธํธ๊ฐ ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด base2.0 + span์ ๋ ๊ฐ์ API ์ธํธ๊ฐ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ํ ๋ฐฉ์ (ํ๋กํ์ผ, PCL, ๋์จํ ๊ณ์ฝ ๋ฐ .NET Standard 1.x๊ฐ ๋ ๋ฒ์ ํ ๋ ๊ณ์ฝ ์ธํธ)์์ ์ด๊ฒ์ ์๋ํ์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ (ํ๋ซํผ ๋ฒ์ ๊ณผ API ์ธํธ๊ฐ ์งํ ํ ๋) ํธํ์ฑ ๊ท์น์ ๋๊ตฌํํ๊ณ ์ดํดํ๋ ๊ฒ์ ๋๋ฌด ์ด๋ ต์ต๋๋ค. ์ค๋๋ ์ .NET Standard๋ ์คํ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ๊ฐ์ฅ ๊ทผ์ ํ ๊ฒ์ ๋๋ค. ์๋ฒฝํ์ง๋ ์์ง๋ง ์ต์ํ ๋ช ๋ถ ์์ ์ค๋ช ํ ์ ์๊ณ ์ฌ๋๋ค์ ๋จธ๋ฆฌ๊ฐ ํฐ์ง์ง๋ ์์ต๋๋ค.
.NET Standard์ ๋ํด ๋ ์์ธํ ๋ ผ์ํ๊ฒ๋์ด ๊ธฐ์์ง๋ง @davidfowl ์ด ์ฌ๊ธฐ์ ์ํ์ง ์๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ https://github.com/dotnet/standard์ ๋ฌธ์ ๋ฅผ ์ ์ถ
ํธ์ง .NET Standard ์ฃผ์์ ์ฃผ์ ์์ ๋ฒ์ด๋ ๊ฒ์ผ๋ก ํ์ํ์ต๋๋ค.
@ Shayan-To
@terrajobst ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๊ตฌํ์ด C #์ ์ธ์ด ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. .NET Framework๊ฐ์ด๋ฅผ ์ง์ํ์ง ์๋๋ค๊ณ ๋งํ๋ฉด .Net Framework๊ฐ C # ๋ฒ์ 7.3 ๋๋ ๊ธฐ๊ปํด์ผ ๋ค์ ๋ฒ์ ์์ ์์ํ ๋ฉ์ถ ๊ฒ์ ๋๋ค. ๊ทธ ์ฐจ์ด๋ ์ํ๊ณ์์ ๋๊ตฌ๋ ์ผ์ด๋๊ณ ์ถ์ง ์์ ์ผ์ด ์๋๋๋ค.
์ธ์ด ๋ณ๊ฒฝ๊ณผ ๋ฐํ์ ๋ณ๊ฒฝ์ด ํ์ํ ๊ธฐ๋ฅ์
๋๋ค. ์ ํ ์์คํ
์ ๊ท์น์ ๋ณ๊ฒฝํ๋ฏ๋ก ์ ๋ค๋ฆญ๊ณผ ์ ์ฌํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก C #์ ์ปดํ์ผํ๋ ํ๋ ์ ์ํฌ๋ฅผ ์์ง ๋ชปํฉ๋๋ค (ํ๋ ์ ์ํฌ๊ฐ ์ ๊ณตํ๋ API๋ฅผ ์ค๋ช
ํ๋ ์ฐธ์กฐ ์ด์
๋ธ๋ฆฌ ์งํฉ์ ์ ๋ฌํ๊ธฐ ๋งํฉ๋๋ค). API ๋ณ๊ฒฝ์ด ํ์ํ์ง ์์ ๋ชจ๋ C # ๊ธฐ๋ฅ (์ : null ํตํฉ ์ฐ์ฐ์ ?.
๋๋ ์ ์ญ์ ๋ฅผ์ํ _
)์ด ์ง์๋ฉ๋๋ค. ์ต์ ์ปดํ์ผ๋ฌ ๋ฐ ์ธ์ด ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ํด๋น API๊ฐ์๋ ์ด์ ๋ฒ์ ์ .NET Framework๋ฅผ ๋์์ผ๋ก ํ ๋ ์ปดํ์ผ๋ฌ๊ฐ ํญ์ ์๋ํ๋ ๋ฐฉ์๊ณผ ๋์ผํฉ๋๋ค. ์๋ฅผ ๋ค์ด .NET Framework 3.5 ๋๋ 4.0์ ๋์์ผ๋กํ๋ ๊ฒฝ์ฐ async / await๊ฐ ์๋ํ์ง ์์ต๋๋ค. Task
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 4.5 ์ด์์ด์ด์ผํฉ๋๋ค.
Man ๋๋ ๋ํฌ๋ค์๊ฒ ๋๋๋ค .. .net ์ฝ์ด๋ก ์์ ํ ์ฎ๊ฒจ๊ฐ๋ ๊ฒ์, imo, ์ฅ๊ธฐ์ ์ผ๋ก ํ ์ฌ๋ฐ๋ฅธ ์ผ์ด๊ณ ๋๋ ์ ๊ณต ํ ๋ ๋์ ์๋์ ํ์ ์ ์ ํธํ๋ค.
๊ทธ๋ฌ๋ ์ฌ๋๋ค์ ์ด๊ฒ์ ๋ํด ํ๋ฅผ ๋ผ ๊ฒ์ ๋๋ค .. ๊ทธ๊ฒ์ ์๋น ๋ถ๋ถ์ ์์ฌ ์ํต์ ๋๋ค. 2.1 3 ๋ LTS๊ฐ ๋ฐํ๋์์ ๋ fullfx์ ์ฌ๋๋ค์ 3.0์ผ๋ก ์ด๋ํ ์ ์๊ณ ์ฌ์ ํ fullfx๋ฅผ ์คํํ ์์์ ๊ฒ์ผ๋ก ์์ํ์ผ๋ฉฐ asp.net ์ฝ์ด๋ฅผ ๊ณ ์ฉ์ฃผ์ ๊ณ ๊ฐ์๊ฒ ํ๋งคํ์ฌ ์์ ์ ํํ์ ๋์ด๊ณ ์์ต๋๋ค. ์ด์ ๊ทธ๋ค์ ๊น๊ฐ๊ฐ ์๋๋ก ๋น๊ฒจ์ง ๊ฒ์ฒ๋ผ ๋๊ปด์ง ๊ฒ์ ๋๋ค. ์ฅ๊ธฐ ์๋ฃจ์ ์ผ๋ก ํ๋งค ํ ์ ํ, asp.net์ ๋ฏธ๋๋ ์ด์ (์ง๊ฐ ์ ์ผ๋ก) ์ง์ ๊ธฐ๊ฐ์ด 3 ๋ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
์ง๊ธ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ๊ฐ ๋ ์ฝ๋ค๋ ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค. ํ๋ซํผ ์ ํ์ ํญ์ ์ํ์ด ๋ ๊ฒ์ด๋ฉฐ, ์ด๋ ์ด๋ฌํ ์ฌ๋๋ค์ด ์์ํ๊ฑฐ๋ ๊ณํํ๊ฑฐ๋ ์์ฐ์ ์ฑ ์ ํ์ง ์์ ์ํ ๋ฐ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ด ๋ ๊ฒ์ ๋๋ค.
๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ .net core 3์ผ๋ก ์ด๋ํ๊ณ ์ถ์ดํ์ง๋ง, ์ ์ฌ์ ์ผ๋ก ์ข ์์ฑ์ ๊ฐ์ง ์์๋ ๊ฒ ์ธ์๋ (๋๋ ์ํ ๋ณ๊ฒฝ์ ์๋ฐ ํ ์ ์์) ์ด์ ๋ง์ด๊ทธ๋ ์ด์ ์ _ ๋ค์ ์๋ํ๊ณ _ _ ์ด๋ฒ์๋ _ ์ฅ๊ธฐ ํฌ์๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์ฝ์ํด์ผํฉ๋๋ค. . ํ๋งค๊ฐ ์ด๋ ค์ธ ์ ์์ง๋ง 3 ๋ ์ ์ง์ ์ฃผ๊ธฐ๋ก ์ธํด ๊ฐ์ ์ ์ผ๋ก ํ๋งค ํ ์ ์์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ ๋ fullfx๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ์ง๋ง,์ด๋ฅผ ์ง์ํ๋ ๋ง์ง๋ง ๋ฒ์ ์ LTS๋ฅผ ์๋น๋ ํ์ฅํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๋ธ๋ก๊ทธ, ํ์ / ์ธ์ ๋ฑ์์์ฒ๋ผ ์ด๋ค ๋ถ๋ถ์ด ์ฌ์ ํ ๋คํธ์ํฌ ํ์ค์ด ๋ ์ง, 2.1 / ์ ์ฒด ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ด ์ฌ์ ํ์ด๋ฅผ ํ์ฉํ ์์๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋ช ํํ๊ฒ ์ ๋ฌํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ด๋ฌํฐ๋ธ๊ฐ "Microsoft๊ฐ ์ ๋ด ๊ฐ๋ฐ์๋ฅผ ๋ค์ ๋ ๋๊ณ ์์ต๋๋ค"๊ฐ ๋ ์ํ์ด ํฝ๋๋ค. ๊ณต์ ํ๋ค๊ณ ๋งํ์ง ์๊ณ ์ผ์ด๋ ์์๋ ์ผ์ ๋ํด ๊ฒฝ๊ณ ํ๋ ค๊ณ ํฉ๋๋ค.
LTS์ ๋ํ ํฉ๋ฆฌ์ ์ธ ์๊ฐ์ ๋ฌด์์ ๋๊น?
6 ๋ ์ ๋? ๋๋ ๋ฉ์์ง๊ฐ ๋ฆฌ์ ์ ์์ ํฐ ์ญํ ์ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค .. ๊ฒฐ๊ตญ ์ด๋ค ์ฌ๋๋ค์ ์ด๋ค ์ผ์ด ์์ด๋ ํ๋ฅผ ๋ผ ๊ฒ์ ๋๋ค : /
ํธ์ ๋ด์ ๊ฐ๊ธฐ
์ฐธ๊ณ ๋ก Java LTS "Premier Support"๋ 5 ๋ ์ด๋ฉฐ "Extended Support"(์ ๋ฃ)๋ ์ถ๊ฐ 3 ๋ ์ ๋๋ค. LTS ๋ฆด๋ฆฌ์ค์ด๋ฉฐ ์ง๋๋ฌ ๋ฆด๋ฆฌ์ค ๋ Java 11์ ๊ฐ๊ฐ 2023 ๋ 9 ์๊ณผ 2026 ๋ 9 ์๊น์ง ์ง์๋ฉ๋๋ค.
"ํ์ฅ ์ง์"LTS ์ ๊ณต์ ์กฐ์ฌํ๊ณ ์์ผ๋ฉฐ ์ ๊ณต๋๋๋๋ก ์์ธํ ๋ด์ฉ์ ์ ๊ณต ํ ๊ฒ์ ๋๋ค. ์ด๋ .NET Framework ๋ฒ์ (2.1.x)์์ ์ง์๋๋ ASP.NET Core๊ฐ ํ์ํ ๊ณ ๊ฐ์๊ฒ ํ์ฌ LTS ์ง์ ๊ธฐ๊ฐ๋ณด๋ค ๋ ๊ธด ์ต์ ์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
๋ํ ์ฐธ๊ณ ๋ก ์ค๋ ASP.NET ์ปค๋ฎค๋ํฐ ์คํ ๋ ์ ( https://www.youtube.com/watch?v=-b59KvkWBUo&list=PL1rZQsJPBU2StolNg0aqvQswETPcYnNKL&index=0
.net ํ์ค์ ํ๊ฒํ
ํ์ญ์์ค. asp.net ์ฝ์ด๋ .netstandard2.1
๋๋ 3.0
ํ๊ณ ๋์ค์ mono ๋ฐ .netframework ์บ์น ์
์ ํ์ฉ ํ ์ ์์ง๋ง asp.net ์ฝ์ด๊ฐ netcoreapp
๋์์ด๋ฉด ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์์ ์ก์ธ์คํ๋ ค๊ณ ํฉ๋๋ค. ํด๋น aspnetcore ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค .netcoreapp
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ผํฉ๋๋ค.
.net ์ฝ์ด๋ ํญ์ .net framework
๋ฐ mono
๋ณด๋ค ๋น ๋ฅด๊ฒ ๋ฆด๋ฆฌ์ค๋ฉ๋๋ค.
mono ๋ฐ .netframework๋ microsoft start๊ฐ netcoreapp
๋ ๋ง์ ํ๋ ์ ์ํฌ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์์ผ๋ก ์ง์ ํ๋ฉด ๊ฒฐ๊ตญ .netcoreapp
์ด์
๋ธ๋ฆฌ๋ฅผ ์๋นํฉ๋๋ค (๊ทธ๋ฌ๋ฉด nuget ๋์ .netcoreapp
์๋ ๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ์ ํจ).
๊ทธ๋ ๋ค๋ฉด .netstandard
๋ .netcoreapp
๐
@ John0King ์ ASP.NET Core ์ธ๋ถ์์ ํ์ํ ์ ํ์ ์๋ฅผ ์ ๊ณตํ์ญ์์ค.
PrivateAssert="All"
๋ด๊ฐ ์ด๊ฒ์ ์ฌ์ฉ ์ฌ์ฉํ ๋ ๋๋ฌด MVC ํจํค์ง๋ฅผ ์ฐธ์กฐํ์ญ์์ค ๋ค๋ฅธ ๊ณณ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ผ๋ถ, ํด๋น ํ๋ก์ ํธ๋ MVC ์ด์
๋ธ๋ฆฌ๋ฅผ ์ฐธ์กฐ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ ๊ฐ๋ก ๋ถ๋ฆฌํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋๋ .netstandard
์ด๊ณ ๋ค๋ฅธ ํ๋๋ .netcoreapp
์
๋๋ค.๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ค ์ ํ์ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ผํ๋์ง ๋ฌธ์ ๊ฐ ๋ ๊น์? ( .netstandard
๋ .netcoreapp
). ์ค๋์ asp.net core 2.1์์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด .netstandard
๋ฅผ ์ ํํ๊ณ ์น ํ๋ก์ ํธ์ ๋ํด .netcoreapp
๋๋ net461
๋ฅผ ์ ํํฉ๋๋ค.
mono ๋ฐ .netframework๋ microsoft start๊ฐ netcoreapp์ ๋ ๋ง์ ํ๋ ์ ์ํฌ / ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์์ผ๋กํ๋ ๊ฒฝ์ฐ ๊ฒฐ๊ตญ .netcoreapp ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค (๋๊ฒ ๋์ .netcoreapp์๋ ๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฐ์ ํจ).
์ด๊ฒ์ ์ฌ๋๋ค์ด .netstandard
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๊ฒ๋๋ ๊ฒ๊ณผ .netcoreapp
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๊ฒ๋๋ ๊ฒ์ ๋ถ๋ฆฌํ๋ ค๊ณ ๋ ์ด์ฌํ ๋
ธ๋ ฅํ์ง ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค.
MVC ํํฐ ์ธํฐํ์ด์ค / ์์ฑ (์ผ๋ถ ActionFilters ๋ฐ TagHelpers ๋ฐ string, int, long ect์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ์ / ํ์ฅ ๋ฉ์๋๊ฐ ํฌํจ ๋ ๋์ฐ๋ฏธ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. PrivateAssert = "All"์ ์ฌ์ฉํ์ฌ MVC ํจํค์ง๋ฅผ ์ฐธ์กฐํ๋ฏ๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ค๋ฅธ ๊ณณ์์๋ ํด๋น ํ๋ก์ ํธ๊ฐ MVC ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ฐธ์กฐ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ ๊ฐ๋ก ๋ถ๋ฆฌํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋๋ .netstandard์ด๊ณ ๋ค๋ฅธ ํ๋๋ .netcoreapp์ ๋๋ค)
์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด๊ฑด ๋ง์ด ์ ๋ผ. MVC๋ ASP.NET Core ํ๋ ์ ์ํฌ์ด๋ฉฐ ๋ ๋ฆฝ ์คํ ํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
@davidfowl ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ฐ๋ฏธ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. asp.net ์ฝ์ด MVC ํ๋ก์ ํธ์์ ์์ ํ ๋ ํด๋น ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฝ์ ์ฑ์์๋ง ํ์ฅ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@davidfowl ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ฐ๋ฏธ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. asp.net ์ฝ์ด MVC ํ๋ก์ ํธ์์ ์์ ํ ๋ ํด๋น ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฝ์ ์ฑ์์๋ง ํ์ฅ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ง๋ ์ดํด๊ฐ ์ ๋ผ์. MVC์ ๋ค๋ฅธ ์์์ ๊ฒ๋ค์ ๊ฐ์ง๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๊น?
์ํ๊น๊ฒ๋ ๊ธฐ์
์ฉ ์ํํธ์จ์ด์์๋ ์ด๋ฐ ์ข
๋ฅ์ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. MVC ์ฉ ํ์ฌ ์ ํธ๋ฆฌํฐ + WPF ์ฉ ํ์ฌ ์ ํธ๋ฆฌํฐ + telerik ์ฉ ํ์ฌ ์ ํธ๋ฆฌํฐ ๋ฑ์ ํฌํจํ๋ '๋์ฐ๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ'...
'.NET'์ด ๋จ์ผ ํตํฉ ํ๋ซํผ์ด์์ ๋ ๋ ํฉ๋ฆฌ์ ์ด์์ต๋๋ค.
@davidfowl ์. ํฌํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ชจ๋ ๊ณณ์์ ์ด๋ฌํ ์ ํ์ ์ฌ์ฉํ ์์๋ ํด๋์ค / ๋ฉ์๋๊ฐ ์์ต๋๋ค. mvc ํ๋ก์ ํธ์์์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ฉด mvc ๊ด๋ จ ํด๋์ค / ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค, ์ด๊ฒ์ ๋น์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ์ ๊ณ์ธตํ๋๋๋ก ๊ฐ์ ํฉ๋๋ค ๐
๋ถํํ๋ ์ด๋ ์จ ํ๋ ๋ฏธ์ค ๋ฐฐํฌ๋ฅผ ์ํํ๋ ์ฌ๋์ 3 ๋ ์ด์ ์์ ์ ์ํํธ์จ์ด๋ฅผ ์ง์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด .netcore 3.0์ ๋์์ผ๋กํ๋ ์ฑ์ ์ถ์ํ์๋ง์ ๊ณ ๊ฐ์ 3 ๋ ์ ํ๋ณด ํ ํ ๊ฐ์ ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค. ์ด๋ค ์ฐ์ ์ ๊ด์ฐฎ์ ๊ฒ์ด๊ณ ์ด๋ค ์ฐ์ ์ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ด๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด .net ์ฝ์ด๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค. ๋๋ ์ค์ ๋ก ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ์ด๊ฒ์ด .net ์ฝ์ด๋ก๊ฐ๋ ๋ง์ ๊ณณ์ ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ํ .net ํ์ ์๋ต์ ์ ๋ง๋ก ์ํฉ๋๋ค.
๋ฌธ์ ๋ ASP.NET Core๊ฐ ์น ํ๋ ์ ์ํฌ๋ผ๋ ๊ฒ์ ๋๋ค. ์ด๋ค ์ฐ์ ์์ ์น ์ฌ์ดํธ ๋ฅผ ์์ ํ ์์ ํ์ง ์๊ณ 3 ๋ ์ด์ ์ด์ํ๋ ๊ฒ์ด ์์ ํ๊ฐ์? ๋ณด์ ์ทจ์ฝ์ ์ด ์๋๋ผ๋ฉด, ๋น์ ์ด ์์กดํ๋ ๊ฒ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ TLS 1.4 ๋๋ ์ฌ์ดํธ๊ฐ ์๋ก์ด watchlet์์ ์๋ํ๋๋ก ์๊ตฌํ๋ ์ฌ์ฉ์ ์ผ ๊ฒ์ ๋๋ค.
๊ทธ ์๊ฐ ๋ฒ์ ๋์ ๋น์ ์ ๋ฌด๋ชจ ๋์ ๋ ๋์ ๋ชจ๋์์ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๋ฐ์ดํธํ์ง ์๋๋ก ๋จ์ง ์์ ๋นํ๊ธฐ์ ๋ง์ด๋ ์์กด์ฑ ์ ๋ฐ์ดํธ,ํ์ง๋ง ๊ณํ์ ๋ฉ๋ฆฌ ์ป์ ์ ์์ด์ผํฉ๋๋ค.
ASP.NET Core 2.1์ LTS ๊ธฐ๊ฐ์ 5 ~ 7 ๋ ์ผ๋ก ๋๋ฆฌ๋ฉด ์ปค๋ฎค๋ํฐ์์ ๋ ์ข์์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๊ธฐ์ ์ ๊ธฐ์ ํ ๊ฐ๋ฐ์ "ํ๋์ ์ธ"์น ๊ฐ๋ฐ์ ๋นํด ๋น ๋ฅธ ์๋๋ก ์งํ๋์ง๋ง ์ฌ์ ํ ์๋นํ ์ค๋๋ ํ๋ซํผ์ ์๋ก์ด ํฌ์๋ฅผํ์ง ์๋๋กํ๊ณ ์ถ์ดํฉ๋๋ค. ์ด๋ฌํ ์์ฉ ํ๋ก๊ทธ๋จ์ 3 ๋ ์ด๋ด์ ์ฃผ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํ ํ ์์์๋ฟ ์๋๋ผ _ โโ์ถ์๊น์ง 1 ๋ ์ด์ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ํฐํ๋ผ์ด์ฆ (์ผ๋ฐ์ ์ผ๋ก ๋ด๋ถ ์ฉ) ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ข 7-10 ๋ ๋์ ์ง์๋์ง๋ง ASP.NET Core 2.1 ์ฉ LTS๊ฐ 10 ๋ ์ด๋๋ ๊ฒ์ ๋ถ๋นํ๋ค๊ณ ์๊ฐํฉ๋๋ค. 5 ๋ ์ 3 ๋ ๋ณด๋ค ๋ ๋์ ํด๊ฒฐ์ฑ ์ผ๋ก ๋๊ปด์ง๋ฉฐ, 7 ๋ ์ ๊ฑฐ์ ๋ชจ๋ ์ฌ๋์ ํธ์ํ๊ฒ ํด์ค ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ASP.NET Core 3.0์ .NET Framework ์ง์์ ์ ๊ฑฐํ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ํ์ํฉ๋๋ค. ํฅํ LTS ๋ฆด๋ฆฌ์ค๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ทธ๋ ๊ฒ ํฌ์ง ์๋ค๋ ๊ฐ์ ํ์์ด ํ์ค์ ๋ฐ๋ฅด์ง ์์์ผํฉ๋๋ค.
.NET Standard๋ฅผ .NET Core๋งํผ ๋น ๋ฅด๊ฒ ์ด๋์ํค๋ ๊ฒ์ด ์ฒ๋ฒ๋ก ๋ณด์ผ ์ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ต์
netstandard
TFM์ ๋ชฉํ๋ก ์ผ๋๋ก ๊ฐ์ํ๋ ๊ฒ์ ์์ต๋๋ค. ์ต์ API ์ธํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ํํฉ๋๋ค. ํ์ํ์ง ์์ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ ๋์์ผ๋ก ์ง์ ํ์ฌ ๋ ๊ด๋ฒ์ํ ํ๋ซํผ์์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋๋กํฉ๋๋ค.
ํ๋ซํผ์ด ๋ฐ๋ผ ์ก์ง ์์ผ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น? ๊ทธ๋ฌ๋ฉด .NET Core ๋ฐ Xamarin์์๋ง ์ฌ์ฉํ ์ ์์ง๋ง .NET Framework์์๋ ๋ถ๊ฐ๋ฅํ ๊ธฐ๋ฅ A๊ฐ ํ์ํ netstandard2.3
๋ฅผ ๋์์ผ๋กํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ netstandard2.4
๊ฐ ๋์ค๋ฉด ๋ช ๊ฐ์ง ์๋ก์ด Apis๊ฐ ์์ผ๋ฉฐ ์ด๋ฌํ API ์ค ์ผ๋ถ๋ .NET Framework๋ก ์ด์ ํ ์ ์์ต๋๋ค. ์ด์ ๋ญ์ผ?
.NET Framework์์ ์คํ๋๋ netstandad2.4์ ๊ธฐ๋ฅ์ด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์์ผ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?ํ์ง๋ง netstandard2.4
๋ netstandard2.2
๊ตฌํํ ์ ์๊ธฐ ๋๋ฌธ์ .NET Framework๋ฅผ ๋์์ผ๋ก ํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ธ ๊ฐ์ง ํ๋ซํผ์ผ๋ก ํฌ๋ก์ค ์ปดํ์ผํด์ผํฉ๋๋ค.
netstandard2.2
๊ธฐ์กด์ ํ๋ซํผ๊ณผ net4x
์ ํ์ค์ ๋จ์ง์์ ์ถ๊ฐ ๋ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด netstandad2.4
๋ฐ net4x can also implement but not support because of APIs that went into
netstandard2.3`ํฉ๋๋ค.
ํจํค์ง ์์ฑ์๊ฐ ๋๊น ํจํค์ง๋ฅผ ์์ฑํ๊ณ ๋ฐฐ์กํ๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๊น?
๋ชจ๋ ํ๋ซํผ์ด ์ง์ํ ์ต์ ๊ณตํต ๋ถ๋ชจ๊ฐ netstandard๋ก ์ ์
๋ ๋๋ง ์๋ ํ ์ ์์ต๋๋ค. ๋ ๋ง์ API๊ฐ PlatformNotSupported
์์ธ๋ฅผ ๋์ง๋ ๊ฒ์ ์ํ์ง ์๋ ํ, ๊ทธ๋ ์ง ์์ผ๋ฉด netstandard ๋ด์์ ์กฐ๊ฐํ๊ฐ ๋ฐ์ํฉ๋๋ค.
ASP.NET Core 3.0์ ๋ํ .NET Framework ์ง์์ ์ ๊ฑฐํ๋ ๊ฒ์ด .NET Core๋ก ์ด๋ํ ์์๋ ์ฌ๋๋ค์๊ฒ๋ ์ด์์ ์ด์ง ์์ ๊ฒ์ฒ๋ผ ์ด๊ฒ์ด ์ฌ๋ฌ๋ถ์๊ฒ ์ด์์ ์ด์ง ์๋ค๋ ๊ฒ์ ํ์คํ ์์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋น์ ์ด ๋ง์ดํฌ๋ก ์ํํธ๋ผ๋ ํ๋ฒํ ํ์ฌ๊ฐ .NET Core๋ก ์ฎ๊ฒจ์ผํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์์์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด ์์ ํ ํ๋ ธ์ต๋๊น? (๋๋ ๋น์ ์ด ์์ ํ๊ณ ํต์ ํ์ง ์๋ ์ธ๋ถ ์์กด์ฑ์ ๋ํด์๋ ์ด์ผ๊ธฐํ์ง ์์ต๋๋ค).
์ฌ๊ธฐ์ ์ค์ ๋ฌธ์ ๋ ๋ฌด์์
๋๊น? ASP.NET ๋ ๊ฑฐ์์์ ASP.NET Core๋ก ์ด๋ํ ์์๋ ์ฌ๋๋ค์ ASP.NET Core๊ฐ .NET Framework๋ฅผ ๋์์ผ๋กํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ด๋ํ ์ ์์ต๋๋ค. .NET Framework์ ASP.NET Core์์๋ ์๋ํ์ง ์๋ System.Web
ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ผ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ต๋๋ค. ์ง๊ธ ์์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์๋ ์ฌ๋๋ค์ ๋ถ๋ช
ํ ์ด๋ฏธ ์์
์ธํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ .NET Framework์ ASP.NET Core 2.1์ ์ฌ์ฉํ๊ณ ์๋ ์ฌ๋๋ค์ด ์๋ํ๋ค๋ฉด ์ ์ด๋ํ๊ณ ์ถ์ต๋๊น? ๋ถ๋ช ํ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ ์๊ณ ASP.NET Core 3.0์ ์๋ก ์ถ๊ฐ ๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ด ์์ผ๋ฉด ์ข์ต๋๋ค.
๊ทธ ์ธ :
์ ํ๋ฆฌ์ผ์ด์
์ .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฆ, ์ด์ ๋ชจ ๋๋ฆฌ ์ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ผ๋ถ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ด๋ฅผ ๋ง์ดํฌ๋ก ์๋น์ค๋ก ๋ค์ ๊ตฌํํ๋ฉด ์ํ์ ๋ฎ์ถ๊ณ ์๊ฐ์ ๋ฐ๋ผ ๋ถ์ฐ์ํฌ ์ ์์ต๋๋ค.
ํ๋ซํผ์ด ๋ฐ๋ผ ์ก์ง ์์ผ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น? ๊ทธ๋ฐ ๋ค์ .NET Core ๋ฐ Xamarin์์๋ง ์ฌ์ฉํ ์ ์์ง๋ง .NET Framework์์๋ ๋ถ๊ฐ๋ฅํ ๊ธฐ๋ฅ A๊ฐ ํ์ํ netstandard2.3์ ๋์์ผ๋กํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
.NET Standard๋ฅผ ์ง์ํ๋ ๋๋ถ๋ถ์ ํ๋ซํผ์์ API๋ฅผ ๊ตฌํํ ์ ์๋ค๋ฉด ํ์ค์ ์ผ๋ถ๊ฐ ์๋์ด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. (์ค์ ๋ก๋ Xamarin์ด ์คํ๋๋ ํ๋ซํผ์ด ์ผ๋ฐ์ ์ผ๋ก ํจ์ฌ ๋ ์ ํ์ ์ด๋ฏ๋ก ๊ทธ ๋ฐ๋ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค). .NET Standard์ ํฌํจ ๋ API๋ฅผ ๊ฒํ ํ ๋ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๊ฐ ๊ฐ์ง ๋ ๊ฒ์ผ๋ก ์์ํ์ง๋ง ์๋ชป๋์์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ .NET Framework์ ASP.NET Core 2.1์ ์ฌ์ฉํ๊ณ ์๋ ์ฌ๋๋ค์ด ์๋ํ๋ค๋ฉด ์ ์ด๋ํ๊ณ ์ถ์ต๋๊น?
์ ํ๋ฆฌ์ผ์ด์ ์ .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฆ, ์ด์ ๋ชจ ๋๋ฆฌ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ๋ถ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ด๋ฅผ ๋ง์ดํฌ๋ก ์๋น์ค๋ก ๋ค์ ๊ตฌํํ๋ฉด ์ํ์ ๋ฎ์ถ๊ณ ์๊ฐ์ ๋ฐ๋ผ ๋ถ์ฐ์ํฌ ์ ์์ต๋๋ค.
๋ค, ๋ฌผ๋ก ์ด๋ก ์ ์ผ๋ก๋ ๊ทธ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๋ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฌ๋:
๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์๋ชป ํด์ํ์ง ๋ง์ญ์์ค. ์ ๋ ์๋ก์ด ์ฑ์ .NET Core๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ASP.NET Core๊ฐ .NET Framework์ ํธํ๋๋ค๋ ์ฌ์ค์ ๋ง์ ํ์ฌ๊ฐ ํฉ๋ฆฌ์ ์ธ ๋น์ฉ์ผ๋ก ASP.NET Core๋ก ์ ํํ๋ ๋ฐ ๋์์ด๋์์ต๋๋ค. ๋๋ "๋๋ฌด ์ด๋ ต์ง ์์"๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก๊ฐ ์์๋ค๋ฉด ๊ฒฐ์ฝ ๊ทธ๋ ๊ฒ ์ธ๊ธฐ๊ฐ ์์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
Microsoft, 2.1 ์ง์ ์ฐ์ฅ์ ์์ฒญํ๋ ๊ฒ์ด ๋๋ฌด ๋ง์ต๋๊น? 2021 ๋ ์ ์ฐ๋ฆฌ์๊ฒ ์ถฉ๋ถํ์ง ์์ผ๋ฉฐ ์ ํ์์ํ ์ถฉ๋ถํ ์์ / ์๊ฐ๋ ์์ต๋๋ค. ์ ์ด๋ 2022 ๋ ๊น์ง๋? ์ถ๊ฐ 1 ๋ ์ ์ฐ๋ฆฌ์๊ฒ ๊ณ ํต ์ค๋ฝ์ง๋ง ๋ณํ๋ฅผ ๋ง๋ค ์์๋ ๊ธฐํ๋ฅผ ์ ๊ณต ํ ๊ฒ์ ๋๋ค.
๋ง์ ํ์ฌ ๊ณต๊ธ ์ ์ฒด๊ฐ ์์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ .Net Core ํธํ์ฑ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ง ์์์ผ๋ฉฐ ์ด๊ฒ์ด ์ค๋จ์ ๊ฐ์ฅ ํฐ ์ด์ ์ ๋๋ค.
์ฐธ๊ณ ๋ก https://github.com/aspnet/AspNetCore/issues/3753#issuecomment -434521855
ํ์๋ ํ์์ ๋ฐ๋ผ LTS๋ฅผ ํ์ฅํ๋ค๊ณ ์๊ฐํ์ง๋ง .NET FX์์ ASP.NET Core๋ฅผ .NET FX ์ง์ ์ฃผ๊ธฐ๋ก ๋กค๋งํ๋ IMO๋ ๊ณ ๋ คํด์ผํฉ๋๋ค. ์ฐ์ .NET Framework์ ์๋ก ๋ค๋ฅธ ๋ถ๋ถ์ ์๋ก ๋ค๋ฅธ ์ง์์ฃผ๊ธฐ์๋๊ณ ํจ๊ป ๋กค๋งํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ผ ๊ฒฝ์ฐ ํผ๋ ์ค๋ฝ์ต๋๋ค. ๋ ๋ฒ์งธ๋ก 2.1 ์ฉ ์ฝ๋๋ ์ด๋ฏธ ์์ฑ, ๋ฆด๋ฆฌ์ค ๋ฐ ์์กดํ๋ฏ๋ก .NET Core 3.0๊ณผ ์ฐ๊ณํ์ฌ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ๋ณด๋ค 2.1์ ์ง์ํ๋ ๋ฐ ํจ์ฌ ์ ์ ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค. ๊ฐ์ ํ์ด ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ์ ์งํ๊ณ ์๋ค๋ฉด, ์ต๊ทผ์ ๋ ์น์ํ ๋ชจ๋ ์ ASP.NET Core ํ์ฑ ์ฝ๋ ๊ธฐ๋ฐ์ด ์์ ํ ๋ค๋ฅธ ๊ธฐ์กด ASP.NET ์ฝ๋ ๊ธฐ๋ฐ๋ณด๋ค ๋ ์ฝ๊ฒ ์ง์ํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
MS๋ 2012 ๋ Silverlight 5์ EOL์ ๋ฐํํ์ ๋ 2021 ๋ 10 ์๊น์ง ๊ณ์ ์ง์ํ๊ณ ์์ต๋๋ค (2015 ๋ Chrome๊ณผ 2017 ๋ Firefox์์ ์ญ์ ๋์์์๋ ๋ถ๊ตฌํ๊ณ ). ์ด๊ฒ์ ์์ ํ ํฌ๊ธฐ ๋ ๊ธฐ์ ์์ํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋์ฒด๋ก ๋์ผํ ์ฝ๋ ๊ธฐ๋ฐ, ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ, ํ์ฑ ๊ฐ๋ฐ ํ์ด ์ฌ์ ํ ์์ ์ค์ด๋ฉฐ, ํ๊ธฐ ๋ .NET Framework์์ ๊ธฐ์กด ์ํํธ์จ์ด ๋ง ์คํํ๊ณ ์์ต๋๋ค.
์ด ๋ฐํ ์ด์ ์ MS๋ Windows ์ ์ฉ ์ํฌ๋ก๋ (๊ต์ฐจ ํ๋ซํผ / ๊ณ ์ฑ๋ฅ ์ํฌ๋ก๋์ .NET Core์ ๋ฌ๋ฆฌ)์ ์ ํฉํ๊ณ ASP.NET Core๊ฐ ๋ฏธ๋๋ผ๋ ๊ฐ๋ ฅํ ๋ฉ์์ง์ด .NET Framework๋ฅผ ํฌ๊ธฐํ์ง ์์์ต๋๋ค. ์ฌ๋ฌ ํ๋ซํผ์ ๋์์ผ๋กํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐํ๊ธฐ์ํ ์๋ฃจ์ ์ผ๋ก .NET Standard๋ฅผ ์ฌ์ฉํ์ฌ ํฅํ .NET Framework ๋ฐ .NET Core๋ฅผ ๋ชจ๋ ์ง์ํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ.
์ด์ .NET Core๊ฐ ๋ชจ๋ ์๋ก์ด ํ๋ก์ ํธ์ ๋ฏธ๋๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ง๋ง ์ง๊ธ๊น์ง์ด ์ง์นจ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ์ ๋ด๋ฆฐ ๊ธฐ์กด ํฌ์ ๋ฐ ๊ธฐ์กด ๊ณ ๊ฐ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ธฐ์กด .NET ๊ฐ๋ฐ ํ์ ๊ธฐ์กด ์์คํ ์ ์ง์ํด์ผ ํ ๋ ์ด๋ป๊ฒ ์งํํ๊ณ ์์ต๋๊น? ์๋ก์ด ์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ปจํ ์คํธ๋ฅผ ์ ํํ๋ ๋์ ํด๋์ ASP.NET (๊ธฐ์กด ๊ธฐ์ / ์ง์์ด ํ๋ฃจ๊ฐ ์ง๋จ)์ ๋จธ๋ฌผ๋ฌ์ผํฉ๋๋ค. .NET Core์์.
.NET Framework์์ ์์คํ ์ ์ ์ง ๊ด๋ฆฌํด์ผํ๋ค๋ฉด ํ์ฑ ์ง์ ๊ธฐ๋ฐ / ์ํ๊ณ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด์๋ ์๋ก์ด ASP.NET ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์์ ๊ฐ๋ฐ ํ ๋ค์ ์ด์ ASP.NET์ ์ฌ์ฉํ๋๋ก ๊ฐ์ ๋ก ๋ ๋๋ฆฌ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๋ฌด๊ธฐํ์ด์ง๋ง FX์ ASP.NET Core๊ฐ WebForms์ ๋์ผํ ์์ค์ ์ง์์ ์ ๊ณตํ์ง ์๋ ํ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
MS๋ ๋ํ FX์์ ASP.NET Core๋ฅผ "์์ ์ ์ธ"๊ฐ๋ฐ ํ๊ฒฝ (์ฆ, ASP.NET Core 2.1์์ ๊ณ ์ )์ผ๋ก ํฌ์ง์ ๋ ํ ์ ์์ต๋๋ค. .NET Core๊ฐ ์์๋ ์ดํ ์ง๋ ๋ช ๋ ๋์ .NET ๊ฐ๋ฐ์๊ฐ๋๋ ๊ฒ์ ์ฝ์ง ์์์ต๋๋ค. .NET Core <1.x๋ก ์ด์ํ๋ ค๋ ๋ชจ๋ ๋ ธ๋ ฅ์ ์ฌ์ค์ ํฌ๊ธฐํด์ผํ์ต๋๋ค. ๋์์๋ ๋ณํ์ ํ๋ฆ์ ๋ฐ๋ผ ์ก๊ธฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค. .NET Core 2.x๊ฐ ๊ฐ๋ฅํ ๋๊น์ง๋ง ๊ฐ๋ฅํ์ต๋๋ค. ์ด๋ฅผ ์ง์ํ๊ณ ๊ธฐ์กด ์ฑ์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ๋ฐ๋ฉด์ ๊ธฐ์กด ASP.NET Framework ๊ฐ๋ฐ์๋ ์ ํํ ํ๋ซํผ์ด ์ ์ฒด ๋ ๋ค์ ์๋ก์ด ASP.NET Core ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๋ก ๋์ฒด๋๊ณ ํ์ฅ์ผ๋ก ์ธํด ๊ธฐ์กด ๊ธฐ์ / ์ง์์ด ์ฝํ๋๋ ๊ฒ์ ๋ชฉ๊ฒฉํ์ต๋๋ค. FX์์ ASP.NET Core์ ๋ํ ์ง์์ ์ข ๋ฃํ๋ฉด ์ ์ฒด ์์คํ ์ .NET Core๋ก ์ ๊ทธ๋ ์ด๋ ํ ์์๋ ๊ฒฝ์ฐ (์ํ ๋๋น) ๋ฒ๋ ค์ง ํ๋ซํผ์์ ์คํ๋ ์ํ์ด์๋ .NET Core์ ๋ํ ์ธ๊ธฐ์๋ ๋จ๊ณ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ด ์ข ๋ฃ๋ฉ๋๋ค (์ํ ๋ง์ด๊ทธ๋ ์ด์ ์๋๋ฅผ ๊ณ ๋ คํ์ง ๋ชปํ๊ฒ ํ ์ ์์) ๋ํ ๋งค์ผ ์์ ํ๋ ๊ธฐ์กด ์์คํ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์์๋ ๊ฒฝ์ฐ ํฅํ ASP.NET Core ๊ฐ๋ฐ ๋ชจ๋ธ์ ์ฐธ์ฌํ ์์๋ ๊ธฐํ๋ ์์ด์ง๋๋ค. WebForms์ ๋์ผํ ์ง์์๋ฐ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค. ์์ง ๊ณ ๋ ค ์ค์ ๋๋ค.
์๋ฌด๋ ์ธ๊ธํ์ง ์์์ต๋๋ค. asp.net ํต์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ WCF ์๋น์ค๋ฅผ ํธ์คํ ํด์ผํ๋ฉฐ ์ด๊ฒ์ด .net ํ๋ ์ ์ํฌ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์ ์ผํ ๋ฌธ์ ์ ์ ๋๋ค. ์ฌํ๊ฒ๋ .net core 3์์ ์๋ฒ ์ธก wcf ์ง์์ ๋ํ ์์์ด ์์ต๋๋ค.
@DamianEdwards @davidfowl @natemcmaster ์ฐ๋ฆฌ๋ ๊ฐ์ ๋ฐฐ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ฌ๋ .Net Full ํ๋ ์ ์ํฌ์ ASP.Net Core์์ ์คํ๋๋ ์ฌ๋ฌ ์ ํ์ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ, ์ฐ๋ฆฌ๊ฐ ํ๋งคํ๋ ์ฐ์ ์ด ์ผ๋ง๋ ๋๋ฆฌ๊ฒ ์์ง์ด๊ณ ์๊ธฐ ๋๋ฌธ์ 3 ๋ ๋ณด๋ค ํจ์ฌ ๋ ์ค๋ ์๊ฐ ๋์ ์ด๋ฌํ ์ ํ์ ์ง์ํฉ๋๋ค. .net ์ฝ์ด 2.2 ์ฉ LTS๋ฅผ ํ์ฅํ๋ ๊ฒ์ ASP.net ์ฝ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ASP.Net์ผ๋ก ์ด์ํด์ผํ๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ํฉ์์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์คํ ์ด๊ฒ์ ํฌ์ธํธ ๋ ์์ ๋ฌผ๋ฆฌ ์น๊ณ ์์ต๋๋ค! ๋ ์งง์ ๊ธฐ๊ฐ ๋์ ์ง์ ์ ์ฒญ์ ์ ์ ํ์๊ฒ ์ต๋๊น? ๋ถํํ๋ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํต์ ํ ์์๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ผํ๋ ์ฐ์ ์ ์๋ก์ด ์ํํธ์จ์ด๋ฅผ ์ถ์ํ๋ ๋ฐ 1 ๋ ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ถํํ๋ ์ด๋ ์จ ํ๋ ๋ฏธ์ค ๋ฐฐํฌ๋ฅผ ์ํํ๋ ์ฌ๋์ 3 ๋ ์ด์ ์์ ์ ์ํํธ์จ์ด๋ฅผ ์ง์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด .netcore 3.0์ ๋์์ผ๋กํ๋ ์ฑ์ ์ถ์ํ์๋ง์ ๊ณ ๊ฐ์ 3 ๋ ์ ํ๋ณด ํ ํ ๊ฐ์ ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค. ์ด๋ค ์ฐ์ ์ ๊ด์ฐฎ์ ๊ฒ์ด๊ณ ์ด๋ค ์ฐ์ ์ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ด๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด .net ์ฝ์ด๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค. ๋๋ ์ค์ ๋ก ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ์ด๊ฒ์ด .net ์ฝ์ด๋ก๊ฐ๋ ๋ง์ ๊ณณ์ ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ํ .net ํ์ ์๋ต์ ์ ๋ง๋ก ์ํฉ๋๋ค.
@davidfowl https://github.com/aspnet/AspNetCore/issues/3753#issuecomment -434594997
์ค, ์ด๊ฒ์ ๋น์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ์ ๊ณ์ธตํ๋๋๋ก ๊ฐ์ ํฉ๋๋ค ๐
์ด ์ฃผ์ฅ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์๋ํ์ง ์์ต๋๊น?
๋ด๊ฐ ์ดํดํ ์์๋ ๊ฒ์ ์ค์ ๋ก ASP.NET Core์ ์ ์ ํ ๊ณ์ธตํ ์ํคํ
์ฒ๋ฅผ ๋ฐฉํดํ๋ ๊ฒ์
๋๊น?
์, Span<T>
์ ๊ฐ์ ์ผ๋ถ ๋ฐํ์ ๊ธฐ๋ฅ์ .Net Framework์์ ์ฌ์ฉํ ์ ์์ง๋ง ์ ํ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์ฌ์ฉํ ์ ์์ง๋ง .Net ์ฝ์ด๋งํผ ์ฑ๋ฅ์ด ๋จ์ด์ง๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
์ผ๋ถ ์ ์์ค ๊ตฌํ์ ํนํ .net ์ฝ์ด ๋ฐ .net ํ์ค์ ๋ํ ๋ณํ์ผ๋ก ๊ตฌํ ๋ ์ ์์ต๋๋ค. API๋ ์ผ๋ฐ์ ์ผ๋ก NuGet ํจํค์ง๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ด ์ฌ์ง๊ฐ ๋ง์ง ์์ ๊ฒ์
๋๋ค.
๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๊ฐ ์๋ก ๋ค๋ฅธ ํ๋ซํผ์ ๋ํด ์๋ก ๋ค๋ฅธ ๊ตฌํ์ ์ง์ํฉ๋๋ค. ์ด๊ฒ์ด ํญ์ ๊ทธ๋ ์๋ ๊ฒ์
๋๋ค.
.Net Framework / .Net Standard๋ฅผ ์ง์ํ์ง ๋ชปํ๊ฒํ๋ ๊ฒ์ด ์ ํํ ๋ฌด์์ธ์ง ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ํ๋ซํผ ๋ณ ๊ตฌํ์ ์ํด ์ถ์ํ ํ ์์๋ ๋ช ๊ฐ์ง ๊ฐ๋จํ ์๋ ๋ฌด์์ ๋๊น?
.Net Framework / .Net Standard๋ฅผ ์ง์ํ์ง ๋ชปํ๊ฒํฉ๋๋ค. ํ๋ซํผ ๋ณ ๊ตฌํ์ ์ํด ์ถ์ํ ํ ์์๋ ๋ช ๊ฐ์ง ๊ฐ๋จํ ์๋ ๋ฌด์์ ๋๊น?
๋จธ๋ฆฟ์์์ ๋ฐํ์ ๋๋ ํ๋ ์ ์ํฌ ๋ณ๊ฒฝ์ด ํ์ํ ํญ๋ชฉ
MemoryMarshal.CreateSpan<T>(ref T reference, int length)
Utf8String
์ด๋ณด๋์ค ์์ดํ
๋ ์ด์ ๋ท ํ๋ ์ ์ํฌ๋ฅผ ์ง์ํ์ง ์๋ ๋ท ์คํ ๋ค๋ ๋ฒ์ ์ ๊ฐ์ง ์์๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. Windows Phone์ด 1.2 ์ด์์ netstandard ์ง์์ด์๋ ๊ฒ์ฒ๋ผ. ํ์ค์ ์์ผ๋ก ๋์๊ฐ๊ณ netcore, mono, xamarin ๋ฑ๊ณผ ๊ฐ์ ๊ตฌํ์ด ๊ฒฐ๊ตญ ์ผ์นํ๊ฑฐ๋ ๊ฒฐ์ฝ ์ผ์นํ๋๋ก ํ์ฉ ํ ์์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ฐ ๋ค์ ์ ์ฉ ๋ฒ์๋ฅผ ์ต๋ํํ๊ธฐ ์ํด ๊ตฌํํ netstandard ๋ฒ์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์์์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค.
์ด ๋ณ๊ฒฝ์ผ๋ก ์ธํด xamarin ๋ฐ mono๋ ๋ ์ด์ aspnetcore๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์กฐ์ ์ฒด๊ฐ netcore์ netstandard๋ฅผ ๋ชจ๋ ๋์์ผ๋กํ๊ฑฐ๋ ๋ ๋์๊ฒ๋ netstandard๋ฅผ ๋ชจ๋ ํฌ๊ธฐํ๊ณ netcore ๋ง ๋์์ผ๋ก ์ง์ ํด์ผํฉ๋๋ค.
์ด๊ฒ์ ๊ถ๊ทน์ ์ผ๋ก netstandard์ ์ฃฝ์์ผ๋ก ์ด์ด์ง ๊ฒ์ ๋๋ค.
.Net Framework / .Net Standard๋ฅผ ์ง์ํ์ง ๋ชปํ๊ฒํฉ๋๋ค. ํ๋ซํผ ๋ณ ๊ตฌํ์ ์ํด ์ถ์ํ ํ ์์๋ ๋ช ๊ฐ์ง ๊ฐ๋จํ ์๋ ๋ฌด์์ ๋๊น?
๋จธ๋ฆฟ์์์ ๋ฐํ์ ๋๋ ํ๋ ์ ์ํฌ ๋ณ๊ฒฝ์ด ํ์ํ ํญ๋ชฉ
- ๋ด๋ถ GC ํฌ์ธํฐ; ๋ฐ๋ผ์ ๊ฐ์ฒด์์ด ์ฐธ์กฐ์์๋ง ์์ ํ Span ์์ฑ :
MemoryMarshal.CreateSpan<T>(ref T reference, int length)
Utf8String
์ด- ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๊ตฌํ
- ์ค๋ ๋ ํ ์ฌ์ฉ์ ์ ์ ์์ ํญ๋ชฉ
- ๊ธฐ๋ณธ ์ ํ์ ๋ํ ์คํฌ ์ค๋ฒ๋ก๋ : Stream, Sockets, TextReader / TextWriter, WebSockets
- ๊ธฐ๋ณธ ์ ํ์ ๋ํ IAsyncDisposable ์ค๋ฒ๋ก๋ : Stream, Sockets, TextReader / TextWriter, WebSockets ๋ฑ
- ๊ธฐ๋ณธ ์ ํ์ ๋ํ IAsyncEnumerator ์ค๋ฒ๋ก๋ : Stream, Sockets, TextReader / TextWriter, WebSockets ๋ฑ
๋ณด๋์ค ์์ดํ
- ํ๋์จ์ด ๋ด์ฅ ํจ์ (x86, x64, ARM)
- ์ด์ค์ผ์ดํ ๋ถ์ (์คํ ํ ์ ํ ๋น)
- ๋ณ๋ ฌ ๋ฐํ์ ๋ฒ์
- ๋ฐ์ธ๋ฉ ๋ฆฌ๋๋ ์ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ ์์
์ฒซ ๋ฒ์งธ ๋ชฉ๋ก์ ํญ๋ชฉ์ netstandard ๋ณ๊ฒฝ ํ๋ณด๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๊น?
๋๋ถ๋ถ์ ๋ค๋ฅธ ๋ฐํ์์ผ๋ก ๊ฐ์ ธ ์ค๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ง ์์ง๋ง, ์๋ฌด๋ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๊ตฌํ์ .NET Framework๋ก ๊ฐ์ ธ ์ค๊ธฐ ์ํด ์ ๋ฒ์ ์ผ๋ก CLR์ ๊ฐ์ ํ๋ ๊ฒ์ ์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋์์ Microsoft๋ .NET Framework์ ์์ํ ํธํ๋์ง ์๋ .NET Standard ๋ฒ์ ์ ์ถ์งํ๊ณ ์ถ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ ์ค์ ๋ก ๋ฌธ์ ๊ฐ๋์ง ์์ ๊ฒ์
๋๋ค. netstandard30
๋๋ netstandard40
ํ๊ณ Framework ์ง์์ ์ค๋จํ์ญ์์ค. .NET Core๊ฐ ์ด๋ฌํ ์๋ก์ด ํ์ค ์ค ํ๋๋ฅผ ๋์์ผ๋กํฉ๋๋ค.
์ด ์ค๋ ๋ ๋ฑ์ Microsoft๊ฐ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์์ ๊ทธ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋์์ Microsoft๋ .NET Framework์ ์์ํ ํธํ๋์ง ์๋ .NET Standard ๋ฒ์ ์ ์ถ์งํ๊ณ ์ถ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์์งํ์ง ์์; .NET Standard 2.1์ด ๋ง๋ฌด๋ฆฌ๋๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ ํ๋ ์ ์ํฌ ์ ํ์ ๋ํ Span
์ค๋ฒ๋ก๋๋ฅผ ํฌํจํ์ฌ .NET Standard 2.0์ ๋ํ 3104 ๊ฐ์ ์๋ก์ด API ๊ฐ ์์ต๋๋ค. .NET Framework์ ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
.NET Standard๋ ๊ณ์ ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ ์ค์ ๋ก ๋ฌธ์ ๊ฐ๋์ง ์์ ๊ฒ์ ๋๋ค. netstandard30 ๋๋ netstandard40์ผ๋ก ์งํํ๊ณ ํ๋ ์ ์ํฌ ์ง์์ ์ค๋จํ์ญ์์ค. .NET Core๊ฐ ์ด๋ฌํ ์๋ก์ด ํ์ค ์ค ํ๋๋ฅผ ๋์์ผ๋กํฉ๋๋ค.
๋ฌธ์ ๋ ํ๋ ์ ์ํฌ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ๋ฐํ์์ ์๋ก์ด ํ์ค ์ค ํ๋์ ํธํ๋์ง ์๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ทธ ํ ๋ชจ๋ ํ์ค๊ณผ ํธํ๋์ง ์์ต๋๋ค. .NET Standard์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๊ตฌํํ ์์๋ ๊ฒ์ผ๋ก ๋ค์ํ ๋ฐํ์์์ ๋์ํด์ผํฉ๋๋ค.
Mono์ Unity์ ๋ค์ํ GC๊ฐ ๊ณง ๋ด๋ถ ํฌ์ธํฐ๋ฅผ ์ง์ํฉ๋๊น? .NET Standard์ ์ถ๊ฐํ์ง ์์ผ๋ฉด GC๊ฐ์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ก ๋ณ๊ฒฝ ๋ ๋๊น์ง ํฅํ .NET Standard์์ ํด๋น .NET Standard์์ ์ฐจ๋จ๋ฉ๋๋ค. ํ๋; ์ง๊ธ ๊ตฌํํ ์์๋ api๋ฅผ ์ถ๊ฐํ๊ณ ํฅํ ํ์ค์ผ๋ก ์ฌ์ฉํ ์์๋ API๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Core์ ์ถ๊ฐ๋๋ API๊ฐ ์๊ตฌ์ ์ผ๋ก ๊ณ ์ ๋๊ณ ๋ชจ๋ ๋ฐํ์์ ๊ฐ์ ํ๋ ์ฌ๋ฐ๋ฅธ API์ ๋๊น? ๋ค์ ํ์ค๊ณผ ํธํ๋๊ธฐ๋ฅผ ์ํ๋ ๊ฒ์ ๋๊น?
์ผ๋ถ Core 2.1 API๋ ์ฌ์ฉ ํผ๋๋ฐฑ์ผ๋ก ์ธํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ 1๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 2 ์ฌ์ด์ ๋ณ๊ฒฝ๋์์ต๋๋ค. ๋ฐ๋ผ์ Core X์ ์๋ก์ด API๊ฐ ๋ฌด์์ธ์ง ์๊ธฐ์กฐ์ฐจ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ตฌํํ ๋ชจ๋ ๋ฐํ์์ ๋ํด ํ์ค์ ์ถ๊ฐ ํ ์ฌ๋ฐ๋ฅธ ์งํฉ์ด ๋ฌด์์ธ์ง (๋๋ ๋ค์ ๋จ๊ฒ๋ฉ๋๋ค).
.NET Standard์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ ํ์ค์ด ์ฑํ๋๊ธฐ ์ ์ 2 ๊ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ํ์ค๋ณด๋ค ํจ์ฌ ๋ ๊ณต๊ฒฉ์ ์ ๋๋ค.
์๋ก์ด .NET Standard๊ฐ .NET Core์ ๋์์ ์ ๊ณต ๋ ์ ์๊ณ ๋ชจ๋ ๋ฐํ์์ด์ด๋ฅผ ์ฆ์ ๊ตฌํํ ์ ์๊ณ ASP.NET Core๊ฐ .NET Standard๋ฅผ ํตํด ๋ชจ๋ ์๋ก์ด API๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ข์ง๋ง ์ค์ฉ ์ ์ด์ง๋ ์์ต๋๋ค. .NET Core์์ ๊ตฌํ๋์ง ์์ ์น์ธ ๋ API ๋
๊ธฐ๋ณธ์ ์ธ ์ง๋ฌธ์ ASP.NET Core๊ฐ ์์ฒญํ API๋ฅผ ์ฌ์ฉํ๊ณ ํจ๊ป ์ ๊ณต๋๋ .NET Core ๋ฒ์ ์ผ๋ก ์ ๊ณต ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค (๋์์ ์ ๊ณต๋จ). ๋๋ ์ด์ ๋ฒ์ ์ .NET Core์ ์ ๊ณต๋ API ๋ง ์ฌ์ฉํ ์ ์์ต๋๊น? ๋ฐ๋ผ์ ํด๋น .NET Core์ .NET Standard ๋ฒ์ ์์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น? (.NET Standard ๋ฒ์ ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ํ์ฌ .NET Core๋ณด๋ค apis 1 ๋ฒ์ ์ด ๋ค์ฒ ์ง ๊ฒ์ ๋๋ค. ์ํ ํฌ๊ธฐ 1 ์ฌ์ฉ)
ASP.NET Core์์ api๋ฅผ ์ฌ์ฉํ ์์๋ ๊ฒฝ์ฐ ๊ทธ๋ฐ ๋ค์ api๋ ์ฌ์ฉ ํ ์คํธ๋ฅผ ๋ฐ๊ณ ์ข์ api์ธ์ง ํ๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ ๋์ API๋ฅผ ์ ์ ํ ์ ์์ต๋๋ค. ASP.NET Core์์ ์ฌ์ฉํ ์์๋ ๊ฒฝ์ฐ .NET Standard ํ๋ณด๊ฐ ๋ ๋ ์ข์ api์ธ์ง ์ฌ๋ถ๋ ์์ง ์ ์ ์์ต๋๋ค.
์๋ฌด๋ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค ๊ตฌํ์ .NET Framework๋ก ๊ฐ์ ธ ์ค๊ธฐ ์ํด ์ ๋ฒ์ ์ผ๋ก CLR์ ๊ฐ์ ํ๊ณ ์ถ์ดํ์ง ์์ต๋๋ค.
๊ธฐ์กด .NET Framework ์ํฌ๋ก๋ (WinForms ๋ฐ WPF ํฌํจ)๋ฅผ ์ง์ํ๋ .NET Core๋ ๋ณธ์ง์ ์ผ๋ก CLR์ ๊ฐ์ ์ ๋๋ค. ํ์ง๋ง ๋ ์ง์ ๊ฐ๋ฅํ๊ณ ๋ฏธ๋๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ํ ๋์์ต๋๊น?
์ด ์์งํ์ง ์์; .NET Standard 2.1์ด ๋ง๋ฌด๋ฆฌ๋๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ ํ๋ ์ ์ํฌ ์ ํ์ ๋ํ Span ์ค๋ฒ๋ก๋๋ฅผ ํฌํจํ์ฌ .NET Standard 2.0์ ๋ํ 3104 ๊ฐ์ ์๋ก์ด API๊ฐ ์์ต๋๋ค. .NET Framework์ ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
.NET Framework 4.8 ๋ฐ .NET Framework 4.9 ํฌํจ?
ํฅํ ํ๋ ์ ์ํฌ ์ ๋ฐ์ดํธ๊ฐ ์ด๋ฌํ ์๋ก์ด API๋ฅผ ์ป์ ๊ฐ๋ฅ์ฑ์ ํญ์ ์์ต๋๋ค. ํ์ฌ๋ก์๋ .NET Framework๊ฐ DIM์ ์ป์ง ๋ชปํ๋ฏ๋ก DIM ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ .NET Framework๋ก ํฌํ ํ ์ ์์ต๋๋ค.
๊ธฐ์กด .NET Framework ์ํฌ๋ก๋ (WinForms ๋ฐ WPF ํฌํจ)๋ฅผ ์ง์ํ๋ .NET Core๋ ๋ณธ์ง์ ์ผ๋ก CLR์ ๊ฐ์ ์ ๋๋ค. ํ์ง๋ง ๋ ์ง์ ๊ฐ๋ฅํ๊ณ ๋ฏธ๋๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ํ ๋์์ต๋๊น?
๊ทธ๋ฆฌ๊ณ ์ญ๋ฐฉํฅ ์ฆ๋ช ์ด ์๋๋๋ค. Microsoft๊ฐ .NET Core์์ ์คํ๋๋ Paint.Net๊ณผ ๊ฐ์ ๊ฒ์ ๋ณด์ฌ์ค ๊ฒ์ฒ๋ผ .NET Core์์ ๊ธฐ์กด ์๋ฒ ์ธก ํ๋ก์ ํธ๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ์ฌ๋๋ค๋ ์คํํ ์ ์์ต๋๋ค.
์๋ก์ด .NET Standard๊ฐ .NET Core์ ๋์์ ์ ๊ณต ๋ ์ ์๊ณ ๋ชจ๋ ๋ฐํ์์ด์ด๋ฅผ ์ฆ์ ๊ตฌํํ ์ ์๊ณ ASP.NET Core๊ฐ .NET Standard๋ฅผ ํตํด ๋ชจ๋ ์๋ก์ด API๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ข์ง๋ง ์ค์ฉ ์ ์ด์ง๋ ์์ต๋๋ค.
์ด๊ฒ์ ์ค์ฉ์ ์ด์ง ์์ ์๋ ์์ง๋ง ASP.NET Core์ ๋ ๊ฐ์ง ๋ฒ์ ์ด์์ ์ ์๋ค๋ฉด ์ฌ๋๋ค์ด ์ ๋ฐ์ ์ผ๋ก ์กฐ๊ธ ๋ ํ๋ณต ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
.NET Core์ ์ฐ๊ฒฐํ๋ฉด ๋ชจ๋ ์ฌ๋์ด ๋ง์กฑํ์ง ์๋ ํธ๋ ์ด๋ ์คํ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋น ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ์ถ๋ก ์ ์ป์์ง๋ง ์ ๋ฐ์ ์ธ .NET ์ํ๊ณ์ ๋ํ ํฉ๋ฒ์ ์ธ ์ฐ๋ ค๋ ์์ต๋๋ค.
- .NET Core์ ์ฐ๊ฒฐ๋์ด ์๊ณ ์ํ๋ ์ API๋ฅผ ์ฌ์ฉํ ์์๋ ๋น ๋ฅด๊ฒ ์์ง์ด๋ ์ต์ ๋ฒ์ ์ ๋๋ค.
- .NET Standard์ ์ฐ๊ฒฐ๋๊ณ ๋ ๋ง์ ๊ณณ์์ ์คํ๋๋ ๋๋ฆฌ๊ฒ ์์ง์ด๋ LTS ๋ฒ์ ๊ฒฐ๊ตญ ์ค๋๋ ์ต์ ๋น๋๋ฅผ ๋ฐ๋ผ ์ก์ง ๋ง ํญ์ ๋ค์ฒ์ง๋๋ค.
๋ฐ๋ผ์ ASP.NET Core 3.0์ด .NET Core 3.0์ผ๋ก ๋ง ๋์จ๋ค๋ฉด; ๊ทธ๋ฌ๋ ๋์ค์ api๊ฐ์๋ .NET Standard๊ฐ๋์์ ๋; .NET Standard ์ธ ASP.NET Core 3.x ์ฉ ํจํค์ง๋ ์ถ์๋์์ต๋๋ค (ASP.NET Core๊ฐ 4.0์ผ๋ก ์ด๋ ํ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค). ๊ทธ๊ฒ์ด ๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๊น?
@ yaakov-h
.NET Standard์ ์ฐ๊ฒฐ๋๊ณ ๋ ๋ง์ ๊ณณ์์ ์คํ๋๋ ๋๋ฆฌ๊ฒ ์์ง์ด๋ LTS ๋ฒ์ ๊ฒฐ๊ตญ ์ค๋๋ ์ต์ ๋น๋๋ฅผ ๋ฐ๋ผ ์ก์ง ๋ง ํญ์ ๋ค์ฒ์ง๋๋ค.
์ด๊ฒ์ ๋ฌด์์ ์๋ฏธ ํ๋๊ฐ? @DamianEdwards๊ฐ ์ธ๊ธ ํ ํ์ฅ ์ง์๊ณผ ํจ๊ป ํญ์ ASP.NET Core 2.1์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ด ์๊ฐ ์ ๊ทธ ์ง์์ด 10 ๋ ์ด๋๋ผ๋ ๋ถํํ๋ ์ฌ๋๋ค์ ๋ง์กฑ์ํค์ง ๋ชปํ ๊ฒ ๊ฐ๋ค. ์ง๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ด ๊ฐ๋ฐ๋๊ณ ์๋ ํ ์ฌ๋๋ค์ด ๊ทธ ๊ธฐ๋ฅ์ ์ ๊ทผํ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ง๋ง (ํ์ฌ ๋๋ฆฐ ์ด์ฐจ์์๋ ๊ธฐ๋ฅ์กฐ์ฐจ๋), ์๋ง๋์ด ์๋ต์ ๋๋ฌด ๋ง์ด ์ฝ๊ณ ์์ ๊ฒ์ ๋๋ค ...
๋ค์๊ณผ ๊ฐ์ ํ์ฅ ์ง์๊ณผ ํจ๊ป ASP.NET Core 2.1์ ํญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปค๋ฎค๋ํฐ๋ฅผ ๋๋์ง ๋ง์ธ์ !!
(ํฌํ ๊ธฐ์ค) ๊ฐ๋ฐ์ 1/3์ด asp.net ์ฝ์ด 2.1์ ๋จธ๋ฌผ ๊ฒ์ผ๋ก ์์ํฉ๋๊น? ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ 2 ๋ฒ์ ์ ์ ์งํด์ผํ๋ ๋๊ฒ ํจํค์ง๋ฅผ ๋ง๋๋ 2/3 ๊ฐ๋ฐ์๋ฅผ ๊ธฐ๋ํ์ญ๋๊น?
๋ฟก ๋นต๋จ
๋ฐ๋ผ์ ASP.NET Core 3.0์ด .NET Core 3.0์ผ๋ก ๋ง ๋์จ๋ค๋ฉด; ๊ทธ๋ฌ๋ ๋์ค์ api๊ฐ์๋ .NET Standard๊ฐ๋์์ ๋; .NET Standard ์ธ ASP.NET Core 3.x ์ฉ ํจํค์ง๋ ์ถ์๋์์ต๋๋ค (ASP.NET Core๊ฐ 4.0์ผ๋ก ์ด๋ ํ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค). ๊ทธ๊ฒ์ด ๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๊น?
์ ํํฉ๋๋ค.
๋ฟก๋ฟก
@DamianEdwards๊ฐ ์ธ๊ธ ํ ํ์ฅ ์ง์๊ณผ ํจ๊ป ํญ์ ASP.NET Core 2.1์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ด ์๊ฐ ์ ๊ทธ ์ง์์ด 10 ๋ ์ด๋๋ผ๋ ๋ถํํ๋ ์ฌ๋๋ค์ ๋ง์กฑ์ํค์ง ๋ชปํ ๊ฒ ๊ฐ๋ค.
์ฌ๊ธฐ์ ์ถฉ๋ํ๋ ๋ฉ์์ง๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
(2)๊ฐ ๋ค์ฒ ์ง ๊น๋ด ๋ง์ ํผ๋๊ณผ ๋๋ ค์์ ๋ถ๋ฌ ์ผ์ผํค๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํํ
(ํฌํ ๊ธฐ์ค) ๊ฐ๋ฐ์ 1/3์ด asp.net ์ฝ์ด 2.1์ ๋จธ๋ฌผ ๊ฒ์ผ๋ก ์์ํฉ๋๊น? ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ 2 ๋ฒ์ ์ ์ ์งํด์ผํ๋ ๋๊ฒ ํจํค์ง๋ฅผ ๋ง๋๋ 2/3 ๊ฐ๋ฐ์๋ฅผ ๊ธฐ๋ํ์ญ๋๊น?
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๋ ์ง์ํ๋ ค๋ ASP.NET Core์ ์ต์ ๋ฒ์ ์ด ๋ฌด์์ธ์ง ๊ฒฐ์ ํ๊ณ ์ด๋ฅผ ๋์์ผ๋ก ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ๋ค์ด ์ค๋ ์ด๋ฏธํ๊ณ ์๋ ์ผ์ ๋๋ค. ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ASP.NET Core 1.x๋ฅผ ์ง์ํ๊ณ 2.x๋ 2.x ๋ง ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ๋ค๋ฅด์ง ์์ต๋๋ค.
@ yaakov-h
๋๋ ์ถฉ๋ํ๋ ๋ฉ์์ง๊ฐ ๋ฌด์์ธ์ง ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ํ์ฌ 2.1์ LTS์ด๋ฉฐ .NET Core ๋ฐ .NET Framework์์ ์คํ๋๋ฉฐ 3 ๋ ๋์ ์ง์๋ฉ๋๋ค. ์ด๊ฒ์ ์๋ก์ด ๋ฉ์์ง๊ฐ ์๋๋๋ค. ์ฒ์๋ถํฐ ์ฐ๋ฆฌ๊ฐ ๋ฐ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฉ์์ง์ ๋๋ค.
ASP.NET Core๋ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ด๋ํ์ฌ .NET Core์ ํ์ .NET Standard ์ฌ์ด์ ๋ฆด๋ฆฌ์ค์ฃผ๊ธฐ๋ฅผ ํ ๋ฒ๋ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์ฌ๊ธฐ์ ์์ฑ๋ ์๊ฒฌ์ ๊ทผ๊ฑฐํ ์ถ์ธก์ ๋๋ค. ๊ณต์์ ์ผ๋ก ์ฐ๋ฆฌ๋ .NET Core์ ๋ฐฐ์ก์ฃผ๊ธฐ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ ์ด๋ฏธ ๋ชจ๋ ๋ฆด๋ฆฌ์ค์์ ์๋ก์ด API๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. .NET Framework์์ ์คํ๋๋ ASP.NET Core๋ ์๊ตฌ์ ์ธ ๊ฒ์ด ์๋๋ฉฐ (ASP.NET Core๋ผ๊ณ ๋ ํจ) ํญ์ ๋๋ค๋๋ก ์ฌ์ฉ๋์์ต๋๋ค. ๊ณ ๊ฐ์ด ์๋ฒฝํ๊ฒ ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฉ๋ฆฌ์ ์ผ๋ก ์์ฑํ ์ ์๋๋ก ์ถฉ๋ถํ ํต์ฌ API๋ฅผ ๋ค์ ์ถ๊ฐํด์ผํ์ต๋๋ค.
MS ํ์ ๋ต๋ณ์ด ์์ต๋๊น?
๋ถํํ๋ ์ด๋ ์จ ํ๋ ๋ฏธ์ค ๋ฐฐํฌ๋ฅผ ์ํํ๋ ์ฌ๋์ 3 ๋ ์ด์ ์์ ์ ์ํํธ์จ์ด๋ฅผ ์ง์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด .netcore 3.0์ ๋์์ผ๋กํ๋ ์ฑ์ ์ถ์ํ์๋ง์ ๊ณ ๊ฐ์ 3 ๋ ์ ํ๋ณด ํ ํ ๊ฐ์ ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค. ์ด๋ค ์ฐ์ ์ ๊ด์ฐฎ์ ๊ฒ์ด๊ณ ์ด๋ค ์ฐ์ ์ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ด๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด .net ์ฝ์ด๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค. ๋๋ ์ค์ ๋ก ์ด๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ์ด๊ฒ์ด .net ์ฝ์ด๋ก๊ฐ๋ ๋ง์ ๊ณณ์ ๋ง์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ํ .net ํ์ ์๋ต์ ์ ๋ง๋ก ์ํฉ๋๋ค.
์ํ๊น๊ฒ๋ ์จ ํ๋ ๋ฏธ์ค ๋ฐฐํฌ๋ฅผ ์ํํ๋ ์ฌ๋์ 3 ๋ ์ด์ ์ํํธ์จ์ด๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ฅ ํ์๋ฆฌ์ ๋๋ค. ์ค์ ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ํ ์ ์์ต๋๋ค. ์๋ํ์ง ์๋ ์ ์ผํ ์๊ฐ์ ์๋ฒ ๋๋ ํ๊ฒฝ์ด์ง๋ง ์๋ฒ ๋๋ ์ํํธ์จ์ด๋ 3 ๋ ์ ์ง์ ๊ธฐ๊ฐ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@schmitch ๋ฌด์จ ๋ง์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ด์? ๋น์ฐํ ์ ๊ทธ๋ ์ด๋ ๋ง ํ ์ ์์ง๋ง ์ผ๋ถ ์ฐ์ ์ ๊ฒฝ์ฐ ์ ๋ฒ์ ์ ์ํํธ์จ์ด๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ๋ฆด๋ฆฌ์ค์ฃผ๊ธฐ์ ํด๋น ์ฐ์ ์ด ๊ธฐ์ ์ ์ผ๋ก ์ผ๋ง๋ ์ง๋ณด์ ์ธ์ง (์๋๋ฉด ๊ทธ๋ ์ง ์์์ง)์ ๋ฐ๋ผ ์๋ ์ด ๊ฑธ๋ฆด ์์๋ ๋๊ท๋ชจ ํ๋ก์ ํธ๊ฐ๋ฉ๋๋ค.
๋ฟก๋ฟก
๋ด ์๊ฐ ์ ๊ทธ ์ง์์ด 10 ๋ ์ด๋๋ผ๋ ๋ถํํ๋ ์ฌ๋๋ค์ ๋ง์กฑ์ํค์ง ๋ชปํ ๊ฒ ๊ฐ๋ค.
์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ๋ฐ์๋ค์ด๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ณ ์์๋์ง ํ์ ํ์ง ๋ชปํฉ๋๋ค.์ด ๊ฒฐ์ ํจ๊ณผ๋ ๊ทธ๋ค์ด ํ๋ฆฐ ํ๋ซํผ์ ์ง๋ฉดํ์ฌ ๋ฏธ๋๊ฐ์์๋ฟ๋ง ์๋๋ผ ์ต์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๊ตฌ์ถ ๋ ๊ธฐ์กด ํฌ์๊ฐ ์คํ๋๋ ๋ฐฉํฅ์ผ๋ก ํฅํฉ๋๋ค. 3 ๋ ์ด๋ด์ ์ง์๋์ง ์๋ ํ๋ซํผ (์ด ๋ฐํ ๋น์). ๋จผ์ .NET Framework ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํตํด .NET Core ๋ก์ ์ ์คํ ๋จ๊ณ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ํด ์๊ฐํ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด์ ๋์ฒด ํ ์ฐ๋ฐ์ ์ธ ์ํฉ์ด ์์ ์ํ์ ์ง๋ฉด ํด ์์ต๋๋ค. ์๋ก์ด .NET Core ๋ฐํ์ ๋๋ ๋ฒ์คํธ์์ ์คํ๋ฉ๋๋ค.
๊ฐ๋ฐ์ ํ๋ซํผ ์์ฒด๊ฐ ๋ชฉํ๊ฐ๋์ด์๋ ์๋ฉ๋๋ค. ํ๋ซํผ์์ ์์ฑ๋๋ ๊ฐ์น๊ฐ ๊ธฐํ ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ํ๋ซํผ ์์ฒด์ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด์ ๊ฐ์ ๋งน๋ชฉ์ ์ธ ์์ง์์ ํ๋ซํผ์ ์๋๋ฅผ ๋์ด๊ธฐ์ํ ๋ฆฌ์์ค์ ์ต๋ ํจ์จ์ฑ์ด ์์ฑ๋๋ ์ํ๊ณ์ ํฌ์๋ณด๋ค ๋ ์ค์ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. .NET Core 2.1 ๋นํธ์ ์ํฌ๋ ์์ง ๊ฑด์กฐํ์ง ์์์ง๋ง ๊ธฐ์กด ์์คํ (FX์)์ ์ํ๊ณ์ ์ถ๊ฐํ๋ ์์ฐ๊ณผ ๊ฐ์น ๋์ ์ต์ํ์ ์ง์์ ์ ๊ณตํ๋ค๋ ๊ด์ ์์ ์ด๋ฏธ ์ฑ ์์ผ๋ก ์ทจ๊ธ๋๊ณ ์์ต๋๋ค.
์์ ์ธ๊ธํ๋ฏ์ด ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๋นํ ์๋๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์ข ์ข ๋์์ ๋ง์ ์์ ์ง์๊ณผ ๊ณ ๊ฐ์ด ์ง์์ ์ธ ROI๋ฅผ ๋์ถํ๊ธฐ ์ํด ์ฌ์ฉํด์ผํ๋ ์ง์์ ์ธ ๊ฐ์ ์ ์ ๊ณตํ๋ ๊ฐ๋ฐ ํ์ ๊ท ํ์ ๋ง์ถ ์ ์์ต๋๋ค. ๋ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ธ์ฌํ ๊ณํ๊ณผ ์๊ฒฉํ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ "์คํ ์ค"์์ ์ด๋ฃจ์ด์ ธ์ผํฉ๋๋ค. ์๋ ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.์ด ์๊ฐ์ ๊ฐ์น ์ฐฝ์ถ์ ์ ํธํ๊ณ ๊ทธ ์๋์์ ์ง์์ ๋ฐ๊ณ ์๋ ํ๋ซํผ์์ ๋ฒ์ด๋๊ธฐ ์ํด ์คํฌ๋จ๋ธ๋งํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๋ํ ๋ธ๋ผ์ด ํ๋ ์์คํ ์ ์ฝ๊ฒ ํ๊ธฐํ๊ณ ๋ช ๋ ๋ง๋ค ์ํํ๊ฒ ์ ๊ทธ๋ ์ด๋ ํ ์์๋ iPhone๊ณผ ๊ฐ์ ์ํ์ด ์๋๋๋ค. ์ค๋๋๊ณ ๋ ๊ธด ์์คํ ์ด ๊ฐ๋ฐ ์ค์ด๋ฉฐ ๋ ๋ง์ ๊ฐ์น๋ฅผ ํฌ์ํ ์๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ ์ด๋ ค์์ง๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ฐฝ์ถ๋๋ ๊ฐ์น๊ฐ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ํก์ํ๊ธฐ ์ด๋ ต๊ณ , ๋ฆฌ์์ค๊ฐ ํ์ํ๊ณ , ๊ธฐํ ๋น์ฉ์ ํก์ํ๊ณ , ์ํ์ด ์ฆ๊ฐํ๋ฉฐ, ๊ทธ๋ค์ด ๊ธฐ๋ํ ์์๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ด์ ๊ณผ ๋๊ฐ์ด ์คํ๋๋ ๊ธฐ์กด ์์คํ ์ ์ฌ์ฉํ์ฌ ์๋ฒฝํ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๋๋ค.
FX ์ง์์ ๋ง๋ฃ ๋ ์ง๊ฐ ์ง์ ๋๋๋ผ๋ ๊ธฐ์กด ์์คํ ์ด ๊ณผ๊ฑฐ์ ์คํ๋์ด ์ฅ์ ๋ฌผ์ ๋ถ๋ช ํ๊ฑฐ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ถ๊ฐ๋ฅํ ๊ธฐ์กด ์์คํ ์ด์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ด๋ ๋ฌด์์ ๋๊น?
ASP.NET Core 2.1์ ์ด๋ฏธ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, FX / .NET Core์์ ASP.NET Core๋ฅผ ์คํํ๋ ค๋ ๋ ธ๋ ฅ์ ์ด๋ฏธ ํฌ์ ๋ ๋ง๋ํ ๋น์ฉ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฒฐ์ ์ ์ด๋ฏธ ๊ฐ๋ฐ ๋ ํ๋ซํผ (LTS ์ดํ)์ ์ ์งํ๊ธฐ์ํ MS ๋ฆฌ์์ค์ ์ธ๊ธฐ์๋ ํ๋ซํผ์ ํฌ๊ธฐํ๊ธฐ ์ํด ์์ฑ ๋ ๋์ ๋น์ฉ, ์ ์ ๋ฐ ๊ด์ฑ์ ๋ํ ๋ฌธ์ ๋ก ๊ตฌ์ฑ๋์ด์ผํฉ๋๋ค.
๋๋ ๊ทธ๋ ์๊ตฌ๋๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค. LTS์ ๋ผ์ดํ ์ฌ์ดํด์ 2.1์ด ๋์จ ์ดํ๋ก ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค. .NET Core ๋๋ .NET Framework์ ๊ด๊ณ์์ด LTS ๋ฒ์ ์ผ๋ก ์ฑ์ ์์ฑํ ๊ฒฝ์ฐ "์ง์๋์ง ์์"๋๊น์ง 3 ๋ ์ด ๊ฑธ๋ฆฝ๋๋ค. ๋๋ ๋ณํ์ง ์์ ์ง์ ์ธก๋ฉด์์ ๊น๊ฐ๊ฐ ์ด๋ป๊ฒ ๋น์ ๋ฐ์์ ๋น๊ฒจ ์ง๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ํ๋ซํผ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์ ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค.
์ง๊ธ์ 2.1 ๋ง์ง๋ง LTS ๋ฒ์ ์ .NET ํ๋ ์ ์ํฌ์์ ์ง์๋๊ณ ์์์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ ์ฅ์๊ฐ ์์ต๋๋ค ์๋ฏธ ์ดํดํ์ง๋ง, LTS ์ง์์ ํ๋ํ๋์๋ ์ ๊ณต๋ฉ๋๋ค. API๋ฅผํ๊ธฐ ๋๋ฌธ์ ์์ฉ ํ๋ก๊ทธ๋จ๋ ์ด๋ฌํ ์ก๋ ํ .NET ์ฝ์ด๋ก ์ด๋ํ ์ ์๋ค ๊ฒฝ์ฐ ๋๋ฝ ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ ๊ณ ํ์ฌ ์ฐจ์ด๋ฅผ ์ดํดํ ์ ์๋๋กํฉ๋๋ค.
๋๋ ๊ทธ๋ ์๊ตฌ๋๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค.
์ด ์ค๋ ๋๋ MS๋ก๋ถํฐ ๋ค์ํ ์์ค์ ์ฝ์ ์ ์์ฒญํฉ๋๋ค. .NET Core์ ํจ๊ป ๊ณ์ ๊ฐ๋ฐํ๊ณ , ASP.NET Core 2.1์ ํฌ๊ธฐํ์ง ์๊ณ "๋๋ฆฐ ๊ธฐ์ฐจ"์์ ๊ฐ๋ฐํ๊ณ , WebForms์ ๋์ผํ ์์ค์ ์ง์์ ์ ์งํ๊ณ , LTS๋ฅผ ํ์ฅํฉ๋๋ค. . ๋ด ์ ํธ๋ ๊ธฐ์กด .NET์ ๋ํ ๋ง์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํ๋ฉด์ .NET Core ๋ง v3 + ๋ง ์ต์ ํ์ง ์๋ ASP.NET Core (ํธ์ง : ๋ ๋ฐ๋์ง ํ ๊ฒ)์ ํธ์คํ ์ต์ ์ผ๋ก ํฌ๊ธฐํ์ง ์๋ ๊ฒ์ ๋๋ค. FX ํฌ์.
์ด์ 2.1์ด .NET Framework์์ ์ง์๋๋ ๋ง์ง๋ง LTS ๋ฒ์ ์ด๋ผ๋ ๊ฒ์ ์ ๊ทธ๋ ์ด๋ ํ ๊ณณ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฆ, ์ง์๋์ง ์๋ ํ๋ซํผ์ด๋์๋ค๋ ์๋ฏธ์ด๋ฉฐ, ์ง์๋์ง ์๋ EOL ๋์ ๋๋ฌํ๊ธฐ ์ ์ ๋๊ตฌ๋ ์ง์ด๋ฅผ ์ฉ์์ฒ๋ผ ์ทจ๊ธํ๊ณ ์ถ๊ฒฉํด์ผํฉ๋๋ค.
๋ค์ ํ ๋ฒ ๊ทธ๋ฆฐ ํ๋ ํ๋ก์ ํธ, .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๊ฑฐ๋ ๊ณํ ํ ์ฌ๋ ๋๋ ๋ ๊ฑฐ์ ์์คํ ์ ์ ์ง ๊ด๋ฆฌ ํ ํ์๊ฐ์๋ ์ฌ๋์๊ฒ๋ ๋ฌธ์ ๊ฐ๋์ง ์์ง๋ง ๊ธฐ์กด .NET FX ์์ฝ ์์คํ ๋ฐ ASP.NET Core์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. .NET FX์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ์คํ ์ต์ ์ ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ํด์ก์ต๋๋ค.
์๋ฒฝํ ์ธ์์์๋ ๋ชจ๋ ์ฌ๋์ด .NET Core์์์ ๊ฒ์ด์ง๋ง์ด ๊ฒฐ์ ์ผ๋ก ํ๊ฐ ์ ํ๋๋ .NET FX์ ๋ํ ์๋นํ ํฌ์๊ฐ ์กด์ฌํฉ๋๋ค.
API๊ฐ ์์ด์์ด 6 ๋ ํ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด .NET Core๋ก ์ด๋ํ ์์๋ ๊ฒฝ์ฐ
.NET Core๋ก ์ ํ ํ ์ ์๊ฑฐ๋ ์ ํํ๊ธฐ๋ฅผ ์ํ์ง ์๋ ๋ง์ ์ฌ๋๋ค์ด ์์ผ๋ฉฐ, ํด๋์ ASP.NET๊ณผ ๋์ผํ ์์ค์ ์ง์์ ๊ณต์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค (ํ์ฌ ๋ฉ์์ง์ด ๋ฌด๊ธฐํ์ผ๋ก ์ ์ ํจ).
๋๋ฝ ๋ API๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ง๋ ์ ์ผํ ์ด์ ๊ฐ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์ ํ์ด ๋ ์ด์ ์กด์ฌํ์ง ์๋ ์ข ์์ฑ์ ์์กด ํ ์ ์๊ณ , ๋ณ๊ฒฝํ ์์๋ ์ค์ํ ๊ตฌ์ฑ ์์์ด๋ฉฐ, ์์ ํ๊ฒ ๋ฆฌํฉํ ๋ง ํ ์ ์์ต๋๋ค (์ : ํ ์คํธ ์์), ๋ค๋ฅธ .NET FX ์ ์ฉ ์์คํ ๊ณผ ๊ณต์ ๋๋ฉฐ ์์ฐ, ๋ณ๊ฒฝ ์ฉ๋์ด ์๊ฑฐ๋ ๊ธฐ์ ์ ๊ด๋ฆฌ ์ธํ๋ผ์ ๊ฐ์ ์ธ๋ถ ์์ธ์ผ๋ก ์ธํด .NET Framework ์๋ฒ์์ ์คํ ๋ง ์ง์ํ๋ ๋ค๋ฅธ ๋ถ์์์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
์ด๋ฐ ์ข ๋ฅ์ ๊ฒฐ์ ์ผ๋ก .NET Standard๋ฅผ ์ข ๋ฃ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์์ง Core๋ฅผ ๋์์ผ๋กํ์ง ์๋ ํ์ฌ ์ด์ ๋ธ๋ฆฌ๊ฐ ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ๊น์ง .NET Core๋ฅผ ๋ฌด์ํ์ต๋๋ค.
Core๋ฅผ ์ง์ํ ์์ฌ๊ฐ์๋ ๋ง์ ๊ณต๊ธ ์ ์ฒด๋ .NET Framework์์๋ง ์ฌ์ฉํ ์์๋ ๋ค์ดํฐ๋ธ API๊ฐ์๋ Managed ODP.NET๊ณผ ๊ฐ์ด ํต์ฌ์ ์ธ ๋ฐฉ์์ผ๋ก ์ง์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ์ข ๋ฅ์ ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.
์๋์. Microsoft๊ฐ .NET Framework๋ฅผ ์ง์ํ๊ธฐ์๋ ๋๋ฌด ๋ง์ ์์ ์ด ํ์ํ๊ณ ์ฌ๋ฌ๋ถ์ด ์์ํ๋๋ก ๋ฐ์ด ๋ถ์ธ .NET Standard๋ฅผ ์ ๊ณต ํ ์ ์๊ธฐ ๋๋ฌธ์ .NET Core๋ฅผ ๋ ๋นจ๋ฆฌ ์ฑํํ์ง ์์ ๊ฒ์ ๋๋ค.
@davidfowl .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ๋ ๊ฐ์ง ์๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค
ํ
์ด ์ค๋ ๋๋ MS๋ก๋ถํฐ ๋ค์ํ ์์ค์ ์ฝ์ ์ ์์ฒญํฉ๋๋ค. .NET Core์ ํจ๊ป ๊ณ์ ๊ฐ๋ฐํ๊ณ , ASP.NET Core 2.1์ ํฌ๊ธฐํ์ง ์๊ณ "๋๋ฆฐ ๊ธฐ์ฐจ"์์ ๊ฐ๋ฐํ๊ณ , WebForms์ ๋์ผํ ์์ค์ ์ง์์ ์ ์งํ๊ณ , LTS๋ฅผ ํ์ฅํฉ๋๋ค. . ๋ด ์ ํธ๋ ๊ธฐ์กด .NET FX ํฌ์์ ๋ง์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํ๋ฉด์ .NET Core v3 + ๋ง ์ต์ ํ์ง ์๋ ASP.NET Core์ ํธ์คํ ์ต์ ์ผ๋ก ํฌ๊ธฐํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ํ์ฌ LTS ์ง์ ํ์ฅ์ ๋ชจ์ํ๊ณ ์์ง๋ง ASP.NET Core์ ๋ํ ์ผ๊ธ .NET Framework ์ง์์ ์์ํ ๊ณ ๋ คํ์ง ์์ต๋๋ค (๋น์ ์ด ์๊ตฌํ๋ ๊ฒ์ ๋๋ค). WebForms์ ๋์ผํ ์์ค์ ์ง์์ ์ํ๋์ด ๋ฒ์ ์ ASP.NET Core๋ ๋ณด์ ์์ ๋ฐ ์์ ์ฑ ์์ ๋ง๋ฐ์ ์ ์์ต๋๋ค. ์ต์ ๋ฒ์ ์ ASP.NET Core์ ๊ธฐ๋ฅ์ด ํ์๋๋ฉด ASP.NET Core 2.1์ ์ฌ์ฉํ๋ ์ฌ์ฉ์์ ๋ง์กฑ๋ ์์ค์ ๋ฎ์์ง ๊ฒ์ ๋๋ค (์ ์ด๋ ๋ด ์ง๊ฐ์ด ๋งํด ์ฃผ๋ฏ์ด). ๋ฒ์.
๋๋ฝ ๋ API๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ง๋ ์ ์ผํ ์ด์ ๊ฐ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์ ํ์ด ๋ ์ด์ ์กด์ฌํ์ง ์๋ ์ข ์์ฑ์ ์์กด ํ ์ ์๊ณ , ๋ณ๊ฒฝํ ์์๋ ์ค์ํ ๊ตฌ์ฑ ์์์ด๋ฉฐ, ์์ ํ๊ฒ ๋ฆฌํฉํ ๋ง ํ ์ ์์ต๋๋ค (์ : ํ ์คํธ ์์), ๋ค๋ฅธ .NET FX ์ ์ฉ ์์คํ ๊ณผ ๊ณต์ ๋๋ฉฐ ์์ฐ, ๋ณ๊ฒฝ ์ฉ๋์ด ์๊ฑฐ๋ ๊ธฐ์ ์ ๊ด๋ฆฌ ์ธํ๋ผ์ ๊ฐ์ ์ธ๋ถ ์์ธ์ผ๋ก ์ธํด .NET Framework ์๋ฒ์์ ์คํ ๋ง ์ง์ํ๋ ๋ค๋ฅธ ๋ถ์์์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
์ด๋ ๋งค์ฐ ์ผ๋ฐ์ ์ด๋ฉฐ (Microsoft ๋ด์์๋) .NET Core 2.0์์ .NET Framework dll์ ์ฐธ์กฐํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ ์ด์ ๋ ๋๋ถ๋ถ์ ์ด์ ๋ธ๋ฆฌ๊ฐ .NET Core ์ฉ์ผ๋ก ์ปดํ์ผ๋์ง ์์ ๊ฒฝ์ฐ์๋ ํธํ๋๋ ๊ฒ์ผ๋ก ๋ฐํ ์ก๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด์ ๋ ์๋ํ์ง ์๋ ๊ฒ (์ : AppDomains ...)์ด ์์ง๋ง API ํ๋ฉด์ ๋ ์ถ๊ฐํ๋ฉด ์๋ํ์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ๊ฐ ๋ฌด์๋ฏธํ ์ซ์๋ก ์ค์ด๋ค ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
ํ
์ด๊ฒ์ด .NET Standard๋ฅผ ์ด๋ป๊ฒ ์ฃฝ์ด๋ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. .NET Standard๋ ASP.NET Core๋ณด๋ค ํจ์ฌ ํฝ๋๋ค. ๋ชจ๋ ์ง์ .NET ํ๋ซํผ์์ ์๋ํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์ : Microsoft.Extensions *)๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์์ง Core๋ฅผ ๋์์ผ๋กํ์ง ์๋ ํ์ฌ ์ด์ ๋ธ๋ฆฌ๊ฐ ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ๊น์ง .NET Core๋ฅผ ๋ฌด์ํ์ต๋๋ค.
์ด๋ ๊ฒ? ์งํ์ค์ธ ์ฌ์ฉ์๋ฅผ ์ง์ํฉ๋๊น ์๋๋ฉด ํด๋น ์ด์ ๋ธ๋ฆฌ๊ฐ .NET Core๋ฅผ ์ง์ํ์ง ์์ต๋๊น?
Core๋ฅผ ์ง์ํ ์์ฌ๊ฐ์๋ ๋ง์ ๊ณต๊ธ ์ ์ฒด๋ .NET Framework์์๋ง ์ฌ์ฉํ ์์๋ ๋ค์ดํฐ๋ธ API๊ฐ์๋ Managed ODP.NET๊ณผ ๊ฐ์ด ํต์ฌ์ ์ธ ๋ฐฉ์์ผ๋ก ์ง์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ๋์ํ๊ณ .NET Core์์ (๋ง์ดํฌ๋ก ์ํํธ๊ฐ ์ ๊ณตํ๋ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ถ๊ตฌํ๊ณ ) ๋ง์ ๋ฌด๋ฅํ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์์ง๋ง ์กฐ์๊ฐ ๊ทธ๊ฒ์ ์ผ๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๊ทธ ์ด์ ์ค ์ผ๋ถ๋ .NET Core 1.0์ ์กด์ฌํ๋ ์ด๊ธฐ ๋๋ฝ ๋ API ์ธํธ ๋๋ฌธ์ด์์ต๋๋ค. 2.0 ๋ฐ 2.1์์๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ๊ฐ ๊ธฐ๋ฅ ์์ค์์ด ์ฝ์ด / ํ์ค์ผ๋ก ๋ ์ฝ๊ฒ ํฌํ ๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
@voltcode ๊ตฌ์ฒด์ ์ธ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ด๋ฌํ ์ ํ์ ํธํ์ฑ ๋ฌธ์ ์ค ์ผ๋ถ๋ ํ์ฌ (3 ๋ ์ ๋) .NET Core ํ๋ก์ ํธ๋ฅผ ์ง์ํ๋ ๊ธฐ๊ฐ ๋์ ์ฌ๋ผ์ง๊ฑฐ๋ ์ต์ํ ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋ฟก๋ฟก
....
์์ง Core๋ฅผ ๋์์ผ๋กํ์ง ์๋ ํ์ฌ ์ด์ ๋ธ๋ฆฌ๊ฐ ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ์ง๊ธ๊น์ง .NET Core๋ฅผ ๋ฌด์ํ์ต๋๋ค.
์ด๋ ๊ฒ? ์งํ์ค์ธ ์ฌ์ฉ์๋ฅผ ์ง์ํฉ๋๊น ์๋๋ฉด ํด๋น ์ด์ ๋ธ๋ฆฌ๊ฐ .NET Core๋ฅผ ์ง์ํ์ง ์์ต๋๊น?
Oracle์ด ๋๋ผ์ด๋ฒ ๊ธฐ๋ฅ์ 100 %๋ฅผ Core๋ก ํฌํ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ODP.NET์ด ๋ถ๋ช ํฉ๋๋ค.
Core๋ฅผ ์ง์ํ ์์ฌ๊ฐ์๋ ๋ง์ ๊ณต๊ธ ์ ์ฒด๋ .NET Framework์์๋ง ์ฌ์ฉํ ์์๋ ๋ค์ดํฐ๋ธ API๊ฐ์๋ Managed ODP.NET๊ณผ ๊ฐ์ด ํต์ฌ์ ์ธ ๋ฐฉ์์ผ๋ก ์ง์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ๋์ํ๊ณ .NET Core์์ (๋ง์ดํฌ๋ก ์ํํธ๊ฐ ์ ๊ณตํ๋ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ถ๊ตฌํ๊ณ ) ๋ง์ ๋ฌด๋ฅํ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์์ง๋ง ์กฐ์๊ฐ ๊ทธ๊ฒ์ ์ผ๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๊ทธ ์ด์ ์ค ์ผ๋ถ๋ .NET Core 1.0์ ์กด์ฌํ๋ ์ด๊ธฐ ๋๋ฝ ๋ API ์ธํธ ๋๋ฌธ์ด์์ต๋๋ค. 2.0 ๋ฐ 2.1์์๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ๊ฐ ๊ธฐ๋ฅ ์์ค์์ด ์ฝ์ด / ํ์ค์ผ๋ก ๋ ์ฝ๊ฒ ํฌํ ๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
ํ์ง๋ง ๋ง์ ๊ณ ๊ฐ์ด ๊ทธ๊ฒ์ ๋ณด๋ ๊ฒ์ ์๋๋๋ค.
์ด๋ฌํ ์ข ๋ฅ์ ๊ฒฐ์ ์ด .NET์ ๋ฏธ๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ์๊ธฐ ์ํด ๊ณ ๊ฐ์ .NET Framework์์ UNIX ๋ฐฐํฌ ์ฉ Java๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด๋ํ๊ธฐ ์ํด ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ์ง๋ถํ์ต๋๋ค. .NET Core ๋ฐ ์ฅ์ ๊ฐ์๋ ODP.NET ๊ตฌํ์ ๋ฒ ํ ํ๋ ๋ฐ๋ฉด JDBC ๋๋ผ์ด๋ฒ๋ .NET Framework ODP.NET ๋๋ผ์ด๋ฒ์ 1 : 1 ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋์ฒด ์คํ์ ์ ํํ ์๋ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ํฐํ๋ผ์ด์ฆ ์ฑ์ ์ด์๋์ง ์๊ฑฐ๋ ์ด์ ํ ์์๋ ์๋ง์ ์ข ์์ฑ์ด ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ HN ์๋จ์ ๋ํ๋ฌ์ต๋๋ค. ๋ํฌ๋ค (@MSFT)๋ ๊ฑฐ๊ธฐ ํ์ธํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค. ๋จ 1 ์๊ฐ ๋ฐ ์ด๋ฏธ 50 ๊ฐ ์ด์์ ๋๊ธ.
๋ฟก๋ฟก
์ด๊ฒ์ด .NET Standard๋ฅผ ์ด๋ป๊ฒ ์ฃฝ์ด๋ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. .NET Standard๋ ASP.NET Core๋ณด๋ค ํจ์ฌ ํฝ๋๋ค. ๋ชจ๋ ์ง์ .NET ํ๋ซํผ์์ ์๋ํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์ : Microsoft.Extensions *)๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ASP.NET Core๊ฐ ๋ฌด์์ธ์ง ์ดํดํ ์ ์์ต๋๊น? ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋์ ์ด๊ณ ๋น ๋ฅด๋ค๋ ์ถ์ธ๊ฐ .NET Standard ์ง์์ ์ค๋จํ๋ ๊ฒ์ด๋ผ๋ฉด ๊น๋ค๋ก์ด ๋ฉ์์ง์ ๋๋ค. Newtonsoft.Json์ด ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค๋ฉด .NET Core 3์ผ๋ก ๋ง ์ ํํด์ผํฉ๋๊น? Autofac์ด ํ์ํฉ๋๊น?
๋๋ ์ด๊ฒ์ ์ด์ ๋ฅผ ์ดํดํ์ง๋ง, ์ด๊ฒ์ด ์ง๋๋ฒ ๋์จ ์ดํ๋ก ๋ ผ์๊ณผ ํ๊ฐ๊ฐ ๋ง์ด ๋ฐ๋ ์๋์ง ํ์ ํ์ง ๋ชปํฉ๋๋ค! ๊ธฐ๋ค๋ฆด ๊ฒ ๊ฐ์์ ...
์ ๋ ์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ด๊ฒ๊ณผ ๊ด๋ จํ์ฌ ์ง๊ธ ์ฐ๋ฆฌ ๊ฐ๊ฒ๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง์ ๋ํ ๊ด์ ์ ์ ๊ณต ํ ๊ฒ์ ๋๋ค.
AspNetCore๋ ์์ฒด ํธ์คํ
(http.sys), ์น API ๋ฐ ๋ค์ํ ์๋น์ค์ ๋ํ ์ ์ ์น ์ฝํ
์ธ ์ธก๋ฉด์์ ์ฐ๋ฆฌ ์คํ์ ๋๋ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฒฌ๊ณ ํ์ง๋ง ์ฐ๋ฆฌ ๊ด์ ์์ ๋ง์ ๊ฒฐํจ์ด์๋ Nancy์์ ์๊ธฐ ๋๋ฌธ์ ์ฝ 1 ๋
์ ์ AspNetCore๋ก ์ ํํ์ต๋๋ค. ์ค๋๋ ์ฐ๋ฆฌ๋ 2.x์์ ๋ชจ๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์์ํ .NET Core ๋์์ผ๋ก ์์ ํ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ System.DirectoryServices
๋ฐ System.Drawing
์ ๊ฐ์ ๊ฒ์ ์์กดํ๋ AspNetCore๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๊ตฌ์ถ ํ ๋ง์ ์๋น์ค๋ ์์ต๋๋ค. ์ด๋ฌํ ์๋น์ค์ ๊ด์ ์์ .Net Framework์์ ๋ฒ์ด๋๊ธฐ ์ ์ ์น ํธ์คํ
๊ธฐ์ ์ ๋ณ๊ฒฝํ ๊ฒ์
๋๋ค. ์ํ๊น๊ฒ๋ 2 ๊ฐ์ ์๋ก ๋ค๋ฅธ ์น ํธ์คํ
๊ธฐ์ ์ ๋์์ ๊ด๋ฆฌํ๋ ๋ณต์ก์ฑ๊ณผ ํ ๊ท๋ชจ๋ก ์ธํด ๋๋จธ์ง ์๋น์ค์์ AspNetCore๋ฅผ ๋ชจ๋ ๊ณต๊ฒฉํ์ฌ ๋ ๋์์์ ๋ ํธํ๋๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
๊ฐ๋จํ ๋งํด์-์ด ๊ฒฐ์ ์ ๋ด๊ฐ ์ง๊ธ ์์ง ๋ชปํ๋ ๊ฒ์ ๋ํด ๋ฏธ๋์ ์ด๋ ์์ (LTS๊ฐ 2.x์ ๋ํด ๋ง๋ฃ ๋ ๊ฐ๋ฅ์ฑ์ด ์์)์ AspNetCore๋ฅผ ์์ ํ ์ข ๋ฃํ๋๋ก ํ ๊ฒ์ ๋๋ค. ์ค์ ๋ก ์ฌ์ฉ๋๋ AspNetCore ๊ธฐ๋ฅ ์์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋งค์ฐ ์ข๊ธฐ ๋๋ฌธ์ AspNetCore๋ฅผ ๋์ฒด ํ ์์ฒด ์๋ฃจ์ ์ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค (์ฆ, ์ฐ๋ฆฌ๊ฐ ํ์ฉํ๋ ๊ธฐ๋ฅ์ ์ค๋๋ ์ฐ๋ฆฌ์๊ฒ ๋ง๋ํ ๋ถ๊ฐ๊ฐ์น).
๋ค๋ฅธ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋์ฒด ์คํ์ ์ ํํ ์๋ ์์ต๋๋ค.
๊ณตํํ์ง๋ง ๋์ฒด ์คํ์๋ ๋์ผํ ์ง์ ์ ์ฑ ์ด ์์ต๋๋ค. Java๋ ์ ์ฌํ LTS ๋ชจ๋ธ (https://www.oracle.com/technetwork/java/javase/eol-135779.html)๋ก ์ด๋ํ์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ํฐํ๋ผ์ด์ฆ ์ฑ์ ์ด์๋์ง ์๊ฑฐ๋ ์ด์ ํ ์์๋ ์๋ง์ ์ข ์์ฑ์ด ์์ต๋๋ค.
๋ฟก๋ฟก
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ ํ๋ ์ ์ํฌ์ ๋๋ค. ํจ๊ป ์ ๊ณต๋๋ ๋งค์ฐ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ASP.NET Core๊ฐ ๋ฌด์์ธ์ง ์ดํดํ ์ ์์ต๋๊น? ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋์ ์ด๊ณ ๋น ๋ฅด๋ค๋ ์ถ์ธ๊ฐ .NET Standard ์ง์์ ์ค๋จํ๋ ๊ฒ์ด๋ผ๋ฉด ๊น๋ค๋ก์ด ๋ฉ์์ง์ ๋๋ค. Newtonsoft.Json์ด ํจ์ฌ ๋ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค๋ฉด .NET Core 3์ผ๋ก ๋ง ์ ํํด์ผํฉ๋๊น? Autofac์ด ํ์ํฉ๋๊น?
์ผ๋ง๋ ๊น๋ค๋ก์ด ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. 97 %๋ ๊ณ ๊ฐ์ด ๋ถํ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ ์ ์ํฌ๋ฅผ ์ ๊ฑฐํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ํ๋ ์ ์ํฌ ์ ๊ฑฐ์ ๋ํ ๊ธฐ์ค์ ๋งค์ฐ ๋์ผ๋ฉฐ .NET Standard 2.0์์ Microsoft.Extensions. *๋ฅผ ์ ์ง ํ ๊ฒ๊ณผ ๋์ผํ ์ด์ ์ ๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๊ฒ์ ๊ฑฐ๊ธฐ๋ก ์ฎ๊ฒผ๋ค๋ฉด ๊ทธ๊ฒ์ด ๋ชจํธ ํ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง ์ฌ๊ธฐ์ ์ผ์ด๋๋ ์ผ์ ์๋๋๋ค.
์ด๋ค๋ฉด์์ ์ด๊ฒ์ .NET Core์ ์ด๋ฏธ ์กด์ฌํ๋ ํ์ค์ ๊ณต์ํํ๋ ๊ฒ์ ๋๋ค. .NET Core์ ํจ๊ป ASP.NET Core๋ฅผ ์ ๊ณตํฉ๋๋ค. .NET Core์์ ASP.NET Core๋ ๊ณต์ ํ๋ ์ ์ํฌ์ด๋ฉฐ ๋จ์ํ ํจํค์ง ์งํฉ์ด ์๋๋๋ค. ์ด๋ฌํ ํจํค์ง๋ ์ ์ฒด ์ ํ๊ณผ ๋ณ๋๋ก ๋ฐฐ์ก๋์ง ์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ฐ๋ณ ํจํค์ง๋ฅผ ์ฐธ์กฐ ํ ๋ ์ป์ ์์๋ ์ด์ ์ ์ ์ต๋๋ค (ํจํค์ง ๋ชฉ๋ก๋ ์์).
๋ฟก ๋นต๋จ
๊ทธ๋ฌ๋ System.DirectoryServices ๋ฐ System.Drawing๊ณผ ๊ฐ์ ๊ฒ์ ์์กดํ๋ AspNetCore๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๊ตฌ์ถ ํ ๋ง์ ์๋น์ค๋ ์์ต๋๋ค.
NET Core https://docs.microsoft.com/en-us/dotnet/core/porting/windows-compat-pack ์ Windows ์์ถ ํฉ์
๊ฐ๋จํ ๋งํด์-์ด ๊ฒฐ์ ์ ๋ด๊ฐ ์ง๊ธ ์์ง ๋ชปํ๋ ๊ฒ์ ๋ํด ๋ฏธ๋์ ์ด๋ ์์ (LTS๊ฐ 2.x์ ๋ํด ๋ง๋ฃ ๋ ๊ฐ๋ฅ์ฑ์ด ์์)์ AspNetCore๋ฅผ ์์ ํ ์ข ๋ฃํ๋๋ก ํ ๊ฒ์ ๋๋ค. ์ค์ ๋ก ์ฌ์ฉ๋๋ AspNetCore ๊ธฐ๋ฅ ์์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋งค์ฐ ์ข๊ธฐ ๋๋ฌธ์ AspNetCore๋ฅผ ๋์ฒด ํ ์์ฒด ์๋ฃจ์ ์ ์์ฑํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค (์ฆ, ์ฐ๋ฆฌ๊ฐ ํ์ฉํ๋ ๊ธฐ๋ฅ์ ์ค๋๋ ์ฐ๋ฆฌ์๊ฒ ๋ง๋ํ ๋ถ๊ฐ๊ฐ์น).
์ง์์ด ์ฐ์ฅ ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๊น?
๋ํ ์ด์ ๋ ์ง์๋์ง ์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ (AppDomains, Remoting ๋ฑ)์ ๋จผ์ ์ ๊ฑฐํด์ผํฉ๋๋ค. ๊ทธ ์์ ์ ๋ณ๋ ฌ๋ก ์ํํ๊ฑฐ๋ ์ดํ ๋จ๊ณ์์ ์ํ ํ ์์๋ ๊ฒ์ด ์๋๋๋ค.
2.1๋ก ๋จผ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ์์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ ๊ฐ ๋ง์ค์ด๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ 3 ๋ ์ง์ ์ ํ์ด ์ ์ง ๋ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค. ์์ ์ ์ธ ์ฅ๊ธฐ ํ๋ซํผ์ ๊ฐ์ง ์์๋ ์ง์ ์ด ์๋๋ผ ๋จ๊ธฐ ๋ง์ด๊ทธ๋ ์ด์ ๋๋ค๋์ ๋๋ค. ์ฆ, ์ค๊ฐ์ผ๋ก ์งํํ ์ํ์ด ์์ผ๋ฏ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์ผ์ ์ค์งํ์ฌ ์ฐ์ ์์๊ฐ ๋์ ์ฌ๋ฌ ์ ๊ธฐ๋ฅ์ ๊ตฌ์ถ ํ ๋ค์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋ฃํ์ฌ ํ๋ ๋ธ๋ก์ ์ฐพ๊ณ ๋ชจ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ด์ ์ฝ๋๋ฒ ์ด์ค๋ก ๋ฐฑ ํฌํธํด์ผํฉ๋๋ค.
์ ๊ฐ ๋ง์ค์ด๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ 3 ๋ ์ง์ ์ ํ์ด ์ ์ง ๋ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ @DamianEdwards๊ฐ ์ธ๊ธ ํ๋๋ก ํ์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ด ๊ฒฐ์ ์ด ์ผ๋ง๋ ๋ง์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋ ์ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Blazor๋ ์ด๋ป์ต๋๊น? netstandard๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ์ง ์์ต๋๊น? ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ธฐ๋ํด์ผํฉ๋๊น? Blazor๋ ์ฐจ์ธ๋ ์ ํ์ผ๋ก ๊ด๊ณ ๋๊ณ ์์ต๋๋ค. ํ์ฌ netstandard์ ์์กดํ๊ณ ์๋ github.com/aspnet์ ๋ ๋ค๋ฅธ ๊ฒ์ ๋ค์ ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค์์์ด๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋ท ์ฝ์ด๋ก ์ด๋ํ ๊ฒ์ ๋๊น? MSFT ์ ์ด์์ aspnetcore์ ์ด๋ช ์ ๊ณต์ ํ aspnet repo ์ธ๋ถ์ ๋ค๋ฅธ ๊ณํ์ ๋ฌด์์ ๋๊น?
๋ฟก๋ฟก
๋ค๋ฅธ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋์ฒด ์คํ์ ์ ํํ ์๋ ์์ต๋๋ค.
๊ณตํํ์ง๋ง ๋์ฒด ์คํ์๋ ๋์ผํ ์ง์ ์ ์ฑ ์ด ์์ต๋๋ค. Java๋ ์ ์ฌํ LTS ๋ชจ๋ธ (https://www.oracle.com/technetwork/java/javase/eol-135779.html)๋ก ์ด๋ํ์ต๋๋ค.
๊ฐ๊ณผํ๊ณ ์๋ ์์ ์ธ๋ถ ์ฌํญ์ Java ๋ฐ ๊ธฐํ ์คํ์ด ๋ฐํ์ ๊ตฌํ์์ ๋ถ๋ถ์ ์ผ๋ก ๋ง ๊ตฌํ๋๋ ํ์ค์ด ํ์์์ด .NET Framework ๋ฐ .NET Core์ ๋ฌ๋ฆฌ ๋ฒ์ ๊ฐ์ ์ฌ์ ํ ํธํ๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋งํ ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ํ์ฌ ํ์ฌ์ ์ฒซ ๋ฒ์งธ ASP.Net ์ฝ์ด ์ฑ์ ๋ฐฐํฌํ๋ ์์ ์ํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ .NET Framework์ ์ ๋ง ๋ง์ ํฌ์๋ฅผํ๊ณ ์์ผ๋ฏ๋ก .NET Core๊ฐ ์๋ .NET Framework์์ ASP.Net Core๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์คํ ์ ๊ทผ ๋ฐฉ์์ด์์ต๋๋ค.
์ด์ ๋๋ ๋์ค์ ๋ง์ ๊ณ ํต์ ๊ฒช๊ฒ ๋ ์ง ๊ถ๊ธํฉ๋๋ค.
์ฌ๊ธฐ์๋ ์ํธ ์ฐ๊ฒฐ๋ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ASP.Net ์ฝ์ด๋ .NET Framework์์๋ง ์คํ๋๋ ๊ฒ์ด ์๋๋๋ค. ๊ณผ๊ฑฐ์ ASP.Net Core์ ๋ํ Microsoft์ ๋ฉ์์ง๋์ด๋ฅผ ๋ช ํํ๊ฒ ๋ํ๋ด์ง ๋ชปํ์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ .NET ๊ฐ๋ฐ์๋ .NET Framework๊ฐ ์ฃผ์ ๊ตฌํ์ด๋ฉฐ, ๋ฌผ๋ก ํ๊ฒฝ ๋ณ API๋ฅผ ์ ์ธํ๊ณ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋๋จธ์ง๋ ํ์ ์งํฉ์ด๋ผ๋ ์๊ฐ์ ์ต์ํฉ๋๋ค. ์ด๊ฒ์ .NET Core์์ ๋ณ๊ฒฝ๋์์ง๋ง, ๋ง์ ์ฌ๋๋ค์ ์ผ๋ฐ์ ์ผ๋ก "์์ ํ".NET Framework๊ฐ ๊ฑฐ์ .NET Core๊ฐ ์ํํ๋ ๋ชจ๋ ์์ ์ ์ง์ํ ๊ฒ์ด๋ผ๋ ์ธ์์ ๋ฐ์์ต๋๋ค (๋ถ๋ช ํ ๋๊ตฌ ๋ฐ ํ๋ซํผ ๊ฐ ํธํ์ฑ ์ ์ธ). ๋ ๋๋ฆฐ ์๊ฐ ์ฒ๋์์ ๊ผฌ์์ด ํด๊ฒฐ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํฌํจํฉ๋๋ค.
์ต๊ทผ ๋ช ๊ฐ์ง ์ค์ํ ๊ธฐ๋ฅ์ด .NET Framework์ ์ ์ฉ๋์ง ์์ ์ ์๋ค๋ ๋ง์ ์ ์์ด์์์ต๋๋ค. (์ : Span์ ํธํ์ฑ ์ํ
๋ฐ๋ก์ด ์ค๋ ๋์ ๋ฉ์์ง๋ Microsoft๊ฐ .NET Framework๋ฅผ ๋ ๊ฑฐ์ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์ฃผํ๊ธฐ ์์ํ์์ ์์ฌํฉ๋๋ค. ์ค์ ๋ก ๋ณด์ ์์ ๋ง๋ฐ์ ๋๊น์ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ๋ฐ ๊ด์ฌ์ด ์ค์ด๋ค ๊ฒ์ ๋๋ค.
Microsoft๋ ์ญ์ฌ์ ์ผ๋ก ๊ทธ๋ค์ด ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง, ์ฐ๋ฐ์ ์ธ ์๋ก์ด ๊ธฐ๋ฅ๋ง์ผ๋ก ์ ์งํ๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ๋ณด์ ๋ฐ ์์ ์ฑ ํฝ์ค ๋ง ์ ๊ณต ํ ๊ณํ์ด ๋ฌด์์ธ์ง์ ๋ํด ๋ถ๋ช ํํ๋ ๊ฒ์ ๋ํด ๋์ฐํ์ต๋๋ค. .NET Framework๊ฐ ํ์ฌ ๋ ๋ฒ์งธ ๋ฒ์ฃผ์ ์ํ ๋ฟ๋ง ์๋๋ผ ์ธ ๋ฒ์งธ ๋ฒ์ฃผ์ ์ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋น์ทํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ง ์ง์ฆ๋ฉ๋๋ค. .NET Core์๋ ์ผ๋ถ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ์ง ์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ง์์ ์ผ๋ก ๊ฐ๋ฐ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฅผ ๋ค์ด ๋๋ถ๋ถ์ ๊ธฐ์ ์๋ ๋ฐฐํฌ๋๋ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ผ๋ฉฐ ๋ช ๋ ์ ํ ๋ฒ๋ง ํฐ์น๋ฉ๋๋ค. .NET Core์์๋ ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ์ ์ ๋๋ถ๋ถ์ ๋ฆด๋ฆฌ์ค์ ๋ํด ์งง์ ์ง์ ์ฃผ๊ธฐ๋ก ์ด๋ ค์์ ๊ฒช์ด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Windows์๋ ๋ณด์ ์ ๋ฐ์ดํธ ๋ฑ์ ๋ฐ๊ธฐ ์ํด ์ ํจ์น ๋ฆด๋ฆฌ์ค๋ฅผ ์๋์ผ๋ก ์ค์นํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ฌ ์กด์ฌํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ธฐ์ ์ ๋ฌด์์ํด์ผํ ์ง ๊ณ ๋ฏผํ๊ฒ๋ฉ๋๋ค. ๋ณด๋ค ์ํฐํ๋ผ์ด์ฆ ์นํ์ ์ธ .NET Framework๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ๋ถ๋ช ํ ์งํ๋ฅผ ๋ณด์ด๊ณ ์์ผ๋ฏ๋ก ์๋ก์ด ๊ฐ๋ฐ์์๋ ํผํ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๋ฐ๋ฉด์ .NET Core๋ ์กด์ฌํ์ง๋ง ์ํฐํ๋ผ์ด์ฆ ์นํ์ ์ด์ง ์์ต๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํญ์ธ์ด๋์์ง๋ง, ์ด๊ฒ์ด ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๊ณ ์๋ ์ฐ๋ ค๋ฅผ ๋ ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ฟก๋ฟก
๊ทธ๋ฌ๋ System.DirectoryServices ๋ฐ System.Drawing๊ณผ ๊ฐ์ ๊ฒ์ ์์กดํ๋ AspNetCore๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๊ตฌ์ถ ํ ๋ง์ ์๋น์ค๋ ์์ต๋๋ค.
NET Core https://docs.microsoft.com/en-us/dotnet/core/porting/windows-compat-pack ์ Windows ์์ถ ํฉ์
ํธํ์ฑ ํฉ์ด์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ํ๋์ง ๋ชฐ๋์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ชจ๋ ๊ฒ์ .NET Core๋ก ์ฎ๊ธฐ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ ์ ๋ง ์ข์ ๋๋ต ์ธ ๊ฒ ๊ฐ์ต๋๋ค (์ฒ์์๋ ๊ฐ๊ณผํ์ ์๋ ์์). ์ฐ๋ฆฌ๋ ์๋น์ค ํธ์คํ ์ Linux / OSX๋ก ์ฎ๊ธธ ๊ณํ์ด ์์ผ๋ฏ๋ก ์ด๋ฌํ ๋ถ๋ถ์ด ์ฐ๋ฆฌ์๊ฒ ์ ๋ง์ ์ ์์ต๋๋ค.
์ง์์ด ์ฐ์ฅ ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๊น?
์ง์ ์ธก๋ฉด์์-์ด์ฒ๋ผ ๊ด๋ฒ์ํ ๋ฌธ์ ์ ๊ด๋ จ๋ ๋ค๋ฅธ ๋ชจ๋ ์ ์ฝ์ ๊ณ ๋ คํ ๋ 2021 ๋ ๊น์ง 2.x์ LTS๊ฐ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์ง๊ธ ์ดํดํ๊ณ ์๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด .NET Framework ํ๋ก์ ํธ๋ฅผ ๊ฒํ ํ๊ณ .NET Core ํ๋ก์ ํธ๋ก ๋ณํ ํ ๊ธฐํ๊ฐ ์๊ธฐ๋ฉด AspNetCore 3.x๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ํธํ ๊ฒ์ ๋๋ค (ํ์์ ๋ฐ๋ผ ํธํ์ฑ ํฉ ์ฌ์ฉ).
ํ์ ์กฐ์น์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ ๋ ๊ณ ์ ํ๋ก์ ํธ์์ 15 ๋ ๋์ .NET (๋๋ถ๋ถ C #)์ผ๋ก ์์ฑํ์ต๋๋ค. ์ ๋ ์๋ ์ ๋ญ๋นํ๊ณ ๊ณ ๊ฐ์ ์ค๋ฒ ์์ง๋์ด๋ง ๋ ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐ์ ๋ญ๋นํ์ต๋๋ค. .NET Core์ ๊ฐ๋ ์ด ๋ง์์ ๋ค์์ต๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ NodeJS ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ์๋ ์์ง๋ง ๋๋ผ์ด .NET ์ํ๊ณ (๋ชจ๋ ์ง๋ฐฉ ํฌํจ)์์์์ต๋๋ค. ๋ถํํ๋ ๊ทธ๊ฒ์ ๊ทธ ์ฝ์์ ์คํจํ์ง๋ง ์ฌ์ ํ (์ด ์๋ก์ด ๋ฐํ์๋ ๋ถ๊ตฌํ๊ณ ) ํผ๋น๋ฆฐ๋ด ๋๋ ์ฌ์ฉํ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํฉ๋๋ค. ์ง๋ 3 ๋ ๋์ ์ ๋ NodeJS์์ ๋น๋ํ์ต๋๋ค. ๋ฏธ์ํฉ๋๋ค. ๋น๊ต๊ฐ ์๋ฉ๋๋ค. ๋ ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๋ฉด ๋ค์ ๊ด๋ฒ์ํ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๋์ด๋ค์ผ ์ ์์ต๋๋ค.
Windows์ ๋ฐฐํฌ ๋ .NET Framework๋ฅผ ๋์์ผ๋กํ๋ ASP.NET Core 2.1 ์ฑ์์ ์คํํ ์์๋ ํ๋ ์ปดํ์ผ ๋ ๋ฐ์ด๋๋ฆฌ .NET Framework ์ข ์์ฑ (์์ค ์ฝ๋๊ฐ์๋ ๊ณต๊ธ ์ ์ฒด ํญ๋ชฉ)์ด์๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ์ Windows ํธํ ๊ธฐ๋ฅ ํฉ์ ์ถ๊ฐํ์ฌ ๊ณ์ ์๋ํฉ๋๋ค. ํ๋ ์ข ์์ฑ์ด ํฉ์์ ์ ๊ณตํ๋ ์ ํ์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ์ฝ์ด 3.0?
์ํ๊น๊ฒ๋ System.Drawing, GDI ๋ฐ ๋๋๋ก ๋ ์ง์คํธ๋ฆฌ (!)์ ์์กดํ๋ ๋งค์ฐ ์ฑ์ํ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฑฐ๋ํ ์ํ๊ณ๊ฐ ์์ต๋๋ค. ์ด์ 2.1์์๋ง ์๋ํ๊ณ 3 ๋ ๋์ ๋ง ์ง์๋๋ค๋ฉด ์ด๋ ์ผ๋ถ ๊ธฐ์ ์์ Core ์ฑํ์ ์ค๋จ ํ ์์๋ ๋ฌธ์ ์ ๋๋ค.
.NET Core๋ ์์์ ์ ๋๋ฌํ๊ธฐ ์ํด ์์ ํ ์์ ๋ง๋ค๊ณ ์์ต๋๋ค.
๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. .NET Framework์ .NET Core์ ์ ์ฉํ ๊ธฐ๋ฅ์ ํตํฉ ํ ๋ค์ .NET Core๋ฅผ ์คํ์ ์ธ ๋ง ๋ค๋ฅธ ๋ถ๊ธฐ๋ก ์์ ํ ์ ๊ฑฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ธ๋ถํ๋ฅผ ์ค์งํ๊ณ ๊ธฐ์ ์ ์ ์ฝํ์ฌ ๊ณ ๊ฐ์ ๋ ํฐ ์ด์ต์ ์ป์ต๋๋ค. ๋ค์ ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ง๋ง ์ ํ ์ธก๋ฉด์์ ํจ์ฌ ๋ ๊ฑด์ ํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
๋ฟก๋ฟก
.NET Framework์์ ์คํ๋๋ ASP.NET Core๋ ์๊ตฌ์ ์ธ ๊ฒ์ด ์๋๋ผ ํญ์ ๋๋ค๋๋ก ์ฌ์ฉ๋์์ต๋๋ค.
๊ทธ๊ฒ์ ์ ํ ์ฌ์ค์ด ์๋๋๋ค. ASP.NET Core์ ๋ฉ์์ง์ ํญ์ .NET Core ์ .NET Framework ๋ชจ๋์์ ์ง์๋๋ค๋ ๊ฒ์ ๋๋ค. .NET Core์ ๊ฐ์ฅ ์ด๊ธฐ ๋ฐํ ์๋ ASP.NET Core ์ฉ ๋ ํ๋ซํผ (์ด์ ASP.NET 5)์ด ์ธ๊ธ๋์ด ์์ต๋๋ค.
.NET Standard๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ์๋ ค์ง ์๋ "ASP.NET Core์์ .NET Framework๋ฅผ ๋์์ผ๋กํ๋ ์ง์์ ์ ๊ฑฐ ํ ๊ณํ์ด ์์ต๋๋ค . .
๊ทธ๋ ์ต๋๋ค.์ด ๊ฒฐ์ ์ด ์ง๊ธ ๊น์ง ๋ฐ๋ ์๋ค๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ํญ์ ๊ทธ์ ๊ฑฐ์ง๋ง์ด๊ฑฐ๋ Microsoft๊ฐ ์๋ ์ ๊ฑธ์ณ ์ํ ํ ๋งค์ฐ ๋์ ์์ฌ ์ํต ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค.
ASP.NET Core๋ผ๊ณ ๋ํฉ๋๋ค.
์ค ์ด์. ์ด ๋ชจ๋ ์๊ฐ์ด ์ง๋๋ฉด ๋์ ๊ฐ์ ์ฌ๋๋ค์ .NET Core์ ASP.NET Core๊ฐ ๋์ผ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค๊ณผ ์ธ์์ผํ์ต๋๋ค. ์ฌ๊ธฐ์ ์ด์ ์ ์ํด ๋น์ทํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๊ทธ๊ฒ์ ๊ณต์ ํ์ง ์์ต๋๋ค. "Core"๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์คํ .NET Core์ ๋ช ์ ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ์ํ ๊ฒ์ด ์๋๋๋ค. ๋ํ EF Core์๋ "Core"๋ ์์ง๋ง netstandard์์ ๊ณ์ ์คํ๋๋ฏ๋ก ์ธ์๊ฐ ์๋ํ์ง ์์ต๋๋ค.
ํ์ฅ ๋ LTS ์ง์์ด ํ์ํ ๊ณณ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด 6 ๋ ํ์๋ .NET Core๋ก ์ด๋ํ ์์๋ ๊ฒฝ์ฐ [โฆ]
์ด๊ฒ ์ง๊ธ๋ถํฐ ์ด๋์์ ์์ต๋๊น? ์ง๋๋ฒ์ ๋ฉ์์ง๋ ์ฌ์ ํ " 'ํ์ฅ ์ง์'LTS ์ ๊ณต์ ์กฐ์ฌํ๊ณ ์์ต๋๋ค.
ํ
๊ฐ๊ณผํ๊ณ ์๋ ์์ ์ธ๋ถ ์ฌํญ์ Java ๋ฐ ๊ธฐํ ์คํ์ด ๋ฐํ์ ๊ตฌํ์์ ๋ถ๋ถ์ ์ผ๋ก ๋ง ๊ตฌํ๋๋ ํ์ค์ด ํ์์์ด .NET Framework ๋ฐ .NET Core์ ๋ฌ๋ฆฌ ๋ฒ์ ๊ฐ์ ์ฌ์ ํ ํธํ๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ณตํํ์ง๋ง ๊ทธ๊ฒ ๋ ๋์ ์ง์๊ณผ ๋ฌด์จ ๊ด๋ จ์ด ์๋์ง ์ดํด๊ฐ ์ ๋ผ์. ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ํน์ ์์ ๋ฌธ์ )์ ์ํฐํ๋ผ์ด์ฆ ์ง์ (์ง์์ฃผ๊ธฐ๊ฐ ๊ธธ์ด์ง)์ด ์ ๊ธฐ ๋๋ฌธ์ Java๋ก ์ ํํ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์ฃผ์ฅํ์ต๋๋ค.
์๋ ํ์ธ์.
๋ฐ๋ก์ด ์ค๋ ๋์ ๋ฉ์์ง๋ Microsoft๊ฐ .NET Framework๋ฅผ ๋ ๊ฑฐ์ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์ฃผํ๊ธฐ ์์ํ์์ ์์ฌํฉ๋๋ค. ์ค์ ๋ก ๋ณด์ ์์ ๋ง๋ฐ์ ๋๊น์ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ๋ฐ ๊ด์ฌ์ด ์ค์ด๋ค ๊ฒ์ ๋๋ค.
Microsoft๋ ์ญ์ฌ์ ์ผ๋ก ๊ทธ๋ค์ด ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง, ์ฐ๋ฐ์ ์ธ ์๋ก์ด ๊ธฐ๋ฅ๋ง์ผ๋ก ์ ์งํ๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ๋ณด์ ๋ฐ ์์ ์ฑ ํฝ์ค ๋ง ์ ๊ณต ํ ๊ณํ์ด ๋ฌด์์ธ์ง์ ๋ํด ๋ถ๋ช ํํ๋ ๊ฒ์ ๋ํด ๋์ฐํ์ต๋๋ค. .NET Framework๊ฐ ํ์ฌ ๋ ๋ฒ์งธ ๋ฒ์ฃผ์ ์ํ ๋ฟ๋ง ์๋๋ผ ์ธ ๋ฒ์งธ ๋ฒ์ฃผ์ ์ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋น์ทํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Windows์ ๋ฐฐํฌ ๋ .NET Framework๋ฅผ ๋์์ผ๋กํ๋ ASP.NET Core 2.1 ์ฑ์์ ์คํํ ์์๋ ํ๋ ์ปดํ์ผ ๋ ๋ฐ์ด๋๋ฆฌ .NET Framework ์ข ์์ฑ (์์ค ์ฝ๋๊ฐ์๋ ๊ณต๊ธ ์ ์ฒด ํญ๋ชฉ)์ด์๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ํ๋ก์ ํธ์ Windows ํธํ ๊ธฐ๋ฅ ํฉ์ ์ถ๊ฐํ์ฌ ๊ณ์ ์๋ํฉ๋๋ค. ํ๋ ์ข ์์ฑ์ด ํฉ์์ ์ ๊ณตํ๋ ์ ํ์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ ์ฝ์ด 3.0?
์, ๋ฐ์ด๋๋ฆฌ์ ํธํ๋ฉ๋๋ค.
์ํ๊น๊ฒ๋ System.Drawing, GDI ๋ฐ ๋๋๋ก ๋ ์ง์คํธ๋ฆฌ (!)์ ์์กดํ๋ ๋งค์ฐ ์ฑ์ํ ์์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฑฐ๋ํ ์ํ๊ณ๊ฐ ์์ต๋๋ค. ์ด์ 2.1์์๋ง ์๋ํ๊ณ 3 ๋ ๋์ ๋ง ์ง์๋๋ค๋ฉด ์ด๋ ์ผ๋ถ ๊ธฐ์ ์์ Core ์ฑํ์ ์ค๋จ์ํฌ ์์๋ ๋ฌธ์ ์ ๋๋ค.
์ด ์ค๋ ๋์์ ์ฌ๋ฌ ๋ฒ ์ธ๊ธํ๋ฏ์ด. .NET Core ํ๋ก์ ํธ์์ .NET Framework์ ๋ํด ์ปดํ์ผ ๋ ์ข ์์ฑ์ ์ง์ ์ฐธ์กฐํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
@poke ๋ฉ์์ง์ ๋ํ ๋ง์ด ๋ง์ต๋๋ค. ์ ํ ๋ช ํํ์ง ์์์ต๋๋ค. ์ ์ค์์ ๋๋ค.
์ด๊ฒ ์ง๊ธ๋ถํฐ ์ด๋์์ ์์ต๋๊น? ์ง๋ ๋ฒ์ ๋ฉ์์ง๋ ์ฌ์ ํ " 'ํ์ฅ ์ง์'LTS ์ ๊ณต์ ์กฐ์ฌํ๊ณ ์์ต๋๋ค"์์ต๋๋ค. ์ง๊ธ์ด๊ฒ ์ง์ง์ด๊ณ ์ฐ๋ฆฌ๋ 6 ๋ ์ ๋ฐ๋์?
๋๋ 6 ๊ฐ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์ ๊ณต ํ ๋ ์ง์์ด ์ผ๋ง๋ ์ฐ์ฅ ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
.NET Core๋ ํญ์ .NET Framework ๋ฅผ ๋์ฒด ํ ๊ฒ์ด์์ง๋ง (์๋ .NET Framework 5๊ฐ ๋ ์์ ์ด์์) ์ฌ ์์ฑ์ด ๋๋ฌด ์ผ์ฌ์ ์ด์ด์ ์ด์ ๋ฐ์คํฌํฑ ์ฑ์ ์ง์ํ๋ ๋ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋์์ต๋๋ค.
์์ฐ, ์ฌ๊ธฐ์ ์ฌ๋ฏธ์๋ ๋๊ธ์ด ๋ง์ด ์์ต๋๊น? ๊ธฐ์ฌ๋ฅผ ์ฝ์ง ๋ชปํ๋ ์ฌ๋๋ค์ด ์ฐ์ฌ ํด์๋ ์๋ชป๋ ๊ดด์ํ ๋ถ๋ ธ๊ฐ ๋ง์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๊ธฐํ๋ค
@edandersen ์ด ์ธ๋ถ dll์์ ApiPort ๋ฅผ ์คํ
Windows ํธํ์ฑ ํฉ์ ์ด๋ฏธ system.drawing ๋ฐ ๋ ์ง์คํธ๋ฆฌ์ ๋ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฏธ .NET Core์์ ์ด๋ฌํ ๊ฒ๋ค์ ์คํํ๋ ค๊ณ ํ์ต๋๊น? System.Drawing์ mono์ libgdiplus๋ฅผ ์ฌ์ฉํ์ฌ * nix์์๋ ์๋ํฉ๋๋ค. ์ด๋ฅผ ํตํด Windows๊ฐ ์๋ ์์คํ
์์ ClosedXML์ ์ฌ์ฉํ์ฌ Excel ํ์ผ๋ก ์์
ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ํ์ฌ์ "์ต๊ทผ"์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ๊ฐ์ฅ ํฐ .NET Framework ์ข
์์ฑ์ WCF ๊ธฐ๋ฅ์
๋๋ค.
.NET Core WCF ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ์ ๋๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ผ๋ถ ์๋น์ค์์ ์ผ๋ง๋ ์ ์๋ํ๋์ง ํ์ฌ ์ํ๋ฅผ ํ์ธํ์ง ์์์ง๋ง ๊ณผ๊ฑฐ์๋ ์ผ๋ถ ์๋น์ค์ ๋ํ ํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ์ด๋ฏธ ๋ฌธ์ ๋ชฉ๋ก์์์์ต๋๋ค. ๋ฐ๋ฉด ๊ฐ๋จํ ์๋น์ค๋ ์ ์๋ํฉ๋๋ค!
๋ฐ๋ฉด์ .NET Core์์ SOAP ์๋น์ค๋ฅผ ํธ์คํ
ํ๊ธฐ์ํ "๋๋กญ ์ธ"๋์ฒดํ์ ์์ต๋๋ค. ์ด๋ ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์
์ .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฒ์ ์ฐจ๋จํฉ๋๋ค (ํ์ง๋ง ์ธ๊ธํ๋ฏ์ด ํ์ ์์).
์ต๊ทผ ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ WCF ์๋น์ค ๋ง ํธ์คํ
ํ ๋ค์ HTTP / JSON์ ํตํด ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ ๋ฌํ๋ ์ถ๊ฐ ASP.NET ํ๋ก์ ์น์ฑ์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ค์ง ์์์ง ์๊ณ ๋ฐฐํฌ ๋ณต์ก์ฑ์ ์ถ๊ฐํ์ง๋ง ์ผ๋ถ ํตํฉ ์ง์ ์ ํ์ฉํฉ๋๋ค.
.NET Core์์ WCF ํธ์คํ ๊ธฐ๋ฅ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ด๋ ค์์ด ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ค์ ๋ก .NET Core์์ WCF ํธ์คํ ๊ธฐ๋ฅ์ ์ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. SOAP ์๋น์ค๋ฅผ ํธ์คํ ํ๊ณ WSDL์ ์์ฑํ๋ ๋ช ๊ฐ์ง ์ต์ ์ ๋ฉ์ง ๊ฒ์ ๋๋ค. ๋๋ ์ด๋ฏธ ๊ทธ๊ฒ์ ์๋ํ๊ณ ์๋ ๋ช๋ช OSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณด์๋ค. ์๋ง๋ ์ด๊ฒ์ผ๋ก ์ถฉ๋ถํ ๊ฒ์ ๋๋ค.
@ davidfowl
๊ณตํํ์ง๋ง ๊ทธ๊ฒ ๋ ๋์ ์ง์๊ณผ ๋ฌด์จ ๊ด๋ จ์ด ์๋์ง ์ดํด๊ฐ ์ ๋ผ์. ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ํน์ ์์ ๋ฌธ์ )์ ์ํฐํ๋ผ์ด์ฆ ์ง์ (์ง์์ฃผ๊ธฐ๊ฐ ๊ธธ์ด์ง)์ด ์ ๊ธฐ ๋๋ฌธ์ Java๋ก ์ ํํ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์ฃผ์ฅํ์ต๋๋ค.
์์ ์ Java LTS ๋ฒ์ ๋ 3 ๋ ์ด์ง๋ง ๋ชจ๋ ์ฃผ์ ๊ตฌํ ๊ฐ์ ํธํ์ฑ์ ๊ธ์ด๋ฉฐ, ์ด๋ ์ฌ๋ฌ๋ถ์ด ์ฌ๊ธฐ์์ ๊ธฐ๊บผ์ด ๋ฒ๋ฆด ์์๋ ๊ฒ์ ๋๋ค.
์ด ์ ์ฒด .NET Framework, .NET Core, Xamarin, .NET Standard ์ค์๋ WinDev ๋ DevTools์ ์ข์ ์์ ์ฒ๋ผ ๋ณด์ด๊ธฐ ์์ํ์ต๋๋ค. .NET ํ ๋ด๋ถ์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ๋น์ฐํ ๊ณ ๊ฐ์ ๋ด๋ถ ํ์ด ๋ก๋๋งต ๊ธฐ๋ฅ์ ์ํด ์ธ์ฐ๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง ์๋ ํ๋ซํผ์ผ๋ก ์ด๋ํ ์ํฅ์ด ์์ต๋๋ค.
์ด๋ฌํ ๊ฒฐ์ ์ ์์ ๊ฐ์ ๋ถ๋ฌ ์ผ์ผํค์ง ์์ต๋๋ค.
์ด๊ฒ์ ํนํ ํ์ฌ ๊ธฐํ์ ๋งฅ๋ฝ์์ .NET ํ์ ์ค์์ฒ๋ผ ๋๊ปด์ง๋๋ค!
Java๋ฅผ ์ธ๊ธํ๋ ์ฌ๋๋ค์ ์ํด ์ต๊ทผ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ค์ ๋ก ๋ณด์ จ์ต๋๊น? ์๋๋ก์ด๋์์ ๊ตฌ๊ธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์ ๋์ ์ผ๋ก ๋ฏธ์น ์์ก๊ณผ ๊ทธ๋ค์ ์ต์ ๋ผ์ด์ ์ฑ ํ์๋ฆฌ ์ฌ์ด์์ ์ค๋ผํด์ ํ๋์ ์ง์์ ์ผ๋ก ๊ทธ๊ฒ์ด ๋ฒ์ฐฝํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ์ด ์๋๋ผ ์์น ์๋ ์ ํ์ ์ฃฝ์ด๋ ค๋ ํ์ฌ์ ํ๋์ผ๋ก ๋ณด์ ๋๋ค!
์ง๊ธ์ ๋ง์ดํฌ๋ก ์ํํธ๊ฐ ์ ๋ฐ๋์ ํ๋์ํ๊ณ ์๋ค๋ ๊ฐ๋ ฅํ ๋ง์ผํ ์ ํตํด์ด๋ฅผ ํ์ฉํ ์์๋ ์๋ฒฝํ์๊ธฐ์ด๋ฉฐ .NET์ ๊ฑด์ ํ๊ณ ์์ ์ ์ด๋ฉฐ ์์ ํ ๊ฐ๋ฐ ์ต์ ์์ํ ๊ณณ์ ๋๋ค. ๋์ , ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ป์ต๋๋ค
์๋ ํ์ธ์.
๋ ํ๊ฒฝ์์ ์์
ํ๋ ์ฐ๋ฆฌ๋ ์ค์ ๋ก Oracle ์์
์ ๊ฐ์ฌํฉ๋๋ค.
Java๋ก ํด์์ต๋๋ค.
ํ๋ก๋์
์์ Java๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ณ Oracle์ ๊ฒฝ๋ฉธํ๋ ์ฌ๋๋ค์
๊ทธ๋ค์ ๋ํ ์ฆ์ค ๋
ผ์์์ ๊ธธ์ ์์์ต๋๋ค.
Android์ ๊ด๋ จํ์ฌ ์ ๋ Google๋ก์ ์์ก์ ์ ์ ์ผ๋ก์ง์งํฉ๋๋ค.
Java ํ๋ซํผ์ ํฌํฌํ์ฌ Microsoft๊ฐ ์คํจํ ๊ณณ์์ ์ฑ๊ณตํ์ต๋๋ค.
J ++๋ก. Maven Central์ ์์์ JAR์ด ์ค์ ๋ก Android์์ ์๋ํ๋๋ก ๋ณด์ฅ๋๋ ๋ ์ ๊ธฐ๋ํฉ๋๋ค.
.NET์ ๊ฒฝ์ฐ ์ง์์ ์ธ ์ฌ๋ถํ
์ ์ง๋ฆฌ๊ธฐ ์์ํ์ต๋๋ค.
Microsoft ํ๋ซํผ์ ๋์์ผ๋กํ๋ ๋ฐฉ๋ฒ.
์ ์ฒด WinRT, UAP, UWP, .NET ๋ค์ดํฐ๋ธ ๋๋กญ F #, XNA, Core 1.0์ด ๋จ์์ต๋๋ค.
์ ํฌ๋๊ฐ ๋ง๊ณ ์ต๊ทผ์ ๊ฒฐ์ ์ด ์ํฉ์ ๋ ์ข๊ฒ ๋ง๋ค์ง๋ ์์ต๋๋ค
์ฌ๋ฌด์ฉ ๊ฒ์ท.
.NET์ ์ ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ํ๋ซํผ์ด๋ฏ๋ก ๋ ์ด์ ๋ง์น์ง ๋ง์ญ์์ค.
ํ
์ด์ 2.1์ด .NET Framework์์ ์ง์๋๋ ๋ง์ง๋ง LTS ๋ฒ์ ์ด๋ผ๋ ๊ฒ์ ์ ๊ทธ๋ ์ด๋ ํ ๊ณณ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฆ, ์ง์๋์ง ์๋ ํ๋ซํผ์ด๋์๋ค๋ ์๋ฏธ์ด๋ฉฐ, ์ง์๋์ง ์๋ EOL ๋์ ๋๋ฌํ๊ธฐ ์ ์ ๋๊ตฌ๋ ์ง์ด๋ฅผ ์ฉ์์ฒ๋ผ ์ทจ๊ธํ๊ณ ์ถ๊ฒฉํด์ผํฉ๋๋ค.
์ด๊ฒ์ด ์ ๊ฐ ์ ์ฒด ํ ๋ก ์์ ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํ๋ ์ ์ค ํ๋์ ๋๋ค. ๋ณด์ ์์ (ํ์ฅ ๋ LTS ์ง์์ผ๋ก ๋ค๋ฃฐ ์ ์์) ์ธ์ LTS ์ง์์์ ์ค์ ๋ก ๋ฌด์์ ์ป์ต๋๊น?
์ฃผ๋ฅ LTS ์ง์์๋ ๋ค์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ด์ ๋ฒ์ (๋ณด์ ํฝ์ค)์ ๋๋ถ๋ถ์ Windows Update๋ฅผ ํตํด ํจ์น๋ฉ๋๋ค (.NET Framework๋ฅผ ๋์์ผ๋กํ๊ธฐ ๋๋ฌธ์). ๋ฐ๋ผ์ ๋จ์ ๋ณด์ ๋ฐ ์ค์ํ ๋ฒ๊ทธ ์์ ๋ง ASP.NET Core ์์ฒด์ ์์ต๋๋ค.
์ง์์ด 2018 ๋ ์ ์ข ๋ฃ๋๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. 2020 ๋ ์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ์ฌ๋์ ์๋ฌด๋ ์์ ๊ฒ์ด๋ฏ๋ก (imho) 2021 ๋ (๋๋ 2026 ๋ ๋๋ ์ฐ์ฅ ์ง์์ด ์๋ฏธํ๋ ๊ธฐ๊ฐ) ์ดํ์ ์ค์ํ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌ ํ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค. ๋๋ ค๊ณ ).
๊ทธ๊ฒ์ ๋จ์ง ๋ณด์ ๋ฒ๊ทธ๋ฅผ ์ด์ด๋๊ณ LTS๋ก ๋ฎ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
์ด์ ๋ต๋ณ์์ TLS 1.4 ๋ฑ์ ์ธ๊ธํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ด์จ๋ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ฏ๋ก Java์์๋ ๋์ผํ๋ฏ๋ก LTS์์ ๋ค๋ฃจ์ง ์์ ๊ฒ์ ๋๋ค (Java 6์๋ง TLS 1.0 ์ง์-TLS 1.1 ๋ง ํฌํจ) ๋น๊ณต๊ฐ ์ ๋ฐ์ดํธ๋ Oracle์ ํ์ฅ ์ง์ ๊ฐ์ ์์๊ฒ๋ง ์ ๊ณต๋ฉ๋๋ค.
- .NET Core๋ก ์ด๋ํ๊ธฐ์ํ ์คํ ์ด์ง ํ๋ซํผ์ผ๋ก ์ฌ์ฉํ๋ ค๊ณ ์๊ฐํ ์ฌ๋์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์์๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๊ฑฐ๋ ์ข ์์ฑ ์ค ํ๋๋ผ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ง์๋์ง ์๋ ํ๋ซํผ์์ ์ข์ด ๋ ์ํ์ ์ง๋ฉดํ๊ธฐ ๋๋ฌธ์ ์คํ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ ์ต์ ์ด๋์์ต๋๋ค. ๊ทธ๋ค์ .NET Core์์ ์คํํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด์ .NET Framework์์ ASP.NET Core์ ํจ๊ป ์ฌ์ฉํ ์ ์์ง๋ง .NET Framework + ํธํ์ฑ ํจํค์ง์ ASP.NET Core์์๋ ์ฌ์ฉํ ์์๋ API๋ ๋ฌด์์ ๋๊น?
์ด ์ ์ ํ์ธํ๊ณ ๋๋ฝ ๋ API๋ฅผ ํฅํ ํธํ์ฑ ํจํค์ง์ ํจ๊ป ์ ๊ณตํ๊ฑฐ๋ .NET Core์ ์ถ๊ฐํ์ฌ .NET Core๋ฅผ ๋์์ผ๋กํ๋ ๊ฒฝ์ฐ์๋ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐ ํ ์ ์๋๋กํ๋ ๊ฒ์ด ๋ ์ค์ํ ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
.NET Core ์ดํ .NET Standard ๋๋ .NET Core์์ ์ฌ์ฉ ๊ฐ๋ฅํ API ๋ง ์ฌ์ฉ ํ๋ ํ .NET Core ํ๋ก์ ํธ์ ๋ชจ๋ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ์กฐ (๋ฐ ์ฌ์ฉํ )
๋ฐ๋ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๊ฐ netstandard / netcoreapp์ ๋์์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํน์ ๋ฒ์ ์ .NET Core์์ ์ฌ์ฉํ ์์๋ ํธํ๋์ง ์๋ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ณด๊ณ ์๋ฅผ ํ์ํ๋ nuget.org์ ๊ฐ nuget ํจํค์ง ์์์๋ ๊ธฐ๋ฅ / ๋งํฌ๋ฅผ ํตํด Microsoft๊ฐ NuGet ์น ํ์ด์ง / ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฅํ๋ฉด ๋์์ด ๋ ๊น์?
์๋ฅผ ๋ค๋ฉด
'Company.Example.MyLib'๋
.NET ์ด์์ฑ ๋ถ์๊ธฐ๋ฅผ ์คํํ์ฌ ๊ฐ๋ฅํด์ผํฉ๋๊น? (IL ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์์ ํ์ง ํ์ธํ๊ธฐ ์ํด ํธ์ถํ๋ ๋ค๋ฅธ API๋ฅผ ํ์ธํ์ฌ) ํธ์ถํ๊ธฐ์ ์์ ํ ๊ณต์ฉ API ๋ชฉ๋ก์ ์ถ๊ฐํ๋ฉด ๋ณด๋์ค๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ์ ํ์ํ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ .NET Core์์ ์คํ๋ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ช ์ ์ ์ผ๋ก ํธ์ถํ์ง ์๋๋ผ๋ ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์ต๋๊น?
์ง๊ธ์ API๊ฐ ์ง์๋๋์ง ์ฌ๋ถ๋ฅผ ํ์ ํ๋ ๊ฒ์ด ๋ค์ ๊ณ ํต ์ค๋ฝ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๊ณ ๋ถ์๊ธฐ๋ฅผ ๋ก์ปฌ์์ ์คํํฉ๋๋ค. ๋ง์ ๊ฐ๋ฐ์๋ ๊ณต์์ ์ผ๋ก netstandard๋ฅผ ์ง์ํ์ง ์๋ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋ชจ๋ฅผ ์ ์์ต๋๋ค.
@davidfowl @terrajobst ๊ทธ๊ฒ์ด NuGet์ ๊ฐ๋ฅํ ์ถ๊ฐ์ผ๊น์? -NET Core ํธํ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒ์ ๊ฐ๋ฅ์ฑ์ ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค๋ ค๋ฉด?
- ๊ธฐ์ ์ ๊ธฐ์กด ๊ด๋ฆฌ ํ ์ธํ๋ผ์ .NET Framework ์๋ฒ๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ฌ๋์ ๋๊ตฌ๋ ์๋ก์ด ๊ฐ๋ฐ ๋ชจ๋ธ ๋ฐ ์์ฝ ์์คํ ์ฌ์ฉ์ ์ฐธ์ฌํ ์ ์์ผ๋ฉฐ ๊ธฐ์กด์ ๊ธฐ์กด ASP.NET ์ง์ / ๊ธฐ์ ์ ๊ฐ์น๊ฐ ๋งค์ผ ๋ฎ์์ง๋ ๊ฒ์ ํ์ธํด์ผํฉ๋๋ค.
์ด๋ .NET Framework ์ง์ ์ฌ๋ถ์ ๋ํ ๋ ผ์์ด ์๋๋๋ค. ๋ ๊ฑฐ์ ์ข ์์ฑ์ ๊ฐํ ์๊ณ .NET Core (ํธํ์ฑ ํฉ ๋๋ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํจ)๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์์๋ ์ฌ๋๋ค์ ์ดํ์๋ ์ํ ํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ ์ด๋ค ๋ณํ๋ฅผ ๊ฐ์ ธ์ฌ๊น์?
๊ทธ๋ฌ๋ ๋ชจ ๋๋ฆฌ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๋ ๋ถํ ๋์ด ์ ์ฐจ ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๋ฅผ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ด๋ํ ์ ์์ง๋ง ์ด๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค.
- ์์ฐ, ๊ณํ ๋ฐ ํฌ์ ๊ฒฐ์ ์ ๊ธฐ์ค์ด๋๋ ์ง์นจ์ด ๋ณ๊ฒฝ ๋์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์กฐ์ง๋ ๊ณํ๋์ง ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ฐ์ ๋นํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ด์ต์ด ํฌ์๋ณด๋ค ๋น์ค์ด ํฌ๋ค๋ฉด ์ ์๋ฉ๋๊น? ์ฆ, ๋๊ฐ๋ก ํฐ ๊ฐ์น๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ด์๋ ๊ฒฝ์ฐ.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด์ ์์คํ ์ ์ ์งํ์ญ์์ค. ์ํํธ์จ์ด ๊ฐ๋ฐ์ โโ์์ํ ์ด๋ฌ์ต๋๋ค. Fortune๊ณผ Cobol์์ ๊ฐ๋ฐ ๋ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ํ์ฌ๋ ์ฌ์ ํ ์์ต๋๋ค.
.NET Core๋ก ์ ํ ํ ์ ์๊ฑฐ๋ ์ ํํ๊ธฐ๋ฅผ ์ํ์ง ์๋ ๋ง์ ์ฌ๋๋ค์ด ์์ผ๋ฉฐ, ํด๋์ ASP.NET๊ณผ ๋์ผํ ์์ค์ ์ง์์ ๊ณต์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค (ํ์ฌ ๋ฉ์์ง์ด ๋ฌด๊ธฐํ์ผ๋ก ์ ์ ํจ).
๋๋ฝ ๋ API๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ง๋ ์ ์ผํ ์ด์ ๊ฐ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋ฐ์ ํ์ด ๋ ์ด์ ์กด์ฌํ์ง ์๋ ์ข ์์ฑ์ ์์กด ํ ์ ์๊ณ , ๋ณ๊ฒฝํ ์์๋ ์ค์ํ ๊ตฌ์ฑ ์์์ด๋ฉฐ, ์์ ํ๊ฒ ๋ฆฌํฉํ ๋ง ํ ์ ์์ต๋๋ค (์ : ํ ์คํธ ์์), ๋ค๋ฅธ .NET FX ์ ์ฉ ์์คํ ๊ณผ ๊ณต์ ๋๋ฉฐ ์์ฐ, ๋ณ๊ฒฝ ์ฉ๋์ด ์๊ฑฐ๋ ๊ธฐ์ ์ ๊ด๋ฆฌ ์ธํ๋ผ์ ๊ฐ์ ์ธ๋ถ ์์ธ์ผ๋ก ์ธํด .NET Framework ์๋ฒ์์ ์คํ ๋ง ์ง์ํ๋ ๋ค๋ฅธ ๋ถ์์์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
ํ์ง๋ง ์ด๋ค ์์กด์ฑ? ์ด๋ฌํ ์ธ๋ถ ์ข ์์ฑ์ด ์ฌ์ฉํ๋ API๋ฅผ ์๋ณํ๋ ค๋ฉด ๊ตฌ์ฒด์ ์ธ ์์ ๊ฐ ํ์ํฉ๋๋ค. ์ด API๋ .NET Core 3.0 ๋๋ .NET Core์ ํฅํ ๋ฒ์ ์ ์ถ๊ฐ ๋ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด .NET Core ํ๋ก์ ํธ์์์ด .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์ผํ ๋ฌธ์ ๋ .NET Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ .NET Standard ๋๋ .NET Core์์ ์ฌ์ฉํ ์์๋ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ํผ๋๋ฐฑ์ ์์ ํ๋ ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ณํด์ผํฉ๋๋ค.
ํ
๋ฟก๋ฟก
๋ค๋ฅธ ์ฌ๋๋ค์ ๋ค๋ฅธ ๋์ฒด ์คํ์ ์ ํํ ์๋ ์์ต๋๋ค.
๊ณตํํ์ง๋ง ๋์ฒด ์คํ์๋ ๋์ผํ ์ง์ ์ ์ฑ ์ด ์์ต๋๋ค. Java๋ ์ ์ฌํ LTS ๋ชจ๋ธ (https://www.oracle.com/technetwork/java/javase/eol-135779.html)๋ก ์ด๋ํ์ต๋๋ค.
๊ฐ๊ณผํ๊ณ ์๋ ์์ ์ธ๋ถ ์ฌํญ์ Java ๋ฐ ๊ธฐํ ์คํ์ด ๋ฐํ์ ๊ตฌํ์์ ๋ถ๋ถ์ ์ผ๋ก ๋ง ๊ตฌํ๋๋ ํ์ค์ด ํ์์์ด .NET Framework ๋ฐ .NET Core์ ๋ฌ๋ฆฌ ๋ฒ์ ๊ฐ์ ์ฌ์ ํ ํธํ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ ์ดํ์ Java ์๋์ ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. Java 9๋ ๋ฐํ์์ ๋ชจ๋ํํ๊ธฐ์ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ผ๋ฉฐ ์ด๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ ์ ๋๋ค. ๋ฒ์ 9์์๋์ด ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ง๋ง ํฅํ ๋ฒ์ ์์๋ ํ๋๊ทธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ (๋๋ ๋ ์ ์์)๋๋ฉฐ ์ด๋ก ์ธํด ๋ ๊ฑฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ผ๋ถ ๋ฆฌํ๋ ์ ๋ง๋ฒ์ ํตํด ๋ด๋ถ API๋ฅผ ์ฌ์ฉํ๋ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์ค๋จ
@ TsengSR
Java 9์ ๋์ ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ ๊ด๋ จ Java ํ๋ ์ ์ํฌ์ 100 %๊ฐ Java 9, 10 ๋ฐ 11์์ ์๋ํ๋ฉฐ, .NET Framework, UWP ๋ฐ Core์์๋ ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค.
๊ณต์์ ์ธ ํฌ๋ก์ค ํ๋ซํผ GUI ํ๋ ์ ์ํฌ๊ฐ ๋ ๊ฐ ์์ง๋ง Core์ ๋ํ ๊ณต์ ๋ก๋๋งต์ ์์ง ์ป์ง ๋ชปํ๋ค๊ณ ์์ํด๋ณด์ญ์์ค!
ํ
@ TsengSR
Java 9์ ๋์ ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ ๊ด๋ จ Java ํ๋ ์ ์ํฌ์ 100 %๊ฐ Java 9, 10 ๋ฐ 11์์ ์๋ํ๋ฉฐ, .NET Framework, UWP ๋ฐ Core์์๋ ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค.
๊ณต์์ ์ธ ํฌ๋ก์ค ํ๋ซํผ GUI ํ๋ ์ ์ํฌ๊ฐ ๋ ๊ฐ ์์ง๋ง Core์ ๋ํ ๊ณต์ ๋ก๋๋งต์ ์์ง ์ป์ง ๋ชปํ๋ค๊ณ ์์ํด๋ณด์ญ์์ค!
์ฃ์กํฉ๋๋ค. ๊ทธ๊ฑด ๋ง๋ ์๋ฉ๋๋ค.
--add-opens
๊ฐ ํธ์ถ๋์ง ์๋ ํ ์ด๋ฌํ ๋ชจ๋์ ๋ฐ์๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ Java 9์ ๋ด๋ถ ๋ชจ๋์
๋๋ค (๊ทธ๋ฆฌ๊ณ iirc๋ ์ฌ๋๋ค์ด ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ์ ์คํํ๊ณ ๋์ค์ ๋ช ๊ฐ์ง ๋ฒ์ ์ ์ ๊ฑฐ ํ ์ ์๋๋ก ํญ์ ์์ ์๋ฃจ์
์ด์ด์ผ ํจ).
Java 9๊ฐ ๊ณง ์คํ ๋ ๋ ๋๋ผ๋ง์ ๋ฅ์ ๋์น ๊ฒฝ์ฐ์ ๋ํ ์๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-May/012673.html
์ ์ฒด ์์ฝ ์์คํ ์ด ํ ๋ฒ์ ๋ชจ๋ ์ Java ํ๋ซํผ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์๋๋ก
๋ณด๋ค ํธ์ํ ์๋๋ก ์ ๋ ๋ถ๋ฒ์ ์ธ ๋ฐ์ฌ ์ ๊ทผ์ ํ์ฉ ํ ๊ฒ์ ์ ์ํฉ๋๋ค.
JDK 9์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋์ค ๊ฒฝ๋ก์ ์ฝ๋์์ ํ์ฉํ์ง ์์ผ๋ ค๋ฉดํฅํ ๋ฆด๋ฆฌ์ค.
๋ค๋ฅธ ๊ฒ, Java EE 9 deprecated JAX-WS๋ deprecated๋์๊ณ Java EE 11์์ ์ ๊ฑฐ ๋ ์์ ์ ๋๋ค. ์ด๋ ๋๋ต WCF์ ๋์ผํ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ์ ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค ์ธ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋์ฒดํ์ง ์๊ณ ๋ ์ต์ ๋ฒ์ ์ผ๋ก ์ด์ ํ ์ ์์ต๋๋ค. .NET Framework์ ASP.NET Core์์ .NET Core์ ASP.NET Core๋ก (๋๋ ASP.NET์์ ASP.NET Core @ .NET core๋ก) ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋ค๋ฅด์ง ์์ต๋๋ค.
https://www.oracle.com/corporate/features/understanding-java-9-modules.html
ํฅ์๋ ํ๋ซํผ ๋ฌด๊ฒฐ์ฑ โJava 9 ์ด์ ์๋ ์ฑ์ ํด๋์ค์์ ์ฌ์ฉํ๊ธฐ์ํ ๊ฒ์ด ์๋ ํ๋ซํผ์ ๋ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ ์์์์ต๋๋ค. ๊ฐ๋ ฅํ ์บก์ํ๋ฅผ ํตํด ์ด๋ฌํ ๋ด๋ถ API๋ ํ๋ซํผ์ ์ฌ์ฉํ๋ ์ฑ์์ ์ค์ ๋ก ์บก์ํ๋๊ณ ์จ๊ฒจ์ง๋๋ค. ์ด๋ก ์ธํด ์ฝ๋๊ฐ ๋ด๋ถ API์ ์์กดํ๋ ๊ฒฝ์ฐ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ๋ชจ๋ํ ๋ Java 9๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ด๋ถ API๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ (์ค๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ์ผ๋ถ๊ฐ ์ฌ์ฉํ๊ฑฐ๋ Java 9๊ฐ ์ถ์ ๋ ๋ ๋ค์ ์ฌ์ฉํ๋ sun.*
๋ค์ ์คํ์ด์ค์ ๋ชจ๋ ๊ฒ์ ํฌํจํ์ฌ) ๋๋ ์ข
์ ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด API ๋๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ .NET Framework ๋ฐ .NET Core์์์ ๊ฐ์ด API๊ฐ ํธ์ถ๋๋์ง ์ฌ๋ถ๋ฅผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ง ๋ณผ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์ซ๋ผ๋ฆฌ
--add-opens๊ฐ ํธ์ถ๋์ง ์๋ ํ ์ด๋ฌํ ๋ชจ๋์ ๋ฐ์๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ Java 9์ ๋ด๋ถ ๋ชจ๋์ ๋๋ค (๊ทธ๋ฆฌ๊ณ iirc๋ ์ฌ๋๋ค์ด ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ์คํํ๊ณ ๋์ค์ ๋ช ๊ฐ์ง ๋ฒ์ ์ ์ ๊ฑฐ ํ ์ ์๋๋ก ํญ์ ์์ ์๋ฃจ์ ์ด์ด์ผ ํจ).
๋๋ ํด๋์ค ๊ฒฝ๋ก ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ณ ๋ชจ๋์ด๋ผ๋ ํผ๋์ ๊ฑด๋ ๋ธ ์ ์์ต๋๋ค. ํด๋น ๋ชจ๋๋ ๊ฐ๊น์ด ๋ฏธ๋์ ์ ์ง๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋์ ๋ค์ด๊ฐ๋ฉด ๋ค๋ฅธ ๋ชจ๋์ ํจํค์ง์ ๋ํ ์ข ์์ฑ์ ๋ช ์ ์ ์ผ๋ก ์ ์ธ ํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๊ฒ, Java EE 9 deprecated JAX-WS๋ deprecated๋์๊ณ Java EE 11์์ ์ ๊ฑฐ ๋ ์์ ์ ๋๋ค. ์ด๋ ๋๋ต WCF์ ๋์ผํ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
๋ชจ๋ J2EE๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ Java 11์์ ์ ๊ฑฐ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ J2EE๋ ๊ตฌํ์ด ์๋ ์ธํฐํ์ด์ค ๋ง ์ ์ํฉ๋๋ค. J2EE๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ ค๋ฉด ์ข ์์ฑ์ ์ ํํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค. ์ด์จ๋ ๋ชจ๋ ๊ตฌํ์ ๋ถ๋ฆฌ๋์์ผ๋ฉฐ Java 11์์ ์ ์๋ํฉ๋๋ค.
์ด๋ฌํ ๋ด๋ถ API (์ผ๋ถ ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๊ฑฐ๋ Java 9๊ฐ ์ถ์ ๋ ๋ ๋ค์ ์ฌ์ฉํ๋ sun. * ๋ค์ ์คํ์ด์ค์ ๋ชจ๋ ๊ฒ ํฌํจ)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋์ด API์ ์์กดํ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ ์ ์์ต๋๋ค.
ํญ์ ๊ทธ๋ ์ต๋๋ค. ๋ฌธ์ํ๋์ง ์์ API์์ต๋๋ค. ์๋ฌด๋ ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํด์๋ ์๋๋ฉฐ ์ธ์ ๋ผ๋ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ ๊ฑฐ ๋ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก (ab) ์ฌ์ฉ๋๋ ๋ง์ ๋ด๋ถ API๋ ๊ธฐ์กด ํ๋ก๊ทธ๋จ์ ์ค๋จํ์ง ์๋๋ก ๋จ๊ฒจ์ ธ ํฅํ ์ ์ ํ API๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค.
์ผ๋ถ API๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ง๋ง JRE ๋๋ Java ์์ฝ ์์คํ ์ ์ฒด๊ฐ ์๋ ํน์ API์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ API์์ ์๋ก์ด ๊ณต์ ๋ฐ ๋ฌธ์ํ ๋ API๋ก ์ด๋ํ๋ ๋ฐ ํ์ํ ์์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ต์ํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Java๋ ํญ์ .NET๋ณด๋ค ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๋๋ ๋ฐ ๋ ๋ง์ ์์ง๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Java์์ var
๋ผ๋ ์ ํ์ ์ ์ธํ๋ ๊ฒ์ ์ด์ ๋ก์ปฌ ์ถ๋ก ์ ์ํด ์์ฝ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฒ์
๋๋ค. Java์์ _
๋ณ์์ ์ด๋ฆ์ ํ๊ธฐ / ์์ผ๋ ์นด๋๋ก ์์ฝ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฒ์
๋๋ค. C #์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ ๋ฐ๋์ ๊ฒฐ์ ์ ๋ด ๋ ธ์ต๋๋ค.
์คํดํ์ง ๋ง์ญ์์ค. Java๋ ์์ฒด ์๋ง์ ๋๋ค. ๋ชจ๋ ์ฌ์ด์์ Java 8์ ๋ํ ์ง์์ด ๊ฑฐ์ ๋ ๋๊ฐ๊ณ Oracle์ด JRE ๋ผ์ด์ ์ค์ ํ์์ค๋ฌ์์ง๋ Microsoft๋ ์ฌ๋๋ค์ ์ ํ ํ ์์๋ ์์ฒญ๋ ๊ธฐํ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ดํฌ๋ก ์ํํธ๊ฐ ํฅํ ํ๋ซํผ์ ์ง์๊ณผ ๋ฐ์ ์ ๋ํด ํผํฉ ๋ ๋ฉ์์ง๋ฅผ ๋ด๋๋๋ค๋ฉด ๊ทธ๊ฒ์ ์ผ์ด๋์ง ์์ ๊ฒ์ ๋๋ค.
์ซ๋ผ๋ฆฌ
์ด๊ฒ์ด ์ ๊ฐ ์ ์ฒด ํ ๋ก ์์ ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํ๋ ์ ์ค ํ๋์ ๋๋ค. ๋ณด์ ์์ (ํ์ฅ ๋ LTS ์ง์์ผ๋ก ๋ค๋ฃฐ ์ ์์) ์ธ์ LTS ์ง์์์ ์ค์ ๋ก ๋ฌด์์ ์ป์ต๋๊น?
์ ๊ทธ๋ ์ด๋ ํ ๊ณณ ์ด์์ด ๋๋๊ฒ ๋ LTS์ ๋ํ ๋๋ฑ ๊ฑฐ๋ฆฌ๋ ์๊ณ๊ฐ ์๋๋ฐ, ์ด๋ Java LTS๊ฐ ๋น๊ต๋ฅผ ํตํด ๋์ ธ ์ง ๋ ์์ ์ ๋๋ฌ๋ด๊ณ ์์ต๋๋ค. Java ๋ฐ .NET Framework๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ค์ ์ ๋ ๊ธฐ์กด ์์คํ ์ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ ์ ์๋ค๋ ํ์ ์ด ํญ์์์์ต๋๋ค. ๋ ์ด์ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก๊ฐ ์์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์์คํ ์ ์ ๋ฐํ์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฑฐ๋ ์ง์๋์ง ์๋ ํ๋ซํผ์์ ๊ณ์ ์คํํด์ผํ๋ ๋ฌธ์ ์ ์ง๋ฉด ํด ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก .NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ์คํ ๋ถ๊ฐ๋ฅํ ์์คํ ์ด์์ ๊ฒ์ด๋ฉฐ ์ง์๋์ง ์๋ ํ๋ซํผ์์ ์ค์ํ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๊ณ์ ์คํํ ์ ์์ต๋๋ค.
์ด ๊ฒฐ์ ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋น์ ๊ฐ Java ์์ญ์์ ๋ฌด์์ธ์ง ํ์คํ์ง ์์ ๊ธฐ์กด ์์คํ ์ด GraalVM์์ ์คํ๋๋๋ก ๊ฐ์ ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค. ๋ง์ ์ผ์ด ์๋ํ๊ณ ์ผ๋ถ๋ ์๋ํ์ง ์์ผ๋ฉฐ ์์คํ ์ด ํด์๋ก ํธํ์ฑ์ ์์ธกํ ์ ์๋ค๋ ํ์ ์ด ๋จ์ด์ง๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ ๋ ๋๊น์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
.NET Core ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ฐ๋ฅํ๊ฒํ๊ธฐ ์ํด ๋ง์ ์์ ์ด ์ํ๋์๋ค๋ ๋ฐ ๋์ํ์ง๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฐฉ์ง ํ ์ธ๋ถ ์์ธ (MS ์ ์ด ์ธ๋ถ ํฌํจ)์ด ์ฌ์ ํ ๋จ์ ์์ผ๋ฉฐ์ด ๊ฒฐ์ ์ ๋ด๋ ค ์ง ๊ฒ์ ๋๋ค. ASP.Core / FX๋์ด ๋ฐํ ์ด์ ์ ๋นํด ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ต๋๋ค. ASP.Core / FX๋ ์ธ๊ธฐ์๋ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก ์์ง๋ง, ๋ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฐฉ์ง ํ ๋ฏธ๋์ ์ง์๋์ง ์๋ ํ๋ซํผ์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ํฌํจํ๋ ์ ์ฒด ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ ๊ถ์ฅํ๋ ๊ฒ์ ๋ ์ด์ ํ๋ช ํ์ง ์์ ๊ฒ์ ๋๋ค. ๋ ๋ง์ ๊ธฐ์กด ์์คํ / ๊ฐ๋ฐ์๊ฐ ์ ์ฒด ๋ ํด๋์ ASP.NET์ ๋จ์์๊ฒ๋ฉ๋๋ค.
์ด์ ๋ฒ์ (๋ณด์ ํฝ์ค)์ ๋๋ถ๋ถ์ Windows Update๋ฅผ ํตํด ํจ์น๋ฉ๋๋ค (.NET Framework๋ฅผ ๋์์ผ๋กํ๊ธฐ ๋๋ฌธ์). ๋ฐ๋ผ์ ๋จ์ ๋ณด์ ๋ฐ ์ค์ํ ๋ฒ๊ทธ ์์ ๋ง ASP.NET Core ์์ฒด์ ์์ต๋๋ค.
์กฐ์ง์ ํฅํ ๋ฒ๊ทธ ๋๋ ๋ณด์ ๋ฌธ์ ๊ฐ ์ง์์ ์ํด ์ง์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ง ๋ฐ์ํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ๋ถ๋ถ์ ์ผ๋ก ์ง์๋๋ ํ๋ซํผ์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋กํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. ASP.Core / FX๊ฐ ํฅํ ๋ณด์ ์ทจ์ฝ์ฑ์ด ํด๊ฒฐ ๋ ๋๋จธ์ง .NET Framework์ ๋์ผํ ์์ค์ ์ง์์ ๋ฐ์ผ๋ฉด ๋จผ ๊ธธ์ ๊ฐ ๊ฒ์ ๋๋ค.
ํ์ฌ MS๋ง์ด ์ ๋ฐ์ดํธ ๋ ASP.Core NuGet ํจํค์ง๋ฅผ ํจ์นํ๊ณ ๋ฆด๋ฆฌ์ค ํ ์ ์์ผ๋ฉฐ, ์ํธ ์ฐ๊ฒฐ๋๋ ์ข ์์ฑ ํธ๋ฆฌ๊ฐ OSS ์ธ ๊ฒ์ ๊ทธ๋ค์ด๋ฐ๋ 2.1 PR (LTS ์ดํ)์ด ๊ฒํ , ์น์ธ ๋ฐ ์น์ธ๋์ง ์๋ ํ ์ฌ๊ธฐ์์ ๋ง์ ๋์์ด๋์ง ์์ ๊ฒ์ ๋๋ค. ์ถ์๋์์ต๋๋ค.
๊ฒฐ๊ตญ ๋ชจ๋ ์ธ๋ถ ์ฌํญ์ ๋ ผ์ํ ํ์๋ ์ฌ์ ํ ์ค์ํ ๊ถ๊ทน์ ์ธ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ASP.Core / FX์์ ๊ธฐ์กด ์์คํ ์ ๊ณ์ ์คํํ ์ ์์ต๋๊น?
๊ธฐ์ ์ ์ผ๋ก๋ ๊ฐ๋ฅํ ๊ฒ์ด์ง๋ง ๋ฏธ๋์ ์ค์ํ ๋ฒ๊ทธ / ๋ณด์ ์ทจ์ฝ์ฑ์ด ํด๊ฒฐ ๋ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ ์์ด๋ ๊ถ์ฅ ์ฌํญ์ด NO๊ฐ๋์ด ์ธ๋ถ ์ํ๊ณ๊ฐ์ด ๊ฒฐ์ ์ ๊ณ ํต์ ํก์ํ๊ฒ๋ฉ๋๋ค.
ASP.NET Core๊ฐ .NET Core ์ ์ฉ ์ผ ๊ฒฝ์ฐ ์ ์ฒด .NET Standard์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํด์ผํฉ๋๊น?
๋ง์ดํฌ๋ก ์ํํธ ์์ฒด๊ฐ (์์ฌ ํ ๋ฐ์์ด ํ๋นํ) ์ด์ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ฒ ํ ํ์ง ์๋๋ค๋ฉด, ์ ์ฐ๋ฆฌ๊ฐํด์ผํ ๊น์?
์ต์๊ธ์ ์ต์ฒจ๋จ .NET Core ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ "๋ ๋จ์ํ๊ณ "๋ ๊ณ ๊ธ ์ธ .NET Standard ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๊น?
์ด๊ฒ์ ๋น .NET-Core ํ๋ซํผ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋๋ผ์ด๋ธ๋ฅผ ์ฃฝ์ด๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋ด๊ฐ ํ๋ ธ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ๋ด ๊ฑฑ์ ์ ๋์ด์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋
ํ์ธ์,
๋๋ ์์ผ๋ก ๋์๊ฐ๋ ๊ฐ์น๋ฅผ๋ณด๊ณ ๊ทธ๊ฒ์ ์ข์ํ์ง๋ง์ด ๊ฒฐ์ ์ ๋ํ 3 ๊ฐ์ง ์ฃผ์ ๋ฌธ์ ๋ฅผ ๋ด
๋๋ค.
1) netstandard๋ ๋ง์ดํฌ๋ก ์ํํธ ๋ด๋ถ์ ์๋ฌด๋ ๊ทธ๊ฒ์ผ๋ก ์ด๋ ค์ด ๊ฒ์ ๋ง๋ค์ง ์๋๋ค๋ฉด 2 ๋ฑ ์๋ฏผ์ด ๋ ๊ฒ์
๋๋ค. ๋ง์ฝ ์ฌ๋ฌ๋ถ์ด dogfood๋ฅผํ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ๊ทธ๊ฒ์ํ๋๋ก ์์ฒญํ ์ ์์ต๋๊น? ์ค๋๋ ๋์๊ด ์์ฑ์๋ ์ ๋ง ์ด์ฌํ ์ผํด์ผํฉ๋๋ค. ๋ด๋ถ ppl์ด ํ์ค์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ง์์ด ๊ฐ์ ๋์ง ์์ต๋๋ค.
2) ๋ค๋ฅธ ๋ฐํ์์์ aspnet ์ฝ์ด๋ฅผ ์คํํ๋ ๋ฐ ๊ฐ์น๊ฐ ์์ต๋๋ค.
3) ์ค๋๋ ๋ฐํ์์์ ์คํ๋๋ ์ํํธ์จ์ด์๋ ๊ฐ๋ณ๊ฒ ๋ฒ๋ ค์๋ ์๋๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ฎค๋์ผ์ด์
์ด ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋๋ค์ด ์ด๋์์๋ ์คํ๋๋ ํ๋์ .net ๋ฐํ์์ ์ข์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ฐ๊น์ด ๋ฏธ๋์ ๋ํ ์ ํ ํผ์์ด๋ฉฐ netstandard๋ ๋๋ฆฌ์๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ๋ด ๊ด์ ์์ ๋ณด๋ฉด ๋ท ์คํ ๋ค๋๊ฐ ์๋ ํ๋ซํผ์ ๋ชฉํ๋กํ๋ ๋ชจ๋ ํ๋ก์ ํธ๋ ๊ทธ ๋น์ ์ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ง ์๋ ๋จ๊ณ์
๋๋ค.
.net ํ๋ ์ ์ํฌ๊ฐ ์ ์ง ๊ด๋ฆฌ ๋ชจ๋์ ์๊ณ .netcore๊ฐ ๋์ ํ ๊ฒ์ด๋ฉฐ (์ผ๋ถ ์์ฒด๋ฅผ ๋จ๊ฒจ๋๊ณ ) ๋ชจ๋
ธ๊ฐ ์ฅ์น์์ ์คํ๋๊ณ CoreRT๊ฐ ๋ฐ์ ํ์ง ์์ ๊ฒ์์ด ๋ถ๋ช
ํฉ๋๋ค.
netcore 3.0์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ๋ ๊ฐ์ง ์์ ์ ์ํ ํ ์ ์์ต๋๋ค. ๋ฐ์คํฌํฑ ์ํฌ๋ก๋ ์ง์๊ณผ "๊ด๋ จ์ฑ ์ ์ง๋ฅผ ์ํด ์ฆ์ ppl์๊ฒ ์ง์"๋ผ๋ ๊ฒ์ ๋๋ค. ๋๋ ์ด๊ฒ์ด ๊ฐ๋ฐ์์ ๋ฏฟ์์ ๋์ฝ์ด ํ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ๋ง์ ํ๋ก์ ํธ๊ฐ ์ผ๋ถ ๋๋ฝ ๋ ์ข ์์ฑ์ผ๋ก ์ธํด ๋ง์ด๊ทธ๋ ์ด์ ๋์ง ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋ชจ๋๊ฐ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋๊ด์ ์ด๋ฉฐ, ์ด๋ ์๋ง๋ ํฅํ 3.1 / 3.2 ๋ฆด๋ฆฌ์ค์์ 1-2 ๋ ๋ด์ ์ถ๊ฐ ๋ ๊ฒ์ ๋๋ค ( 2.1์ 3 LTS์ ๋งค์ฐ ๊ฐ๊น์ต๋๋ค.) ๊ทธ ๋์ ๊ด๋ จ์ฑ์ ์ํ๋ ๊ฐ๋ฐ์๋ ์ ์ด ํ ์์๋ ์ข ์์ฑ์ผ๋ก ์ธํด 3.0 ๋นํธ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ์ฐจ๋จ๋ฉ๋๋ค.
ppl์ด ํ
์คํธํ๊ณ ์ค์ ์๋ฏธ๋ฅผ ํ์ธํ ํ์์ด ๊ฒฐ์ ์ ์ฐ๊ธฐ ํ ์ ์์ต๋๊น?
๋์๊ด ์์ฑ์์๊ฒ ์ง์ํ๋ ๊ฒ์ฒ๋ผ aspnet ์ฝ์ด๋ฅผ netstandard ๋ฐ netcoreapp์ผ๋ก ์ปดํ์ผํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๊น? .net ํ๋ ์ ์ํฌ์์ ์ฑ๋ฅ์ด ์ ํ ๋์ด๋ ๊ด์ฐฎ์ต๋๋ค ๐
Roslyn์ ์ด์ .NETStandard 2.0-> https://github.com/dotnet/roslyn/pull/30914 ์์ ์คํ๋ฉ๋๋ค.
๊ทธ๊ฒ์ ํ์คํ ์ด๋ ค์ด ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค!
๋ฟก๋ฟก
์ปค๋ฎค๋ํฐ๊ฐ ASP.Net Core๋ก ๋ ธ๋ ฅ์ ์ฎ๊ธฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ค์ํ ์ด์ ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์์๋ .Net Framework ์์คํ ์ ํฅํ ๊ฐ๋ฐ์์ํ ์ต์ ์ ์ฌ๊ฐํ๊ฒ ์ ํํ๊ธฐ ์์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด Identity Server ๋ ์ด๋ฏธ ASP.Net Core๋ก ์ด๋ํ์ผ๋ฉฐ SignalR ์
ASP.NET Core์ ๋ํ LTS ์ง์์ ์ด๋ฏธ 3 ๋
์ผ๋ก ์ค์ ๋์ด ์์ง๋ง ์จ-ํ๋ ๋ฏธ์ค ๋ฐฐํฌ์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ผ์ธ (4 ๋
)์ ๊ณ ๊ฐ์๊ฒ ์ง์ํด์ผํ๋ฏ๋ก ๋ ๊ธด ์๋ช
์ฃผ๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
์ด ๊ธฐ๊ฐ ๋์ ์ฃผ์ ์ ํ๋ฆฌ์ผ์ด์
๋ณ๊ฒฝ์์ด ๋ณด์ ํฝ์ค๊ฐ ํฌํจ ๋ ํจ์น๋ฅผ ๋ฆด๋ฆฌ์ค ํ ์ ์์ด์ผํฉ๋๋ค. ์ด๋ ๋ ์ค์ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์น์ธ ํ
์คํธ๋ฅผ ํ์๋กํ๋ ๊ณ ๊ฐ ๋ณ๊ฒฝ ์ ์ด ํ๋ก์ธ์ค๋ฅผ ์ ์งํ๊ณ ์ ์ง ๊ด๋ฆฌ ๋ชจ๋์์๋ ๋ฆด๋ฆฌ์ค์์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ํ ํ ํ์๊ฐ ์๋๋กํ๊ธฐ์ํ ๊ฒ์
๋๋ค. .
LTS ์ ์ฑ ์ด ๋ณ๊ฒฝ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น? ์ฐ๋ถํฌ์ LTS ๋ฆด๋ฆฌ์ค ์ ๋ต๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. 5 ๋ ์ง์๊ณผ ํจ๊ป 2 ๋ ๋ง๋ค LTS ๋ฆด๋ฆฌ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์์ ์ด ์ํ๋๋ ๋์ ํ์ฌ ๋ฆด๋ฆฌ์ค๊ฐ 3 ๋ ์ด์ ์ง์๋๋๋ก 6์ ์์ฒญํฉ๋๋ค.
์ฐ์ฅ ๋ ์ง์์ด ์ธ๊ธ๋์๋ค๋ ๊ฒ์ ์ดํด ํฉ๋๋ค๋ง, ์ด๊ฒ์ด ๊ฐ ๊ณ ๊ฐ์ด ๊ตฌ๋งคํด์ผํ๋ ๊ฒ์ผ๋ก ๊ฐ์ ํฉ๋๋ค. ์ด๊ธฐ ์ค์น (๊ฐ๋ฐ ํ, ํ๋งค ํ๋ก์ธ์ค, UAT ๋ฑ)๊ฐ ๊ธฐ๊ปํด์ผ ๋ง์กฑ์ค๋ฝ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. 2 ๋ ์ง์.
๋ํ .netcore์์ .netstandard ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ 3.0 ๋ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํฉ๋๋ค.
.netstandard์ ์ฌ๋ก๊ฑด์ "๋ชจ๋๋ฅผ ์ง๋ฐฐํ๋ ํ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"์
๋๋ค.
์ด ์ ์๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด ํ์๋ ์ฝ๊ฐ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ด ๊ฒฐ์ ์ด ์ผ๋ง๋ ๋ง์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋ ์ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํด Blazor๋ ์ด๋ป์ต๋๊น? netstandard๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ์ง ์์ต๋๊น? ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ธฐ๋ํด์ผํฉ๋๊น?
๋๊ตฌ๋ ์ง ์ด๊ฒ์ ๋ช ํํ ํ ์ ์์ต๋๊น?
๊ทธ๋ ๋ค๋ฉด Newtonsoft.Json๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (๊ณ ์ฑ๋ฅ์ ์ด์ ์ ๋๋ฆด ์ ์์)์ ๋ํ ๊ถ์ฅ ์ฌํญ์ .NET Standard๊ฐ ์๋ .NET Core๋ก ์ ํํ๋ ๊ฒ์ ๋๊น? ๋๋ ๊ทธ๋ฐ ์ข ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ASP.NET Core ์ฌ์ด์ ๋ง์ ์ฐจ์ด๊ฐ ๋ณด์ด์ง ์์ต๋๋ค. ๋ ํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ REST ์๋น์ค๋ฅผ ํฌํจํฉ๋๋ค. ์ผ๋ถ๋ .NET Core๋ก ์ฝ๊ฒ ์ด๋ํ ์ ์๊ณ ์ผ๋ถ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ด ์ดํด์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ ์ API์ ์ด์ ์ ์ป๊ณ ์ถ์ง๋ง ๋์์ ์๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ .NET Core 3 ๋ฐ .NET Standard 2.x๋ฅผ ๋ชจ๋ ๋์์ผ๋กํ๋ ๊ฒ์ ๋๋ค.
๋ด ์ดํด์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ ์ API์ ์ด์ ์ ์ป๊ณ ์ถ์ง๋ง ๋์์ ์๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ .NET Core 3 ๋ฐ .NET Standard 2.x๋ฅผ ๋ชจ๋ ๋์์ผ๋กํ๋ ๊ฒ์ ๋๋ค.
์์ผ๋ก์ ๊ธธ์ ์ด๋์์๋ netstandard ๋ผ๊ณ ์๊ฐํ๊ณ ํ์ฌ ์ฐ๋ฆฌ๋ ์ ํ ๋จ๊ณ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๊ฐ์ ์์ง์์ผ๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฐ๋ผ์ผ ํ (๋๋ ํ์) ์ฐ๋ฆฌ๋ ๋ค์ค ํ๊ฒํ ์ผ๋ก ๋์๊ฐ๋๋ค.
.NET Framework์ .NET Core๋ ๋์ผํ ์ญํ ์ ์ํํ๋ฏ๋ก ASP.NET Core๊ฐ ์ธ์ ๊ฐ๋ .NET Framework์์ ์คํ๋์ง ์์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ทธ๋ฌ๋ .NET Standard X
์์ ์คํ๋์ง ์๋ ๋ฐ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์งํ ๋งํด์ xamarin ๋๋ unity์์ ์คํํ๊ธฐ ์ํด asp.net ์ฝ์ด๊ฐ ํ์ํ์ง๋ ์์ง๋ง ๊ฐ๋ฅํ๋ค๊ณ ๋งํ ์์๋ ๊ฒ์ ์ข์ต๋๋ค. .NET ํ๋ซํผ์์ ์คํ๋๋ ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์งํฉ์
๋๋ค. ์ค๋จํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ .NET Core์ ASP.NET Core ๊ฐ์ ๊ธด๋ฐํ ํตํฉ์ ์ป๊ณ ์์ผ๋ฉฐ .NET Core 4.5๋ก ์ธํด DNX 2.0๋ถํฐ Microsoft.AspNetCore
๋ฐ @davidfowl์ ๋น๋ํ๊ณ ์์ต๋๋ค.
๋ฐ๋ฉด์ .NET Standard๋ ํ์คํ ์คํ ํ ๊ณณ์ด ์๋๋ฉฐ ์ ๋๋ก ์ ์ฉํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํํ์ ํ ์ ์์๊น์? ASP.NET Core๋ ํ์ฌ .NET Core ๋ง ๋์์ผ๋กํ์ง๋ง LTS ๋ฒ์ ์ .NET Standard๋ฅผ ๋์์ผ๋กํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์? API๊ฐ .NET Standard๋ก๊ฐ๋ ๊ธธ์ ์ฐพ์ง ๋ชปํ๋ฉด ์ค์ ๋ก ์ฌ์ฉํ ๊ฐ์น๊ฐ ์์ต๋๊น?
์ฐ๋ฆฌ๋ ๋ํ ๋น์ ์ด ์๋ ํ๋๋ก ์ด๊ฒ์ ๋ณผ ์ ์์ต๋๋ค :
ํ์ง๋ง ๋๊ฐ .NET Standard๋ฅผ ๋ฐ์ ์ํฌ๊น์? ๋ฆฌ์์ค๊ฐ ์ ํ๋๊ธฐ ์ ์ ๋งํ๋ฏ์ด ์ค์ ๋ก ํธ์ ํ ํ์๊ฐ ์์ต๋๋ค (์ ์ ์์์ LTS๋ฅผ ๋ฆด๋ฆฌ์คํ๊ธฐ ์ํด ๋ณ๊ฒฝ์ด ํ์ํ์ฌ .net core / asp.net ์ฝ์ด ํ์ ์ํ๊ฒ๋ฉ๋๋ค). NET Standard๋ ๋น ๋ฅด๊ฒ ๋ถ์คํ๋ฉ๋๋ค.
์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ง ์๋ ์ฌ๋๋ค์๊ฒ๋ .NET Standard 2.1์ด .NET Framework์ ๋ํ ์ง์์ ์ค๋จ ํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
.NET Standard 2.1์ ์ถ๊ฐ ๋ ๋ง์ API์ ์๋ฏธ๊ฐ ์์ผ๋ ค๋ฉด ๋ฐํ์ ๋ณ๊ฒฝ์ด ํ์ํ๋ฏ๋ก .NET Framework 4.8์ .NET Standard 2.1์ ๊ตฌํํ๋ ๋์ .NET Standard 2.0์ ์ ์ง๋ฉ๋๋ค. .NET Core 3.0๊ณผ ํฅํ Xamarin, Mono ๋ฐ Unity ๋ฒ์ ์ .NET Standard 2.1์ ๊ตฌํํ๋๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/
.Net Framework ๊ฐ Silverlight๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ด ๊ณ ํต ์ค๋ฝ์ง๋ง ASP.NET Core ์ ๊ด๋ จํ์ฌ ์ค์ํ ๊ฒ์ .NET Standard๋ฅผ ๋์์ผ๋กํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
Core / Standard ์์ฝ ์์คํ ์์ ๊ฐ์ฅ ํฐ ์ฐธ์กฐ ์์ฉ ํ๋ก๊ทธ๋จ ์ค ํ๋ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ ASP.NET Core๋ .Net Standard์์ด ํ์ค์ด ๋ํ๋ด๋ ๋ชจ๋ ์ข์ ๊ธฐ๋ฅ์ ์ฑํผ์ธ์ด ๋ ์ฑ ์์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ASP.NET Core๊ฐ .NET Core์์ ๊ตฌํ๋๋ ํ์ค ๋ณ๊ฒฝ์ ์์ฒญํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Nuget ํจํค์ง๋ฅผ ํตํด .Net Framework์์ Span ๋ฑ _is_๋ฅผ ์ฌ์ฉํ ์์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ASP.NET Core๊ฐ ์์ง .Net Standard์์๋ ๋ฌด์ธ๊ฐ์ ์์กดํด์ผํ๊ฑฐ๋ ์์กดํด์ผํ๋ ๊ฒฝ์ฐ ํด๋น ์ข ์์ฑ์ ํฌํจํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๊ฒ ํจํค์ง๋ฅผ ํตํด.
๋ง์ง๋ง์ผ๋ก (๋ฐ๋๋๋ ๋ชจ๋ ์ฆ๊ฑฐ์๋ ๋์กฐ์ ์ผ๋ก) .Net Standard 3.0+๋ฅผ ๋์์ผ๋กํ๊ณ 4.x์ ๋๋ํ ์ค์น๋๋ .Net Framework 5.0์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ง์ง๋ง์ผ๋ก (๋ฐ๋๋๋ ๋ชจ๋ ์ฆ๊ฑฐ์๋ ๋์กฐ์ ์ผ๋ก) .Net Standard 3.0+๋ฅผ ๋์์ผ๋กํ๊ณ 4.x์ ๋๋ํ ์ค์น๋๋ .Net Framework 5.0์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ค, ๋ง์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ์๋ ๋์ ๋งํ๊ณ ์๋ ๊ฒ์ ๋๋ค. CLR 2.0 ์ํคํ ์ฒ๋ ์ค๋ซ๋์ ์ฐ๋ฆฌ์๊ฒ ์ข์ ์๋น์ค๋ฅผ ์ ๊ณตํด ์์ง๋ง ์ด์ ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ์์ํ๊ณ Generics์ ๋์ผํ ์ข ๋ฅ์ ๊ทผ๋ณธ์ ์ธ ์ ๊ทธ๋ ์ด๋๊ฐ ํ์ํฉ๋๋ค. ํ์ํ ๋ณ๊ฒฝ์ ๋ค์ ๊ณ ํต ์ค๋ฌ์ธ ์ ์์ง๋ง์ด ํ์ํ๋ค; Generics๊ฐ ํ์ํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋กญ๊ณ ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ํ์ํ๋ฉฐ,์ด๋ฅผ ๋ฏธ๋ฃจ๋ฉด ๊ฒฐ๊ตญ ๊ณ ํต์ด ์ค์ด๋ค์ง ์๊ณ ์ ํ ๋ ๋ฟ์ ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก .NET Core์ด๋ฉฐ,์ด ์ค๋ ๋๋ ์ผ์์ ์ธ ๊ณ ํต์ ๋๋ค.
@terrajobst ๋ ๊ทธ๊ฒ์ด ์ผ์ด๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค : ์ค๋ ๋ ์ฐธ์กฐ : https://twitter.com/terrajobst/status/1059525279431815168?s=19
๋ฟก ๋นต๋จ
๋ค, ๋ ๊ฐ์ง๋ฅผ ์ ์ธ ํ๊ณ ์.
Reflection.Emit
! ์ด๊ฒ์ด ์ปดํ์ผ๋ฌ์ ์ฝ๋ ์์ฑ ๋๊ตฌ์์ ์ผ๋ง๋ ํํ ์ง ๊ณ ๋ คํ ๋ ๋ง ๊ทธ๋๋ก ์ฒซ ๋ฒ์งธ ์ฐ์ ์์ ์ค ํ๋ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ 4 ๋
ํ ์๋ํ์ง ์์ต๋๋ค! ์ด๊ฒ์ "Core as a replacement / upgrade for .Net Framework"๋ผ๋ ๊ฐ๋
์ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.๋ฐ๋ผ์ .NET Core๋ ์ ๊ทธ๋ ์ด๋ ๋ .NET Framework๊ฐ ์๋๊ณ ํ๋ก์ ํธ ํ์ด ๊ฐ๋ฅํ ํ CLR์ ์ ๋ฐ์ดํธํ์ง ์๊ธฐ ์ํด ์ต์ ์ ๋คํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์คํ ํ์ํ CLR ์ ๋ฐ์ดํธ๋ฅผ ๋ง๋๋ ์ ๊ทธ๋ ์ด๋ ๋ .NET Framework๊ฐ ์๋๋๋ค. ๋ง ๊ทธ๋๋ก ๊ทธ๊ฒ์ ์ ๋ฐ๋์ ๋๋ค.
์ ๋ฐ, ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์๋ํ๋ Reflection์ด ์์ต๋๋ค. ์ด๊ฒ์ด ์ปดํ์ผ๋ฌ์ ์ฝ๋ ์์ฑ ๋๊ตฌ์์ ์ผ๋ง๋ ํํ ์ง ๊ณ ๋ คํ ๋ ๋ง ๊ทธ๋๋ก ์ฒซ ๋ฒ์งธ ์ฐ์ ์์ ์ค ํ๋ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ 4 ๋ ํ ์๋ํ์ง ์์ต๋๋ค! ์ด๊ฒ์ "Core as a replacement / upgrade for .Net Framework"๋ผ๋ ๊ฐ๋ ์ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
์๋ํ์ง ์๋ ๊ฒ์ ์ดํดํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ASP.NET Core์ EF๋ ๋ช ๊ตฐ๋ฐ์์ ๋ฆฌํ๋ ์ ๋ฐฉ์ถ์ ์ฌ์ฉํ๋ฏ๋ก ํฐ ๊ฒฉ์ฐจ๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ์ฌ๊ธฐ์ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๊ทธ๊ฒ์ ์ ์ด๋ 2.0 .. ์ดํ ๊ฑฐ๊ธฐ์ ์์๋ค. iirc 1.0์กฐ์ฐจ๋ DefineDynamicAssembly๋ฅผ ๊ฐ์ง๊ณ ์์์ง๋ง, ์๋ง๋ ์ ์ฒด emit ์ ํ๊ตฐ์ ์๋ ๊ฒ์ด๋ค.
๋๋ ๋ํ ๊ทธ๋ค์ด CLR ์
๋ฐ์ดํธ๋ฅผ ํผํ๊ณ ์๋ค๋ ์๊ฐ์ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด ๊ธฐ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ์๊ฒ๋์์ต๋๋ค. ์ํ๋๋ ์์
์ ์์ ๋ณด์
จ์ต๋๊น? https://github.com/dotnet/coreclr/commits/master
CLR ๋ณ๊ฒฝ์ผ๋ก ์ธํด .NET Core์์๋ง ์๋ํ๋ C # 8 ์ฉ ์ธ์ด ๊ธฐ๋ฅ๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ๋ ์๊ฒฌ ์ค ์๋น์๋ ์ค๋๋ ์ ๋ณด ์ธ ๊ฒ ๊ฐ์ต๋๋ค (Microsoft์ ๊ณํ์ด ๋๋๋ก ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝ ๋์๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ๊ณตํํฉ๋๋ค ...)
๋ฟก๋ฟก
์๋ํ์ง ์๋ ๊ฒ์ ์ดํดํ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ASP.NET Core์ EF๋ ๋ช ๊ตฐ๋ฐ์์ ๋ฆฌํ๋ ์ ๋ฐฉ์ถ์ ์ฌ์ฉํ๋ฏ๋ก ํฐ ๊ฒฉ์ฐจ๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ์ฌ๊ธฐ์ ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
ํ์ธํ ์ง ๋ช ๋ฌ์ด ์ง๋ฌ์ผ๋ฏ๋ก ์ต๊ทผ์ ๋ณ๊ฒฝ๋์์ ์ ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์์ง๋ง ์์ฑ๊ณผ ๊ด๋ จ๋ ์ ๋นํ ์ด์ ๋ก ๋์คํฌ์ ์ ์ฅํ์ง ์๋ ํ PDB ํ์ผ์ Core๋ฅผ ์ ์ ๊ฐ์ ์ปดํ์ผ๋ฌ ์ ์ง ๊ด๋ฆฌ์์๊ฒ ์ธ๋ชจ ์๊ฒ ๋ง๋ญ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์์ต๋๊น? ๋๋ ๊ทธ๊ฒ์ ๋ฃ๊ณ ๊ธฐ๋ปํ ๊ฒ์ ๋๋ค ...
๋ฟก๋ฟก
๋ํ CLR ์ ๋ฐ์ดํธ๋ฅผ ํผํ๊ณ ์๋ค๋ ์๊ฐ์ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
๋ด๊ฐ ๋งํ ๊ฒ์ 2.0 ์ ๋ฐ์ดํธ (์ ๋ค๋ฆญ)์ ๋์ผํ ๋ฐฉ์์ผ๋ก CLR์ ๊ทผ๋ณธ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ํผํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํนํ ์ ํ ์์คํ ์ ์๋ก์ด ๊ธฐ๋ณธ ์ ํ (๋ชจ์, ๋ฉํ ํด๋์ค, DU ๋ฑ)์ ์ถ๊ฐํ๊ฑฐ๋ ๋ช ๋ น ์ธํธ์ ์๋ก์ด IL ๋ช ๋ น์ ์ถ๊ฐํ๋ ๋ณ๊ฒฝ์ ์ ๊ทน์ ์ผ๋ก ํผํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ ํ์ธ์.
ํ์ธํ ์ง ๋ช ๋ฌ์ด ์ง๋ฌ์ผ๋ฏ๋ก ์ต๊ทผ์ ๋ณ๊ฒฝ๋์์ ์ ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์์ง๋ง ๋์คํฌ์ ์ ์ฅํ ์๋ ์์ต๋๋ค.
https://github.com/dotnet/corefx/issues/4491 (๊ณผ๊ฑฐ์ ์ธ๊ธ ํ ๊ณณ)์ ์ดํด๋ณด๋ฉด ์ํฉ์ ์ฌ์ ํ โโ๋์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํน์ ๊ธฐ๋ฅ (์ค์ํ ๊ธฐ๋ฅ์ด๋ผํ๋๋ผ๋) ํ๋๋ฅผ ๋์น๋ ๊ฒ์ "์์ง ์๋ํ๋ Reflection.Emit
๋ ์์ต๋๋ค"์๋ ์๋นํ ๋ค๋ฆ
๋๋ค.
์ ์ ๊ฐ์ ์ปดํ์ผ๋ฌ ๊ด๋ฆฌ์์๊ฒ๋ Core๋ฅผ ์ธ๋ชจ ์๊ฒ ๋ง๋ญ๋๋ค.
Reflection.Emit์ ์ปดํ์ผ๋ฌ ์์ฑ์์๊ฒ ์ด๋ป๊ฒ ์ ์ฉํฉ๋๊น? ๋๋ ๊ทธ๊ฒ์ด ํ์ฌ ํ๋ ์ ์ํฌ์ ๋ํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก ์ ํ๋์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์๋ฅผ ๋ค์ด .Net Standard ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ ํ ์ฌ์ฉํ ์ ์์์ต๋๋ค. ์ด๊ฒ์ ์ด๋ค ์ปดํ์ผ๋ฌ์๋ ์๋นํ ์ ํ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ๋งํ ๊ฒ์ 2.0 ์ ๋ฐ์ดํธ (์ ๋ค๋ฆญ)์ ๋์ผํ ๋ฐฉ์์ผ๋ก CLR์ ๊ทผ๋ณธ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ํผํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค.
CLR์ ๋ณ๊ฒฝํ์ง ์๋ ๋ฐ๋ ๊ด์ฑ์ด ์๋ค๊ณ ์๊ฐํ์ง๋ง, ๊ทธ์ ๋ํ ๋ช ๊ฐ์ง ์ข์ ์ด์ ๋ ์์ต๋๋ค. ํนํ ํ๋ซํผ์ด ์ ์ ๋ ๊ทธ๋ฌํ ๋ณ๊ฒฝ์ด ๊ฐ์ฅ ์ ์ฉํ๊ณ ๋ ๊ณ ํต ์ค๋ฝ๋ค๊ณ ์๊ฐํ๋ค๋ฉด ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
DIM์ ์ด๊ฒ์ด ๋ณ๊ฒฝ ๋ ์ ์๋ค๋ ์ ํธ๋ผ๊ณ ์๊ฐํ์ง๋ง JIT ๋ด์ฅ ํจ์๊ฐ ์ข ์ข ์ ์๋ ํ ๋ ์๋ก์ด IL ๋ช ๋ น์ด๋ฅผ ๊ธฐ๋ํ์ง ์์ผ๋ฉฐ ๊ธฐ์กด ์ ํ ์์คํ ์์ ํฉ๋ฆฌ์ ์ผ๋ก ์ธ์ฝ๋ฉ ํ ์์๋ ์๋ก์ด ์ ํ์ ์ ํ์ ๊ธฐ๋ํ์ง ์์ต๋๋ค.
@svick
ํน์ ๊ธฐ๋ฅ (์ค์ํ ๊ธฐ๋ฅ์ด๋ผ ํ ์ง๋ผ๋)์ด ๋๋ฝ ๋ ๊ฒ์ "์์ง ์๋ํ๋ Reflection.Emit๋ ์์ต๋๋ค"์๋ ์๋นํ ๋ค๋ฆ ๋๋ค.
ํ ์คํธ ํ์ผ์ ์ ๋ ฅ ํ ์ ์์ง๋ง ์ ์ฅํ ์์๋ ํ ์คํธ ํธ์ง๊ธฐ๊ฐ ์๋ค๋ฉด ์๋ํ์ง ์๋๋ค๊ณ ํ์ง ์๊ฒ ์ต๋๊น?
Reflection.Emit์ ์ปดํ์ผ๋ฌ ์์ฑ์์๊ฒ ์ด๋ป๊ฒ ์ ์ฉํฉ๋๊น?
์ง๊ธ๊น์ง๋ ์ ์๋ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์๋ ํ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์ ์ฅํ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์คํํ ์์๋ ์ ์ผํ ์ปดํ์ผ๋ฌ ๋ฐฑ์๋์ ๋๋ค.
JIT ๋ด์ฅ ํจ์๊ฐ ์์ฃผ ์ ์๋ ํ ๋ ์ฌ์ ํ ์๋ก์ด IL ๋ช ๋ น์ ๊ธฐ๋ํ์ง ์์ต๋๋ค.
ํ์ง๋ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ ์ด๋ป์ต๋๊น?
๋๋ ๊ธฐ์กด ์ ํ ์์คํ ์์ ํฉ๋ฆฌ์ ์ผ๋ก ์ธ์ฝ๋ฉ ๋ ์์๋ ์๋ก์ด ์ ํ์ ์ ํ์ ๋๋ค.
๊ธฐ์กด ์ ํ์ ์์คํ ๋ด์์ ๋ชจ์์ ๊ตฌํํ๊ธฐ์ํ ์ ์์ ๋ณธ ์ ์ด ์๋์? ๊ทธ๊ฒ์ ๋ํด ํฉ๋ฆฌ์ ์ธ ๊ฒ์ ์์ต๋๋ค. ์ฒ์๋ถํฐ ๋๊น์ง ํฌ๊ณ ๋ชป์๊ธด ํด๋ฌ ์ง์ ๋๋ค. (์ด๋ฅผ ์๊ฐ ํด๋ธ ์ฌ๋๋ค์ ๋ํ ์ด๋ค ๊ฒ๋ ๋ฐ๋ํ์ง ์์ต๋๋ค. ์์ ํ๋ ํ๊ณ๋ฅผ ๊ฐ์ํ ๋ ๊ทธ๋ด ํ์๊ฐ ์์ต๋๋ค.) ๊ทธ๋ฆฌ๊ณ CLR ์์ค์ ์ง์์์ด ๋ฉํ ํด๋์ค๋ฅผ ๊ตฌํํ๋ ๋ฐ ํ์ด์ ๋น๋๋ค!
์ด๋ค ์ข ๋ฅ์ ํจ์จ์ ์ธ ๋ฐฉ์ ์ผ๋ก๋ ๋ ๋์ ์์ค์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ค๋ฉด ์ ๋ฐ์ดํธ ๋ CLR์ด ํ์ํ๋ฉฐ ์ค์ ๋ก Core์์์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์์ ํ๋ ์ฌ๋์ ์์ต๋๋ค.
.net ํ์ ๋๊ตฐ๊ฐ๊ฐ ์จ-ํ๋ ๋ฏธ์ค ๋ฐฐํฌ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๋ฅ "asp.net ์ผ๋ฐ ์ฌ์ฉ"์ ๋๊น? ๋๋ @ Edward84 ์ ์๊ฒฌ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๊ณ ์์ต๋๋ค.
Microsoft.Extensions.*
์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํฅ์ ์ค๋๊น? ํนํ Microsoft.Extensions.Logging
๋ฐ Microsoft.Extensions.Configuration
.
๊ณตํต ํต์ฌ API๋ฅผ ๊ณต์ ํ๋ ๋๊ท๋ชจ ์ฝ๋ ๊ธฐ๋ฐ์ด ์์ต๋๋ค. ์ผ๋ถ๋ WinForms์ด๊ณ ์ผ๋ถ๋ ํด๋์ ASP.NET, ์ผ๋ถ๋ WCF ๋ฑ์ ๋๋ค. ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ .NET Core์ ๋๋ค (ํ์ฌ๋ ์๋์ง๋ง ๊ฒฐ๊ตญ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ .NET ํ์ค์ผ๋ก ํฌํ ํ์ ๋).
์์์ ์ธ๊ธ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํต์ฌ ๋ก๊น ๋ฐ ๊ตฌ์ฑ API๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ์ ํํ์ต๋๋ค.
๋ฐ๋ผ์ .NET Core ๋ฐ .NET Framework (4.7.2+)์์ ์ฐธ์กฐํ๋ .NET Standard API์์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํ์ง ๋๋ .NET Core ์ ์ฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์๋ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
@mvestergaard ๋ฐํ ์์ฒด ์์ ์ธ๊ธํ๋ฏ์ด :
Microsoft.Extensions ํจํค์ง (์ : ๋ก๊น , ์ข ์์ฑ ์ฃผ์ ๋ฐ ๊ตฌ์ฑ)๋ .NET Standard๋ฅผ ๊ณ์ ์ง์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ค๋ ๋ ์ @benaadams ์ ์๊ฒฌ ์์ :
๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ .NET Core๋ก๋ง ์ด๋ํ๋ ๊ฒ์ ์๋๋๋ค (์ :
Microsoft.Extensions.*
๋ .NET Standard๋ก ์ ์ง๋จ).
@mvestergaard ๋ ์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด LTS ์ ์ฑ ์ ๊ฒํ ํ์ฌ ์ฐ์ฅ ๋ ์ง์, ๋ ๊ธด ๊ธฐ๊ฐ, "์ ์ง ๊ด๋ฆฌ ๋ชจ๋"๊ธฐ๊ฐ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ด ์ ์ฉํ ์ง, ์ด๋ค ๋ชจ์ต ์ผ์ง ๊ฒฐ์ ํฉ๋๋ค. ๋ํ ์๋ก์ด LTS ์ด์ฐจ์ ํ์ด๋ฐ์ ๋ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค (LTS ๋ชจ๋ธ์ด์๋ ๋ค๋ฅธ ์คํ์์๋ณด๊ณ ์ ๋ง ์กด๊ฒฝํ๋ ๋ชจ๋ธ).
๋ด๊ฐ ๊ฐ์ง ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ .NET Framework๋ฅผ ๋์์ผ๋ก ํ ๋๋ง ์ฌ์ฉํ ์์๋ ์ฑ์ํ ํจํค์ง ๋๋ System.Drawing ๋ฐ GDI +๊ฐ ํ์ํ ๊ฒ๊ณผ ๊ฐ์ด .NET Framework ์ธ๋ถ์์ ์ฌ์ฉํ ์์๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํ์์ ์๋๋ฆฌ์ค๋ .NET Core 3.0์์ ์ง์ ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง AFAICT๋ .NET Framework์์๋ง ์ฌ์ฉํ ์์๋ ์์ ์ ์ด๊ณ ์ฑ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
๊ทธ ์๋ Entity Framework ์ ๋๋ค. ์ฑ๋ฅ์ ์ ๋ฐํ๋ ๋ฌธ์ ๋ฅผ ์จ๊ธฐ๊ธฐ ์ํด ์ ์ฒด EF๊ฐ ํ ์์๋ ๋ชจ๋ ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ๋ฉ๊ณ ๋ฏธ์ฑ์ EF Core ๋ก ์ ํํด์ผํฉ๋๋ค. ๋ฌธ์ .
๊ทธ ์๋ Entity Framework์ ๋๋ค. ์ฐ๋ฆฌ๋ ์์ ํ EF๊ฐ ํ ์์๋ ๋ชจ๋ ๋ณต์กํ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์๋ ๋จผ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ฏธ์ฑ์ ํ EF Core๋ก ์ ํํด์ผํฉ๋๋ค.
EF6๋ ์ด๋ฒ ์ฃผ์ @DamianEdwards๊ฐ ์ค๋ช ํ๋๋ก .NET Core 3.0์์ ์ง์ ๋ ์์ ์ ๋๋ค. ASP.NET Community Standup-2018 ๋ 11 ์ 6 ์ผ -ASP.NET Core 3.0 ๊ธฐ๋ฅ (19:06)
@benaadams ์ข์ ์์์ ๋๋ค! ๊ทธ๋ ๊ฒ ํฐ ๊ฑฐ๋์ ๋ํด ๊ฝค ๋ชจํธํฉ๋๋ค! :) ๊ทธ๊ฒ์ ์ฐพ๋ ์ข์ ์ง์ . ์ฌ๊ธฐ ์์ ๋ ๋ค๋ฅธ ์ธ๊ธ์ ์ฐพ์
@SaebAmini : ์์คํ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. .NET Core์์ ๊ทธ๋ฆฌ๊ธฐ. System.Drawing.Common ๋ฐ Scott Hanselmans Blogpost : https://www.hanselman.com/blog/HowDoYouUseSystemDrawingInNETCore.aspx๋ฅผ ์ฐธ์กฐํ์ญ์์ค .
๊ทธ๋ฆฌ๊ณ CoreCompat.System.Drawing์ด ์กด์ฌํ๊ธฐ ์ ์ Mono์ System.Drawing
ํฌํธ๋ก ์กด์ฌํ์ต๋๋ค.
.NET Core์์ ์คํํ ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ด ์์ต๋๊น?
@TsengSR ์ฐ๋ฆฌ๊ฐ .NET Framework๋ฅผ ๋์์ผ๋ก ํ ๊ตฌ์ฒด์ ์ธ ์๋๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝ 1 ๋ ์ ์ผ์ ๋๋ค.
@SaebAmini : ์์ ์ธ๊ธํ๋ฏ์ด EF6 ์ง์์ .NET Core 3.0์์ ์ ๊ณต๋๋ฉฐ System.Drawing์ ์ด๋ฏธ ์กด์ฌํ๋ฉฐ (์ด์ ์๋ CoreCompat ํจํค์ง๊ฐ ์กด์ฌํ์ผ๋ฉฐ ๊ทํ์ ๊ฒฝ์ฐ์ ์๋ํ์ ์ ์์) Microsoft Solver Foundation Package์ ๊ฒฝ์ฐ ์ด์์ฑ API ๋ถ์๊ธฐ ์คํ :
์ด์์ฑ ๋ถ์๊ธฐ ์ฌ์ฉ ๋ฐฉ๋ฒ ๋ณด๊ธฐ
https://gist.github.com/TsengSR/f61c03c5f2d63dbe78d6b8c1eed08831 (๋ค์ด๋ก๋ํ๊ณ HTML์ ์ด๋ฉด ๋ฃ์ ๋ค๋ฅธ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค).
.NET Core 2.0 + Platform Extensions (์ฝ 1 ๋
์ ์ ์ถ์๋จ)์ 97.93 %์ ํธํ์ฑ์ ๋ณด์ฌ ์ฃผ๋ฉฐ ๋๋ถ๋ถ ์ฌ์ฉ๋์ง ์๋ System.Web
๋ฐ System.ServiceModel
/์ ๊ด๋ จ๋ ํธํ๋์ง ์๋ API๋ฅผ ๋์ดํฉ๋๋ค. System.Data.Linq
์ง๊ธ์ ์ด์ ์์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ์ง ์์๊ณ , ์๋ฒ๊ฐ System.Web
๋ฐ HttpContext
๋๋ System.ServiceModel
์ก์ธ์คํด์ผํ๋ ์ด์ ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ์ค ์ด๋ค ๊ฒ๋ ํ์ํ์ง ์์ผ๋ฉฐ (์ฌ์ฉ ์ฌ๋ก๊ฐ์ด API๋ฅผ ํธ์ถํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์) .NET Core 2.0 / 2.1 + Platform Extensions ๋๋ .NET Core 3.0์์ ์ฌ์ฉํ ์์์ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. netstandard
๋๋ netcoreapp20
ํ๊ฒ ๋ชจ๋ ์ปค๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ํ๊ฒํ
ํ์ง ์๋ ๊ฒฝ์ฐ
๋ฐ๋ผ์ ๊ธฐ์ ์ ์ผ๋ก๋ EF Core 2.0์ด ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ ํ ์ ์๋ค๋ฉด 1 ๋ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ .NET Core 2.0 + Platform Extensions๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค (๋ฌผ๋ก ์ผ๋ถ ๋ง์ด๊ทธ๋ ์ด์ ์์ ๊ณผ ์ ๋ฐ์ดํธ๊ฐ ์๋ํด์ผํฉ๋๋ค. EF Core 2.0 ํฌํจ).
์, ๋ฌธ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋์ฒด ํ๋ ์ ์ํฌ์ ๊ธฐ๋ฅ (EF6-> EF Core 2.0 / 2.1)์ ๋ถ์ํ๋ ๋ฐ ์ฝ๊ฐ์ ์์ ์ด ํ์ํ์ง๋ง ๋ถ๊ฐ๋ฅํ์ง๋ ์์ต๋๋ค. ๋๋ ์ฌ๋๋ค์ด (ASP.NET Core ์์ฒด ์ธ๋ถ์์) ์ ํ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชจ๋ ์ฝ๋๋ฅผ ASP.NET Core์ 1 : 1๋ก ์ด์ ํ ์ ์๊ฑฐ๋ ๊ธฐ๋ํด์ผํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
"๋ฐฐ์ง"(.NET Core 3.0 ํธํ) ๋ฐ / ๋๋ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ช ํํ๊ฒํ๊ธฐ ์ํด ๋๊ฒ ํ์ด์ง์ ์ด๋๊ฐ์์๋ ์์ธํ API ํธํ์ฑ ๋ณด๊ณ ์์ ๊ฐ์ด API ํธํ์ฑ์ ํ์ํ๋ ๊ฒ์ด ๋ ๋ถ๋ช ํ๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํจํค์ง ๋ถ์๊ธฐ๋ฅผ ํตํด ์คํํฉ๋๋ค.
์ด ๋ฐํ๋ .NET Core๊ฐ ์ผ๋ง๋ ๋ ํธํ๋๋์ง๋ฅผ ๊ฐ์กฐํ๋ค๋ฉด ๋ ์ ๋ฐ์ ๋ค์์ ๊ฒ์
๋๋ค. .NET Framework์์ ASP.NET Core๋ฅผ ์ด๋ํ๋ ๋ฐ๋ ๋ ๊ฐ์ง ์์๊ฐ ์์ต๋๋ค.
1) .NET Framework์ ๋ํ ํ์์ฑ ๊ฐ์, ๋ ๊ฑฐ์ dep ์ฌ์ฉ ๊ฐ๋ฅ ๋ฐ interop ๊ฐ์ ๋ฑ
2) .NET Core, ๊ธฐ๋ฅ ๋ฐ ์ฑ๋ฅ์ ์ด์ ์ฆ๊ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด ๊ฐ์
ํฉํฐ 2๋ ์ค์ ๋ก ASP.NET์ ๊ตฌ์ถํด์ผํ๋ ์ฌ๋๋ค์ ๋ง์ ์์ ํฌ๊ฒ ๋ ์ค๋ฆ ๋๋ค! ๊ทธ๋ฌ๋ ์ฌ์ฉ์์ ๊ด์ ์์ ๋ณผ ๋ ์ฅ์ ์ ๊ฑฐ์ ์์ต๋๋ค. ์ฌ๋๋ค์ ์ผํ๋ ๊ฒ์ด ์๊ณ ๊ทธ๋ค์ ์ต์ฐ์ ์์๋ ๊ทธ๊ฒ์ด ๊ณ์ ์ผํด์ผํ๋ค๋
@gulbanana์ ๋์ํฉ๋๋ค. .NET Core๋ ์ด์ .NET Framework์ ํจ์ฌ ๋ ํธํ๋ฉ๋๋ค. ์ค์ ๋ก .exe์ ์ด๋ฆ์ .dll๋ก ๋ฐ๊พธ๊ณ ๋๋ฝ ๋ .DLL์ ๊ฒ์ ๊ฒฝ๋ก์ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ๊ฝค ํฐ .NET Framework ์ฑ์ ์์ํ ์์์์ต๋๋ค.
dotnet
๋ช
๋ น ์ค ๋๊ตฌ์ ์งํ ์ํฉ์ ์ธ์์ ์
๋๋ค. ํนํ .NET Core ๊ธ๋ก๋ฒ ๋๊ตฌ ์ถ๊ฐ. ๊ทธ๋ค์ ๊ฐ๋ฐ์ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
crossgen
์ฌ์ฉํ AOT ์ปดํ์ผ์ ํ๋ฅญํฉ๋๋ค. ๋๋ ๊ณ์ํ ์ ์์ต๋๋ค.
tl / dr .NET Core๋ ์์ฆ ๋งค์ฐ ์ธ์์ ์ ๋๋ค.
์์ด์ง ๋ฌผ๊ฑด ์์ด์:
dotnet
๋ช
๋ น ์ค ๋๊ตฌ๋ ํ๋ฅญํ์ง๋ง ํ์ฌ ๊ฑฐ์ ๋ชจ๋ ํ๋ก์ ํธ์์ .NET SDK ํ์์ผ๋ก ์์
ํ๋ ค๋ฉด ์ถ๊ฐ ํ
์คํธ ํธ์ง๊ธฐ์ ์ฝ์์ ์ฌ์ฉํด์ผํฉ๋๋ค. ์ด ์ ์์ Visual Studio UI๋ ๋ถ์กฑํฉ๋๋ค. ์ด๋ก ์ธํด ํฌ์ธํธ ์ค ํด๋ฆญ ๋งํ๋ ์ต๊ด์ ๊ฐ์ง ๋ง์ ์ฌ๋๋ค์๊ฒ ํฐ ์ฅ๋ฒฝ์ด ์๊น๋๋ค. ์ด๊ฒ๋ ๊ฐ์ ๋์ด์ผํฉ๋๋ค@TsengSR ์์ธํ ์๋ต ์น๊ตฌ, ํ๋ฅญํ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ํ๋ก์ ํธ๊ฐ ๋จ์ํ ๋ค๋ฅธ ๋์์ ๋ํ ๋ถํ์ ์ปดํ์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ฝ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. ํ ๋ฒ ๋ ์๋ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. (๋น์ ์ด ๊ทธ๊ฒ์ ์ค์ค๋ก ๋ค์ ์ปดํ์ผํ๊ณ ์์๋ฐ๋ ๊ฒ์ ์๋ฏธํ์ง ์๋ ํ)
๊ทธ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๋ฉด ์ค์ ๋ก ๋ ธ๋ ฅ์ ๋ํด ๊ฑฑ์ ํ์ง ์์ต๋๋ค. ๋ด ์ฃผ์ ๊ด์ฌ์ฌ๋ EF๊ฐ ์ฃผ์ ์ฐจ๋จ์ ์ธ ์ต์ ์์ด ๋๊ณ ๊ฑด์กฐํ ์ํ๋ก ๋จ์ ์์๊ณ ๊ฒ๋ณด๊ธฐ์๋ ์ผ์ด๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์๊ฐํด ๋ณด๋ ๋ฐ๊ฐ์ต๋๋ค. @gulbanana์ ๋์ํ์ง๋ง ์ด๊ฒ์ด ๋ ์ ๊ด๊ณ ๋ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ง์ ํฉ์ณ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ๊ฐ์ธ์ ์ธ 2 ์ผํธ๋ .NET Framework๋ฅผ ๋จ๊ฒจ ๋๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ํฐ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ํ์คํ ๋ ธ๋ ฅ (.NET Standard)์ ๋ํ ๋ช ๋ฐฑํ ์ง์์ด ์ ํ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฌผ๋ก , ๋น์ ์ ์๋ง์ ASP.NET ์ฝ์ด๋ฅผ ์คํ ์ค๋ ์ ๋ํฐ๋ฅผ ๋งํ๊ณ ์ถ์ง ์์ง๋ง, ์ค๋๋ ์ ๊ดํ ์์ต๋๋ค. ์ฝ 1 ~ 2 ๋ ํ ๋ค๋ฅธ .NET ๋ฐํ์ ์ด ๋์ฌ
ASP.NET Core 3 ์ฉ .NET Core 3์ ํ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ต์ํ "์์ง"ํ์ฌ ์ ์ ์ฌํญ์ผ๋ก .NET Standard ์์ ๊ทธ๋ฃน์ ์ ๋ฌํ ๊ธฐํ๊ฐ ์์ต๋๊น?
์๋ ํ์ธ์. .NetStandard 2.0 ๋๋ .NetCore 2.0 ์ฉ์ผ๋ก ๊ฒ์ ๋ ํจํค์ง๋ .NetCore 3.0์์ ๊ณ์ ์๋ํฉ๋๋ค. ์ : Oracle.ManagedDataAccess.Core ๋์ .NetCore 2.0
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด ์์ผ๋ฉด .NetCore 3.0์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ ํฉํ์ง๋ง ์ด์ ๋ฒ์ ์ ๋ํ ์ง์์ด ์์ผ๋ฉด ๋ชจ๋ ํ๋ ์ด๊ฐ ๋ฐ๋ผ ์ก์ง ์๋ ํ ์ค์ ๋ก ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
.NetFramework๋ ์ต์ ๋ฒ์ ์์ .NetFramework 2.0์ ์ฌ์ฉํ ์ ์์ด๋ ํธํ์ฑ์ ์ญ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก .NetCore์ ๋ํด ์ ์ง ๊ด๋ฆฌํด์ผ ํ ์ฌํญ์ ์ต์ 2.0 ~ 3.0 ๋ฑ์ ๋๋ค.
๊ฐ์ฌ
์๋ ํ์ธ์. .NetStandard 2.0 ๋๋ .NetCore 2.0 ์ฉ์ผ๋ก ๊ฒ์ ๋ ํจํค์ง๋ .NetCore 3.0์์ ๊ณ์ ์๋ํฉ๋๋ค. ์ : Oracle.ManagedDataAccess.Core ๋์ .NetCore 2.0
์, .NET Core 3.0์ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ฏ๋ก .NetStandard 1.0-> .NetStandard 2.1 ๋ฐ .NetCore 1.0-> .NetCore 2.2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@benaadams ๊ทธ๋ผ ์ข์ต๋๋ค. ๋ํ ๋๋ฝ ๋ API๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด .net ํ๋ ์ ์ํฌ dll์ด ์๋ํฉ๋๊น?
๊ฐ์ฌ
๋ํ ๋๋ฝ ๋ API๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด .net ํ๋ ์ ์ํฌ dll์ด ์๋ํฉ๋๊น?
์, .NET Core (๋ฐ Mono, Xamarin, Unity, UWP)์์ ์๋ํ๋ .NET Standard ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํฉ๋๋ค.
๋ํ Windows ํธํ ๊ธฐ๋ฅ ํฉ์ ์ฌ์ฉํ๋ฉด .NET Standard 2.0 ์์ ๋ ๋ค๋ฅธ 20,000 ๊ฐ์ API๊ฐ ์ถ๊ฐ๋์ด .NET Core๋ฅผ .NET Framework์ ๋ ๊ฐ๊น๊ฒ ๋ง๋ญ๋๋ค (.NET Core 2.1๋ก ์ํ ํ ์ ์์). .NET Core 3.0์ EF6 (cross-plat) ๋ฐ Windows : WinForms, WPF, COM Interop ๋ฑ๊ณผ ๊ฐ์ฅ ํธํ๋ฉ๋๋ค.
์๋
์ฌ๋ฌ๋ถ,
๊ณ ๊ฐ์๊ฒ .NET Core์ ASP.NET Core๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ณผ์ ์์ ํฉ๋ฆฌ์ ์ธ ๋๋ค๋์ ์ ๊ณตํ๊ธฐ ์ํด ํ์ฌ ์ง์๊ณผ ์ผ์นํ๋๋ก .NET Framework์์ ASP.NET Core 2.1.x์ ๋ํ ์ง์ ๋ฐ ์๋น์ค๋ฅผ ํ์ฅ ํ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ํจํค์ง ๊ธฐ๋ฐ ASP.NET ํ๋ ์ ์ํฌ์ ๋ํ ์ ์ฑ
(์ : MVC 5.x, Web API 2.x, SignalR 2.x). ์ด๋ ์ฌ์ค์ ASP.NET Core 2.1.x ๊ด๋ จ ํจํค์ง (์ต์ข
์ธ๋ถ ๋ชฉ๋ก ๋ฏธ์ )๊ฐ .NET Core 2.1 ๊ต์ก ์ ๋ฐ์ ๋ํ 3 ๋
LTS ๊ธฐ๊ฐ์ ๋์ด์ ๋ฌด๊ธฐํ ์ง์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ข์ ์์์ ๋๋ค. ๊ณ ๊ฐ์ ์๊ฒฌ์ ๋ค์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ CTP3 ์ดํ MVC์ ์์๊ณ ๊ฑฐ์ ๋ชจ๋ ํ์ฅ ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด์ MVC ์ฑ์ ์ด์ํ๋ ๋ฐ๋ ๋งค์ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ฐ๋ ค๋ฅผ ๋ค๋ฃน๋๋ค.
@DamianEdwards ์ข์ ์์์ ๋๋ค! ํ์ง๋ง ์ด๊ฒ์ด 2.1.x๋ก ๊ณ ์ ๋์ด ์์ต๋๊น? ์๋๋ฉด LTS ๋ฆด๋ฆฌ์ค๊ฐ๋๋ฉด 2.2.x๋ก ์ ๋ฐ์ดํธ๋ฉ๋๊น? 2.2๋ก ๋ค์ด๊ฐ๋ ๋ง์ ๋ ธ๋ ฅ์ด ์์๊ณ ์์ง ์ถ์๋์ง๋ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ netstandard ํธํ์ฑ์ ๊ณ์ ์ ์งํ๊ณ ์ ์ฒด ํ๋ ์ ์ํฌ์์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์ ํ์ฅ ๋ ์ง์์ ์ํด ์ด๊ฒ์ ์์ ํ ๊ฑด๋ ๋ฐ๋ ๊ฒ์ ์ผ์ข ์ ๋ญ๋น์ ๋๋ค.
@poke ๊ทํ์ ์ฐ๋ ค๋ฅผ ์ดํดํ๋ ๋์ ์ด๋๊ฐ์ ์ ์ ๊ทธ๋ ค์ผํฉ๋๋ค.์ด ๊ฒฝ์ฐ ๋ฒ์ ์ ์ ํํ๋ LTS์ ์ ๋ ฌํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ LTS ๋๋ Current ์ด์ฐจ ์ค์์ ์ ํํ ๋ ๊ณ ๊ฐ์ด ์ค์ค๋ก ๊ฒฐ์ ํด์ผํ๋ ์ ์ถฉ์์ ๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์์ ์ฑ์ ๊ดํ ๊ฒ์ด๋ฏ๋ก LTS์ ์ค์ง ์์ต๋๋ค. ํผ๋๋ฐฑ์ ์ฅ๊ธฐ์ ์ธ ์ง์์์ํ ๊ฒ์ด์๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๊ทธ๊ฒ์ ๋ํ ๊ธฐ์ฐจ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ๊ธฐ์ฐจ์ ์ฐ์ฅ์ ๋๋ค. 2.2๋ LTS๊ฐ๋์ง ์์ต๋๋ค.
@DamianEdwards ๋ค, ๋ต์ฅ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ง์ง๋ง ์ฝ๋ฉํธ ์ด์๊ธฐ ๋๋ฌธ์ ๋๋ ๊ทธ๋ฅ ๋ฌผ์ด๋์๋ค ์์ง ๊ฒฐ์ ๋์ง ์์ ์์ ๊ทธ๋ฅ 2.2 LTS๋์๋ค IFF์์ด ํ์ฅ ๋ ์ง์์ด ์ด์ ๊ฒ์ธ์ง ์๊ณ ์ถ์ด, ๊ทธ๋์.
๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ด์ด ํ์ฅ ๋ ์ง์์ ์์กดํด์ผํ๋ ๊ฒฝ์ฐ ํ๋ ์ ์ํฌ ์ฑ์ 2.2๋ก ์ ๊ทธ๋ ์ด๋ํ์ง ์๋๋ก์ด๋ฅผ ๊ฐ์กฐํ๋ ๊ฒ์ด ์ถฉ๋ถํ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ๋ค์ด ๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ์ ์์ ์ฑ์ ๊ดํ ๊ฒ์ด๋ฏ๋ก LTS์ ์ค์ง ์์ต๋๋ค.
ํ์ง๋ง ์ด์ LTS ๊ฒฐ์ ๊ณผ ์ค์ ๋ก ์ผ์นํ์ง ์์ต๋๋ค.
@์ฐ๋ฆ
ํ์ง๋ง ์ด์ LTS ๊ฒฐ์ ๊ณผ ์ค์ ๋ก ์ผ์นํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ํผ๋์ค๋ฝ๊ฒํ๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก? 1.x LTS ํธ๋ ์ธ์ 1.1์ด ์ถ๊ฐ๋์๋ค๋ ์ฌ์ค์ ๋ง์ํ์๋ ๊ฑด๊ฐ์? ๊ทธ๋ ๋ค๋ฉด ๊ทธ๊ฒ์ ๋ฐ๋ณต๋์ง ์์ ์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค ํธ๋ ์ธ์ ์ด์์ ๋๋ค. ์์ผ๋ก ์ฐ๋ฆฌ์ ์๋๋ ์ด๋ค ๋ฆด๋ฆฌ์ค๊ฐ LTS ๋ ์ต์ ๋ฒ์ ์ด๋๋์ง (์ฆ, ์์ ์ฑ ๋ ๊ธฐ๋ฅ์ ์ด๋์์ ์ป์ ์ ์๋๊ฐ) ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ ๋๋ค.
@DamianEdwards ๋๋ ์ง๊ธ๊น์ง ๋ชจ๋ ๋ฆด๋ฆฌ์ค๊ฐ ๋๊ท๋ชจ ๊ธฐ๋ฅ ๋ฆด๋ฆฌ์ค์์ผ๋ฉฐ ๊ฐ LTS ๊ฒฐ์ ์ ์ผ๋ฐ์ ์ผ๋ก (์ ์ด๋ ๊ณต๊ฐ์ ์ผ๋ก) ํ๊ณ ํ์ฌ ์ด๋ฃจ์ด ์ก๋ค๋ ์ฌ์ค์ ์ฃผ๋ก ์ธ๊ธํ์ต๋๋ค.
@poke ์ข์์. ์ง๊ธ๊น์ง 4 ๊ฐ์ ๋ฆด๋ฆฌ์ค (1.0, 1.1, 2.0, 2.1)๊ฐ ์์๊ณ 5 ๋ฒ์งธ ๋ฆด๋ฆฌ์ค (2.2)๊ฐ ๊ณง ์ถ์ ๋ ์์ ์ ๋๋ค. ๊ทธ ์ค์์ 1.0๊ณผ 2.0 ๋ง ์ฒ์์๋ LTS๋ก ์๋๋์์ง๋ง ์ฌ๋ฌ ์์ธ (๋๋ถ๋ถ ์ฐ๋ฆฌ๊ฐ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์์ง๋์ด๋ง์ ์ํํ๋ ๋ฐ ์ ๋ง ์๋ก์ด ๊ฒ๊ณผ ๊ด๋ จ์ด ์์)์ผ๋ก ์ธํด 1.0, 1.1 ๋ฐ 2.1์ด LTS ์ด์ฐจ๊ฐ๋์์ต๋๋ค. 2.0 ๋ฐ 2.2๋ ํ์ฌ ๋ฆด๋ฆฌ์ค์ ๋๋ค. ์ด ๋จ๊ณ์์ 3.0์ 3.1์ด 3.x ํธ๋ ์ธ LTS๊ฐ๋๊ธฐ ์ ์ ๊ฑฐ์ ํ์คํ๊ฒ Current๊ฐ ๋ ๊ฒ์ ๋๋ค (2.2๊ฐ 3 ๊ฐ์์ ํ์ฌ "์ ์"๊ธฐ๊ฐ์ ์ง์ ํ๊ฒ ํจ). ์ฐ๋ฆฌ์ ํฌ๋ง์ ๊ทธ ์ดํ์ ํจํด๊ณผ ์ผ์ด๋์ค๊ฐ ๋ ์ผ๊ด ๋ ๊ฒ์ ๋๋ค (์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ข์ํฉ๋๋ค).ํ์ง๋ง ์ง๊ธ๊น์ง ์ฐ๋ฆฌ์ ์์ ๊ตฌ์ฌ์ ์ฐ๋ฆฌ๋ฅผ ์คํจํ์ต๋๋ค.
@DamianEdwards ํต์ฐฐ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๐ (Btw. ๋๋ ์ด๊ฒ์ ๋ํด ๋ ผ์ํ๋ ค๋ ๊ฒ์ด ์๋๋ผ ๊ถ๊ธํ์ต๋๋ค.))
์ฐ๋ฆฌ์๊ฒ ๋ ํฐ ๋ฌธ์ ๋ ๊ณง .NET Framework์์ ๋ฒ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์์๋ ๋ ๊ฑฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ํ๋ก์ธ์ค ๋ด์์ ํธ์คํ ๋๋ ์๋ก์ด REST API์ ๋๋ค. ์ ์ด๋ ์ฐ๋ฆฌ๋ ์ง๊ธ .NET Standard 2 ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ASP.NET Core 2.1 ์ด์์ผ๋ก ๋ฐ์ ํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค! LTS ๊ธฐ๊ฐ์ด ์ฐ์ฅ๋ฉ๋๋ค.
๋น ๋ฅธ ์ง๋ฌธ์ ๋๋ค. C ++ / CLI ํํ๋ก ๋ค์ดํฐ๋ธ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ ์ด๋ป์ต๋๊น? ์กฐ๋ง๊ฐ .Net Core์์ ์ง์ ๋ ์์ ์ ๋๊น, ์๋๋ฉด P / Invoke๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋๊ท๋ชจ ์ฌ ์์ ์ ์ํํ์ง ์๋ ํ ๊ณ ์์ ๋๊น?
@lokitoth-ASP.NET Core๋ณด๋ค ๋ ์ผ๋ฐ์ ์ด๊ธฐ ๋๋ฌธ์ https://github.com/dotnet/core ์ฌ๋๋ค์๊ฒ ์ข์ ์ง๋ฌธ์ ๋๋ค.
@lokitoth ์, ์ง์๋ฉ๋๋ค. https://github.com/dotnet/coreclr/issues/18013 ์ฐธ์กฐ
oO ์ด๋ป๊ฒ ๋์ณค์ต๋๊น?
์ข์์, ๊ทธ๋ผ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@ danroth27 ์ด ๋ฌธ์ ๊ฐ Client-Side-Blazor์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
@Slkebe ๋๋ ์ด๋ค ์ํฅ๋ ๊ธฐ๋ํ์ง ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ธก Blazor ์ฑ์ ์๋ฒ์์ ์คํํ๊ธฐ๋ก ๊ฒฐ์ ํ ๋ฐํ์ ๋๋ ํ๋ซํผ๊ณผ๋ ๋ ๋ฆฝ์ ์ ๋๋ค.
@ danroth27 ๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ํด๋ผ์ด์ธํธ ์ธก Blazor๋ ์ข
์ Microsoft.AspNetCore.*
ํจํค์ง๊ฐ netstandard๋ฅผ ๋์์ผ๋กํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋
ธ์์ ์คํํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น? Blazor๋ ๊ณ์ํด์ Microsoft.AspNetCore.*
2.1.X๋ฅผ ํ๊ฒํ
ํด์ผํฉ๋๊น?
@Slkebe ํด๋ผ์ด์ธํธ ์ธก Blazor ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ .NET Standard๋ฅผ ๊ณ์ ๋์์ผ๋กํ๋ ๊ตฌ์ฑ ์์ (์ : Microsoft.Extensions. * ๋ฐ ์น๊ตฌ)์๋ง ์์กดํฉ๋๋ค. ASP.NET Core์ ์์กดํ๋ Blazor์ ์๋ฒ ์ชฝ ๋ถ๋ถ์์ด ๋ฌธ์ ์ ์ค๋ช ๋๋๋ก .NET Core๋ฅผ ๋์์ผ๋กํฉ๋๋ค.
https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/
์ด์ ๊ฒฐ์ ์ ๋ฌด์์ ๋๊น? .net ํ์ค 2.1์ ๋์?
@ John0King ์๋ก์ด ๊ฒฐ์ ์ด ์์ต๋๋ค.
์ด๊ฒ์ ๋ฐ๋๋์ ๋๋ค! ๋ฐ๋๋
๋๋ ๋น์ ์ ๊ด์ ์ ๊ณต๊ฐํฉ๋๋ค.
์ด๊ฒ์ด ์ด๋ฏธ ์ ๊ธฐ ๋์๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.ํ์ง๋ง ASP.NET์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ก Kestrel + some ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ด๋ป์ต๋๊น? ์ ์ฒด 3.0 ํธ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ผํฉ๋๊น (๋ด ์ฌ์ฉ ์ฌ๋ก์ ์๋น์ ์ฉ ์ฌ์ฉ์ ์ง์ SDK ์ ์๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด์์ ์ด์ง ์์), ์๋๋ฉด์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ 3.x์์ ์ง์๋์ง ์์ต๋๊น?
ํ์ฌ ํฌํจ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํด .NET Framework์์ ์คํ๋๋ ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ๋ค์ค ์ธ์ฆ ๊ธฐ๋ฅ ๋๋ฌธ์ ASP.NET Core๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋๋ ์ด๋ฆฌ ์๊ณ ๊ฐํ ๋๋์ด ๋ญ๋๋ค.
๋ค์ค ์ธ์ฆ ๊ธฐ๋ฅ ๋๋ฌธ์ ASP.NET Core๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@FlorianGrimm ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์ ๋๊น? Microsoft.Owin์ ASP.NET 4์ ๋ํด ์ ์ฌํ ์ธ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ต๋๋ค.
ํ์ฌ Windows ์ธ์ฆ, aad, ๊ธฐ๋ณธ ์ธ์ฆ ๋ฐ ์ต๋ช ์ ์ฌ์ฉํ๋ ์จ-ํ๋ ๋ฏธ์ค ๋ฐ Azure์์ ์คํ๋๋ ํ์ด๋ธ๋ฆฌ๋ ์ฑ ํ๋์ ์์ค ์ฝ๋ (.exe)์ ๋๋ค.
@FlorianGrimm .NET Core ์ฌ์ฉ์ ๋ฐฉํดํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ์์ฑ์ ๋ฌด์์ ๋๊น?
Microsoft.Office.Project.Schema, Microsoft.SqlServer.TransactSql.ScriptDom ๋ฐ Microsoft.SharePointOnline.CSOM.
SharePoint ํ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
https://sharepoint.uservoice.com/forums/329220-sharepoint-dev-platform/suggestions/16585795-support-net-core-with-csom
ilspy ์ด์ธ์ ๋ค๋ฅธ ์ต์
์ ์ฐพ์ต๋๋ค.
์ด์จ๋ ๋๋ ASP.NET Core๋ฅผ ์ข์ํ๊ณ ๋ค๋ฅธ Microsoft Teams๊ฐ ๋ ๋ง์ .NET Core ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฅ๊ธฐ๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์ 'ํ ๋ก '์ด์๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ง๊ฐํฉ๋๋ค.
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ ๋ ์ ๋ณด๋ก ์ ๋ฌธ์ ๋ฅผ ๊ธฐ๋กํด ์ฃผ์๋ฉด ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"killing .NET Framework", ์ํผ์๋ 2 : ๊ฐ์ ์ด์ผ๊ธฐ, ๊ฐ์ ์บ๋ฆญํฐ : rofl :
์ํ๊น๊ฒ๋ ์ด๊ฒ์ ํ ๊ฐ์ง๋ฅผ ๊ฐ์กฐํฉ๋๋ค. .NET Standard๋ฅผ .NET ์์ฝ ์์คํ ์ ์์ฐจ๋ก ๋ง๋๋ ๋ฐ ์์ ํ ์คํจํ์ต๋๋ค . ๋ชจ๋ ํ๋ซํผ์ด ์๋ก์ด API๋ฅผ ํฌํจํ๊ฑฐ๋ ํฌํจํ๋ ค๊ณ ํ๋ ๋ง์ง๋ง ์๊ฐ์ ํญ์ ์ ๋ฐ์ดํธ๋๋ ๊ฐ์ฅ ๋ฎ์ ๊ณตํต ๋ถ๋ชจ ์ผ๋ฟ์ ๋๋ค.
์๋ง๋ ๊ทธ๊ฒ์ ๋์ผ ์๋ ์์ง๋ง,
netcoreapp
๋งํผ ๋น ๋ฅด๊ฒ ์์ง์ด์ง ์๋ ์ด์ ๋ฅผ ์ดํดํ์ง ๋ชปํ์ต๋๋ค (์ ์์ ๋ฐ๋ผ ์ API๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ป์).NuGet ํจํค์ง ์์ฑ์์ด๋ฉฐ ์ต์ ํญ๋ชฉ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ์ญ๋๊น? ๊ฐ์ฅ ์ต๊ทผ์
netstandard
๋ฒ์ ์ ๋์์ผ๋กํฉ๋๋ค. ์ฒ์์๋netcoreapp
๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ ๋ง ์ฌ์ฉํ ์ ์์ง๋ง ๊ฒฐ๊ตญ์๋ Xamarin, Mono ๋๋ .NET Framework์ ๊ฐ์ ๋ค๋ฅธ ํ๋ซํผ์ด ๋ฐ๋ผ ์ก์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋๋ค์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ผ์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค.๋ฌผ๋ก .NET Framework์ ๊ฐ์ ๋น .NET Core ํ๋ซํผ์ด ๋ฆด๋ฆฌ์ค๊ฐ ๋๋ฌผ๊ณ ์์ ์ฑ ๋ง๋๊ฐ ํจ์ฌ ๋ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผ ์ก๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ง๋ง 6 ๊ฐ์, 12 ๊ฐ์ ๋๋ 18 ๊ฐ์์ด ๊ฑธ๋ฆฐ๋ค๊ณ ํด๋ ์ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค. .NET Framework๋ฅผ ์ฌ์ฉํ ๋ ์ฌ๋๋ค์ด ์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋น ๋ฅด๊ฒ ์์ง์ด๋ ๋์์ด ์๋๋ผ ์์ ์ ์ธ ํ๋ ์ ์ํฌ์ ๋๋ค.
IMHO, ASP.NET Core 3.0์ด ํ์ํ ๋ชจ๋ .NET Core API๋ฅผ ๋ ธ์ถํ๋ ์๋ก์ด
netstandard
TFM์ ๋์์ผ๋กํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ API๊ฐ ์ถฉ๋ถํ ์์ ์ ์ด๋ผ๊ณ ํ์ ํ๋ฉด ์ต์ ํ์ค๊ณผ ํธํ๋๋๋ก .NET Framework๋ก ๋ฐฑ ํฌํธํฉ๋๋ค.๋๋ ์ฌ๋๋ค์ด .NET Framework ์ฑ์ ์ต์ ASP.NET Core ๋ฒ์ ์ผ๋ก ์ฎ๊ธธ ์ ์๊ธฐ ์ ์ ๋งค์ฐ ์งง์ 3 ๋ ์ง์์ผ๋ก ์ด์ ๋ฒ์ ์์ ์์ํ ์ฐจ๋จ๋๋ ๊ฒ๋ณด๋ค ๋ช ๋ฌ์ ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ฝ์ ํ๋๋ก ์ํ : .NET Framework๋ฅผ ASP.NET Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ฌ์ฉ์๋ฅผ ์ ๋ขฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ง ๋ค๋ฅธ ๊ณจ๋ชฉ ๋์ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ ์์ ์ ์ธ ํ๋ ์ ์ํฌ๋ก ๋ง๋ญ๋๋ค.