Aspnetcore: ํ† ๋ก  : ASP.NET Core 3.0์€ .NET Core์—์„œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 10์›” 29์ผ  ยท  213์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

https://github.com/aspnet/Announcements/issues/324์— ๋Œ€ํ•œ ํ† ๋ก  ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

"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๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•  ๋•Œ ์‚ฌ์šฉ์ž๋ฅผ ์‹ ๋ขฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ง‰ ๋‹ค๋ฅธ ๊ณจ๋ชฉ ๋Œ€์‹  ๋Š๋ฆฌ๊ฒŒ ๋ฐœ์ „ํ•˜๋Š” ์•ˆ์ •์ ์ธ ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋ชจ๋“  213 ๋Œ“๊ธ€

์ง€๊ธˆ ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์—์„œ ์ด๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .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 ๋ฐ ๋ชจ๋…ธ ๋ชจ๋‘์— ํฅ๋ฏธ๋กœ์šด ์ƒˆ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋จ (์˜ˆ : ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฉ๋ฒ• ๋˜๋Š” ๋น ๋ฅธ Spans) .NET Framework์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, ์–ด๋Š ์‹œ์ ์—์„œ .NET Framework๋ฅผ ๋‚จ๊ฒจ ๋‘๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋ฐ˜๋“œ์‹œ .NET Framework๋ฅผ "์ง€์›ํ•˜์ง€ ์•Š์Œ"์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๊ณ ์ „์ ์ธ ASP (ASP.NET์ด ์•„๋‹ˆ๋ผ ์ •๋ง ์˜ค๋ž˜๋œ ๊ฒƒ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜๊ณ  Windows์—์„œ ์ œ๊ณต๋˜๋ฉฐ ์ƒˆ๋กœ์šด ์•ฑ์„ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” <10 ๋…„ ์•ˆ์— .NET Framework์˜ ์ƒํ™ฉ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

2.1์— ๋Œ€ํ•ด ์š”์ฒญ ๋œ ํ™•์žฅ ์ง€์›์— ๋™์˜ํ•˜์ง€๋งŒ ํŒ€์ด 2.1 ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ 2 ~ 3 ๋…„ ๋‚ด์— ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค (= ์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฌธ์ œ ์ˆ˜์ •). ์กฐ๊ธˆ ๋”.

@ John0King COM์€ .NET Core 3.0์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ : .NET Remoting๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ๋“ค์€ ์ด๋ฏธ ์œ ์‚ฐ์ž…๋‹ˆ๋‹ค.

์„ธ์ƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋กœ ์‹คํ–‰๋˜๋ฉฐ ๊ณ„์†ํ•ด์„œ ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ "์ง€์›"๋˜๋Š” "์ƒˆ๋กœ์šด"๊ฒƒ์œผ๋กœ ์ด์‹ํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฐ์ •์ด์ง€๋งŒ ๊ทธ๋•Œ๊นŒ์ง€๋Š” @dylanbeattie ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด :

img_6086 3

์˜ˆ, ์–ด๋–ค ๊ฒƒ์ด "์ง€์›"๋˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ทธ๋‹ค์ง€ ๊ด€๋ จ์„ฑ์ด์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ์–ธ๊ธ‰ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์•ฑ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•ด์„œ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ ์ด์‹ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„๋Š” ๋ณด์•ˆ ์œ„ํ˜‘์œผ๋กœ ์ธํ•ด ์•ฝ๊ฐ„์˜ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. 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 ์™ธ๋ถ€์—์„œ ํ•„์š”ํ•œ ์œ ํ˜•์˜ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

  1. @poke๊ฐ€ ์–ธ๊ธ‰ ํ•œ ๋ฉด๋„๊ธฐ
  2. MVC ํ•„ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค / (์ข€ ActionFilters ๋ฐ TagHelpers ์ผ๋ฐ˜์ ์ธ ์ •์  / ๋ฌธ์ž์—ด ํ™•์žฅ์ž ๋ฐฉ๋ฒ•, INT, ๊ธด ์š”๋ฒ•. ๋‚ด๊ฐ€ ์‚ฌ์šฉ์„ ํฌํ•จํ•˜๋Š” ํ—ฌํผ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์†์„ฑ 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์„ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ž‘๋™ํ•œ๋‹ค๋ฉด ์™œ ์ด๋™ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

  • ์ง€์›ํ•˜๋‹ค? (3 ๋…„ ์ง€์›์€ ์—„์ฒญ๋‚˜๊ฒŒ ์งง์Šต๋‹ˆ๋‹ค)
  • 3.0์—๋งŒ ์กด์žฌํ•˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •? (LTS ๋ฒ„์ „์€ ์ค‘์š”ํ•œ ๋ฒ„๊ทธ ๋ฐ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ˆ˜์ • ๋งŒ๋ฐ›์Šต๋‹ˆ๋‹ค)
  • ์ตœ์‹  ASP.NET Core ๋ฒ„์ „๊ณผ ๋งŒ ํ˜ธํ™˜๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ .NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด์ „ ๋ชจ ๋†€๋ฆฌ ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ผ๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ ์ด๋ฅผ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ฉด ์œ„ํ—˜์„ ๋‚ฎ์ถ”๊ณ  ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๋ฌผ๋ก  ์ด๋ก ์ ์œผ๋กœ๋Š” ๊ทธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๋Š” ์ด์ƒ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜:

  • ์ผ๋ถ€ ์•ฑ์€ ์ œ์–ด ํ•  ์ˆ˜์—†๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Core์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ๊ณต๊ธ‰ ์—…์ฒด๊ฐ€ ์ด์‹์„ ์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ด์‹ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ์šด์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • .NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ ์ตœ๊ณ ์˜ ํŒ€์กฐ์ฐจ๋„ ๊ทธ ๋ฌธ์ œ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด, ์–ด๋–ค ์ผ๋ฐ˜ ํŒ€์ด๋ผ๋„ ๊ทธ๋ ‡๊ฒŒ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? Entity Framework 6์ด ๋งˆ์นจ๋‚ด .NET Standard์™€ ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋ ค๋ฉด 3.0์„ ๊ธฐ๋‹ค๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์„ ์ž˜๋ชป ํ•ด์„ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ €๋Š” ์ƒˆ๋กœ์šด ์•ฑ์— .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ASP.NET Core๊ฐ€ .NET Framework์™€ ํ˜ธํ™˜๋œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋งŽ์€ ํšŒ์‚ฌ๊ฐ€ ํ•ฉ๋ฆฌ์ ์ธ ๋น„์šฉ์œผ๋กœ ASP.NET Core๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” "๋„ˆ๋ฌด ์–ด๋ ต์ง€ ์•Š์€"๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ๊ฒฐ์ฝ” ๊ทธ๋ ‡๊ฒŒ ์ธ๊ธฐ๊ฐ€ ์—†์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

Microsoft, 2.1 ์ง€์› ์—ฐ์žฅ์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๊นŒ? 2021 ๋…„์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ „ํ™˜์„์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ์ž์› / ์‹œ๊ฐ„๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ 2022 ๋…„๊นŒ์ง€๋Š”? ์ถ”๊ฐ€ 1 ๋…„์€ ์šฐ๋ฆฌ์—๊ฒŒ ๊ณ ํ†ต ์Šค๋Ÿฝ์ง€๋งŒ ๋ณ€ํ™”๋ฅผ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณต ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ํƒ€์‚ฌ ๊ณต๊ธ‰ ์—…์ฒด๊ฐ€ ์•„์ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ .Net Core ํ˜ธํ™˜์„ฑ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๊ฒƒ์ด ์ค‘๋‹จ์˜ ๊ฐ€์žฅ ํฐ ์ด์œ ์ž…๋‹ˆ๋‹ค.

ํ•„์ž๋Š” ํ•„์š”์— ๋”ฐ๋ผ 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๋ฅผ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๊ฒŒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๋ณ„ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ถ”์ƒํ™” ํ•  ์ˆ˜์—†๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์˜ˆ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋จธ๋ฆฟ์†์—์„œ ๋Ÿฐํƒ€์ž„ ๋˜๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ํ•ญ๋ชฉ

  • ๋‚ด๋ถ€ 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)
  • ์ด์Šค์ผ€์ดํ”„ ๋ถ„์„ (์Šคํƒ ํ•  ์ƒˆ ํ• ๋‹น)
  • ๋ณ‘๋ ฌ ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „
  • ๋ฐ”์ธ๋”ฉ ๋ฆฌ๋””๋ ‰์…˜ ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ˆ˜์ •

๋” ์ด์ƒ ๋„ท ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋„ท ์Šคํƒ ๋‹ค๋“œ ๋ฒ„์ „์„ ๊ฐ€์งˆ ์ˆ˜์—†๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 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_์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  ์›ํ•˜๋Š” ์ƒˆ๋กœ์šด API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.
  • .NET _Standard_์— ์—ฐ๊ฒฐ๋˜๊ณ  ๋” ๋งŽ์€ ๊ณณ์—์„œ ์‹คํ–‰๋˜๋Š” ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋Š” LTS ๋ฒ„์ „ ๊ฒฐ๊ตญ ์˜ค๋ž˜๋œ ์ตœ์‹  ๋นŒ๋“œ๋ฅผ ๋”ฐ๋ผ ์žก์ง€ ๋งŒ ํ•ญ์ƒ ๋’ค์ฒ˜์ง‘๋‹ˆ๋‹ค.

.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 ๋…„์ด๋”๋ผ๋„ ๋ถˆํ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์—ฌ๊ธฐ์— ์ถฉ๋Œํ•˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ด์ „ LTS ๋ฒ„์ „ ์ธ 2.1์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ASP.NET Core๋Š” ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜์—ฌ .NET Core์™€ ํ›„์† .NET Standard ์‚ฌ์ด์˜ ๋ฆด๋ฆฌ์Šค์ฃผ๊ธฐ๋ฅผ ํ•œ ๋ฒˆ๋„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

(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 Core์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์—…์˜ ๊ธฐ์กด ๊ด€๋ฆฌ ํ˜• ์ธํ”„๋ผ์˜ .NET Framework ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋ชจ๋ธ ๋ฐ ์—์ฝ” ์‹œ์Šคํ…œ ์‚ฌ์šฉ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ธฐ์กด์˜ ๊ธฐ์กด ASP.NET ์ง€์‹ / ๊ธฐ์ˆ ์˜ ๊ฐ€์น˜๊ฐ€ ๋งค์ผ ๋‚ฎ์•„์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€์€ ๊ธฐ์กด .NET Framework ํ•„์ˆ˜ ์‹œ์Šคํ…œ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ .NET Core์˜ ์ƒˆ ASP.NET Core ํ”„๋กœ์ ํŠธ๋กœ ์ปจํ…์ŠคํŠธ ์ „ํ™˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‚ฐ, ๊ณ„ํš ๋ฐ ํˆฌ์ž ๊ฒฐ์ •์˜ ๊ธฐ์ค€์ด๋˜๋Š” ์ง€์นจ์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์กฐ์ง๋„ ๊ณ„ํš๋˜์ง€ ์•Š์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ฐ•์š” ๋‹นํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ทธ๋ฆฐ ํ•„๋“œ ํ”„๋กœ์ ํŠธ, .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์˜ ํ˜ธํ™˜์„ฑ ์œ„ํ—˜.NET Framework 4.8์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋˜๋Š” ์œ ํ˜•์€ ์ด๋Ÿฌํ•œ ์œ„ํ—˜์ด 4.9์—์„œ ๋” ๋‚ฎ์•„์ง€๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์œ ์‚ฌํ•œ ์šฐ๋ ค๊ฐ€ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐฉ๋ฒ•์„ ๋‘˜๋Ÿฌ์‹ผ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.) ์ด๊ฒƒ์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ์ฃผ์š” ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜์ž…๋‹ˆ๋‹ค!

๋ฐ”๋กœ์ด ์Šค๋ ˆ๋“œ์˜ ๋ฉ”์‹œ์ง€๋Š” 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๊ฐ€ ํ˜„์žฌ ๋‘ ๋ฒˆ์งธ ๋ฒ”์ฃผ์— ์†ํ• ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ธ ๋ฒˆ์งธ ๋ฒ”์ฃผ์— ์†ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://blogs.msdn.microsoft.com/dotnet/2018/10/04/update-on-net-core-3-0-and-net-framework-4-8/ ์ฐธ์กฐ

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 Core 2.1 : ๋ถ€๋ถ„ ์ง€์› (์ƒ์„ธ ๋ณด๊ณ ์„œ)-์„ธ๋ถ€ ๋ณด๊ณ ์„œ์— ์ž‘๋™ํ•˜๋Š” Apis์™€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” Apis๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜
  • .NET Core 3.0 :; ์™„์ „ ์ง€์›

.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 Core๋Š” ์ฝ˜์†” / ์›น / 3rdparty ๋ฐ์Šคํฌํ†ฑ ์šฉ์ž…๋‹ˆ๋‹ค (ํ‘œ์ค€ + ์›น ํŠน์ • API).
  • Unity๋Š” ๊ฒŒ์ž„์šฉ์ž…๋‹ˆ๋‹ค (ํ‘œ์ค€ + ๊ฒŒ์ž„ ๋ณ„ API)
  • Xamarin์€ ์žฅ์น˜ / ๋ฐ์Šคํฌํ†ฑ ์šฉ์ž…๋‹ˆ๋‹ค (ํ‘œ์ค€ + ์žฅ์น˜ / ๋ฐ์Šคํฌํ†ฑ ํŠน์ • API).

ํ•˜์ง€๋งŒ ๋ˆ„๊ฐ€ .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

๋ฟก ๋นต๋€จ
๋„ค, ๋‘ ๊ฐ€์ง€๋ฅผ ์ œ์™ธ ํ•˜๊ณ ์š”.

  1. Core๋Š” Framework์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค . ๊ทธ๊ฒƒ์€ ํ‰ํ–‰ ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ํ•  ์ˆ˜์—†๋Š” ์ •๋ง ๊ทผ๋ณธ์ ์ธ ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉฐ, AppDomains์™€ ๊ฐ™์€ ๋งŽ์€ ๊ฒƒ๋“ค์ด ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ฐœ, ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜๋Š” Reflection.Emit ! ์ด๊ฒƒ์ด ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์ฝ”๋“œ ์ƒ์„ฑ ๋„๊ตฌ์—์„œ ์–ผ๋งˆ๋‚˜ ํ”ํ•œ ์ง€ ๊ณ ๋ คํ•  ๋•Œ ๋ง ๊ทธ๋Œ€๋กœ ์ฒซ ๋ฒˆ์งธ ์šฐ์„  ์ˆœ์œ„ ์ค‘ ํ•˜๋‚˜ ์˜€์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” 4 ๋…„ ํ›„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ด๊ฒƒ์€ "Core as a replacement / upgrade for .Net Framework"๋ผ๋Š” ๊ฐœ๋…์„ ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์„ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. Core๋Š” ๋Ÿฐํƒ€์ž„, CLR 2.0 ์Šคํƒ€์ผ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "CLR ๋ณ€๊ฒฝ์œผ๋กœ ์–ด๋–ค ์–ธ์–ด ์ œ์•ˆ์ด ๋„์›€์ด๋ฉ๋‹ˆ๊นŒ?" ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ˆ„๋ฝ ๋œ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์‚ฌ๋žŒ๋“ค์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ˆ„๋ฝ ๋œ ๊ธฐ๋Šฅ, CLR์ด ์ง€์›ํ•  ์ˆ˜์—†๋Š” (๋˜๋Š” ์ ์–ด๋„ CLR์˜ ์ œํ•œ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๋Œ€๊ทœ๋ชจ์˜ ์ถ”์•…ํ•œ ํด๋Ÿฌ ์ง€ ์—†์ด๋Š” ์ง€์›ํ•  ์ˆ˜์—†๋Š”)์˜ ํ›Œ๋ฅญํ•œ ๋ชฉ๋ก์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ˜• ์‹œ์Šคํ…œ์—์„œ. ํ•ต์‹ฌ ํŒ€์ด์ด ์ฃผ์ œ์˜ ์ œ์•ˆ ์ค‘ ๋ช‡ ๊ฐœ๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋Ÿฐํƒ€์ž„์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ ์ค‘ ๋ช‡ ๋ช…์ด ์†์„ ๋—„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” DIM์„ ๋ฐ›๊ณ  ์žˆ๊ณ  ... ๋‹ค๋ฅธ ๊ฑด ์—†๋‚˜์š”? ์ „ํ˜€ ์š”?

๋”ฐ๋ผ์„œ .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. .NET Framework์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” Microsoft Solver Foundation ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  2. System.Drawing์„ ์‚ฌ์šฉํ•œ ๋ฐ”์ฝ”๋“œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํŒจํ‚ค์ง€ ์ž…๋‹ˆ๋‹ค.
  3. EF6๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์•ฝ 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๋Š” ์š”์ฆ˜ ๋งค์šฐ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค.

์—†์–ด์ง„ ๋ฌผ๊ฑด ์žˆ์–ด์š”:

  • ํ˜„์žฌ ๊ณ ๊ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ „๋žต์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ ์ข‹์•„ํ•˜๋Š” .NET ํ”Œ๋žซํผ์ด Microsoft์— ์˜ํ•ด ์กฐ๊ฐํ™”๋œ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ณ  ํฐ ์‹ค๋ง์„ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋” ๋ช…ํ™•ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹จ์ผํ•˜๊ณ  ํ˜ธํ™˜์„ฑ์ด ๋†’๊ณ  ๋น ๋ฅด๊ณ  ๋ฏธ๋ž˜ ์ง€ํ–ฅ์  ์ธ .NET ๊ตฌํ˜„์„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ง์ ‘ ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋‚˜์€ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. .NET Core์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ .NET์˜ ๋ฏธ๋ž˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ, ๊ธ‰๋“ฑ ์ƒ์‚ฐ์„ฑ, ์ฐฝ์˜์„ฑ, ์ƒˆ๋กœ์šด ์‹œ์žฅ ํ‹ˆ์ƒˆ ๊ฐœ๋ฐฉ ๋“ฑ์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋” ๋งŽ์€ ํ˜ธํ™˜์„ฑ ์ „๋žต
  • ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค. dotnet ๋ช…๋ น ์ค„ ๋„๊ตฌ๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ .NET SDK ํ˜•์‹์œผ๋กœ ์ž‘์—…ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์™€ ์ฝ˜์†”์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ์—์„œ Visual Studio UI๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํฌ์ธํŠธ ์•ค ํด๋ฆญ ๋งŒํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํฐ ์žฅ๋ฒฝ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ๊ฐœ์„ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค
  • LTS ์ง€์›

@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 ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์žฅ๊ธฐ๊ฐ„ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ 'ํ† ๋ก '์ด์Šˆ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋งˆ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํŽธ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ ๋œ ์ •๋ณด๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋กํ•ด ์ฃผ์‹œ๋ฉด ์กฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰