Aspnetcore: ์ƒˆ๋กœ์šด ASP.NET Core 2.0 ํŒจํ‚ค์ง€๋Š” ๋” ์ด์ƒ .NET Desktop์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

ํŽธ์ง‘: "ASP.NET Core 2.0์— ๋Œ€ํ•œ .NET Framework ์ง€์› ์—†์Œ" ๊ณ„ํš์ด ๊ณต์‹์ ์œผ๋กœ ์ทจ์†Œ๋˜์—ˆ์œผ๋ฉฐ .NET Desktop์—์„œ ASP.NET Core 2.0์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ASP.NET Core 2.0.0-Preview1 ๋ฐœํ‘œ ๋ฐ .NET ์›น ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐ ํ•˜๊ฑฐ๋‚˜ .NET Standard 2.0 ๋ฐ .NET Core 2.0์„ ์‹œ์ฒญํ•˜์„ธ์š”.

์‹œ๊ฐ„์„ ๋‚ด์–ด ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ด๋Š” Microsoft ์ฑ…์ž„์ž๋“ค์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒ์˜ํ•˜๊ฑฐ๋‚˜ ์ผ๋ฐฉ์ ์ธ ๊ฒฐ์ •์ด ์ „์ฒด ์ƒํƒœ๊ณ„์— ๋ฏธ์น˜๋Š” ์‹ค์ œ ์˜ํ–ฅ์„ ์ธก์ •ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์ด๋Ÿฌํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ์šฉํžˆ ์ฑ„ํƒํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ž์˜ ์˜๊ฒฌ์€ ๋‹ค๋ฅด์ง€๋งŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ๋ณ€ํ™”์— ๋Œ€ํ•ด ์ง„์ง€ํ•œ ํ† ๋ก ์„ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์—„์ฒญ๋‚œ - ๊ทธ๋ฆฌ๊ณ  ์ „๋ก€ ์—†๋Š” - ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค(>150๋ช…์˜ ์ฐธ๊ฐ€์ž์™€ 700๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€, ์šฐ์™€!)

์ด๋ ‡๊ฒŒ ํ›Œ๋ฅญํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ ์ผ๋ถ€๊ฐ€ ๋œ ๊ฒƒ์„ ๋งค์šฐ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.call_me_hand:


์›๋ณธ ๋ฉ”์‹œ์ง€: ์˜ค๋Š˜ ์ผ์ฐ ๋Œ€๋ถ€๋ถ„์˜ ASP.NET Core 2.0 ํŒจํ‚ค์ง€๊ฐ€ netstandard1.* ๋ฐ net4* netcoreapp2.0 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: https://github.com/ aspnet/Security/pull/1203 ๋ฐ https://github.com/aspnet/Mvc/pull/6234), .NET Desktop ๋ฐ Mono์™€ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ „์ฒด ASP.NET ์—์ฝ”์‹œ์Šคํ…œ์— ๋ง‰๋Œ€ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์ง€๋งŒ ๊ณต๊ฐœ์ ์œผ๋กœ ๋…ผ์˜๋˜๊ฑฐ๋‚˜ ๋ฐœํ‘œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(ASP.NET ํŒ€์ด ์˜์‚ฌ ์†Œํ†ต์— ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š๊ณ  ๋…ผ์˜ํ•  ์˜์‚ฌ๊ฐ€ ์—†์Œ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.)

์ด ์Šค๋ ˆ๋“œ ์—์„œ @Eilon ์€ ์ด ๊ฒฐ์ •์— ๋Œ€ํ•œ ์ด์œ ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ๋œ ๊ทน๋‹จ์ ์ธ ์˜ต์…˜์ด ๊ณ ๋ ค๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€(์˜ˆ: ๊ต์ฐจ ์ปดํŒŒ์ผ, netstandard2.1 TFM ๋„์ž… ๋“ฑ)์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ, ASP.NET Core 2์˜ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET Standard TFM์—์„œ ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒˆ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด .NET Core 2๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Microsoft.Extensions.*, Entity Framework Core ๋ฐ ๊ธฐํƒ€ ๋ช‡ ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์„ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๊ณ„์† .NET Standard๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ œ ์งˆ๋ฌธ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด .NET Desktop์—์„œ ASP.NET Core 2.0 ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก RTM ์ด์ „์˜ ์–ด๋Š ์‹œ์ ์—์„œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ˆ˜์ •/๋˜๋Œ๋ฆด ์˜ˆ์ •์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด .NET Desktop์˜ ASP.NET Core 2.0์ด ํ™•์‹คํžˆ ์ฃฝ์—ˆ์Šต๋‹ˆ๊นŒ? (๋‚˜๋ฅผ ํฌํ•จํ•˜์—ฌ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

๊ฐ์‚ฌ ํ•ด์š”.

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

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฒ˜์Œ์— ๋ฌด์„œ์šด WTF ์ˆœ๊ฐ„์ธ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ์ด์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋‹น์‹ ์€ .NET ๊ณ ๊ฐ์ด ์ƒํ˜ธ ์šด์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

    • ASP.NET Core 2.0๊ณผ EVERYWHERE ๊ฐ„์— netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • typeforwarding ๋ฐ netstandard20 ๋•Œ๋ฌธ์— ASP.NET Core 2.0์—์„œ ๋งŽ์€ net461+ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WebApp์ด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

    • AD โ€“ ์™„์ „ํžˆ, ์ด๊ฒƒ์€ LDAP๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. Windows Auth NOW์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋ฆ„ ์‹œ๊ฐ„๋Œ€์— Core 2.0์„ ์œ„ํ•œ DirectoryServices ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํŠน๋ณ„ํžˆ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

    • ๊ทธ๋ฆฌ๊ธฐ - ์™„์ „ํžˆ, ์ด๊ฒƒ์€ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋ฆ„ ๊ธฐ๊ฐ„ ๋™์•ˆ Core 2.0์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ netstandard ์˜ต์…˜์€ ImageSharp, ImageResizer, Mono ์˜ต์…˜ ๋“ฑ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

    • COM ์ž๋™ํ™” โ€“ ์ด๊ฒƒ์€ Core 2.0์—์„œ๋Š” ๊ฒฐ์ฝ” ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ž์‹ ์„ ๋‹ค์น˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ™•์‹คํžˆ PInvokeํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง๋กœ ์ž์‹ ์„ ํ•ด์น˜๊ณ  ์‹ถ๋‹ค๋ฉด WebAPI๋ฅผ net461+ ํ”„๋กœ์„ธ์Šค์— ๋กœ์ปฌ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • WFP ์•ฑ๊ณผ ์ฝ”๋“œ ๊ณต์œ  โ€“ ์˜ˆ. netstandard2.0์—์„œ๋Š” ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์€ ์ด์ƒํ•œ ๋ณ€๊ฒฝ์ž…๋‹ˆ๋‹ค.

    • ํ•˜๋Š” ๋Š๋‚Œ์ด์ง€๋งŒ...

์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. WPF๋Š” netstandard2.0์ด ์•„๋‹ˆ๋ฉฐ net461+์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.0์€ Core 2.0์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋งˆ๋ฆฐ๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

.NET Core๋Š” ๋‚˜๋ž€ํžˆ ์žˆ์œผ๋ฉฐ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET(์ „์ฒด) ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. .NET Core 2.0(.NET Standard์˜ SUPERSET์ž„) ์œ„์— ASP.NET Core 2.0์„ ๋นŒ๋“œํ•˜๋ฉด NetFx ๋˜๋Š” Netstandard๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NetCore > Net Standard > NetFx๋Š” ๊ฐœ๋ฐœ ์†๋„์™€ ํ˜์‹ ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ์ธํŠธ๋Š” ์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•œ๋‹ค๋ฉด netstandard20์ž…๋‹ˆ๋‹ค. ์ด์ „ net461+ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ASP.NET Core 2.0์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Framework์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 1.1์€ 2.0 ๋ฆด๋ฆฌ์Šค ํ›„ 1๋…„ ๋™์•ˆ ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ๋Š” ์ตœ์†Œ 2018๋…„ 7์›”๊นŒ์ง€ ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

.NET Core 2์—์„œ ๋ˆ„๋ฝ๋œ ๋‚˜๋จธ์ง€ ํฐ ๊ฒฉ์ฐจ๋Š” System.DirectoryServices ๋ฐ System.Drawing์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฒˆ ์—ฌ๋ฆ„์— Windows์˜ .NET Core์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Windows ํ˜ธํ™˜ ํŒฉ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ net461+์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core 2.0์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ชฉ๋ก/์ดํ•ด์ž…๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ๋งค์šฐ ์ด์ƒํ•˜๊ณ  ๋‚˜์œ ๋ณ€๊ฒฝ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” netfx ์ „์šฉ asp.net ํ•ต์‹ฌ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ–ˆ์œผ๋ฉฐ ๊ทธ ํˆฌ์ž๊ฐ€ ๋‚ญ๋น„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ .NET ๊ณ ๊ฐ์€ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ASP.NET Core์™€ Desktop ์ฝ”๋“œ ๊ฐ„์— ์ƒํ˜ธ ์šด์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Active Directory ๋˜๋Š” Office COM ์ž๋™ํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ System.Drawing ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์›น์•ฑ์„ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ WPF ์•ฑ๊ณผ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๋‹จ์ˆœํžˆ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์˜คํ•ดํ–ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ AspNetCore 1.1.1์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, "ํ˜„์žฌ" ์ง€์› ๋ถ„๊ธฐ์ž…๋‹ˆ๋‹ค. Net4XX์— ๋Œ€ํ•œ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด 2.0์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด 2.0+3๊ฐœ์›”์ด ๋–จ์–ด์ง€๋ฉด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ธ๊ฐ€์š”?

WPF์™€ ASP.NET Core์˜ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— 2.0์ด ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ 4.6.1์ด netstandard 2๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? (https://docs.microsoft.com/en-us/dotnet/articles/standard/library)

์ด๊ฒƒ์€ ํ˜„์žฌ ๋„๊ตฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋ฉฐ asp.net ์ฝ”์–ด๊ฐ€ net standard 2์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋†€๋ผ์šด ์ ์€ net core app2.0์œผ๋กœ ์ด๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋” ์ด์ƒ asp.net ๋‚ด๋ถ€์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ํ•ต์‹ฌ ์›น์‚ฌ์ดํŠธ

์˜ค, ๊ทธ๊ฒŒ ๋ฌธ์ œ๋„ค์š”.. netcore2์˜ compat shim์— ์˜ํ•ด ์กฐ๊ธˆ ์™„ํ™”๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์œผ๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ๊ณผ ๋งŽ์€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํŒ€์—์„œ ์ด์— ๋Œ€ํ•œ ์ถ”๋ก ์„ ๋“ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ค, ๊ทธ๋ž˜์„œ netcoreapp2.0 ํ”„๋กœ์ ํŠธ๊ฐ€ ์œ ํ˜• ํ†ตํ•ฉ ๋•๋ถ„์— ๋‹จ์ˆœํžˆ netfx ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋งŽ์€ ๊ฒƒ์„ ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์งˆ๋ฌธ์€ ๊ทธ๋ ‡๋‹ค๋ฉด Windows์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ ํ•ต์‹ฌ CLR์—์„œ๋Š” ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ์˜ ์–‘์ž…๋‹ˆ๋‹ค.

์™€. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ์ฐจ๋‹จํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ net462+๋ฅผ ํƒ€๊ฒŸํŒ…ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— MvcCore ํ”„๋กœ์ ํŠธ๋ฅผ Mvc๋กœ ๋‹ค์‹œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ด๊ฒŒ ๊ต‰์žฅํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ค‘๊ฐ„(๊ทธ๋ฆฌ๊ณ  ์ˆ˜๋ช…์ด ์งง์€) ๋‹จ๊ณ„๋‚˜ ํฐ ์˜คํ•ด์—์„œ ์‹ค์ œ๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ฑ„ํƒ๋„ ํ™•์‹คํžˆ ๋ฐฉํ•ด๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ Core๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์€ (๊ฐœ๋ฐœ์„ ์ค‘์ง€ํ•˜์ง€ ์•Š๊ณ ) ๋Œ€๊ทœ๋ชจ ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด๋ฉฐ, ์šฐ๋ฆฌ์˜ ์ฃผ์š” ํ”„๋กœ์ ํŠธ์—์„œ ์ค‘๊ฐ„ ๋‹จ๊ณ„ ๋กœ ์ƒˆ๋กœ์šด ASP.NET ํด๋ž˜์Šค(HttpRequest, ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ)๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@DamianEdwards ๋˜๋Š” @davidfowl ์ด ์—ฌ๊ธฐ์—์„œ ๊ณ„ํš์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ ์ถ”๊ฐ€ ์ถ”๋ก ์„ ์ฐพ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฒ˜์Œ์— ๋ฌด์„œ์šด WTF ์ˆœ๊ฐ„์ธ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ์ด์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋‹น์‹ ์€ .NET ๊ณ ๊ฐ์ด ์ƒํ˜ธ ์šด์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

    • ASP.NET Core 2.0๊ณผ EVERYWHERE ๊ฐ„์— netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • typeforwarding ๋ฐ netstandard20 ๋•Œ๋ฌธ์— ASP.NET Core 2.0์—์„œ ๋งŽ์€ net461+ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WebApp์ด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

    • AD โ€“ ์™„์ „ํžˆ, ์ด๊ฒƒ์€ LDAP๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. Windows Auth NOW์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋ฆ„ ์‹œ๊ฐ„๋Œ€์— Core 2.0์„ ์œ„ํ•œ DirectoryServices ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํŠน๋ณ„ํžˆ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

    • ๊ทธ๋ฆฌ๊ธฐ - ์™„์ „ํžˆ, ์ด๊ฒƒ์€ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋ฆ„ ๊ธฐ๊ฐ„ ๋™์•ˆ Core 2.0์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ netstandard ์˜ต์…˜์€ ImageSharp, ImageResizer, Mono ์˜ต์…˜ ๋“ฑ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

    • COM ์ž๋™ํ™” โ€“ ์ด๊ฒƒ์€ Core 2.0์—์„œ๋Š” ๊ฒฐ์ฝ” ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ž์‹ ์„ ๋‹ค์น˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ™•์‹คํžˆ PInvokeํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง๋กœ ์ž์‹ ์„ ํ•ด์น˜๊ณ  ์‹ถ๋‹ค๋ฉด WebAPI๋ฅผ net461+ ํ”„๋กœ์„ธ์Šค์— ๋กœ์ปฌ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • WFP ์•ฑ๊ณผ ์ฝ”๋“œ ๊ณต์œ  โ€“ ์˜ˆ. netstandard2.0์—์„œ๋Š” ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์€ ์ด์ƒํ•œ ๋ณ€๊ฒฝ์ž…๋‹ˆ๋‹ค.

    • ํ•˜๋Š” ๋Š๋‚Œ์ด์ง€๋งŒ...

์ด๋Ÿฐ ์‹์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. WPF๋Š” netstandard2.0์ด ์•„๋‹ˆ๋ฉฐ net461+์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.0์€ Core 2.0์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์ง€๋งŒ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋งˆ๋ฆฐ๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

.NET Core๋Š” ๋‚˜๋ž€ํžˆ ์žˆ์œผ๋ฉฐ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET(์ „์ฒด) ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. .NET Core 2.0(.NET Standard์˜ SUPERSET์ž„) ์œ„์— ASP.NET Core 2.0์„ ๋นŒ๋“œํ•˜๋ฉด NetFx ๋˜๋Š” Netstandard๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NetCore > Net Standard > NetFx๋Š” ๊ฐœ๋ฐœ ์†๋„์™€ ํ˜์‹ ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ์ธํŠธ๋Š” ์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•œ๋‹ค๋ฉด netstandard20์ž…๋‹ˆ๋‹ค. ์ด์ „ net461+ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ASP.NET Core 2.0์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Framework์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 1.1์€ 2.0 ๋ฆด๋ฆฌ์Šค ํ›„ 1๋…„ ๋™์•ˆ ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ๋Š” ์ตœ์†Œ 2018๋…„ 7์›”๊นŒ์ง€ ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

.NET Core 2์—์„œ ๋ˆ„๋ฝ๋œ ๋‚˜๋จธ์ง€ ํฐ ๊ฒฉ์ฐจ๋Š” System.DirectoryServices ๋ฐ System.Drawing์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฒˆ ์—ฌ๋ฆ„์— Windows์˜ .NET Core์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Windows ํ˜ธํ™˜ ํŒฉ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ net461+์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core 2.0์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ชฉ๋ก/์ดํ•ด์ž…๋‹ˆ๋‹ค.

.NET Standard 2.0์€ ๋ชจ๋‘๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” .NET Core์™€ .NET fx ์‚ฌ์ด์˜ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•˜๋Š” ํ˜ธํ™˜์„ฑ๊ณผ ์ƒํ˜ธ ์šด์šฉ์„ฑ์— ๊ด€ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ด์œ ๋กœ๋“  ์‚ฌ์šฉ์ž ์ง€์ • ์™ธ๋ถ€ ์ข…์†์„ฑ, ์ƒ์šฉ ๊ตฌ์„ฑ ์š”์†Œ, ๋ ˆ๊ฑฐ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ ๋“ฑ .NET 4.x๊ฐ€ ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ๊ฐ–๊ฒŒ ๋  ๋งŽ์€ ๊ณ ๊ฐ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณ ๊ฐ์ด ๊ธฐ์กด .NET 4.x dep๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ์Šคํฌํ†ฑ CLR์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 2.0 ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋„๋ก ํ•˜๋ ค๋Š” ์˜๋„์ž…๋‹ˆ๊นŒ?

@shanselman ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์˜ˆ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜:
๋ชจ๋“  ์ถ”์ƒํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌ๋กœ์Šค ์ปดํŒŒ์ผ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด HttpRequest ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ์ค‘์ธ ASP.NET Core ๋ฒ„์ „(์ด์ œ ์ตœ์†Œํ•œ TFM์— ๊น”๋”ํ•˜๊ฒŒ ๋งคํ•‘๋จ)์—์„œ 1.x ๋ฐ 2.x ๋นŒ๋“œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ”ผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ž˜์„œ ์ถ”์ƒํ™”๊ฐ€ netstandard ์— ๋‚จ์•„ ์žˆ๊ธฐ ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์ผ๋ฐ˜ ๊ณ„ํš์ธ๊ฐ€์š”?

System.Web ์˜ HttpRequest ๊ฐ€ ์™„์ „ํžˆ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ASP.NET/MVC์— ์˜์กดํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ณ€ํ˜•์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค(์˜ˆ: MiniProfiler vs. . MiniProfiler.AspNetCore ). lib ์ž‘์„ฑ์ž์˜ ์ข…์†์„ฑ์ด netstandard ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๋“œํ•˜๋Š” ๋ณ€ํ˜•์˜ ์ˆ˜๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ ๋‘ํ†ต์„ ๋ชจ๋‘ ํ”ผํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ณด์ด๋Š” ๊ฒƒ๋งŒํผ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„ ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ/๊ฑฑ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ASP.NET Core์—์„œ .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋งˆ์ฐฐ์ด ์ตœ์†Œํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋Œ€๋‹จํ•ด! ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? Mvc ๋ฐ ๊ธฐํƒ€ ์ง€์› ASP.NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ถ€ํ’ˆ์ด๋‚˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” .NET Framework ๋˜๋Š” netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๊นจ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค, ๋งž์ฃ ? ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ASP.NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํฌํ•จ๋œ ASP.NET Core ์‹œ๋‚˜๋ฆฌ์˜ค์— ํฐ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋น„๊ธฐ์ˆ ์  ๊ด€์ ์—์„œ ์ด๊ฒƒ์€ ๋งŽ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. GitHub์—์„œ ํ™œ๋™ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ์™ธ์— Twitter์—์„œ ํŒ”๋กœ์šฐํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์ด๋ฏธ ๋งŽ์€ ํ˜ผ๋ž€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ํŒ”๋กœ์šฐํ–ˆ๊ฑฐ๋‚˜ ์ด์ œ ๋ง‰ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ(์•„๋งˆ๋„ ์˜ค๋ž˜๋œ ์ž์Šต์„œ๋ฅผ ๋”ฐ๋ฆ„) .NET Framework ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

typeforwarding ๋ฐ netstandard20 ๋•Œ๋ฌธ์— ASP.NET Core 2.0์—์„œ ๋งŽ์€ net461+ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์šฉ์œผ๋กœ ์ปดํŒŒ์ผ ๋ฐ ์„ค๊ณ„๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Core์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค(๋Ÿฐํƒ€์ž„์— ๋ชจ๋“  ๊ฒƒ์ด ํญ๋ฐœํ•  ์œ„ํ—˜์ด ๋†’์Šต๋‹ˆ๋‹ค!).

.NET Core 2.0์— ๋‹ค์‹œ ๋„์ž…๋œ ๋งŽ์€ "์ด์ „" API๋Š” (๊ธฐ๋Šฅ์ ์œผ๋กœ) ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์Šคํ…์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋œ API๊ฐ€ ๋งŽ๊ณ  .NET Core์—์„œ ์˜๋„์ ์œผ๋กœ ์ œ์™ธ๋œ ์ „์ฒด ์˜์—ญ(IdentityModel, WCF ์„œ๋ฒ„, ์›๊ฒฉ, ์™„์ „ํ•œ AppDomain ์ง€์› ๋“ฑ)์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET Core 1.0 w/ .NET Desktop ์•ฑ์„ ASP.NET Core 2.0 w/ .NET Core๋กœ "์•ˆ์ „ํ•˜๊ฒŒ" ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์‚ฌ๋žŒ๋“ค์„ ์„ค๋“ํ•˜๋ ค๋Š” ์‹œ๋„๋Š” - IMHO - ๊ฑฐ์ง“๋ง์ž…๋‹ˆ๋‹ค.

.NET Core๋Š” ๋‚˜๋ž€ํžˆ ์žˆ์œผ๋ฉฐ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET(์ „์ฒด) ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. .NET Core 2.0(.NET Standard์˜ SUPERSET์ž„) ์œ„์— ASP.NET Core 2.0์„ ๋นŒ๋“œํ•˜๋ฉด NetFx ๋˜๋Š” Netstandard๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด (๋Œ€๋ถ€๋ถ„์˜) ์‚ฌ๋žŒ๋“ค์ด ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š๊ณ  ์ด์ „ ํ•ญ๋ชฉ์— ์šฐ์•„ํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ํ•ญ๋ชฉ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@daveaglick

  • net461 ๋˜๋Š” netstandard2.0 netcoreapp2.0 ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์•”์‹œ์  ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ์ ์—์„œ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฆฌ๋Š” ์ผ๋ฐฉํ†ตํ–‰์ž…๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋Œ€์ฒด๋ฅผ ์œ„ํ•ด TFM์„ ์ง€์ •ํ•˜์—ฌ ํ•ญ์ƒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ์ง€์›๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์•„๋‹Œ ๋ถ„๋ช…ํžˆ ํƒˆ์ถœ๊ตฌ์ž…๋‹ˆ๋‹ค(๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์ฐจ๋‹จ ํ•ด์ œํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ• ์ง€๋ผ๋„). ๋” ํฐ ์Šคํƒ( netstandard ์„ ๋Œ€์ƒ์œผ๋กœ ํ•จ์„ ์˜๋ฏธํ•จ) ์™ธ๋ถ€์—์„œ ASP.NET Core์˜ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ ์ง€ ์•Š์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.
  • ํ˜ผ๋ž€์˜ ๊ฐ€๋Šฅ์„ฑ์€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "ASP.NET Core"๊ฐ€ .NET Framework(.NET Core ๊ฐ€ ์•„๋‹˜ )์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋งŽ์ด ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ ASP.NET Core๋ฅผ .NET Core ์Šคํƒ์˜ ์ผ๋ถ€๋กœ ํšจ๊ณผ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฆ‰, ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@shanselman BTW, ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์ด ์˜ต์…˜์ด ์•„๋‹Œ ์ด์œ ๋ฅผ ๋งํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. netcoreapp2.0 ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ASP.NET Core ๊ตฌ์„ฑ ์š”์†Œ -only API๋Š” net46 / netstandard1.x / netstandard2.0 ๋ฐ netcoreapp2.0 TFM ๋ฐ ์ƒˆ๋กญ๊ณ  ๋ฉ‹์ง„/๋น ๋ฅธ ๊ฒƒ์„ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

@NickCraver ๋Š” ํ˜„์žฌ netstandard ๋ฅผ ๋Œ€์ƒ์œผ๋กœ *.Abstractions ํŒจํ‚ค์ง€๋ฅผ ๋– ๋‚˜๋Š” ๊ฒƒ์„ ๊ณ„ํš์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถ„๋ฆฌ๊ฐ€ ์ „๋ฐ˜์ ์œผ๋กœ ๊นจ๋—ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ๋„ํ•˜๋Š” ๋ˆ„๊ตฐ๊ฐ€์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ํŒจํ‚ค์ง€ ๋Œ€์ƒ ๋Œ€์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด์จŒ๋“  ๊ฑฐ๊ธฐ์— ๋„์ฐฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋‹น์‹ ์„ ์˜คํ•ดํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Œ).

๋˜ํ•œ ๋‹จ์ผ ํŒจํ‚ค์ง€๊ฐ€ ์ด์ œ TFM์„ ํ”ผ๋ฒ—์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ASP.NET Core 1.x ๋ฐ 2.0 ์ด์ƒ์„ ๋™์‹œ์— ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๊นจ๋—ํ•œ TFM ๋ถ„ํ• ์ด ์ •ํ™•ํ•˜๊ณ  ์ด ๊ณ„ํš์˜ ์žฅ์ ์ด๋ผ๋Š” ์ ์„ ์ง€์ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” "ํ˜ผํ•ฉ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์ด๋ผ๋Š” ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Web API๋ฅผ ๋…ธ์ถœํ•˜๋Š” WPF ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” REST API์™€ WCF ๋์ ์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„(์ด์ „ ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Œ). ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ด ๋ณ€๊ฒฝ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ ASP.NET Core๊ฐ€ "๋‹จ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"๊ฐ€ ์•„๋‹Œ ์ƒˆ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋งŒ ์ ํ•ฉํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

@shanselman ์ด ๋งํ–ˆ๋“ฏ์ด @PinpointTownes ๋Š” ๊ณ ๊ฐ์ด .NET Framework๋ฅผ ์ง์ ‘ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ณ ๊ฐ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ์ฐจ๋‹จ ์š”์†Œ์— ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ด ๋ณดํŠธ์˜ ๊ณ ๊ฐ๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•œ ๊ฒฐ๊ณผ System.DirectoryServices ๋ฐ System.Drawing ๋ฐ 1๋ฒˆ ๋ฐ 2๋ฒˆ ์ฐจ๋‹จ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ํ”ผ๋“œ๋ฐฑ์„ ์‚ดํŽด๋ณด๊ณ  ํ‰๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@DamianEdwards ์ถ”๊ฐ€ ์„ค๋ช…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. netstandard -> ASP.NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ €์—๊ฒŒ ํฐ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— Kestrel(netcoreapp๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Razor๋ฅผ ์—ฌ๋Ÿฌ ์œ„์น˜์— ํฌํ•จํ–ˆ์œผ๋ฉฐ ๋” ๋งŽ์€ ๋ชจ๋“ˆ์‹ ๋ฒ„์ „์„ ๊ฐœ๋ฐœ ์ค‘์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ASP.NET Core์˜ "์ผ๋ถ€"์ด์ง€๋งŒ ์™ธ๋ถ€์— ๋งŽ์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๋Š” ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•ด, netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ASP.NET Core ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋Œ€๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ณ ๋ ค ์‚ฌํ•ญ์—์„œ ์ „์ฒด ์‚ฌ์šฉ ์‚ฌ๋ก€ ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@daveaglick Razor ์ž์ฒด(์—”์ง„)๋Š” ๊ณ„์†ํ•ด์„œ netstandard ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ํฐ ๋ณต์žกํ•œ ๊ทธ๋ž˜ํ”„(์˜ˆ: ASP.NET Core 2.0)์˜ ํŠน์ • ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋“ญ๋‹ˆ๋‹ค. ์ž„๋ฒ ๋”ฉ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์˜ต์…˜(์†Œ์Šค ์ž„๋ฒ ๋”ฉ, ๋ณต์‚ฌ ๋“ฑ)์ด ์žˆ์ง€๋งŒ ๋ฌผ๋ก  ์—ฌ๊ธฐ์—๋Š” ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ๋“ฃ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์šฐ๋ฆฌ์™€ ๊ฐ™์€ ์Šคํƒ์„ ์„ค๊ณ„ํ•˜๊ณ  ๋ฐฐ์†กํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋‹ค์–‘ํ•œ ๊ณ ๊ฐ ๊ทธ๋ฃน์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ @daveaglick ์˜ ์šฐ๋ ค ์‚ฌํ•ญ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ASP.NET Core๋Š” ์™„์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ชจ๋“  ๋‹ค์šด์ŠคํŠธ๋ฆผ ์—์„œ ๋™์ผํ•œ ๊ฒƒ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ข€ ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์•ˆ์ • ๋˜๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ 1.0 ์ดํ›„์—๋Š” ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค netcoreapp2.0 ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธฐ์ฐจ๋ฅผ ํƒ€๊ฒŒ ๋˜๋ฉฐ ์ด๊ฒƒ์ด ์œ ์ผํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ netcoreapp2.0 ์†Œ๋น„ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๋น„ํŠธ(๊ธฐ๋ณธ ์ถ”์ƒํ™” ํฌํ•จ)๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ „์ฒด ๋ผ์ธ์— ๋Œ€ํ•ด ์‚ฌ์‹ค์ƒ netstandard2.0 ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค...๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ์„ ์ด๋™ํ•˜์ง€๋งŒ ํŠนํžˆ ์ด๋™ํ•˜๋Š” ์ถ”์ƒํ™”์— ๋ฐ˜๋“œ์‹œ ๋™์˜ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”์ƒํ™”์˜ ์ฃผ์š” ์š”์  ์ค‘ ํ•˜๋‚˜๋Š” ์ ์–ด๋„ ์†Œ๋น„์ž๋กœ์„œ์˜ ๋‚ด ๊ด€์ ์—์„œ ์ด์™€ ๊ฐ™์€ ๊ธด๋ฐ€ํ•œ ๊ฒฐํ•ฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. netstandard2.0 ์—๋Š” ํ•„์š”ํ•œ API๊ฐ€ ์—†์ง€๋งŒ netcoreapp2.0 ์—๋Š” ํ•„์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์ฃผ๋กœ ๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ƒˆ๋กœ์šด ์œ ํ˜•์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ถฉ๋ถ„ํ•œ ์ถ”๋ก ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜์‹ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋งค์šฐ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ์˜ ๋งค์ผ ํ†ต์ฐฐ๋ ฅ์„ ๊ฐ–์ง€ ๋ชปํ•˜๋Š” ์œ ์ง€ ๋ณด์ˆ˜ ๋น„์šฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kestrel์˜ ๊ฒฝ์šฐ๋Š” ๋” ๋ณต์žกํ•˜์ง€๋งŒ ์ตœ์‹  API ์„ธํŠธ์— ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์žฅ์ด ํ™•์‹คํžˆ ๋ณด์ž…๋‹ˆ๋‹ค. Kestrel์ด ์ถ”์ง„ํ•˜๋Š” ์ž‘์—…์„ ๊ฐ์•ˆํ•  ๋•Œ Kestrel์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์ƒˆ๋กœ์šด API๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค.

@shanselman ์ด ๋งํ–ˆ๋“ฏ์ด @PinpointTownes ๋Š” ๊ณ ๊ฐ์ด .NET Framework๋ฅผ ์ง์ ‘ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ณ ๊ฐ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ์ฐจ๋‹จ ์š”์†Œ์— ๋งค์šฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจ์„คํ„ดํŠธ๋กœ์„œ ์ €๋Š” ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์˜ ์•ฑ์„ ASP.NET Core๋กœ ์ด๋™ํ•˜๋„๋ก ๋„์™”๊ณ  IdentityModel / WCF ๋˜๋Š” AppDomain ์— ์˜์กดํ•˜๋Š” ํƒ€์‚ฌ(๋น„๊ณต๊ฐœ ์†Œ์Šค) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก .NET Desktop์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋‹ค.

ASP.NET Core 2.0์— ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

API๊ฐ€ ์žˆ์–ด๋„ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— .NET Core์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณธ ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

.NET Core์—์„œ RSA.Create() ๋Š” Windows์—์„œ RSACng ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ .NET Desktop์—์„œ๋Š” RSACryptoServiceProvider ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ BLC ์ž์ฒด๋ฅผ ํฌํ•จํ•œ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” RSA ๋ฅผ RSACryptoServiceProvider ๋กœ ์บ์ŠคํŒ…ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. RSACng ๋Š” RSACryptoServiceProvider ๋กœ ์บ์ŠคํŒ…ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ .NET Core์—์„œ๋Š” ํ•ญ์ƒ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

@NickCraver ํŠนํžˆ ์–ด๋–ค ์ถ”์ƒํ™”์ž…๋‹ˆ๊นŒ? ์ถ”์ƒํ™”๋งŒ ์ด๋™ํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋‹ค์Œ์— ํ•ด๋‹น ์ถ”์ƒํ™”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์›ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ง ๊ทธ๋Œ€๋กœ Microsoft.AspNetCore.Http.Abstractions๋งŒ ํ•„์š”ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ)

@davidfowl ์˜ˆ, ์ถ”์ƒํ™” ๋งŒ ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: HTTP, ํ˜ธ์ŠคํŒ…, HTML ๋ฐ ๋กœ๊น…. Microsoft.Extensions.* ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ด์ „ ๋Œ“๊ธ€์— ํฌํ•จ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ œ๊ฐ€ ์ ‘ํ•˜๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์ž…๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์˜ˆ: MiniProfiler ๋ฏธ๋“ค์›จ์–ด๋Š” ์ถ”์ƒํ™”( ๋งํฌ ) ์™ธ์—๋Š” ์‘๋‹ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งจ ์œ„์— MVC ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์–ด์จŒ๋“  netcoreapp2.0 ์— ์žˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  IMO๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ์ €๋Š” API๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ณณ์—์„œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”์ƒํ™”์ด๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ๋ถ„ํ• ์˜ ํŒฌ์ž…๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ž ๊ทธ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

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

์–ด์จŒ๋“ ... ๋‚ด๊ฐ€ .NET Core๊ฐ€ ์‹œ์ž‘๋  ๋•Œ("์ƒˆ๋กญ๊ฒŒ" ์‹œ์ž‘) ๊ตฌ์‹/๋ ˆ๊ฑฐ์‹œ/๊นจ์ง„ API๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋” ๋น ๋ฅด๊ณ  ๊ฐ„๊ฒฐํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ ๋” ๋†’์€ ํ˜์‹  ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ๋“  ๋‚ด๋…„ 6์›” ์ด์ „์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ .NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ณต๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ํ˜„์žฌ ๋ณ‘๋ ฌ๋กœ ๊ฐœ๋ฐœ ์ค‘์ธ ์—ฌ๋Ÿฌ ASP.NET Core ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ๋ ˆ๊ฑฐ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ๋Š” ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์ด ํ”„๋กœ๋•์…˜์— ๋“ค์–ด๊ฐˆ ๋•Œ์ฏค์ด๋ฉด ASP.NET Core 1.x๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๊ธฐ ์ „์— a) ๋ชจ๋“  ๊ฒƒ์„ .NET Core๋กœ ์ด์‹ํ•˜๊ฑฐ๋‚˜ b) ๋ชจ๋“  ๊ฒƒ์„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ASP.NET์œผ๋กœ ์ด๋™ํ•  ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ง€์› 1๋…„์ด๋ฉด ์ •๋ง ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ? ๋น„์Šทํ•œ ์‚ฌ๋ก€๊ฐ€ ๋˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜๋Š”๋ฐ...

@khellang ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ„์† ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ˜ธ์ถœํ•˜๋Š” API๊ฐ€ netstandard2.0 ํ์‡„์˜ ์ผ๋ถ€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๊ทธ ๊ณต๊ฐ„ ๋ฐ–์˜ ๊ฒƒ์— ์˜์กดํ•˜๋Š”์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ด๋Ÿฌํ•œ API(์˜ˆ System.DirectoryServices ๋ฐ System.Drawing )๋ฅผ ์ด์‹ํ•˜๋Š” ์šฐ์„  ์ˆœ์œ„๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜„์žฌ Windows ์„œ๋น„์Šค ๋˜๋Š” WPF ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ ์›น API(์˜ˆ: ํ†ต์‹  ๊ณ„์ธต) ๋˜๋Š” ๊ณง ์ถœ์‹œ๋  asp.net ์ฝ”์–ด ์†Œ์ผ“์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ ๊นŒ์š”? (์ง€์›๋˜๋Š” ๋ฒ„์ „ ํฌํ•จ).

netstandard1.x ์˜€๋˜ ํ•ญ๋ชฉ์ด ํ˜„์žฌ netcoreapp2.0 ์ธ ํ•ญ๋ชฉ์˜ ๋ชฉ๋ก์ด ๊ณง ๋‚˜์˜ฌ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ๋Š”๋ฐ MVC ๊ด€๋ จ ํ•ญ๋ชฉ์ด netcoreapp2.0 ์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ HttpAbstractions, Logging, Configuration ๋“ฑ์€ ์—ฌ์ „ํžˆ netstandard ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋” ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@NickCraver Extensions๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ System.Web์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. System.Web.HttpContext ๋กœ Microsoft.AspNetCore.Http.HttpContext ๋ฅผ ์‹ฌ์„ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ๋งŽ์€ API๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋งจ ์œ„์— MVC ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ด์จŒ๋“  netcoreapp2.0์— ์žˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  IMO๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ์ €๋Š” API๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ณณ์—์„œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ถ”์ƒํ™”์ด๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ๋ถ„ํ• ์˜ ํŒฌ์ž…๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ž ๊ทธ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

MVC์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ ์ถ”์ƒํ™” ์œ„์— ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ๋„์šฐ๋ฏธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์„ ํƒํ•œ "์ถ”์ƒํ™”" ํŒจํ„ด์˜ ํฐ ๊ฐ€์น˜๋Š” ์ถ”์ƒํ™” ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ๊ทธ ์œ„์— ๊ตฌ์ถ•๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ง๊ฐ์— ๋”ฐ๋ฅด๋ฉด ASP.NET ์ถ”์ƒํ™”๋ฅผ netstandard๋กœ ๋งŒ๋“ค๋ฉด ๊ฒฐ๊ตญ ๋ชจ๋“  ๋ฏธ๋“ค์›จ์–ด๋„ netstandard๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@dasMulli Windows ์„œ๋น„์Šค๋Š” API๋ฅผ ์ด์‹ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(.NET Core์—์„œ Windows ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์žˆ์Œ).

WPF ๋ฐ์Šคํฌํ†ฑ ์•ฑ? (์ง€์›๋˜๋Š” ๋ฒ„์ „ ํฌํ•จ).

๋„ค. ์ด๊ฒƒ์€ ๋” ์ด์ƒ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. .NET Core 2.0์—์„œ๋Š” ๋” ์ด์ƒ ์ฆ‰์‹œ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@davidfowl ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ฑฐ๊ธฐ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๋ถ€๋ถ„์„ ๋ณด์•˜๋Š”์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ System.Web์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

...์ด ๋ถ„ํ• ๋กœ ์ธํ•ด ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—†์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ณ  ์†Œ๋น„์ž์— ๋Œ€ํ•œ ์ข…์†์„ฑ ํŠธ๋Ÿญ ๋กœ๋“œ๊ฐ€ ์•„๋‹Œ ASP.NET MVC < 6(System.Web) ๋ฐ $# MiniProfiler MiniProfiler.AspNetCore / MiniProfiler.AspNetCore.Mvc (๋งŽ์€ NuGet ).

MiniProfiler.Shared ์— ์žˆ์—ˆ๋˜ System.Web ํ”์ ์— ๋Œ€ํ•ด ๋ง์”€ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ง€๋‚œ ๋ฐค ํ”„๋ ˆ์ž„์›Œํฌ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ NuGet ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ์ด๋ฅผ ์ •๋ฆฌํ•˜๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ทธ๋ƒฅ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค .

@DamianEdwards netstandard2.0 ํ์‡„์— ๋Œ€ํ•ด 100% ๋™์˜ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ (๊ทธ๋“ค์˜ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์•„) ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋Š” ์—ฌ์ „ํžˆ ์ตœ์‹  ์ƒํƒœ์ž…๋‹ˆ๊นŒ?

ASP.Net Core๋Š” ๋น ๋ฅด๊ฒŒ ์ƒˆ๋กœ์šด Python 3*๊ฐ€ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜๋น ์งˆ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ์˜ ์›€์ง์ž„์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋™ํ•˜๋Š” ๋Œ€์‹  ์•ž์œผ๋กœ ๋ช‡ ๋…„ ๋™์•ˆ "์ด์ „ ํ”Œ๋žซํผ"์—์„œ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌ(๋ฐ ์ƒˆ ์ž‘์„ฑ)ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. "๋น ๋ฅธ ๊ฐœ๋ฐœ"์ด ์˜๋ฏธํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด "๋น ๋ฅธ"/๋ถ€์ ํ•ฉํ•œ ์œ„์น˜์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์•„์ฃผ ์ข‹์€ ์ฃผ์žฅ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

*๋‚˜๋Š” Python 3์„ ์ข‹์•„ํ•˜์ง€๋งŒ ๊ฑฐ์˜ 10๋…„์ด ์ง€๋‚ฌ๊ณ  Python ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์—ฌ์ „ํžˆ ๋ถ„์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ๊ธฐ์ˆ ์ ์ธ ๋ฐฉํ•ด ์š”์†Œ(๋ฉ‹์ง„ ์„ฑ๋Šฅ)๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ํ–ฅํ›„ ํ˜ธํ™˜์„ฑ ์œ ์ง€ ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?
๋‚˜๋Š” ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์ด ์ด ์›€์ง์ž„์ด ์˜ฌ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์ง€๋งŒ ์•„๋ฌด๋„ ๊ทธ๋ ‡๊ฒŒ ๋นจ๋ฆฌ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „ํ™˜ ์‹œ๊ฐ„์ด ์—ฌ์ „ํžˆ ์ง„ํ–‰ ์ค‘์ž„์„ ๊ฐ์•ˆํ•  ๋•Œ - ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ๋ฆด๋ฆฌ์Šค(์˜ˆ: 2.1์ด ์•„๋‹Œ 2.0)์— ๋Œ€ํ•ด net* ์ง€์›์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@shanselman ๋‚˜๋Š” ๋‹น์‹ ์˜ ์š”์ ์„ ๋ณด๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ _๋งŽ์€_ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๋ ‡๊ฒŒ ๋ณด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฌธ์ œ๋Š” ์ฝ”์–ด์—์„œ net46 ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ compat shim์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ธฐ์กด net46 ์ฝ”๋“œ์™€ 46์—์„œ ์‹คํ–‰๋˜๋Š” asp.net core 1.* ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด netstandard์˜ ์š”์ ์€ asp.net์„ ํฌํ•จํ•œ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ๊ณ„์ฒ˜๋Ÿผ ๋Š๊ปด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ๊ณ  ์•„๋งˆ๋„ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ทธ ๋น„์ „์˜ ์‹คํŒจ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋„คํŠธ ์ฝ”์–ด๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ _์›ํ•˜์ง€ ์•Š๋Š”_ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์กฐ์ง, ๊ด€๋ฆฌ์ž, CTO ๋“ฑ์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐ ๋”ฐ๋ฅธ ๋น„์šฉ/์ด์ต์ด ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์‹ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ์†Œ์š”๋˜์–ด ๋ฐฐ๋‹ฌ์— ์ง€์žฅ์„ ์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํšŒ๊ท€ ๋“ฑ์˜ ์œ„ํ—˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์‚ฌ๋žŒ๋“ค์ด ์›€์ง์ด์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๊ธฐ์ˆ ์ ์ธ ์ด์œ ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ _๊ธฐ์ˆ ์ ์œผ๋กœ_ ๊ฑฐ์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ๋„์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋น„์šฉ/๋‚ฉํ’ˆ ๋ช…์„ธ์„œ์— ๋™๊ธฐ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์šด ํŒ๋งค์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ช‡ ๋ฒˆ ๊ณต์ •ํ•œ ํŒ๋งค๋ฅผ ํ•ด์•ผ ํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ "ํ•˜์ง€๋งŒ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ทธ ์›€์ง์ž„์„ ์ฃผ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ž์‹ ์„ ๋‹ค์น˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ž…๋‹ˆ๋‹ค. Net46 ๊ฐœ๋ฐœ์ž์™€ ๊ฒฝ์˜์ง„์€ ๊ทธ๋ ‡๊ฒŒ ๋ณด์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ, Microsoft _you_๊ฐ€ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋ฅผ ๋”ฐ๋ผ์žก๊ธฐ ์œ„ํ•ด ์ž์‹ ์„ ํ•ด์น˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "๊ทธ๋Ÿผ ์›€์ง์ด์ง€ ๋งˆ์„ธ์š”."๋ผ๊ณ  ๋งํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ asp.net core 1.x์˜ ์ง€์›์ด ์งง๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œํ•œ ์ฑ…์ž„์„ ์ ธ์•ผ ํ•˜๋Š” ๊ด€๋ฆฌ์ž์˜ ๊ด€์ ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๊ฐ€๋™ ์ค‘์ง€ ๋˜๋Š” ์ •๋ณด ์†์‹ค์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. (ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ฑ…์ž„์ง€์ง€ ์•Š๋”๋ผ๋„)

์‹ค์ œ๋กœ asp.net ์ฝ”์–ด 1.1์„ ์ถ”์ง„ํ–ˆ๋˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด์ œ ์ฝ”์–ด ์—†์ด๋Š” 2.0์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฐฐ์‹ ๊ฐ์„ ๋Š๋‚„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ •๋‹นํ™”๋  ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ €๋Š” ๋‹จ์ง€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ๋Š๋‚„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ? ์ด๋กœ ์ธํ•ด asp.net core2/dotnet core2๊ฐ€ "์ฃฝ๊ฒŒ"๋ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”, ํ•˜์ง€๋งŒ ์ฑ„ํƒ์ด ๋Š๋ ค์ง€๊ณ  ์ƒํƒœ๊ณ„๊ฐ€ ํŒŒ๊ดด๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •๋ง ์•ˆํƒ€๊นŒ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด 2.0์— ๋‚˜์˜ค๋Š” ์ด ๋ชจ๋“  ํ›Œ๋ฅญํ•œ ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ณ  ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์„ ์ˆœ ํ‘œ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๊ฒƒ์ด ์˜ํ–ฅ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ™•์‹คํžˆ, ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์–ด์šธ๋ฆฌ๊ณ  ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Joe์™€ Jane ๊ฐœ๋ฐœ์ž, ๋”๊ตฐ๋‹ค๋‚˜ ๊ทธ๋“ค์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

@DamianEdwards
์ด๊ฒƒ์ด ํ˜ผ๋ž€์˜ ์›์ธ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ ์„ค๋ช…ํ•ด์•ผ ํ–ˆ์ง€๋งŒ ๊ทธ ๊ฒฐ๊ณผ ํ•ญ์ƒ ์‹ค๋งํ•œ ๊ฐœ๋ฐœ์ž๋ฅผ ํฅ๋ถ„๋œ ๊ฐœ๋ฐœ์ž๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๋“ค์€ ์ƒˆ๋กœ์šด ๋ฉ‹์ง„ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์ด ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, ์ด ๊ฒฐ์ •์ด ๊ฐ€๋ณ๊ฒŒ ๋‚ด๋ ค์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฉ”์‹œ์ง•์— ๋Œ€ํ•ด ์ •๋ง _์ •๋ง_ ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.. ํŠนํžˆ 1์—์„œ asp.net ์ฝ”์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. x๋Š” net46์—์„œ _๋งค์šฐ_ ๊ฐ„๋‹จํ•˜๊ณ  ๋งค์šฐ ์„ธ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. net46์˜ ๋‹ค๋ฅธ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ๋กœ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฒฌ๊ณ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋†€๋ผ๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œ/์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์‹์„ฑ ๋ถ„์„๊ธฐ ์งˆ๋ฌธ์— ๋Œ€ํ•œ @khellang ํŽ˜์ด์ง• @terrajobst .

@khellang

์˜ˆ, ๋ฐฉ๊ธˆ 2017์šฉ VSIX๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ ์—์„œ ๋‹จ์ˆœํžˆ ๋ช…๋ น์ค„ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@NickCraver ๋ฌผ๋ก , netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๊ฐ€ netcoreapp2.0์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์—๊ฒŒ ์–ด๋–ค ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@aL3891 ํ›Œ๋ฅญํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ ๊ฐ€ ์•ž์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ํฐ ๋ฌธ์ œ๋Š” netstandard์—๋„ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด API๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. .NET Core ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(Kestrel์—์„œ HTTP2 ์ง€์›์„ ์œ„ํ•œ SSLStream ALPN ์ง€์›์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค). ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ netstandard๋ฅผ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ๊ฐ€์žฅ ๋†’์€ ๋ฒ„์ „(.NET Framework๋Š” ์•„์ง ์ง€์›ํ•˜์ง€ ์•Š์Œ)์„ ๊ณ„์† ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ๊ฐ™์€ ๋ฐฐ๋ฅผ ํƒ€๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•ž์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ํฐ ๋ฌธ์ œ๋Š” netstandard์—๋„ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด API๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. .NET Core๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(Kestrel์—์„œ HTTP2 ์ง€์›์„ ์œ„ํ•œ SSLStream ALPN ์ง€์›์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค).

https://github.com/dotnet/corefx/issues/4721 ์— ๋”ฐ๋ฅด๋ฉด SslStream ์— ๋Œ€ํ•œ ALPN ์ง€์›์€ .NET Core 2.0์— ๋Œ€ํ•ด ์ค€๋น„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ ๋ช‡ ๊ฐœ์›” ํ›„์— ๊ตฌํ˜„๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด netcoreapp2.0 TFM์„ ํƒ€๊ฒŸํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ .NET Core ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ดˆ๊ธฐ netcoreapp2.0 ๋ชจ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ƒˆ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” netcoreapp2.0 ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ? ์ถฉ๋Œํ• ๊นŒ์š”? ์•„๋‹ˆ๋ฉด netcoreapp2.x ๊ฐ€ netstandard1.x ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๊นŒ? TFM ๋ฒ„์ „์„ ๋†’์ด์ง€ ์•Š๊ณ ๋Š” ๊ณ„์•ฝ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

์Šคํƒ ๋ฐ ํ…Œ์ŠคํŠธ์˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์— ๋Œ€ํ•œ @davidfowl . ๊ทธ๋ฆฌ๊ณ  "๋ชจ๋“  ์‚ฌ๋žŒ์ด MVC๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋ชจ๋“  ์ข…์†์„ฑ์„ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •"ํ•˜๋Š” ๋Œ€์‹  2๊ฐœ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์ด์—์„œ ์ ์ ˆํ•œ ๋ถ„ํ• ๋กœ ์ถ”์ƒํ™”(MVC๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ถ”์ƒํ™”๊ฐ€ ์‹ค์ œ๋กœ ์ถ”์ƒํ™”๋˜์ง€ ์•Š๊ณ  ASP.NET Core ์ž์ฒด์— ๋„ˆ๋ฌด ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์ „๋ฐ˜์ ์ธ ๊ด€๊ณ„ ๋ชฉํ‘œ๋ผ๋ฉด ์‚ถ์„ ๋” ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •์งํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ตฌํ˜„/์‚ฌ์šฉ์— ํšจ๊ณผ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ƒํ™”๋ฅผ ๊ฐ–๋Š” ์š”์ ์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Microsoft ์™ธ๋ถ€์˜ ๋ˆ„๊ตฌ๋„ ๊ฒฝ์Ÿ netcoreapp2.x ์›น ์„œ๋ฒ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์‹ถ์–ดํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!).

netcoreapp2.x ์„ธ๊ณ„์—์„œ ์ถ”์ƒํ™”์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ 2.0์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

dotnet/corefx#4721์— ๋”ฐ๋ฅด๋ฉด SslStream์— ๋Œ€ํ•œ ALPN ์ง€์›์€ .NET Core 2.0์— ๋Œ€ํ•ด ์ค€๋น„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ ๋ช‡ ๊ฐœ์›” ํ›„์— ๊ตฌํ˜„๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด netcoreapp2.0 TFM์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ .NET Core ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ดˆ๊ธฐ netcoreapp2.0 ํ˜•ํƒœ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ƒˆ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” netcoreapp2.0 ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถœ์‹œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ถฉ๋Œํ• ๊นŒ์š”? ์•„๋‹ˆ๋ฉด netcoreapp2.x๊ฐ€ netstandard1.x์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๊นŒ? TFM ๋ฒ„์ „์„ ๋†’์ด์ง€ ์•Š๊ณ ๋Š” ๊ณ„์•ฝ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

ASP.NET ๋ฒ„์ „ x๋Š” .NET Core ๋ฒ„์ „ x์— ๋งž์ถฐ์ง‘๋‹ˆ๋‹ค. TFM์€ .NET Core์˜ ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค์— ๋งž๊ฒŒ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ทธ๋ ‡๊ฒŒ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์œ„์—์„œ @DamianEdwards ๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ฃผ์š” ๋‹จ์ˆœํ™” ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. TFM์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•ต์‹ฌ์— ์ƒˆ API๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@NickCraver

์Šคํƒ ๋ฐ ํ…Œ์ŠคํŠธ์˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์„ ์œ„ํ•ด.

๋‹ค๋ฅธ ๊ตฌํ˜„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ASP.NET Core๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์Šคํƒ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ถ”์ƒํ™”๊ฐ€ ์‹ค์ œ๋กœ ์ถ”์ƒํ™”๋˜์ง€ ์•Š๊ณ  ASP.NET Core ์ž์ฒด์— ๋„ˆ๋ฌด ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์ „๋ฐ˜์ ์ธ ๊ด€๊ณ„ ๋ชฉํ‘œ๋ผ๋ฉด ์‚ถ์„ ๋” ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •์งํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ตฌํ˜„/์‚ฌ์šฉ์— ํšจ๊ณผ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ƒํ™”๋ฅผ ๊ฐ–๋Š” ์š”์ ์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Microsoft ์™ธ๋ถ€์˜ ๋ˆ„๊ตฌ๋„ ๊ฒฝ์Ÿ netcoreapp2.x ์›น โ€‹โ€‹์„œ๋ฒ„์— ์ „๋…ํ•  ์ž์›์„ ๊ฐ–๊ณ  ์žˆ๊ฑฐ๋‚˜ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

netcoreapp2.x ์„ธ๊ณ„์—์„œ ์ถ”์ƒํ™”์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹จ์ˆœํžˆ 2.0์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋‹จ์ผ ์–ด์…ˆ๋ธ”๋ฆฌ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค๋ฉด ์—†์—ˆ์„ ๋ฏธ๋ž˜์˜ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‹ฌ์ง€์–ด ๋‹ค๋ฅธ ๊ตฌํ˜„์„ ๊ฐ€์งˆ ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ฃผ๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ๊ทธ๊ฒƒ์„ ์‹ค์ œ๋กœ ๋ฐฐ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์ถ”์ƒํ™”๋Š” ํ”Œ๋žซํผ ์ด์‹์„ฑ์ด ์•„๋‹ˆ๋ผ ์ข…์†์„ฑ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

TFM์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•ต์‹ฌ์— ์ƒˆ API๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์€ netcoreapp2.0 ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. .NET Desktop ๋ฐ ํ™•์žฅ์— ๋”ฐ๋ผ .NET Standard์™€ ๋น„๊ตํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ netcoreapp2.0 ๋Œ€์‹  netcoreapp2.0 TFM์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด .NET Core API๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด netstandard2.0 ? (์˜ˆ: netcoreapp2.1 )

netcoreapp2.0 ์ „์šฉ์„ ์„ ํƒํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค. .NET Desktop๊ณผ ํ™•์žฅํ•˜์—ฌ .NET Standard์— ๋น„ํ•ด ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด netstandard2.0 ๋Œ€์‹  netcoreapp2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์š”์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? TFM์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด .NET Core API์˜ ์ด์ ์„ ๋ˆ„๋ฆฌ์ง€ ๋ชปํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์˜ˆ: netcoreapp2.1)

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ง์„ ์ž˜๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. netcoreapp2.0 netcoreapp2.x #$์ž…๋‹ˆ๋‹ค.

์ข‹์•„์š”, ์ง€๊ธˆ ์™„์ „ํžˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์š”.

image

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ง์„ ์ž˜๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. netcoreapp2.0์ด ์•„๋‹ˆ๋ผ netcoreapp2.x๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋˜๋„ค์š”. ASP.NET Core 2.1 ํŒจํ‚ค์ง€์™€ netcoreapp2.1 TFM์ด ๋™๋“ฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

ASP.NET Core 2.1 ํŒจํ‚ค์ง€์™€ netcoreapp2.1 TFM์ด ๋™๋“ฑํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

๋„ค. 2๋ฅผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. https://github.com/aspnet/Home/issues/2022#issuecomment -299544884 ์ฐธ์กฐ

๊ทธ๋ ‡๋‹ค๋ฉด netstandard ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ํŒจํ„ด์„ ์ฑ„ํƒํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? IMHO: ์ƒˆ๋กœ์šด TFM์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด API๋ฅผ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ๊ณ  .NET Desktop์„ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core ์•ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET ์ฝ”์–ด 2.1/.NET ์ฝ”์–ด 2.1/.NET ๋ฐ์Šคํฌํ†ฑ 4.7.1 -> netstandard2.1
ASP.NET Core 2.2/.NET Core 2.2/.NET ๋ฐ์Šคํฌํ†ฑ 4.8 -> netstandard2.2 .

@PinpointTownes ๋ฐ์Šคํฌํ†ฑ์˜ .NET Framework๋Š” ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— Core์™€ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฑฐ๋Œ€ํ•œ ์‚ฌ์Šฌ์—์„œ ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

.NET Standard๋Š” .NET Core์™€ ๊ฐ™์€ ์†๋„๋กœ ์›€์ง์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ทผ์ฒ˜์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. .NET Standard์˜ ์ด๋™์€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํ”Œ๋žซํผ์„ ๋’ค์ฒ˜์ง€๊ฒŒ ํ•˜๋ฉฐ .NET Framework๋Š” ๊ฐ€์žฅ ๋Š๋ฆฌ๊ฒŒ ์ด๋™ํ•˜๊ณ  ๊ฐ€์žฅ ํฐ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

ํฌ์ธํŠธ ํ† ํฐ, .NET Framework๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ถœ์‹œ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ).

ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์€ ๊ณ ๊ฐ ๋ฐ ์ œํ’ˆ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๊ท ํ˜•์„ ์ด๋ฃจ์–ด์•ผ ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ์ž…๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ๋˜์‹œ๋ฉด ํฌ๋กœ์Šค ์ปดํŒŒ์ผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ์˜ ์ •ํ™•ํ•œ ํŠน์„ฑ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ net461+์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core 2.0์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ชฉ๋ก/์ดํ•ด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ์ฐจ๋ฅผ ์ค„์ด๊ณ  ๋ชจ๋‘๊ฐ€ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ netstandard / netcore ๋ฒ„์ „(https://github.com/dotnet/wcf)์ด ๊ฑฐ์˜ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์˜ WCF ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ๋˜์‹œ๋ฉด ํฌ๋กœ์Šค ์ปดํŒŒ์ผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ์˜ ์ •ํ™•ํ•œ ํŠน์„ฑ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— SSLStream์— ๋Œ€ํ•œ ALPN ์ง€์›๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํด๋ฆฌํ•„ํ•  ์ˆ˜ ์—†๋Š” ๋•Œ๊ฐ€ ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฆฌ๋ฅผ ๋ฒŒ๋ฆฌ๊ณ  API๋ฅผ .NET Core์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” .NET Standard ๋ฐ .NET Core 2.0(.NET Standard 2.0์˜ ์ „์ฒด ๋ชฉ์ )์œผ๋กœ ๋‹ค์‹œ ํฌํŒ…ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. . ์ƒˆ๋กœ์šด API๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งˆ์นจ๋‚ด 1์ผ ์ฐจ์— ASP.NET Core์—์„œ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ netstandard/netcore ๋ฒ„์ „(https://github.com/dotnet/wcf)์ด ๊ฑฐ์˜ ์™„์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— WCF ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@ctolkien ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ด๊ณ  ์šฐ๋ฆฌ๊ฐ€ WCF ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ฒ˜์Œ์— ์ด์‹ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์„ ๋ง‰๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ข‹์€ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค.

@davidfowl https://github.com/dotnet/wcf/issues/8

๋” ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ wcf๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๊ฐ€ ๋ถ€๋”ชํžŒ ์ฒซ ๋ฒˆ์งธ ์žฅ์• ๋ฌผ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— SSLStream์— ๋Œ€ํ•œ ALPN ์ง€์›๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ํด๋ฆฌํ•„ํ•  ์ˆ˜ ์—†๋Š” ๋•Œ๊ฐ€ ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ์•ผ? AFAICT, ์—ฌ๊ธฐ์—์„œ๋Š” ASP.NET Core์˜ .NET Desktop ๋ฐ .NET Core ๋ฒ„์ „์ด ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ API(์˜ˆ: HTTP 2/0)๋กœ ์ธํ•ด .NET Desktop์—์„œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž PlatformNotSupportedException ๊ทธ๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค?
๋ชจ๋“  ASP.NET Core ํŒจํ‚ค์ง€๋ฅผ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๋Œ€๋ถ€๋ถ„์ด ์ƒˆ๋กœ์šด BCL API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ๋ง์ž…๋‹ˆ๋‹ค.

@davidfowl ์ œ ์ƒ๊ฐ์—๋Š” netcoreapp2.3 ์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๊ณ  netcoreapp2.4 ์—์„œ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ๋‘๋ ค์›€์ž…๋‹ˆ๋‹ค. ASP.NET Core๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธฐ์ฐจ์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉด ๊ฐ ๋งˆ์ด๋„ˆ ๋ฒ„์ „์ด ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์‚ฌ๋ž‘์„ ๋ฐ›์„๊นŒ์š”? ์šฐ๋ฆฌ๊ฐ€ ์ง€์†์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ชจ๋“  ์†Œ๋น„์ž๋Š” ์ง€์†์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ตœ์‹  ๋ฐ ์ตœ๊ณ ์˜ ์ œํ’ˆ์„ ์–ป๋Š” ๋ฐ๋Š” ์ข‹์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํšŒ์‚ฌ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ASP.NET Core์˜ ๊ฐ ์†Œ๋น„์ž(์ตœ์‹ ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด)์— ๋Œ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŽ์€ ๋ฒ„์ „(๊ฐ ๋ถ€ ๋ฒ„์ „)์„ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๋Œ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒ€์ฆ๋œ ํ™˜๊ฒฝ๊ณผ ๊ฐ™์€ ๊ฒƒ์— ์นœํ™”์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ถ”์ƒํ™”๊ฐ€ ๋น ๋ฅธ ์†๋„๋กœ ํšŒ์ „ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด(์˜ˆ์‹œ?) ์—ฐ๊ฒฐ์„ ๋Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๋งˆ๋‹ค ์ „์ฒด ์ƒํƒœ๊ณ„๋ฅผ ๋Œ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด netcoreapp ์— ์žˆ์„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋  ๊ฒƒ์ด๋ผ๋Š” ์ ์— ๋” ์šฐ๋ คํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ƒํ™”๊ฐ€ ๊ฐ ๋งˆ์ด๋„ˆ ๋ฒ„์ „์„ ์œ ์ง€ํ•˜๊ณ  ๊ณ ํ†ต์„ (์†”์งํžˆ ๋งํ•ด์„œ) ๋‹น์‹  ํŽธ์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด ๋‚˜๋Š” ํ›จ์”ฌ ๋œ ๊ฑฑ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ์˜๋„๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@PinpointTownes :

.NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ทธ๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ์„ ์•Œ๋ฆฌ๋Š” PlatformNotSupportedException์„ ๋˜์ง€์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๋ชจ๋“  ASP.NET Core ํŒจํ‚ค์ง€๋ฅผ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๋Œ€๋ถ€๋ถ„์ด ์ƒˆ๋กœ์šด BCL API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ๋ง์ž…๋‹ˆ๋‹ค.

์•ˆ๋ผ ์•ˆ๋ผ ์ œ๋ฐœ ์•ˆ๋ผ ์ด๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜์ด๋ฉฐ ๊ทธ๋‹ค์ง€ ๋ฐ”๋žŒ์ง ํ•˜์ง€ ์•Š์€ ๋™์ž‘์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๋Š” ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๋ณด์žฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์Ÿ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ˆœํžˆ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค. PlatformNotSupported ๋Š” ์ธ๊ฐ„์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜์ด๋ฉฐ ๊ทธ๋‹ค์ง€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ ".NET Core์—์„œ .NET Desktop ์–ด์…ˆ๋ธ”๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ" ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๋‹จ, PlatformNotSupportedException ๋Œ€์‹  MissingMemberException ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. PlatformNotSupportedException .

๋‚ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ ์ค‘์ธ API๊ฐ€ ์ง€์›๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” Roslyn ๋ถ„์„๊ธฐ์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ตœ์†Œํ•œ ๋” ๋‚˜์€ ๋„๊ตฌ ์ด์•ผ๊ธฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  BTW, PlatformNotSupported ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ์€ ์ •๋ง ์ฝ”๋„ˆ ์ผ€์ด์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์€ ์ง€์›๋˜์ง€ ์•Š๋Š” API๋ฅผ ๊ณต๊ฐœ ๊ณ„์•ฝ์—์„œ ๋‹จ์ˆœํžˆ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@PinpointTownes ๋‚˜๋„ ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ–ˆ์ง€๋งŒ, ํ˜„์‹ค์€ ์ƒˆ๋กœ์šด ํ”Œ๋žซํผ์ด ์ถœ์‹œ๋˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜์ง€๊ฐ€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋…ผ์˜ํ•œ ํ›„ ์—ฌ๊ธฐ์—์„œ ์–ด๋–ป๊ฒŒ compat๋ฅผ ์ˆ˜ํ–‰ํ• ์ง€์— ๋Œ€ํ•œ ์ƒ๊ฐ์ด ํฌ๊ฒŒ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. netcoreapp ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋งˆ์ด๋„ˆ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ„๋‹ค๋Š” ๊ฒƒ์€ .NET Desktop์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ œ๊ณตํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋งค์šฐ ๋Š๋ฆฐ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

AFAICT, ์—ฌ๊ธฐ์—์„œ๋Š” ASP.NET Core์˜ .NET Desktop ๋ฐ .NET Core ๋ฒ„์ „์ด ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ API(์˜ˆ: HTTP 2/0)๋กœ ์ธํ•ด .NET Desktop์—์„œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ „๋ฐ˜๋ถ€๋Š” netstandard ์ž…๋‹ˆ๋‹ค. netcoreapp ๋กœ ์ฐจ๋ณ„ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์—ฌ๊ธฐ์—์„œ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์˜๋„์ ์ธ ์˜ˆ์™ธ ์—†์ด. ์ด ๋ฃจํŠธ๋Š” ์ ์ ˆํ•œ ๊ณ„์•ฝ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๊ทธ ๋ฐ˜๋Œ€๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฒฉ์ฐจ๊ฐ€ ์žˆ์„ ๋•Œ ๋” ๋นจ๋ฆฌ ๊ณ ์น  ์ˆ˜ ์žˆ๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. "PlatformNotSupported" ์˜ˆ์™ธ๋Š” ์ง€๊ธˆ๋ถ€ํ„ฐ 3๊ฐœ์›” ํ›„์— ํ”Œ๋žซํผ์ด ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€์‹  ๋‚ด์ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Core๋Š” ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํฌ์›Œ๋”๋กœ ๋ณ„๋„๋กœ ์ œ๊ณต๋˜์ง€ ์•Š๊ณ  ํ•จ๊ป˜ ์ œ๊ณต ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅด๊ฒŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[ PlatformNotSupportedException ] ๋ˆ„๋ฝ๋œ API(์˜ˆ: HTTP 2/0)๋กœ ์ธํ•ด .NET ๋ฐ์Šคํฌํ†ฑ์—์„œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ .NET Core ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ๊ทธ๊ฐ€ ์ฐพ๋Š” ์‚ฌ๋žŒ์ด ์—†์Šต๋‹ˆ๊นŒ?

API ํ‘œ๋ฉด๊ณผ ๋„๋‹ฌ ๋ฒ”์œ„์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์˜ ๊ท ํ˜•์„ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ณผ๊ฑฐ์™€ ํ˜ธํ™˜๋˜๋Š” API ํ‘œ๋ฉด์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ PlatformNotSupportedException ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ถ„๋ฆฌ๋œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ PlatformNotSupportedException ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ธฐ๋Šฅ์ด ์—†๋Š” .NET ํ”Œ๋žซํผ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ๊ณณ์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋…๋ฆฝ NuGet ํŒจํ‚ค์ง€๋กœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

netcoreapp ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋ฉด ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ถ€ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.0 ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? @davidfowl ์€ ์ƒˆ๋กœ์šด API์—๋Š” ์ƒˆ๋กœ์šด TFM์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด .NET Core API์— ์˜์กดํ•˜๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์„ ์–ป์œผ๋ ค๋ฉด LTS๋ฅผ ์„ ํƒ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ์ด์ƒ์ ์ธ ์ƒํ™ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค.

netcoreapp๊ณผ์˜ ์ฐจ๋ณ„ํ™”๋Š” ๋ฐ”๋กœ ์—ฌ๊ธฐ์—์„œ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

์ฐจ๋ณ„ํ™”๋Š” ์™„๋ฒฝํ•˜๋ฉฐ .NET Core๊ฐ€ ASP.NET Core์˜ ๊ธฐ๋ณธ ๋Œ€์ƒ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠนํžˆ ๊ต์ฐจ ์ปดํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋Œ€์•ˆ์ด ์กด์žฌํ•  ๋•Œ .NET Desktop์„ ์™„์ „ํžˆ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

API ํ‘œ๋ฉด๊ณผ ๋„๋‹ฌ ๋ฒ”์œ„์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ์˜ ๊ท ํ˜•์„ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์‹ ํ•˜๋Š”. ๊ทธ๋Ÿฌ๋‚˜ .NET Desktop์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  .NET Core์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ๊ฑฐ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ 1.0์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ASP.NET Core 2.0์—์„œ๋„ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ๋„ ๊ท ํ˜•์„ ๋งž์ถฐ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  ๊ธฐ๋Šฅ์ด ์—†๋Š” .NET ํ”Œ๋žซํผ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ๊ณณ์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋…๋ฆฝ NuGet ํŒจํ‚ค์ง€๋กœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋ก ์ƒ์œผ๋กœ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•œ ํ”Œ๋žซํผ์€ .NET Desktop์ด ์•„๋‹ˆ๋ผ .NET Core์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๋ช‡ ๋…„ ์•ˆ์— ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด์ง€๋งŒ ํ™•์‹คํ•œ ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด .NET Core 2.0์—์„œ ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด .NET Framework์˜ .NET Core์—์„œ ๋ˆ„๋ฝ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ํŠน์ • ํ•ญ๋ชฉ์— ๋Œ€ํ•ด API๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” dotnet์— forward-port ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”ผ๋“œ๋ฐฑ, ๊ฒ€ํ†  ๋ฐ ์ง€์นจ์€ ์ฝ”๋“œ ์ €์žฅ์†Œ์˜ ์ผ์ƒ์ ์ธ ์†Œ์Œ ์™ธ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ์ผ๋ฐ˜ API ๊ฒ€ํ† /์‚ฌ์–‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(csharplang ๋Œ€ roslyn๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜)

๋˜ํ•œ "๋ณ€ํ™˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  X api์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด corefx๋Š” ์ด์— ๋Œ€ํ•ด ๋งค์šฐ ์‹œ๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค.

[@benaadams] .NET Framework์˜ .NET Core์—์„œ ๋ˆ„๋ฝ๋œ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋Š” ํŠน์ • ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์‚ฌ๋žŒ๋“ค์ด API๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” dotnet์˜ ์ •๋ฐฉํ–ฅ ํฌํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹จ์ˆœํžˆ CoreFx์˜ ๋ฌธ์ œ๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์šฐ๋ฆฌ์˜ ์•ฝ์†์€ ์ผ๋ฐ˜์ ์œผ๋กœ .NET Framework์™€ .NET Core ๊ฐ„์— ํ˜•์‹์ด ๊ณต์œ ๋˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๊ตฌ์„ฑ์›์„ .NET Framework๋กœ ์ด์‹ํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ๋“œ๋ฌธ ๊ฒฝ์šฐ์— ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฌธ์ œ๋Š” ์ž๋™์œผ๋กœ ๊ณ ๋ ค๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

[@benaadams] ๋˜๋Š” ์ผ๋ฐ˜ API ๊ฒ€ํ† /์‚ฌ์–‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API ๋ฆฌ๋ทฐ๋Š” ์ด๋ฏธ ๋‹ค์†Œ ๋ฌด๊ฑฐ์šด ํŽธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋‹ค๋ฅธ repo๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ์ฆํญ์‹œํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ASP.NET์—์„œ ์ƒˆ API๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•˜๋„๋ก CoreFx๋ฅผ ๊ณ„์† ๊ฐ„์†Œํ™”ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ„์† ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ˜ธ์ถœํ•˜๋Š” API๊ฐ€ netstandard2.0 ํ์‡„์˜ ์ผ๋ถ€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@DamianEdwards netstandard2.0 ์˜ ํด๋กœ์ €์— ์—†๋Š” API๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋น„๊ณต๊ฐœ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ฃ์ง€ ์ผ€์ด์Šค๊ฐ€ netstandard2.0์˜ ์ข…๋ฃŒ์— ์žˆ์Œ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
@PinpointTownes ๊ฐ€ ์•”์‹œํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ๋Ÿฌ์‹œ์•ˆ ๋ฃฐ๋ ›์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@MJomaa ๋„๊ตฌ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๋„์›€์ด ๋  ๊ฒƒ์ด์ง€๋งŒ ๋ถ„๋ช…ํžˆ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ .NET Standard ์ง€์› ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋Š” .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด API๋Š” ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•  ํ•„์š”์„ฑ์„ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. netstandard ๊ตฌํ˜„์ด ํ˜ธํ™˜์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์€ ์•„๋‹ˆ์ง€๋งŒ https://github.com/dotnet/standard/blob/cc9f646354fc68a13707a82323d4032b8dbfda52/netstandard/src/ApiCompatBaseline.net461.txt ์™€ ๊ฐ™์ด ๊ฐ€์žฅ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.

NS 2.0์—๋Š” ์žˆ์ง€๋งŒ .NET Framework 4.6.1์—๋Š” ์—†๋Š” API์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ •๋ง ๊ธด์žฅํ–ˆ์ง€๋งŒ ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„ ์ด๋ก ์ƒ์œผ๋กœ๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 5๊ฐœ์˜ ASP.NET Core ์•ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ 4๊ฐœ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Core ์ด์‹์„ฑ ๋ถ„์„๊ธฐ์™€ ๊ฐ™์€ VS์— ๊ตฌ์šด ์ผ์ข…์˜ ๋„๊ตฌ๊ฐ€ Twitter/GitHub์—์„œ ์ตœ์‹  ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ด ํ™•์žฅ์ด ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. "ํ™•์žฅ ์ œ์•ˆ" ํŒ์—…์ด ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ๋žŒ์ด ์ด๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ASP.NET Core 2+ ์•ฑ์— net46x ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ?

Telerik, Syncfusion ๋“ฑ๊ณผ ๊ฐ™์€ ํƒ€์‚ฌ ์ง€์›๊ณผ ๊ฐ™์ด Microsoft๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ํ•ญ๋ชฉ์€ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—…์— ๋”ฐ๋ผ ์ž ์žฌ์ ์ธ ์ฐจ๋‹จ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด GitHub ์Šค๋ ˆ๋“œ์˜ ๋ฉ”์‹œ์ง€๋Š” FAQ ๋“ฑ์œผ๋กœ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์˜ ์ตœ์ƒ๋‹จ์— ๋จธ๋ฌผ๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ net46x libs๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์—ฌ์ „ํžˆ 100% ํ™•์‹ ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋งŒ ํ—ท๊ฐˆ๋ฆฐ ๊ฒƒ์€ ๋ถ„๋ช… ์•„๋‹™๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ•œ ๊ฒƒ์„ ๋˜ํ’€์ดํ•˜๊ธฐ ์œ„ํ•ด. ASP.NET Core๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชจ๋ฅด๋Š” 10๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž์™€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค. @aL3891 ๊ณผ ๊ฐ™์€ ๊ฒฝํ—˜์„ ํ–ˆ์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ ์ •๋ง ๋งŒ์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” .NET Core 2.0์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง•์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์ค‘์ธ System.DirectoryServices์™€ ๊ฐ™์€ Windows ์ „์šฉ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๋งŽ์€ NET ๊ฐœ๋ฐœ์ž๋Š” .NET Core๊ฐ€ ๊ต์ฐจ ํ”Œ๋žซํผ์ด๊ณ  x-plat/perf๋ณด๋‹ค ์ž‘๋™ํ•˜๋Š” ๊ธฐ์กด ์ฝ”๋“œ์— ๋” ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋Š” ๋ง์„ ๋“ฃ๊ณ  ์–ด๊นจ๋ฅผ ์œผ์“ฑํ•ฉ๋‹ˆ๋‹ค.

์–˜๋“ค์•„, ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค :(
์šฐ๋ฆฌ๋Š” netfx์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜ ๋•Œ๋ฌธ์— ASP.NET Core๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ์ตœ๋Œ€ 1๋…„ ์ง€์›์ด ์•„๋‹Œ 5-10๋…„ ๋™์•ˆ ์ง€์†๋˜๋Š” ๊ฒƒ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ ASP.NET ์ด๋ฆ„์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ด๋ฉฐ ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋Š” ๋Œ€๊ทœ๋ชจ ์กฐ์ง์—์„œ ์ด๋‹ฌ์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ASP.NET์„ ์„ ํƒํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ํšŒ์‚ฌ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ณ  '์—”ํ„ฐํ”„๋ผ์ด์ฆˆ' ๊ณ ๊ฐ์—๊ฒŒ ํŒ๋งคํ•˜๊ธฐ ์œ„ํ•ด LOB(Line of Business) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋„๊ตฌ ๊ทธ๋ฃน์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„ ์ •๋ถ€ ๊ธฐ๊ด€์ด์ง€๋งŒ ๋ฏผ๊ฐ„ ๋ถ€๋ฌธ์—์„œ๋„ ๊ฐ™์€ ๋ง์„ ๋“ฃ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” "IDatabaseConnection", "IEntityProvider", "IWizardFlow", "ICodeGenerator"๋ฅผ ์ƒ๊ฐํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ํŒจํ„ด์„ ๊ณตํ†ต ์ถ”์ƒํ™”๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ”Œ๋Ÿฌ๊ทธํ˜• ๋ฐฑ์—”๋“œ ์œ„์— RAD ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋‚ด๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์Šคํƒ์—์„œ ASP.NET Core๋Š” 'ํ”Œ๋Ÿฌ๊ทธ์ธ'์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ์ถ”์ƒํ™” ๋ฐ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค ๋“ฑ์— ์‚ฌ์šฉ๋˜๋Š” HTTP ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ 'ํ”„๋ก ํŠธ์—”๋“œ'์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋งŽ์€ LOB ์•ฑ์ด ์›น์‚ฌ์ดํŠธ์— ์žˆ์œผ๋ฉฐ, ์›น์•ฑ์„ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์ƒˆ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–‘๋ฐฉํ–ฅ ์ƒํ˜ธ ์šด์šฉ์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ž„์˜์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” AN-C ์ฝ”๋“œ์™€ AN-C๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ž„์˜์˜ ๊ธฐํƒ€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Core CLR๊ณผ ์ด์‹์„ฑ์„ ์ „์ ์œผ๋กœ ์ข‹์•„ํ•˜๋ฉฐ ๋งŽ์€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋Œ€์ƒ ๋˜๋Š” ๋‹ค์ค‘ ๋Œ€์ƒ netstandard์— ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ Linux์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ํ•˜๋‚˜์˜ ์•ฑ์ด ์žˆ์œผ๋ฉฐ ๋” ๋งŽ์ด ์ œ๊ณต๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ์ด์‹๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์— ์˜์กดํ•˜๋Š” ์•„์ง ์‚ด์•„ ์žˆ๊ณ  ํ™œ๋ฐœํ•˜๊ฒŒ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • NTLM ์ธ์ฆ(ํ† ํฐ ๋ฐ SPN์— ๋Œ€ํ•œ ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค ํฌํ•จ)
  • ์œ„์™€ ๊ฐ™์€ System.Drawing (ํฅ๋ฏธ๋กœ์šด ์ฃผ๋ฆ„: ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด OSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” TIFF์™€ ๊ฐ™์€ ์˜ค๋ž˜๋œ ์ด๋ฏธ์ง€ ํ˜•์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค)
  • WCF/SOAP API์— ์—ฐ๊ฒฐํ•˜๊ธฐ - ์—ฌ์ „ํžˆ ์ˆ˜์—†์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
  • Windows ์•”ํ˜ธํ™” API(RSACng, ECDSA ๋ฐ PKI ํ† ํฐ์šฉ CSP ํฌํ•จ)
  • WPF guis - ์šฐ๋ฆฌ ๊ณ ๊ฐ์€ ๊ณง Windows 10์œผ๋กœ ์ „ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ „ํ™˜ํ•˜๋”๋ผ๋„ ์Šคํ† ์–ด ์•ฑ์„ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์œ„ํ•œ Microsoft Office ์ƒํ˜ธ ์šด์šฉ์„ฑ(ํŠนํžˆ ์•ก์„ธ์Šค ๋ฐ Excel)
  • ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ํ™•์žฅ์„ฑ
  • Oracle ADO.NET ๊ณต๊ธ‰์ž์™€ ๊ฐ™์€ ํƒ€์‚ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ

์ด๋Ÿฌํ•œ ๊ธฐ์ˆ  ์ค‘ ์ผ๋ถ€๋Š” Core CLR์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ๋“ค ์€ ์ƒˆ๋กœ์šด ์•ฑ ๊ฐœ๋ฐœ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ์‹ค์ œ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” .NET ๋ฒ„์ „์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ์˜ ์œ„์น˜๋Š” ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. "๋ ˆ๊ฑฐ์‹œ"(์‹ค์ œ๋กœ๋Š” ํ”Œ๋žซํผ๋ณ„) ์ข…์†์„ฑ์„ net461 ๊ณ ์œ ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ netfx์— ์ข…์†๋˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ข…์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ƒˆ๋กœ์šด ์•ฑ์—์„œ ๋“œ๋ฌธ ๋ฏธ๋ž˜๋ฅผ ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด 0 %๋ผ๊ณ  ์ƒ์ƒํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

Interop์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ชจ๋“  ์ž‘์—…์„ csproj ๋ฐ SDK์—์„œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” interop์„ ์›ํ•˜๋Š” ์ด์œ  ์ธ ๋‹น๊ทผ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฑด ๋ง์ด ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”. ๊ทธ๋ฆฌ๊ณ  ์•„๋‹ˆ์š”, "ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ฐธ์กฐ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค"๋Š” ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@gulbanana ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ๋ถ€๋ถ„์ด .NET Framework์™€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์— ์žˆ์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชฉ๋ก(Visual Studio ์—ฐ๊ฒฐ, ์‚ฌ๋ฌด์‹ค ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋“ฑ)์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์˜ค๋Š˜๋‚  ๊ทธ ๋ชจ๋“  ์œ„์น˜์— ASP.NET Core๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ(์œ„ ์„ค๋ช…์—์„œ ์ข‹์€ ๊ทธ๋ฆผ์ด ์—†์Œ)?

๋˜ํ•œ ASP.NET Core๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์ „์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด๊ฒƒ์€ ASP.NET์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  .NET Framework์˜ ASP.NET Core์— 5-10๋…„์„ ๊ฑธ์—ˆ๋˜ ์ƒˆ๋กœ์šด ์‹œ๋„์ž…๋‹ˆ๊นŒ? ์นดํƒ€๋‚˜ ๋ดค์–ด?

์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€ ์—ฐ๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŽ์€ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์„ RPC๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฒˆ๊ฑฐ๋กœ์›€์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐ์Šคํฌํ†ฑ ๊ด€๋ จ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ž‘์—… ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”์–ด์™€ ๋ฐ์Šคํฌํ†ฑ CLR ๊ฐ„์— ์›๊ฒฉ ๋˜๋Š” ์ด์ง„ ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค.

NTLM/AD

Single Sign On์„ ์œ„ํ•ด Windows ๋กœ๊ทธ์ธ ์ž๊ฒฉ ์ฆ๋ช…์„ IIS๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์˜์กดํ•˜๋Š” ์•ฑ์ด ์žˆ์œผ๋ฉฐ, IIS๋Š” ์ด๋ฅผ ASP.NET Core ์›น ์‚ฌ์ดํŠธ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ธ์ฆ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • AD ๊ทธ๋ฃน์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "windows support pack"๊ณผ ์ด๊ฒƒ์ด ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ธ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋” ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ.๋„๋ฉด

์ด๊ฒƒ์€ ์ธ๋„ค์ผ ๋ฐ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ํŽธ์ง‘(ํšŒ์ „, ์›Œํ„ฐ๋งˆํฌ ์˜ค๋ฒ„๋ ˆ์ด)์„ ์ƒ์„ฑํ•˜๋Š” ์›น์•ฑ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€์˜ ๋Œ€๋ถ€๋ถ„์€ ๊ณต๋ฃก ์‹œ๋Œ€๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€์„œ TIFF์™€ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ถ€๋™์‚ฐ ๋ชฉ๋ก ๋ฐ ํ† ์ง€ ๊ด€๋ฆฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์ •๋ถ€ ๋ถ€์„œ์—์„œ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฒ˜์Œ์— ASP.NET MVC์˜€์œผ๋ฉฐ MVC 2, 4, 5 ๋ฐ ์ด์ œ Core๋ฅผ ํ†ตํ•ด ์—…๊ทธ๋ ˆ์ด๋“œ/์žฌ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

VSIX

์ด๊ฒƒ์€ ๋ฐ˜๋Œ€๋กœ netfx์— AN-C๋ฅผ ๋‚ด์žฅํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ RAD ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด 'ํ…œํ”Œ๋ฆฟ'์„ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์ƒ์„ฑ์„ ์œ„ํ•œ Visual Studio ํ™•์žฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ…œํ”Œ๋ฆฟ ์ค‘ ์ผ๋ถ€๋Š” ์›น ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋””์ž์ธ ํƒ€์ž„์— AN-C ์œ ํ˜•์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค(์ „์ฒ˜๋ฆฌ๊ธฐ/๋Ÿฐํƒ€์ž„ T4๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋จ).

์•”ํ˜ธํ™”

์ด๊ฒƒ์€ ์ •๋ง in-proc์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋ณด์•ˆ์— ๋งค์šฐ ๋ฏผ๊ฐํ•œ ๋ผ์ด์„ ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ผ์ด์„ ์Šค ํŒŒ์ผ์„ ํ•ด๋…ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์›น ์•ฑ๊ณผ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์˜ ๋ฐฑ์—”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ .NET Core๋Š” ์ด ํ•ญ๋ชฉ์„ ์ด์‹ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํ•œ ์•”ํ˜ธํ™” ์ง€์›์„ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์˜ค๋Š˜๋‚ ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ์˜ต์…˜์€ Fortinet/ePass2003 PKI ํ† ํฐ ์ง€์›์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฏธ๋“ค์›จ์–ด๋Š” Core๋ฅผ ํ™•์‹คํžˆ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•  ์‹œ๊ฐ„๋„ ์—†์Œ).

์˜ค๋ผํด ADO.NET

Oracle ๋ฐฑ์—”๋“œ์™€ ํ•จ๊ป˜ Entity Framework 6์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ in-proc์ผ ํ•„์š” ๋Š” ์—†์ง€๋งŒ ์šฐ๋ฆฌ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๋ถˆํŽธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

WPF ์ƒํ˜ธ ์šด์šฉ์„ฑ

์šฐ๋ฆฌ๋Š” ์š”์ฆ˜ ๋ชจ๋“  ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Microsoft.Extensions.Logging์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ๊ทธ๋ ‡์ง€ ์•Š๋”๋ผ๋„ ๋กœ๊น… ์ถ”์ƒํ™” ์ž์ฒด๋Š” in-proc์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ - ASP.NET MVC! ์šฐ๋ฆฌ๋Š” ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ํ˜œํƒ์„ ํฌ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ถ€๋„๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค.

์•„ํ‚คํ…ํŠธ๋กœ์„œ "ASP.NET Core๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰"์ด ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „ ์ดํ›„์—๋„ ์ง€์†๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์กฐ์‚ฌํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋‚ด ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฑฐ๋ผ๊ณ  ์†”์งํžˆ ์ƒ๊ฐํ•ด๋ณธ ์ ์ด ์—†์–ด์š”. 2018๋…„ ์ดˆ์—๋Š” Office ๋ฌธ์„œ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์› ๋ฒ„์ „์ด ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ƒ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค...

๋‚ด๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€๋Š” ์–ธ๊ธ‰ํ•œ ๊ฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ASP.NET Core๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค.

NTLM/AD

์ด๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋งคํ•‘์œผ๋กœ ๋๋‚˜๋Š” API๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ง€ System.DirectoryServices์ž…๋‹ˆ๊นŒ? ๊ทธ ์ž‘์—…์€ ํ™œ๋ฐœํžˆ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค(corefx์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ).

์‹œ์Šคํ…œ.๋„๋ฉด

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์•Œ๋ ค์ง„ ๊ฒฉ์ฐจ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์•„์ง ๋‹ต๋ณ€์ด ์—†์œผ๋ฉฐ ImageSharp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ). ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

VSIX

ASP.NET Core๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? Visual Studio ํ™•์žฅ ๋‚ด์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๊นŒ?

์•”ํ˜ธํ™”

์ด๊ฒƒ์— ๋Œ€ํ•œ corefx ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์™œ ๊ทธ๋ƒฅ ์ด์‹๋˜์ง€ ์•Š์„๊นŒ์š”? .NET Framework์™€ ๋‹ฌ๋ฆฌ .NET Core ๋ฆด๋ฆฌ์Šค๋Š” OS์—์„œ ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ์กฐ๋งŒ๊ฐ„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฉด์ฑ… ์กฐํ•ญ: ์ €๋Š” ์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์•”ํ˜ธํ™”์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค).

์˜ค๋ผํด ADO.NET

ASP.NET Core๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? Oracle ๊ณต๊ธ‰์ž๊ฐ€ ์•„์ง .NET Core๋กœ ์ด์‹๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋ง์”€์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์š”์ฆ˜ ๋ชจ๋“  ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Microsoft.Extensions.Logging์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ๊ทธ๋ ‡์ง€ ์•Š๋”๋ผ๋„ ๋กœ๊น… ์ถ”์ƒํ™” ์ž์ฒด๋Š” in-proc์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Microsoft.Extensions.*๋Š” netstandard๋กœ ์œ ์ง€๋˜๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐœํ‘œ/ํ† ๋ก ์ด ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
aspnet/.net ํ•ต์‹ฌ ํŒ€์ด ํ•˜๋Š” ์ผ์„ ์ข‹์•„ํ•˜์ง€๋งŒ @jhurdlow์™€ ๊ฐ™์€ ๋‘๋ ค์›€์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

MEL์— ๋Œ€ํ•ด ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ ์—์„œ-

NTLM

๋‹ค์Œ์€ ๋Œ€๋ถ€๋ถ„์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ์ด์‹ ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ํฌ๋งํ•˜์ง€๋งŒ ์•„์ง ์ด์‹๋˜์ง€ ์•Š์€ API๋ฅผ ์•„์ฃผ ์‚ฌ์†Œํ•˜๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
https://gist.github.com/gulbanana/70fe791735ee884169e2eee354a32ad2

VSIX

asp.net ์ฝ”์–ด์— ํŠน์ •ํ•œ codegen ํ…œํ”Œ๋ฆฟ์€ ์•ก์…˜/๋ผ์šฐํŒ… ์‹œ์Šคํ…œ(IFileProvider ๋“ฑ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ ๋“ฑ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์Šค์บํด๋”ฉ์„ ์ฑ„์›๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Visual Studio ๋‚ด๋ถ€์—์„œ ASP.NET ์›นํ˜ธ์ŠคํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ง€ ASP.NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด์‹ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•„์ง ์ด์‹๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ „์ œ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด asp.net-core-on-netfx์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•  ์žฅ๊ธฐ ๊ณ„ํš์˜ ๋ฐœํ‘œ์™€ ์–ธ์ œ ๊ฐ€๋Šฅํ• ์ง€ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์‹ ํƒ

์˜ˆ, Oracle ํฌํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๊ฒฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •).

๋˜ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€:
์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ค‘ ํ•˜๋‚˜๋Š” Access ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ ˆ๊ฑฐ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ•ด๋‹น ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค๋Š” asp.net ํ•ต์‹ฌ ์›น ์‚ฌ์ดํŠธ์˜ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. COM interop์„ ์‚ฌ์šฉํ•˜์—ฌ accdb/jet ์—”์ง„ ์žฌ๋ฐฐํฌ ๊ฐ€๋Šฅ ํŒจํ‚ค์ง€์—์„œ acedao.dll ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ํ…Œ์ด๋ธ”์„ ์—”ํ‹ฐํ‹ฐ ์ถ”์ƒํ™”๋กœ ์ฝ์€ ๋‹ค์Œ ๋” ํ˜„๋Œ€์ ์ธ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ '์ ˆ์ฐจ๋ฅผ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ ์™œ ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๊นŒ'์˜ ๋˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ AN-C๋ฅผ WebAPI 2 ์›น์‚ฌ์ดํŠธ๋‚˜ ๊ทธ ๋ฐ–์˜ ๋ฌด์–ธ๊ฐ€์— ๋Œ€ํ•œ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ณผ๊ฑฐ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์œผ๋กœ ๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์˜ ๋Œ€๋ถ€๋ถ„์„ .NET Core๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌผ๊ฑด์„ ์˜ฎ๊ธฐ๋Š” ๋™์•ˆ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ์›ํ•ฉ๋‹ˆ๋‹ค...

WTF!!! ๐Ÿ˜จ
ASP.NET Core 2๊ฐ€ ๋” ์ด์ƒ Full .NET Framework 4.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์”€์ž…๋‹ˆ๊นŒ!!!
์šฐ๋ฆฌ๋Š” 1๊ฐœ์›” ์ „์— ASP.NET Core 1.1๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ผ๋ถ€ Full .NET Lib๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— .NET 4.6์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ASP.NET Core 2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋“ค์€ ๊ฒƒ์€... ๐Ÿ˜ž
์ด๋ด, ์šฐ๋ฆฌ๋Š” ์ด์ (DI, ๋ณ‘ํ•ฉ๋œ API ๋ฐ MVC, ... ๊ฐ•๋ ฅํ•œ) ๋•Œ๋ฌธ์— ASP.NET Core๋ฅผ ์„ ํƒํ–ˆ์œผ๋ฏ€๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

์šฐ๋ฆฌ๋Š” 1๊ฐœ์›” ์ „์— ASP.NET Core 1.1๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  ์ผ๋ถ€ Full .NET Lib๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— .NET 4.6์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋„์„œ๊ด€๋“ค์€ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? @shanselman ์˜ ์ดˆ๊ธฐ ํšŒ์‹  https://github.com/aspnet/Home/issues/2022#issuecomment -299536123์„ ์ฝ์œผ์…จ์Šต๋‹ˆ๊นŒ? .NET Core 2.0์—์„œ ์ผ๋ถ€ .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(API ํ•˜์œ„ ์ง‘ํ•ฉ ๋‚ด์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •).

๊ทธ ๋„์„œ๊ด€๋“ค์€ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? @shanselman ์˜ ์ดˆ๊ธฐ ๋‹ต์žฅ #2022(๋Œ“๊ธ€) ์ž˜ ๋ณด์…จ๋‚˜์š”? .NET Core 2.0์—์„œ ์ผ๋ถ€ .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(API ํ•˜์œ„ ์ง‘ํ•ฉ ๋‚ด์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •).

@davidfowl ์˜ˆ, @shanselman ์˜ ์˜๊ฒฌ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํšŒ์‚ฌ์—์„œ ๋งŒ๋“  ์ผ๋ถ€ Lib๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” WCF๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ชจ๋“  Lib๋Š” ์•ˆ์ •์ ์ด๊ณ , .NET 3.5๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉฐ, ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋งŒ์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ .NET Core์™€ .NET Framework์— ์žˆ๋Š” ASP.NET Core ์‚ฌ์šฉ์ž์˜ ์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด(์›๊ฒฉ ์ธก์ •?)๊ฐ€ ์ˆ˜์ง‘๋˜์—ˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ์ •์ ์ด์ง€ ์•Š์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๊ด€์ฐฐ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์˜ค๋Š˜๋‚  ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋Œ€๋ถ€๋ถ„์˜ ๊ณ ๊ฐ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์˜ฌ์ธํ•˜๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— asp.net ์ฝ”์–ด 1.x/์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€ ๋‹ค์šด๋กœ๋“œ ์ˆ˜์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด asp.net ์ฝ”์–ด์˜ ์ฑ„ํƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์›€์ง์ž„์œผ๋กœ ์ง€๊ธˆ ์ž˜ ํŒ”๋ฆฌ์ง€ ์•Š๋Š” ๋ฌผ๊ฑด์„ ํŒŒ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • LDAP ํ•ญ๋ชฉ์„ ๊ณต๋ฐฑ์œผ๋กœ ์‹๋ณ„ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค(์ง€๋‚œ 10๋…„ ๋™์•ˆ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์ง€๋งŒ ์•„๋งˆ๋„ ์ €๋งŒ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค). ๋” ํฐ ๋ฌธ์ œ๋Š” ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์ด .net core๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋Š” ์ง„์งœ ์ด์œ ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์ƒํ™ฉ์€ MS๊ฐ€ ์•„๋ฌด๋Ÿฐ ๊ฒฝ๊ณ  ์—†์ด ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์ฒดํฌ์ธ์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ .NET Core๊ฐ€ ์ด์ œ DNF์˜ ๊ด€๋ฆฌ ํ•˜์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์€ ๋” ์ด์ƒ ์ˆœ์ „ํžˆ MS ๋‚ด๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

LDAP/AD ํ•ญ๋ชฉ์€ ๋‚ด๊ฐ€ ์ง€๊ธˆ net462๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์™„์ „ํžˆ BAM -> NetCore๋กœ ๊ฐ€๊ณ  ์‹ถ์ง€๋งŒ ์ด๊ฒƒ์ด ๋‹จ์ ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ XML-RPC.net์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์ง„์ง€ํ•œ Reflection.Emit์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, NetCore 2๊ฐ€ ๊ทธ๊ฒƒ์„ ์™„์ „ํžˆ ์ง€์›ํ• ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ํ™•์‹คํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.NET์˜ ๋ฏธ๋ž˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ด์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๊ฒฐ์ •์ด ํˆฌ๋ช…์„ฑ ์—†์ด ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ด ๋ชจ๋“  ์ƒํ™ฉ์ด ์•ฝ๊ฐ„ ๋‚™๋‹ด์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. .NET Standard 2.0์ด ํ˜ธํ™˜์„ฑ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  .NET๊ณผ์˜ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•˜๋Š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€(๋‚ด ์ดํ•ด์—์„œ)์™€ ํ•จ๊ป˜ ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ๊ธฐ์กด .NET ์—์ฝ”์‹œ์Šคํ…œ์„ ํŒ๋งคํ•˜๋Š” ๋ฐ ๋งŽ์€ ์—๋„ˆ์ง€๊ฐ€ ํˆฌ์ž๋˜์—ˆ์Šต๋‹ˆ๋‹ค. v4.x๋Š” ๋งˆ์นจ๋‚ด ์ƒํƒœ๊ณ„๊ฐ€ ์˜์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ธ .NET ํ”Œ๋žซํผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ .NET Standard 2.0์ด ์ถœ์‹œ๋  ๋•Œ๊นŒ์ง€ .NET Core๊ฐ€ ์‹ค์ œ๋กœ ๋„์•ฝํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .NET Standard 2.0์ด ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” "์•ฝ์†๋œ ์•ˆ์ •์ ์ธ ๋•…"์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ ".NET Standard 2.0"์€ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ๋‹ค๋ฃจ๊ณ  ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Core ์ „์šฉ์œผ๋กœ ๊ณ„ํš๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „์— ๊ณต์‹ ๋ฐœํ‘œ, ํ”ผ๋“œ๋ฐฑ ์š”์ฒญ, ํˆฌํ‘œ ๋˜๋Š” ๊ทผ๊ฑฐ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฒฐ์ •์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฐธ์—ฌ ๋˜๋Š” ๊ธฐ์กด .NET ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์˜ํ–ฅ ๋ถ„์„ ์—†์ด ์ˆ˜ํ–‰๋œ ๊ฒƒ์œผ๋กœ "ํ‘œ์‹œ"๋˜๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ „์ฒด ์ƒํƒœ๊ณ„๋ฅผ ํŒŒํŽธํ™”ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ช‡ ๋…„. .NET v4.x ์ง€์›์„ ์ œ๊ฑฐํ•˜๋ฉด ๋งŽ์€ ๊ธฐ์—…์ด ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ASP.NET์˜ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋ชจ๋ธ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š” ์›ํ™œํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด .NET Core๋กœ ๋” ๋นจ๋ฆฌ ์ด๋™ํ•˜๋„๋ก ๊ถŒ์žฅํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‹œ๋„์กฐ์ฐจ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜์—ฌ .NET ์—์ฝ”์‹œ์Šคํ…œ์„ ๋‘˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์กฐ๊ฐํ™”๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฑฐ์˜ 10๋…„ ๋™์•ˆ ์—ฌ์ „ํžˆ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ๋‹จํŽธํ™”๋กœ ์ธํ•ด ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†๋Š” ํ”ผํ•ด๋ฅผ ์ž…์€ Python 2/3๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์กด .NET ์ฝ”๋“œ ๊ธฐ๋ฐ˜์€ .NET Core 1.1์ด .NET v4.x๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ชจ๋ฅด๋Š” "์•”ํ‘ ๋ฌผ์งˆ" .NET ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ๋ฐฐํ›„์—์„œ ๊ฐœ๋ฐœ ์ค‘์ธ ๋ธŒ๋ผ์šดํ•„๋“œ์ž…๋‹ˆ๋‹ค. .NET Standard 2.0์˜ ๋ฉ”์‹œ์ง•์€ ํ–ฅ์ƒ๋œ ํ˜ธํ™˜์„ฑ์„ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐ์ •์˜ ์†Œ์‹๊ณผ ์˜ํ–ฅ์ด ๋งˆ์นจ๋‚ด ์ง‘์— ๋„์ฐฉํ•˜๋ฉด ์—„์ฒญ๋‚œ ๋ฐ˜๋ฐœ์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ์กฐ์ง ๋‚ด์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ .NET Core ์ฑ„ํƒ์„ ํŒ๋งคํ•ด ์˜จ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋Š” ๋ง‰ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ํšจ๊ณผ์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์‹ ๊ฐ์„ ๋Š๋‚„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์–ด๋–ค ์ด์œ ๋กœ๋“  .NET Core๋กœ ์™„์ „ํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ). ) ํ˜„์žฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์Šน์ธํ•˜๋„๋ก ์กฐ์ง์˜ ์ดํ•ด ๊ด€๊ณ„์ž๋ฅผ ์„ค๋“ํ•˜๋Š” ๊ธฐ๋…๋น„์ ์ธ ๊ฒฐ์ •์— ์„ฑ๊ณตํ•œ ์งํ›„ ์ง๋ฉดํ•ด์•ผ ํ•˜๋Š” ๊ฐ€ํ˜นํ•œ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์กฐ์ง์€ .NET v4.x์— ๋จผ์ € ๋ฐฐํฌํ•˜๋ ค๋Š” ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ "๋ณ‘๋ ฌ๋กœ" ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์•ˆ ๊ธฐ์กด ์‹œ์Šคํ…œ์„ ์ง€์†์ ์œผ๋กœ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ "์ง„ํ–‰ ์ค‘"์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์•ˆ์ •ํ™”๋˜๊ณ  ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ๊ฑฐ๊ธฐ์—์„œ .NET Core๋กœ์˜ ์ „์ฒด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์€ ๋˜ํ•œ IMO๊ฐ€ .NET์ด ์กฐ์ง์ด ์˜์กดํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ด๋ผ๋Š” ์‹ ๋ขฐ๋ฅผ ๊ฐ‰์•„๋จน์€ ASP.NET์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋งฅ๋ฝ์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ €๋Š” .NET Core์˜ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋ชจ๋ธ์„ ์ข‹์•„ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋‚˜๋จธ์ง€ ์ƒํƒœ๊ณ„๊ฐ€ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. .NET Core๋Š” ์•„์ง ๋ฏธ์„ฑ์ˆ™ํ•œ ๋„๊ตฌ, ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ข…์†์„ฑ, ๋Ÿฐํƒ€์ž„ ๋ฌธ์ œ, ์˜ค๋ž˜๋œ ๋ฌธ์„œ ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ถˆ์พŒํ•œ ๊ณ„๊ณก์— ์žˆ์Šต๋‹ˆ๋‹ค. .NET์ด ์ฒ˜์Œ ๋ฆด๋ฆฌ์Šค๋œ ์ดˆ๊ธฐ ์ดํ›„๋กœ ์ด๋ ‡๊ฒŒ ๋ถˆ์•ˆ์ •ํ•œ ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

.NET ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฆ‰, ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์„ธ๋ จ๋œ ํ”Œ๋žซํผ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋” ๋นจ๋ฆฌ ์ œ๊ณตํ•˜๋Š” "๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š”" ํ”Œ๋žซํผ์ž…๋‹ˆ๊นŒ? .NET v4.x๋กœ ๊ธฐ๋Šฅ์„ ๋ฐฑํฌํŒ…ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ์ ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. .NET v4.x ๋˜๋Š” .NET Core์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ฐ„ ์ง€์›.

์ด ๋ฐฐ๋Š” ํ•ญํ•ดํ–ˆ์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ASP.NET Core 2.0์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, .NET Standard 2.0์—์„œ ๋‹ค๋ฃจ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์ถ”์ƒํ™”์™€ ํ•จ๊ป˜ ๋‹ค์Œ ASP.NET Core 3.0 ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋‹ค์Œ ํ”Œ๋žซํผ์ด .NET Core ์ „์šฉ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฐœํ‘œํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ง์€ ๊ณ„์†ํ•ด์„œ ASP.NET Core 2.0์„ ์ฑ„ํƒํ•˜๊ณ  ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ์•ˆ์ •์ ์ด๊ณ  ์ž˜ ์ง€์›๋˜๋Š” ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ .NET Core ์ „์šฉ ํ”Œ๋žซํผ/ ๊ธฐ๋Šฅ์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

.NET Core 2.0์—์„œ ์ผ๋ถ€ .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(API ํ•˜์œ„ ์ง‘ํ•ฉ ๋‚ด์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •).

์ด๊ฒƒ์€ ๋ถˆํ™•์‹ค์„ฑ์„ ๋‚ณ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ํ‰ํŒ๊ณผ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ ๋ฐ ์•ˆ์ •์„ฑ์„ ์œ„ํ—˜์— ๋น ๋œจ๋ฆฌ๊ณ  .NET Core๋กœ์˜ ์ „์ฒด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ๋„ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ์–ด๋–ค ์ข…์†์„ฑ์ด ์‹คํ–‰๋˜๊ณ  ์‹คํ–‰๋˜์ง€ ์•Š์„์ง€์— ๋Œ€ํ•œ ๋ถˆํ™•์‹ค์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. .NET Core๋Š” ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด .NET v4.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ถ๊ทน์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋ ์ง€, ์ด ๊ฒฐ์ •์ด ์ „์ฒด .NET ์—์ฝ”์‹œ์Šคํ…œ์— ๋ฏธ์น  ์ง„์ •ํ•œ ์˜ํ–ฅ์ด ๋ฌด์—‡์ธ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์™ธ๋ถ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฐœ์ž… ์—†์ด ์ด์™€ ๊ฐ™์ด ๊ด‘๋ฒ”์œ„ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ค‘์š”ํ•œ ๊ฒฐ์ •์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์šฐ๋ ค์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋„ˆํฌ๋“ค์ด ๋‹น์‹ ์˜ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์„ ๋ถ„๊ธฐํ•˜๋Š” ๋ฐ ์กฐ๊ธˆ ๋œ ์—ด์ค‘ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‚ด ๊ด€์ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ด ์•„ํ”„์ง€๋งŒ(Newtonsoft.Json์—์„œ #if ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด 1300๊ฐœ ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ) "๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค"๋Š” ๊ฐ•๋ ฅํ•œ ํŒ๋งค ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

.NET ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฆ‰, ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์„ธ๋ จ๋œ ํ”Œ๋žซํผ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋” ๋นจ๋ฆฌ ์ œ๊ณตํ•˜๋Š” "๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š”" ํ”Œ๋žซํผ์ž…๋‹ˆ๊นŒ? .NET v4.x๋กœ ๊ธฐ๋Šฅ์„ ๋ฐฑํฌํŒ…ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ์ ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. .NET v4.x ๋˜๋Š” .NET Core์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ฐ„ ์ง€์›.

์ง„์ •ํ•œ ์งˆ๋ฌธ, ASP.NET Core 1.x๋Š” ํ˜„์žฌ .NET Framework ๋ฐ .NET Core๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๋‘ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‘ ์ง€์›ํ–ˆ์ง€๋งŒ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์–ป์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ• ๊นŒ์š”?

ASP.NET Core ๋ฐ .NET Core๋Š” ํ˜„์žฌ .NET์šฉ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ์‹ ์†ํ•˜๊ฒŒ ํ˜์‹ ํ•˜๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ์ถœ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฏผ์ฒฉ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” .NET ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์ด ๋ฐฐ๋Š” ํ•ญํ•ดํ–ˆ์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ASP.NET Core 2.0์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, .NET Standard 2.0์—์„œ ๋‹ค๋ฃจ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์ถ”์ƒํ™”์™€ ํ•จ๊ป˜ ๋‹ค์Œ ASP.NET Core 3.0 ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋‹ค์Œ ํ”Œ๋žซํผ์ด .NET Core ์ „์šฉ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฐœํ‘œํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ง์€ ๊ณ„์†ํ•ด์„œ ASP.NET Core 2.0์„ ์ฑ„ํƒํ•˜๊ณ  ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ์•ˆ์ •์ ์ด๊ณ  ์ž˜ ์ง€์›๋˜๋Š” ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ .NET Core ์ „์šฉ ํ”Œ๋žซํผ/ ๊ธฐ๋Šฅ์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ํ”ผ๋“œ๋ฐฑ์— ์—ด๋ ค ์žˆ์œผ๋ฉฐ ASP.NET Core 2.0์€ ์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ASP.NET Core 3.0์ด .NET Framework๋ฅผ ์‚ญ์ œํ•œ ๋ฆด๋ฆฌ์Šค๋ผ๋ฉด ์ƒํ™ฉ์ด ๋” ๋‚˜์•„์งˆ๊นŒ์š”? @gulbanana ๋ฐ @ikourfaln ์˜ โ€‹โ€‹ํ”ผ๋“œ๋ฐฑ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณด๋ฉด ์ด์‹๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ธฐ์ˆ ์ด ์žˆ์œผ๋ฏ€๋กœ .NET Core์—์„œ ์ ˆ๋Œ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .NET Framework๋ฅผ ๊ฑฐ์˜ ์˜์›ํžˆ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ? 1๋…„ ๋’ค์—๋„ ๋˜‘๊ฐ™์€ ํ† ๋ก ์„ ํ•˜์ง€ ์•Š์„๊นŒ์š”? ๊ทธ๋•Œ์ฏค์ด๋ฉด .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ์ƒํƒœ๊ณ„๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋” ์ปค์ ธ์„œ ์˜ํ–ฅ์ด ๋œํ• ๊นŒ์š”? ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š”(๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์†์‹ค๋œ) ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? 1๋…„ ์•ˆ์— ๋ฐ”๋€”๊นŒ์š”?

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‚ด ๊ด€์ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉ์ด ์•„ํ”„์ง€๋งŒ(Newtonsoft.Json์—์„œ #if ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด 1300๊ฐœ ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ) "๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค"๋Š” ๊ฐ•๋ ฅํ•œ ํŒ๋งค ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

@JamesNK ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์€ ์—†์ง€๋งŒ JSON.NET์€ JSON ํŒŒ์„œ์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๋‹จ์ผ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค(๋ช‡ ๊ฐ€์ง€ ๋” ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ASP.NET Core์—๋Š” 200๊ฐœ ์ด์ƒ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค๋ก€์ง€๋งŒ ์ €๋Š” ์•„๋ฅด๋ฐ”์ดํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” 1์ธ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๋ฌธ์ œ๋Š” ๋” ์–ด๋ ต์ง€๋งŒ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋” ๋งŽ์€ ์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์ฝ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ์˜์กด์„ฑ์„ ์‚ดํŽด๋ณธ ํ›„์— ์ด๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๋Š” ํ™•์‹ ์ด ํ›จ์”ฌ ๋œํ•ฉ๋‹ˆ๋‹ค.

๊ณ„ํš๋Œ€๋กœ๋ผ๋ฉด System.DirectoryServices netstandard / netcoreapp ๋กœ ์•ฑ์„ ์ด์‹ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค( CoreFX ๋ฌธ์ œ #2089 here ). ๋”ฐ๋ผ์„œ ASP.NET Core 1.x๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 2.0์œผ๋กœ ์ด๋™ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. Opserver, Stack Overflow ์ž์ฒด, ๋‚ด๋ถ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ...์ด ์‹œ์ ์—์„œ 2.0์ด ์ถœ์‹œ๋  ์˜ˆ์ •์ด๋ฏ€๋กœ ์ค€๋น„๋œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ ์Šคํƒ ๋“œ์—…์— ๋”ฐ๋ฅด๋ฉด DirectoryServices์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ 2.x ์ดํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ณ„์† ์ด์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 1.0๊ณผ 2.0 ์‚ฌ์ด์— ์ด์‚ฌ๋ฅผ ์ค€๋น„ํ•˜๋˜ ๊ณณ์—์„œ ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ณณ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ASP.NET์€ HTTP๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋น„ํŠธ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ASP.NET์€ ๊ทธ ์ž์ฒด๋กœ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ €๋Š” .NET์„ ์›น์šฉ์œผ๋กœ ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”Œ๋žซํผ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๋“ฏ์ด. ํ”Œ๋žซํผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋ฅผ ํ•ด๋‹น ํ”Œ๋žซํผ์— ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต๊ณผ ์ฐจ๋‹จ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์€ AD ์ธ์ฆ(ํ”Œ๋žซํผ์˜ ํฐ ๋ถ€๋ถ„)์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ 1.x ๋ผ์ธ์—์„œ ํฌ๊ธฐํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์šฐ๋ฆฌ ์•ฑ์œผ๋กœ ํ–ฅํ–ˆ๋˜ ๊ณณ์ž…๋‹ˆ๋‹ค...ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋ฐฉํ–ฅ์ด๋ผ๋ฉด ๋ชฉ์ ์ง€์—์„œ ํ•„์š”ํ•œ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์—ฌ๊ธฐ์— ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

System.DirectoryServices , System.Drawing ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ํ•ญ๋ชฉ๊ณผ ์‚ฌ๋žŒ๋“ค์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ์ฃผ์š” ํ•ญ๋ชฉ ์ด ASP.NET Core 2.0์œผ๋กœ ์ค€๋น„๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ œ ์ƒ๊ฐ์€ ๋งŽ์ด ๋ฐ”๋€๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์ด ๋‚˜์ค‘์— ๊ณ ๋ ค๋œ๋‹ค๋ฉด(ํ˜„์žฌ ์ผ์ •์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด) ๊ทธ๋ ‡๊ฒŒ ๋  ๋•Œ๊นŒ์ง€ .NET Framework๋ฅผ ๊ณ„์† ์ง€์›ํ•˜์‹ญ์‹œ์˜ค.

๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ์ง€๊ธˆ ํ”„๋กœ๋•์…˜์—์„œ ์•ŒํŒŒ๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๋Š” ํ•œ ๊ฐ€์ง€๋Š” "์•ˆ์ •๋œ ํ”Œ๋žซํผ"๊ณผ "์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ"์ž…๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ์ด ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ํ˜ธํ™˜๋˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” 2.x ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋„ 1.x์— ๋จธ๋ฌผ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.x์—๋Š” ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋งค์šฐ ๋งค๋ ฅ์ ์ธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 1.x์—์„œ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ(์ƒˆ๋กญ๊ณ  ๋น›๋‚˜๊ธฐ ๋•Œ๋ฌธ์—)?

ํ›„์ž๋ผ๋ฉด ๊ทธ ์‚ฌ๋žŒ๋“ค์ด ์•ˆ์ •์„ฑ์— ์‹ ๊ฒฝ์„ ์“ฐ๋‚˜์š”? ๋Œ€๋‹ต์ด ์˜ˆ์ธ ๊ฒฝ์šฐ ASP.NET Core 1.x๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ €๋Š” .NET์„ ์›น์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”Œ๋žซํผ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๋“ฏ์ด. ํ”Œ๋žซํผ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋ฅผ ํ•ด๋‹น ํ”Œ๋žซํผ์— ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ณ ํ†ต๊ณผ ์ฐจ๋‹จ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๋™์˜ํ•˜์ง€๋งŒ ASP.NET Core 2.x์—์„œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋” ๋งŽ์€ ์ข…์†์„ฑ์ด ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ํ”Œ๋žซํผ์ด ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ ๊ด‘๋ฒ”์œ„ํ•œ ๋Ÿฐํƒ€์ž„ ์„ธํŠธ๊ฐ€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ค ์˜๋ฏธ์—์„œ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฒ„์ „์˜ ASP.NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ‘์ž๊ธฐ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›„์ž๋ผ๋ฉด ๊ทธ ์‚ฌ๋žŒ๋“ค์ด ์•ˆ์ •์„ฑ์— ์‹ ๊ฒฝ์„ ์“ฐ๋‚˜์š”? ๋Œ€๋‹ต์ด ์˜ˆ์ธ ๊ฒฝ์šฐ ASP.NET Core 1.x๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  ์‚ฌ๋žŒ์€ ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ๊ฐ€๋Šฅ์„ฑ, ๋˜๋Š” ์ ์–ด๋„ ๋‚˜์ค‘์— ๋” ๋งŽ์€ ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์„ ๋‹ซ๊ณ  "์•ˆ์ •"/"์œ ์ง€ ๊ด€๋ฆฌ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์€ ๋” ์ด์ƒ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

ASP.NET Core 2.x์—๋Š” ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋งค์šฐ ๋งค๋ ฅ์ ์ธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 1.x์—์„œ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ(์ƒˆ๋กญ๊ณ  ๋น›๋‚˜๊ธฐ ๋•Œ๋ฌธ์—)?

์ง€์› - ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ง€๋ถˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€๋‹ต์ด ์˜ˆ์ธ ๊ฒฝ์šฐ ASP.NET Core 1.x๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ง€์›์ด ์ถœ์‹œ๋œ ์ง€ ์•ฝ 1๋…„ ํ›„์— ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์œ„์˜ Scott์— ๋”ฐ๋ฅด๋ฉด). ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋•Œ์ฏค์ด๋ฉด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์ด์‹์„ ๊ฑฐ์˜ ๋๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ASP.NET Core 2.x๊ฐ€ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ๊ณผ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์žˆ์–ด์•ผ ํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ๊ฐ€ ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” 1.x์— ๊ฐ‡ํ˜€ ์žˆ์—ˆ๊ณ  ์ง€์›์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์‹œํ•œ ํญํƒ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— 1.0์—์„œ 2.x(๋˜๋Š” 3.x)๋กœ ์ด์‹ํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๋‹จ์ˆœํžˆ ์ค‘์ง€ํ•˜๊ณ  ์ด์‹ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋ฉฐ ๋‹จ๊ณ„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core์— .NET 4.6.x ํฌํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์ฝ”์–ด๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ›จ์”ฌ ๋” ์–ด๋ ต๊ณ  ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉฐ ๋” ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ฐ€์ง€์™€ ๋” ๋งŽ์€ ๊ณ ํ†ต์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„์ ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์†”์งํžˆ ๋งํ•ด์„œ ์ง€๊ธˆ์€ ๋ฒ„๋ ค์ง„ ASP.NET 5 ๋ผ์ธ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„, ๋น„์šฉ ๋ฐ ๊ฐœ๋ฐœ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋งŽ์€ OSS ์ž‘์„ฑ์ž๋„ ๋‚˜์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ ์ผ์ƒ ์—…๋ฌด์˜ ์—ฐ์žฅ์„ ์ž…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋„๊ทธํ‘ธ๋”ฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ›จ์”ฌ ๋” ๋‚˜๋น ์ง€๊ฑฐ๋‚˜ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋‚ด๋Š” ํšŒ์‚ฌ ์‹œ๊ฐ„์œผ๋กœ ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ค‘๋‹จํ•˜๋Š” ์ƒํƒœ๊ณ„๋Š” ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ณ„์† ์ถ”๊ฐ€๋˜๋Š” ๋‹ค์šด์ŠคํŠธ๋ฆผ ์˜ํ–ฅ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ œ ๊ฒฌํ•ด๋Š” 2018๋…„ 7์›”๊ฒฝ๊นŒ์ง€ ์ž‘๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋žซํผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„: ์ €๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์ œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ netstandard / netcoreapp ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค . ์ง€์›์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์ด์‹ํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ํฌ๋ง์„ ํ’ˆ์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ˆ์„ ๋ฐ›์•˜๊ณ , ASP.NET Core๋Š” ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์ž‘๋™ํ•  ๋ฒ„์ „์— ๋Œ€ํ•œ ๋‚ ์งœ๊ฐ€ ์—†๋Š” (์šฐ๋ฆฌ์—๊ฒŒ) ๋‚˜์œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

ํ•œ ์ค„ ์š”์•ฝ์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์ด ์—†์œผ๋ฉด ASP.NET Core๋Š” ํ–ฅํ›„ 2๋…„ ๋™์•ˆ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์งง์€ ๋ฒ„์ „์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

์šฐ์„  ์ˆœ์œ„ 1: ์ด๊ฒƒ์€ net461 ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ifdef, perf๊ฐ€ ๋ฌด์—‡์ด๋“  ์ƒ๊ด€ ์—†์Šต๋‹ˆ๋‹ค.
์šฐ์„  ์ˆœ์œ„ 2. .NET Core 2.0์—์„œ 10๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํ”Œ๋žซํผ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ฐ€๋Šฅํ•˜๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๋Š” ํฐ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์žฅ๊ธฐ์ ์ธ ์ง€์›์„ ์œ„ํ•ด์„œ๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋”๋ผ๋„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์—์„œ ๊ณ„์† ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ์„  ์ˆœ์œ„ 1: net461์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  .NET Core๊ฐ€ net461๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋œ๋‹ค๋ฉด(์ด์œ  ๋‚ด์—์„œ); ๋”ฐ๋ผ์„œ net461์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“  ๊ฒƒ์ด Core์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ดœ์ฐฎ์„๊นŒ์š”?

๊ธฐ๋ณธ์ ์œผ๋กœ, ๊ทธ ์‹œ์ ์—์„œ ๋‹น์‹ ์€ side-by-side ๋ฐ ์ž์ฒด ํฌํ•จ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— net4x๋ณด๋‹ค ๋” ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(x-plat์˜ ํ„ฐ์น˜๋„ ๊ฐ€๋Šฅ). net461์—๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์ด 4.6.1, 4.6.2, 4.7 ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ถ„์  ์‹ ๋ขฐ์ฒ˜๋Ÿผ - ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ฒฐ์ฝ” ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ง„์ •ํ•œ ์งˆ๋ฌธ, ASP.NET Core 1.x๋Š” ํ˜„์žฌ .NET Framework ๋ฐ .NET Core๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ๋‘ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‘ ์ง€์›ํ–ˆ์ง€๋งŒ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์–ป์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ• ๊นŒ์š”?

Ubuntu / Redhat๊ณผ ๊ฐ™์€ ASP.NET Core 2.0์˜ LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ 5๋…„ ์ด์ƒ ์ง€์›ํ•˜๋Š” LTS ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ์ฑ„ํƒ์— ์ „๋…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•๊ณ ํ•œ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ชฉํ‘œ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ฏธ๋ž˜์˜ .NET Core ์ „์šฉ ๊ธฐ๋Šฅ๋ณด๋‹ค ์•ˆ์ •์ ์ธ .NET Standard 2.0์— ๋” ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ์ž‘๋™ํ•˜๊ณ  ๋„๊ตฌ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๊ณ  ์ธ๊ธฐ ์žˆ๋Š” .NET ๊ฐœ๋ฐœ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. .NET ํŒจํ‚ค์ง€๋Š” ๋ชจ๋‘ ์ง€์›์„ ์ œ๊ณตํ•˜๋ฉฐ ์ฃผ๋ณ€ ๋ฐฐํฌ ๋ฐ ํ˜ธ์ŠคํŒ… ์†”๋ฃจ์…˜์ด ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ ์†”๋ฃจ์…˜ ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ASP.NET Core์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ’๋ถ€ํ•œ ๋ฌธ์„œ, ๊ฒŒ์‹œ๋ฌผ, ๋น„๋””์˜ค ๋ฐ ์ง€์‹ ๊ธฐ๋ฐ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

1๋…„ ๋’ค์—๋„ ๋˜‘๊ฐ™์€ ํ† ๋ก ์„ ํ•˜์ง€ ์•Š์„๊นŒ์š”? ๊ทธ๋•Œ์ฏค์ด๋ฉด .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ์ƒํƒœ๊ณ„๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋” ์ปค์ ธ์„œ ์˜ํ–ฅ์ด ๋œํ• ๊นŒ์š”? ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š”(๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์†์‹ค๋œ) ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? 1๋…„ ์•ˆ์— ๋ฐ”๋€”๊นŒ์š”?

์ด์ƒ์ ์ธ ์„ธ๊ณ„์—์„œ .NET v4.x ๋ฐ .NET Core๋Š” ๋ชจ๋‘ ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ASP.NET Core๋ฅผ ์ง€์›ํ•˜๋ฉฐ .NET Core ์ „์šฉ ํŒจํ‚ค์ง€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด .NET Core ์ „์šฉ ๊ธฐ๋Šฅ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MS๊ฐ€ .NET 4.x๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ๊ณต์‹์ ์œผ๋กœ ํ—ค์–ด์ง€๊ธฐ ์ „์— ASP.NET 2.0 LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ฐจ์„ ์ฑ…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •์˜์— ๋”ฐ๋ฅด๋ฉด ์•„๋ฌด๋„ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋ฌด๋„ .NET Core ์ „์šฉ v3.0์œผ๋กœ ๊ฐ•์ œ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1๊ฐœ์˜ ํ”Œ๋žซํผ๋งŒ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ž์œ ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์ฑ„ํƒํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ž ์žฌ์ ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ASP.NET์ด ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค๋“ฌ์–ด์ง„ ์•ˆ์ •์ ์ธ ๋ฒ„์ „์— ๋” ๊ด€์‹ฌ์ด ์žˆ์–ด ๋‹ค์‹œ ์ƒ์‚ฐ์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ํ•ญ์ƒ ์›€์ง์ด๋Š” ํ”Œ๋žซํผ์„ ์ซ“๋Š” ๋Œ€์‹  ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € @davidfowl ์ด ์Šค๋ ˆ๋“œ์— ๋›ฐ์–ด๋“ค๊ณ  ์ผ์–ด์„œ์„œ ์งˆ๋ฌธ์„ ํ•˜๋Š” ๋“ฑ์˜ ์ผ์„ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ Q๋ฅผ ๋ฌป๋Š” ์—ด๋ค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ์„ ๋•Œ ๊ฐœ์ž…ํ•˜์ง€ ์•Š๊ณ  '๋ชฉํ‘œ๋ฌผ'์ด ๋˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ฑด์„ค์ ์œผ๋กœ ์ฐธ์—ฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. /๋‚˜ ๋‹น์‹ ์—๊ฒŒ ๊ฒฝ์˜๋ฅผ ํ‘œํ•ฉ๋‹ˆ๋‹ค.


์ด ๋Œ€ํ™”์—์„œ ๋‚˜์˜ค๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์š”์ /์Šค๋ ˆ๋“œ๋ฅผ ๋ด…๋‹ˆ๋‹ค.

  1. vnext์—์„œ .NET ๋ฐ์Šคํฌํƒ‘ ์ง€์›์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. (์—ฌ๊ธฐ์— ์žˆ๋Š” ๋‹ต๋ณ€์˜ 99%์ž…๋‹ˆ๋‹ค)
  2. ๊ทธ๋Ÿฌํ•œ ์ค‘์š”ํ•œ ๊ฒฐ์ •์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ˜‘์˜๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. (์—ฌ๊ธฐ์— 2 ๋˜๋Š” 3๊ฐœ์˜ ์‘๋‹ต์ด ์žˆ์Šต๋‹ˆ๋‹ค).

TL;DR;

  • ์ค‘์š”ํ•œ vnext ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ๋” ๊ฐœ๋ฐฉ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ์ด๋Ÿฌํ•œ vnext ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ผ๋ถ€ RFC์— ์‹œ๊ฐ„์„ ํ• ๋‹นํ•˜์‹ญ์‹œ์˜ค.

@mythz ๋Š” (์ด ์‹œ์ ์—์„œ) ~ ๊ฐ€์žฅ ์ตœ๊ทผ ~ 2๋ฒˆ์งธ ๊ฐ€์žฅ ์ตœ๊ทผ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ์‹œ์ž‘ ๋ฌธ์žฅ์—์„œ ์ด๋ฅผ ๋ฉ‹์ง€๊ฒŒ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

.NET์˜ ๋ฏธ๋ž˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ด์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ๊ฒฐ์ •์ด ํˆฌ๋ช…์„ฑ ์—†์ด ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ด ๋ชจ๋“  ์ƒํ™ฉ์ด ์•ฝ๊ฐ„ ๋‚™๋‹ด์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฐœ์ธ์ ์œผ๋กœ ์ €์—๊ฒŒ ์ •๋ง ํฐ ์ถฉ๊ฒฉ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋Ÿฌํ•œ ์ „ํ™”๋ฅผ plzํ•˜๋Š” MS์˜ ์ ์ ˆํ•œ ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ๋ช‡ ๊ฐ€์ง€ ๊ณต์‹ ๋‹ต๋ณ€/์ฝ”๋ฉ˜ํŠธ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. "์šฐ๋ฆฌ"๋Š” ์นœ์ˆ™ํ•œ ์–ผ๊ตด, ์นœ์ˆ™ํ•œ ์ด๋ฆ„, ๊ทธ๋ฆฌ๊ณ  ๊ฝค ๊ณตํ‰ํ•œ ๋ง ๋“ฑ ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์˜ค๋žซ๋™์•ˆ ํ•จ๊ป˜ํ•ด ์™”์œผ๋ฉฐ ๋ชจ๋‘ ๋™์ผํ•œ ๊ธ์ •์ ์ธ ๋ชฉํ‘œ๋ฅผ ์ถ”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” "์šฐ๋ฆฌ"๊ฐ€ ๊ฝค ํฌ๊ณ  ๋Œ€๊ฐ€์กฑ์ด๋ผ๊ณ  ๊ณ„์†ํ•ด์„œ ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” MS๊ฐ€ ์ทจํ•œ ์ƒˆ๋กœ์šด ๋ฐฉํ–ฅ(OSS-all-the-things ๋“ฑ)๊ณผ ์ตœ๊ทผ 12/18๊ฐœ์›” ๋™์•ˆ์˜ ์ผ๋ถ€ ๋ฉ”๊ฐ€ uber-.NET-threads(์ฝ๊ธฐ: ์ปค๋ฎค๋‹ˆํ‹ฐ ํ† ๋ก  ๊ฒฝํ—˜์—์„œ ๋ฐฐ์šฐ๊ธฐ)์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ) ... "์šฐ๋ฆฌ"๋Š” ๋ชจ๋‘ ํ•จ๊ป˜ ์ด ์ผ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์ง„์งœ ํฐ ์ผ โ„ข๏ธ ์ค‘ ์ผ๋ถ€๋Š” ๋ฏธ๋ฆฌ ๊ณต๊ฐœ์ ์œผ๋กœ ๋…ผ์˜๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ค‘๋Œ€ํ•œ ๊ฒฐ์ • ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ฏธ๋ฆฌ ๊ณต๊ฐœ์ ์œผ๋กœ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธ์ •์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒ๋‹ด๊ณผ ํ† ๋ก ์„ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ฐธ๊ณ : ๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฏผ์ฃผ์ฃผ์˜๊ฐ€ ์•„๋‹ˆ๋ฉฐ _๊ฒฐ์ •_์ด MS์— ์˜ํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ์ ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†๋‹ค. ๋‚˜๋Š” _๊ทธ_๋ฅผ ๋น„ํŒํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์ „ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ RFC ๋“ฑ์„ ์œ„ํ•ด _๋ชจ๋“  ๊ฒƒ_์„ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์ƒํ•œ ์ฃผ์š” ํ‹ฐ์ผ“ ํ•ญ๋ชฉ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ MS๊ฐ€ .NET 4.x๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ๊ณต์‹์ ์œผ๋กœ ํ—ค์–ด์ง€๊ธฐ ์ „์— ASP.NET 2.0 LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ฐจ์„ ์ฑ…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •์˜์— ๋”ฐ๋ฅด๋ฉด ์•„๋ฌด๋„ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋ฌด๋„ .NET Core ์ „์šฉ v3.0์œผ๋กœ ๊ฐ•์ œ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ดํ•ด๊ฐ€ ์•ˆ ๋ผ์š”. ๋ฆด๋ฆฌ์Šค์— ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ์•„๋ฌด๋„ ASP.NET 2.0์˜ ๊ธฐ๋Šฅ์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ASP.NET Core 1.x๊ฐ€ ๊ทธ ๋ฒ„์ „์ด ์•„๋‹™๋‹ˆ๊นŒ? ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ, ์ฝ”์–ด 1.0 ๋ฐ ์ฝ”์–ด 2.0์—์„œ ์‹คํ–‰๋˜๋ฉฐ ASP.NET Core 2.x์˜ ๋””๋”ค๋Œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@onovotny

๋ชจ๋“  ์‚ฌ๋žŒ์€ ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ๊ฐ€๋Šฅ์„ฑ, ๋˜๋Š” ์ ์–ด๋„ ๋‚˜์ค‘์— ๋” ๋งŽ์€ ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์„ ๋‹ซ๊ณ  "์•ˆ์ •"/"์œ ์ง€ ๊ด€๋ฆฌ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์€ ๋” ์ด์ƒ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

์˜ˆ, ํ•˜์ง€๋งŒ .NET Framework๊ฐ€ OS ๊ตฌ์„ฑ ์š”์†Œ์— ์—ฐ๊ฒฐ๋œ ํฐ ์•ˆ์ •์ ์ธ ์ง€์›์„ ๋ฐ›์„ ๋•Œ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๊ธฐ๋Š” ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค. @terrajobst ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ผ๋ถ€๋Š” ํ™•์‹คํžˆ ์–ด๋Š ์‹œ์ ์—์„œ ์ด์‹๋˜์ง€๋งŒ ๋‚˜๋จธ์ง€๋Š” ํŒŒ์•…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ASP.NET Core๋Š” ํ•œ ๋ฒˆ์— ์ „์ฒด ์Šคํƒ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .NET Core์—์„œ ๊ฐ€์žฅ ์ž˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ 2๊ฐœ์˜ ๋Ÿฐํƒ€์ž„ ๊ฐ„์—๋Š” ํฐ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฉฐ .NET Framework ์ง€์›์œผ๋กœ ์ธํ•ด ์•„์ง ์ƒˆ API์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋ฉด์„œ .NET Framework์— ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด API๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋ฉฐ ๊ฐ€์žฅ ์•ˆ์ •์ ์ด๊ณ  ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋Š” ๋Ÿฐํƒ€์ž„(.NET Framework)์˜ ์†๋„๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@NickCraver

์ง€์›์ด ์ถœ์‹œ๋œ ์ง€ ์•ฝ 1๋…„ ํ›„์— ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์œ„์˜ Scott์— ๋”ฐ๋ฅด๋ฉด). ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋•Œ์ฏค์ด๋ฉด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์ด์‹์„ ๊ฑฐ์˜ ๋๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์™„์ „ํžˆ ์ •ํ™•ํ•œ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด 1.1์ด ๊ณ„์† ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด ๋งํ•˜๋Š” ์ด "์ง€์›"์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์œ ๋ฃŒ ์ง€์›์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์žˆ์–ด์•ผ ํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ๊ฐ€ ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” 1.x์— ๊ฐ‡ํ˜€ ์žˆ์—ˆ๊ณ  ์ง€์›์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์‹œํ•œ ํญํƒ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— 1.0์—์„œ 2.x(๋˜๋Š” 3.x)๋กœ ์ด์‹ํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET Core ๋ฒ„์ „์— ๊ด€๊ณ„์—†์ด ์ผœ์ง‘๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ์ตœ์‹  ๋ฒ„์ „์˜ ASP.NET Core(๋ฌด์—‡์ด๋“  ๊ฐ„์—)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  .NET Core์— ์ถฉ๋ถ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ .NET Framework์—์„œ ์ง€์›๋˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๋‹จ์ˆœํžˆ ์ค‘์ง€ํ•˜๊ณ  ์ด์‹ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋ฉฐ ๋‹จ๊ณ„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core์— .NET 4.6.x ํฌํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ค‘๊ฐ„ ๋‹จ๊ณ„๋กœ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ์ฝ”์–ด๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ›จ์”ฌ ๋” ์–ด๋ ต๊ณ  ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉฐ ๋” ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ฐ€์ง€์™€ ๋” ๋งŽ์€ ๊ณ ํ†ต์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„์ ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์†”์งํžˆ ๋งํ•ด์„œ ์ง€๊ธˆ์€ ๋ฒ„๋ ค์ง„ ASP.NET 5 ๋ผ์ธ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„, ๋น„์šฉ ๋ฐ ๊ฐœ๋ฐœ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET Core ํšŒ์ „ ๋ฒ„์ „์€ ์ด์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ 3.0์—์„œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ–ˆ๋‹ค๋ฉด(์ด ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„) ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์žˆ์ง€ ์•Š์„๊นŒ์š”? ASP.NET Core 2.0 ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ 1๋…„ ๋™์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์ด์‹๋˜์—ˆ์œผ๋ฉฐ 3.0์ด ๋‚˜์˜ค๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  .NET Framework์—์„œ ์‹คํ–‰๋˜๊ณ  ASP.NET Core 2.0์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์—๋„ ์ง€์›๋˜๋Š” ASP.NET Core 1.1.x๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ œ ๊ฒฌํ•ด๋Š” 2018๋…„ 7์›”๊ฒฝ๊นŒ์ง€ ์ž‘๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋žซํผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„: ์ €๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋•Œ๊นŒ์ง€ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ netstandard/netcoreapp์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ง€์›์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์ด์‹ํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ํฌ๋ง์„ ํ’ˆ์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ํ”Œ๋žซํผ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ˆ์„ ๋ฐ›์•˜๊ณ , ASP.NET Core๋Š” ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ์ž‘๋™ํ•  ๋ฒ„์ „์— ๋Œ€ํ•œ ๋‚ ์งœ๊ฐ€ ์—†๋Š” (์šฐ๋ฆฌ์—๊ฒŒ) ๋‚˜์œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

1๋…„๋งŒ ๋” ์žˆ์œผ๋ฉด ๋ชจ๋‘์—๊ฒŒ ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์–ป๋Š” ๋Š๋‚Œ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ์„  ์ˆœ์œ„ 1: ifdef, perf๊ฐ€ ๋ฌด์—‡์ด๋“  ์ƒ๊ด€์—†์ด net461์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์šฐ์„  ์ˆœ์œ„ 2. .NET Core 2.0์—์„œ 10๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํ”Œ๋žซํผ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ฐ€๋Šฅํ•˜๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๋Š” ํฐ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์žฅ๊ธฐ์ ์ธ ์ง€์›์„ ์œ„ํ•ด์„œ๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฌ๋”๋ผ๋„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ณ„์† ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.NET Framework๊ฐ€ ์˜ค๋Š˜๋‚ ์ฒ˜๋Ÿผ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” .NET Framework๋ฅผ ์˜๋„์ ์œผ๋กœ ์ง€์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ "์ฝ”์–ด์—์„œ ๋” ๋น ๋ฅธ ๊ฒƒ"์ด ์•„๋‹ˆ๋ผ .NET Framework์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ์˜๋„์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ํ™•์ธํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์•„์ง .NET Framework์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” API์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ๊ฒฐ์ •ํ•˜๋ฉด 2 ์‚ฌ์ด์˜ ๊ธฐ๋Šฅ ๊ฒฉ์ฐจ๊ฐ€ ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” @PinpointTownes ๊ฐ€ ๋งํ•œ ๋Œ€๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ๊ฒฉ์ฐจ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ NotSupportedException ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ IMO๋Š” ๊ฝค ๋‚˜์œ ๊ฒฝํ—˜์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ASP.net MVC5 ์•ฑ์„ ASP.net ํ•ต์‹ฌ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ด์‹ํ•˜์—ฌ Azure Service Fabric๊ณผ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๊ฐœ๋ฐœ ์˜ˆ์‚ฐ์„ ํˆฌ์žํ–ˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋กœ์ ํŠธ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด์‹ํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๊ฐ€ ์†Œ์š”๋˜๋Š”(์†”์งํžˆ ์–ด์ƒ‰ํ•œ VS2015 ๋„๊ตฌ์™€ ์”จ๋ฆ„ํ•˜๋Š”) ์—ฌ๋Ÿฌ ๋‹ฌ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ž‘๋™ํ•œ ์œ ์ผํ•œ ์ด์œ ๋Š” ํ˜„์žฌ ASP.net ์ฝ”์–ด์—์„œ SignalR์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ง€์›๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค( @davidfowl ๋‚™๋‹ด). ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, SignalR์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Asp.net Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด VS2017 ๋„๊ตฌ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์ผ์ฃผ์ผ ์ •๋„๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์€.

_์ง€๊ธˆ๊นŒ์ง€๋Š” ์ œํ’ˆ์— ๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์ „ํ˜€ ์—†์œผ๋ฉฐ Microsoft ํ”Œ๋žซํผ ๋ฐ ๋„๊ตฌ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ฝ”๋“œ ๋ชจ์–‘์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค._

์ด์ œ 12๊ฐœ์›” ์ด๋‚ด์— ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ๋„ ์—†์ด ๊ธฐ๋Šฅ์ด ์—†๋Š” ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์„ ๋” ๋งŽ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ณ , ์†์„ ํ”๋“œ๋Š” ๋ฌด๋ฆฌ์— ๋”ฐ๋ผ ๊ทธ๋ฆฌ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฑด๊ฐ€์š”? ๊ณ ๋ง™์ง€ ๋งŒ ์‚ฌ์–‘ ํ• ๊ฒŒ.

์ฒซ์งธ, ์‚ฌ๋žŒ๋“ค์ด ํ˜„์žฌ ASP.net ์ฝ”์–ด์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ASP.net ์ฝ”์–ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Microsoft ๋ธŒ๋žœ๋“œ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ƒํƒœ๊ณ„๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ASP.net ์ฝ”์–ด๋ฅผ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๋‹ค๋ฅธ ์š”์†Œ(์žˆ๋Š” ๊ฒฝ์šฐ)๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋…ผ์˜ ์ค‘์ธ Netfx์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” @PinpointTownes ๊ฐ€ ๋งํ•œ ๋Œ€๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ์ฐจ์ด๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ NotSupportedException์„ ๋˜์ง€๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ IMO๋Š” ๊ฝค ๋‚˜์œ ๊ฒฝํ—˜์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์„ ํ•  ๋•Œ ifdefs ๋Š” ํ™•์‹คํžˆ ํŠน์ • ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” API๋ฅผ ์ œ์™ธํ•˜๋Š” ๊ธฐ๋ณธ ์˜ต์…˜์ด์–ด์•ผ ํ•˜์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ด API ์„œ๋ช…์ด ๊ณต๊ฐœ์ ์œผ๋กœ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์•ฝํ•˜๋ฉด NotSupportedException ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ•ด๊ฐ€ ์•ˆ ๋ผ์š”. ์•„๋ฌด๋„ ์•„์ง ASP.NET 2.0์˜ ๊ธฐ๋Šฅ์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์ „์— ์ข…์†์„ฑ์ด ์ง€์›ํ•˜๋Š” ์•ˆ์ •์ ์ด๊ณ  ํ˜ธํ™˜์„ฑ์ด ๋†’์€ .NET Standard 2.0์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ .NET Core 1.1์ด EOL๋˜๊ณ  MS๊ฐ€ ์ด์ „ DNX/.NET Core ๋ฒ„์ „์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ ์ธ ์ง€์›์„ ์ œ๊ณตํ•œ ์ข‹์€ ๊ธฐ๋ก์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์ฑ„ํƒํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธํ™˜์„ฑ์ด ๋†’์€ ์•ˆ์ •์ ์ธ LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ์—…์€ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–์ถ”๊ฒŒ ๋˜๋ฏ€๋กœ .NET Core vNext๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์˜๋ฌด๋ฅผ ๋Š๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. v2.0์— ํ•„์š”ํ•˜๊ณ  ์‹œ๊ฐ„์ด ๋˜๋ฉด ASP.NET Core 2.0/.NET v4.6์—์„œ ํ–ฅํ›„ .NET Core ์ „์šฉ ๋ฒ„์ „์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ„ํšํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mythz

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ฏธ๋ž˜์˜ .NET Core ์ „์šฉ ๊ธฐ๋Šฅ๋ณด๋‹ค ์•ˆ์ •์ ์ธ .NET Standard 2.0์— ๋” ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์‹œ ์ž‘๋™ํ•˜๊ณ  ๋„๊ตฌ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๊ณ  ์ธ๊ธฐ ์žˆ๋Š” .NET ๊ฐœ๋ฐœ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. .NET ํŒจํ‚ค์ง€๋Š” ๋ชจ๋‘ ์ง€์›์„ ์ œ๊ณตํ•˜๋ฉฐ ์ฃผ๋ณ€ ๋ฐฐํฌ ๋ฐ ํ˜ธ์ŠคํŒ… ์†”๋ฃจ์…˜์ด ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ ์†”๋ฃจ์…˜ ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ASP.NET Core์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ’๋ถ€ํ•œ ๋ฌธ์„œ, ๊ฒŒ์‹œ๋ฌผ, ๋น„๋””์˜ค ๋ฐ ์ง€์‹ ๊ธฐ๋ฐ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•˜์ง€๋งŒ ์ด ๊ฒฐ์ •์ด ๋‹น์‹ ์˜ ๋ง์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค ๋˜‘๊ฐ™์€ ๊ฑธ ์›ํ•ด ๐Ÿ‘ .

1๊ฐœ์˜ ํ”Œ๋žซํผ๋งŒ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ž์œ ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๊ฐ€์žฅ ์ตœ์‹ ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์ฑ„ํƒํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ž ์žฌ์ ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ASP.NET์ด ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค๋“ฌ์–ด์ง„ ์•ˆ์ •์ ์ธ ๋ฒ„์ „์— ๋” ๊ด€์‹ฌ์ด ์žˆ์–ด ๋‹ค์‹œ ์ƒ์‚ฐ์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ํ•ญ์ƒ ์›€์ง์ด๋Š” ํ”Œ๋žซํผ์„ ์ซ“๋Š” ๋Œ€์‹  ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ASP.NET Core 1.x๊ฐ€ ์•„๋‹Œ๊ฐ€์š”? 1.x์—์„œ ์ง€์›์ด ํ™•์žฅ๋œ๋‹ค๋ฉด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„๊นŒ์š”? netstandard 1.x์ธ ASP.NET Core 1.์ด .NET Core 2.0(์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ)์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ณ  1๋…„ ์ •๋„ ๋” ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ๋งํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์„ ์ง„ํ–‰ํ•  ๋•Œ ifdef๋Š” ํŠน์ • ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” API๋ฅผ ์ œ์™ธํ•˜๋Š” ๋ฐ ํ™•์‹คํžˆ ์„ ํ˜ธ๋˜๋Š” ์˜ต์…˜์ด์–ด์•ผ ํ•˜์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ๋“  ๊ณต๊ฐœ ๊ณ„์•ฝ์— ์ด API ์„œ๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NotSupportedException์œผ๋กœ ์ด๋™ํ•˜์‹ญ์‹œ์˜ค.

๊ณต๊ฐœ API ๋…ธ์ถœ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” netstandard์— ์กด์žฌํ•˜์ง€ ์•Š์„ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” API์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. #ifdef๋Š” ์—ฌ๊ธฐ์„œ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฉ์ฐจ๊ฐ€ ์ปค์ง€๋ฉด ๊ทธ๋ƒฅ ๋˜์ง‘๋‹ˆ๋‹ค.

@davidfowl ์™„์ „ํžˆ ์œ ํšจํ•œ ์งˆ๋ฌธ - ๋‹ต๋ณ€:

์œ ๋ฃŒ ์ง€์›์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

๋ฌธ์ œ์— ๋Œ€ํ•œ ํ™œ์„ฑ ์ˆ˜์ • - 1.x๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊นจ๋œจ๋ฆฐ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ๋ฐ›์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ผ๋ถ€ ๊ฒฝ์šฐ ์ˆ˜์ •์„ ์œ„ํ•ด ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๊นŒ? (์ฐธ๊ณ : ์ด๋Š” DirectoryServices์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ๋ฌด๋ฃŒ ๋˜๋Š” ์‹ฌ์ง€์–ด ์ €๋ ดํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ตœ์†Œํ•œ ๋ช‡ ๋‹ฌ์€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ์šฐ๋ฆฌ๋Š” ํฌ๊ณ  ๋น ๋ฅด๋ฉฐ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํœด์‹์„ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ˆ˜๋…„๊ฐ„ ๋ชจ๋“  ๋ฉ”์ด์ € ๋ฐ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ์ตœ์‹  ๋ฒ„์ „์˜ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ์ž‘๋™ ํ•˜๋Š” ๋ฒ„์ „๊ณผ ์•ž์œผ๋กœ์˜ ๊ฒฝ๋กœ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. 1.x์—์„œ๋Š” ์ „๋ฐ˜๋ถ€๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊นŒ์ง€ ๋‘ ๋ฒˆ์งธ๋Š” ์ผ์ข…์˜ ๊ฐ€์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core ํšŒ์ „ ๋ฒ„์ „์€ ์ด์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ?

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒฝ์šฐ ์ง€์›์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๋Œ€์ ์ธ ๋ณ€๊ฒฝ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ 3.0์—์„œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ–ˆ๋‹ค๋ฉด(์ด ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„) ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์žˆ์ง€ ์•Š์„๊นŒ์š”?

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

1๋…„๋งŒ ๋” ์žˆ์œผ๋ฉด ๋ชจ๋‘์—๊ฒŒ ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๊นŒ?

์‹œ๊ฐ„์˜ ์ ˆ๋Œ€์ ์ธ ๊ธธ์ด๋Š” ์‹ค์ œ๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ ์Šค ์ผ€์ด์Šค ํ˜ธํ™˜์„ฑ + ์‹œ๊ฐ„(IMO)์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์˜ค๋Š˜ ์ž‘๋™ํ–ˆ๋‹ค๋ฉด(์˜ˆ: AD ์ธ์ฆ) 2๋…„์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฏ€๋กœ ์ง€๊ธˆ๋ถ€ํ„ฐ ์ž„์˜์˜ ์‹œ์ ์ด ๊ดœ์ฐฎ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ปํ•ด์•ผ ์‹œ๊ธฐ์ƒ์กฐ์ž…๋‹ˆ๋‹ค.

๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ "์ฝ”์–ด์—์„œ ๋” ๋น ๋ฅธ ๊ฒƒ"์ด ์•„๋‹ˆ๋ผ .NET Framework์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ์˜๋„์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ํ™•์ธํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์•„์ง .NET Framework์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” API์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  ๊ฒฐ์ •ํ•˜๋ฉด 2 ์‚ฌ์ด์˜ ๊ธฐ๋Šฅ ๊ฒฉ์ฐจ๊ฐ€ ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ถˆ์พŒํ•˜์ง€ ์•Š์ง€๋งŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ ๋ง์€ ๋” ์ด์ƒ ๋…ผ์˜ํ•  ๊ฒƒ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์šฐ๋ฆฌ ์‹œ๊ฐ„์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ฃผ์š” ๋ฌธ์ œ๋Š” ์˜ค๋Š˜ ๋˜๋Š” ํ˜„์žฌ ์ œ์•ˆ๋œ ๋Œ€๋กœ ์ถœ์‹œ ์‹œ์ ์— ์›Œํฌ๋กœ๋“œ๋ฅผ netstandard ๋กœ ์ด์‹ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์‹ ๊ฒฝ์„ ์“ฐ๊ฒ ์Šต๋‹ˆ๊นŒ? ํŒ€์€ ์„ฑ๋Šฅ์— ๋Œ€ํ•ด ๊ณ„์† ์ด์•ผ๊ธฐํ•˜์ง€๋งŒ(์ •๋ง ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค.) ๋น ๋ฅด๊ฒŒ ๋‹ฌ๋ฆฌ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜/ํ”Œ๋žซํผ ์ฑ…์ž„์ž๋กœ์„œ ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•  ๋ฒ ํŒ…์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด๊ฒƒ์€ ๋‚˜์œ ๋ฒ ํŒ…์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „ 1์ด ๋‹น์‹ ์„ ์ง€์›ํ•˜์ง€๋งŒ ๋ฒ„์ „ 2๋Š” ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์–ธ์  ๊ฐ€ ๋Š” ์ง€์›ํ•˜๊ฒŒ ๋  ๋•Œ, ๊ทธ๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์‹œ๊ฐ„๊ณผ ๋ˆ์œผ๋กœ ๋งŒ๋“œ๋Š” ์ •๋ง ๋‚˜์œ ๋„๋ฐ•์ž…๋‹ˆ๋‹ค. ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋Šฅ, ์—์ฝ”์‹œ์Šคํ…œ ๋ฐ ์ง€์›์„ ์œ„ํ•ด .NET์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ, ์ƒˆ๋กœ์šด ๋‹จ์–ด์—์„œ ์šฐ๋ฆฌ๋Š” 3๊ฐ€์ง€ ๋ชจ๋‘์—์„œ 1๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„๋Š” ์•„์ง ๊ฑฐ๊ธฐ์— ์—†์œผ๋ฉฐ(API ํ‘œ๋ฉด, libs), ์ง€์›์€ ๋ณด์žฅ๋œ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ ์—†์ด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์งง์Šต๋‹ˆ๋‹ค. ์•Œ ์ˆ˜ ์—†๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

@jahmai

์ž‘๋™ํ•œ ์œ ์ผํ•œ ์ด์œ ๋Š” ํ˜„์žฌ ASP.net ์ฝ”์–ด์—์„œ SignalR์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ง€์›๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค( @davidfowl ๋‚™๋‹ด). ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, SignalR์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Asp.net Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

SignalR 2์กฐ์ฐจ๋„ ASP.NET Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์‚ฌ๋žŒ๋“ค์ด ํ•ดํ‚นํ•˜์—ฌ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ๋Š” ํ•˜์ง€๋งŒ). SignalR์€ ์•„์ง ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ ASP.NET Core 2.0๊ณผ ํ•จ๊ป˜ ๋‚˜์˜ค์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋‚˜์˜ฌ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด์ œ 12๊ฐœ์›” ์ด๋‚ด์— ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ๋„ ์—†์ด ๊ธฐ๋Šฅ์ด ์—†๋Š” ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์„ ๋” ๋งŽ์ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๊ณ , ์†์„ ํ”๋“œ๋Š” ๋ฌด๋ฆฌ์— ๋”ฐ๋ผ ๊ทธ๋ฆฌ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฑด๊ฐ€์š”? ๊ณ ๋ง™์ง€ ๋งŒ ์‚ฌ์–‘ ํ• ๊ฒŒ.

ASP.NET Core 2.0์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฒฐ๊ตญ ๋‹ค์Œ ASP.NET Core๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜๊ณ  ๊ทธ ์‹œ์ ์—์„œ .NET Framework์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธกํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ฒซ์งธ, ์‚ฌ๋žŒ๋“ค์ด ํ˜„์žฌ ASP.net ์ฝ”์–ด์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ASP.net ์ฝ”์–ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Microsoft ๋ธŒ๋žœ๋“œ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ƒํƒœ๊ณ„๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ASP.net ์ฝ”์–ด๋ฅผ ์ฑ„ํƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๋‹ค๋ฅธ ์š”์†Œ(์žˆ๋Š” ๊ฒฝ์šฐ)๋ฅผ ์ฐพ์œผ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋…ผ์˜ ์ค‘์ธ Netfx์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

netstandard 2.0์˜ ์ผ๋ถ€๋กœ ์ค‘์š”ํ•œ API๋ฅผ ์‹๋ณ„ํ•˜์—ฌ .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŽ์€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  WCF, WPF ๋“ฑ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์˜์—ญ์ด ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ~60%๊ฐ€ netstandard 2.0๊ณผ ํ˜ธํ™˜๋˜๋Š” API์ด๋ฏ€๋กœ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. @terrajobst) ๋ฐ .NET Core 2.0์—์„œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ASP.NET Core 1.x๊ฐ€ ์•„๋‹Œ๊ฐ€์š”? 1.x์—์„œ ์ง€์›์ด ํ™•์žฅ๋œ๋‹ค๋ฉด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„๊นŒ์š”?

์ €๋Š” .NET Standard 2.0์ด .NET 4.x์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์œผ๋ฏ€๋กœ LTS ์ง€์›์ด ๊ทธ ์ฃผ๋ณ€์— ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ 1.1/.NET v4.x๊ฐ€ ๋ฆด๋ฆฌ์Šค ์ค‘๊ฐ„์— ์ค‘๋‹จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฆด๋ฆฌ์Šค๋˜๊ธฐ ์ „์— .NET 4.x ์ง€์›์„ ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ์ตœ์‹  ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์Šค๋  ๋•Œ LTS๋ฅผ ๋ฐœํ‘œํ•˜๋Š” ๊ฒƒ์ด ์˜ˆ์˜์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊ทธ๋Ÿฐ ์ด์ „ ๋ฒ„์ „์„ ํšŒ๊ณ ํ•˜๋ฉด์„œ LTS๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

.NET Core ํŒจํ‚ค์ง€๋ฅผ ๋ณ„๋„์˜ *.Core ํŒจํ‚ค์ง€๋กœ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ NuGet ํŒจํ‚ค์ง€์— ๋ณ‘ํ•ฉํ•˜๋Š” ์ˆœ๊ฐ„ ์ตœ์‹  .NET Core ๋ฒ„์ „์„ ๋”ฐ๋ฅด๋Š” ๋ณ„๋„์˜ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•  ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค์— ์ „๋…ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ .NET Standard๊ฐ€ ์•„๋‹Œ .NET Standard 2.0์—์„œ ์˜ˆ์ƒํ–ˆ๋˜ ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์ด ์žˆ๋‹ค๋Š” ํ™•์‹ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 1.1/1.3/1.6 ๋ฏน์Šค. ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์˜ ์‹ ํ˜ธ๊ฐ€ ์•„๋‹Œ .NET Standard ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Œ€์น˜๋ฅผ ๊นจ๋Š” 2.0๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” 1.7/8 ์Šคํ†ฑ ๊ฐญ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ๋„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” .NET Standard 2.0์ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ฐพ๋Š” ๊ณ ๋„๋กœ ํ˜ธํ™˜๋˜๋Š” ํ‘œ๋ฉด์ ๊ณผ ๋งค์šฐ ํ•„์š”ํ•œ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•  ์˜ˆ์ •์ž„์„ ๊ฑฑ์ •์Šค๋Ÿฝ๊ฒŒ ๊ธฐ๋Œ€ํ•ด ์™”์Šต๋‹ˆ๋‹ค.

SignalR 2์กฐ์ฐจ๋„ ASP.NET Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์‚ฌ๋žŒ๋“ค์ด ํ•ดํ‚นํ•˜์—ฌ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ๋Š” ํ•˜์ง€๋งŒ). SignalR์€ ์•„์ง ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ ASP.NET Core 2.0๊ณผ ํ•จ๊ป˜ ๋‚˜์˜ค์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋‚˜์˜ฌ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๊ทธ ์ง„์ˆ ์„ ์–ด๋–ป๊ฒŒ ์˜๋„ํ–ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‚ด ์šฐ๋ ค๋ฅผ ๊ฐ•ํ™”์‹œํ‚จ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core 2.0์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฒฐ๊ตญ ๋‹ค์Œ ASP.NET Core๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜๊ณ  ๊ทธ ์‹œ์ ์—์„œ .NET Framework์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธกํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ์ด์œ ๋กœ ์ธํ•ด netstandard2๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ ค๋ฉด ์›น ์•ฑ์„ asp.net core 2๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ?

netstandard 2.0์˜ ์ผ๋ถ€๋กœ ์ค‘์š”ํ•œ API๋ฅผ ์‹๋ณ„ํ•˜์—ฌ .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŽ์€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. <...>

๋ฌผ๋ก , ์ €๋Š” netstandard๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์„ ์ข‹์•„ํ•˜์ง€๋งŒ netstandard์—์„œ ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Xamarin.iOS, Xamarin.Android, net46, Asp.net core 1.1์—์„œ ๊ณต์œ ๋˜๋Š” ์†Œ์ˆ˜์˜ ์ˆœ์ˆ˜ netstandard 1.3 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์ €ํฌ ์†Œ์Šค)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. net46 ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ netstandard์—์„œ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. asp.net ํ•ต์‹ฌ ์›น ์•ฑ์—์„œ.

์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” _ ์œ ์ผํ•œ _ ์ด์œ ๋Š” (์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด) ๊ฑฐ๋Œ€ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด์‹ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”Œ๋žซํผ์„ ์œ„ํ•ด ํ”Œ๋žซํผ๋ณ„ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ํ™•์žฅํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ๋Œ€์‹  netstandard ์ฒด์ธ์„ ๊ณ„์†ํ•ด์„œ ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. asp.net core 2๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— netstandard 1.3์— ์–ฝ๋งค์ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ํ™œ์„ฑ ์ˆ˜์ • - 1.x๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊นจ๋œจ๋ฆฐ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ๋ฐ›์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ผ๋ถ€ ๊ฒฝ์šฐ ์ˆ˜์ •์„ ์œ„ํ•ด ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๊นŒ? (์ฐธ๊ณ : ์ด๋Š” DirectoryServices์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ๋ฌด๋ฃŒ ๋˜๋Š” ์‹ฌ์ง€์–ด ์ €๋ ดํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ตœ์†Œํ•œ ๋ช‡ ๋‹ฌ์€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ์šฐ๋ฆฌ๋Š” ํฌ๊ณ  ๋น ๋ฅด๋ฉฐ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํœด์‹์„ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ˆ˜๋…„๊ฐ„ ๋ชจ๋“  ๋ฉ”์ด์ € ๋ฐ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ง€์›์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๊ฒƒ์ด ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด ๋‚ด๊ธฐ๋ฅผ ํ•˜๋Š” ๋ฐ ๋” ์ž์‹ ๊ฐ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค๋ฉด 1.x์— ๋Œ€ํ•œ ์ง€์›์„ ๋” ๊ธด ๊ธฐ๊ฐ„์œผ๋กœ ์—ฐ์žฅํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ์ž‘๋™ํ•˜๋Š” ๋ฒ„์ „๊ณผ ์•ž์œผ๋กœ์˜ ๊ฒฝ๋กœ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. 1.x์—์„œ๋Š” ์ „๋ฐ˜๋ถ€๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊นŒ์ง€ ๋‘ ๋ฒˆ์งธ๋Š” ์ผ์ข…์˜ ๊ฐ€์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์ข…์†์„ฑ์ด ์ด์‹๋  ๋•Œ๊นŒ์ง€ 1.x๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”?

@NickCraver ๋ชจ๋“  ๋ถˆ๋งŒ ์‚ฌํ•ญ์€ ASP.NET Core๊ฐ€ ์•„๋‹Œ .NET Core์—์„œ ๋ˆ„๋ฝ๋œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET Core 1.x ๋ฐ ASP.NET Core 1.x์—์„œ ์ด๋Ÿฌํ•œ 2๊ฐœ์˜ ์—”ํ„ฐํ‹ฐ๋Š” ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€๋งŒ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค. v1์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ง€์›ํ•˜๊ณ  v2๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์šฐ๋ ค ์™ธ์— ํŠน๋ณ„ํžˆ ASP.NET Core 2.0์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋‹จ ํ•œ ๊ฐ€์ง€ ์ด์œ ๋„ ๋“ฃ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. .NET Core๋กœ๋งŒ ์ด์‹ํ•  ์ˆ˜ ์—†๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด(์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ์˜ˆ์ œ๋กœ ์ด์‹๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

๊ทธ๋ ‡๋‹ค๋ฉด ๋ถˆ์พŒํ•˜์ง€ ์•Š์ง€๋งŒ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ ๋ง์€ ๋” ์ด์ƒ ๋…ผ์˜ํ•  ๊ฒƒ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์šฐ๋ฆฌ ์‹œ๊ฐ„์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ช…ํ™•ํžˆ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ €๋Š” .NET Framework๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ด์œ , ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๊ฐ„์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์—์„œ ๋‹ต์žฅ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ทธ ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•ด ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ˜ผํ•ฉ๋œ ๋Š๋‚Œ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ "ASP.NET Core 1.x๋กœ ๊ฐ•๋“ฑ๋จ"์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋‘๋ ค์›€์ด ์žˆ์ง€๋งŒ 2.x์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

.NET Core์™€ ASP.NET Core๋ฅผ ๊ฒฐํ•ฉํ•  ๋•Œ ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ๋ช…๋ช… ๊ด‘๊ธฐ์˜ ์ผ๋ถ€๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ASP.NET Core๊ฐ€ .NET Framework์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์–‘ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ€์ง„ ๋งŽ์€ ๊ณ ๊ฐ์ด ์žˆ๊ณ  ๊ทธ๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์— ๊ท€๋ฅผ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค.

@mythz

์ €๋Š” .NET Standard 2.0์ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ฐพ๋Š” ๊ณ ๋„๋กœ ํ˜ธํ™˜๋˜๋Š” ํ‘œ๋ฉด์ ๊ณผ ๋งค์šฐ ํ•„์š”ํ•œ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•  ์˜ˆ์ •์ž„์„ ๊ฑฑ์ •์Šค๋Ÿฝ๊ฒŒ ๊ธฐ๋Œ€ํ•ด ์™”์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก , ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด 1.x์˜ ASP.NET Core, .NET Core ๋ฐ .NET Standard๋Š” ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๋ฒ„์ „์˜ .NET Core์—์„œ ๋ชจ๋“  .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ .NET Core 2.0์ด ์ƒˆ๋กœ์šด LTS์ธ ๊ฒฝ์šฐ์—๋„ ASP.NET Core 1.x๊ฐ€ ์ง€์›๋œ๋‹ค๊ณ  ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jahmai

์–ด๋–ค ์ด์œ ๋กœ ์ธํ•ด netstandard2๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ ค๋ฉด ์›น ์•ฑ์„ asp.net core 2๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ?

์•„๋‹ˆ์˜ค, ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›น์•ฑ์„ ASP.NET Core 2.0์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ์›ํ•  ๋•Œ๋งˆ๋‹ค netstandard 2๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” (์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด) ๊ฑฐ๋Œ€ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด์‹ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ํ”Œ๋žซํผ๋ณ„ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ํ™•์žฅํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  netstandard ์ฒด์ธ ์œ„๋กœ ๊ณ„์† ์ด๋™ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. asp.net core 2๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— netstandard 1.3์— ์–ฝ๋งค์ด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

netstandard 1.3์— ์ง‘์ฐฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 2๊ฐ€์ง€๊ฐ€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 1์ด ์ง€์›ํ•˜์ง€๋งŒ ๋ฒ„์ „ 2๋Š” ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ _์–ธ์  ๊ฐ€๋Š” ์ง€์›ํ•˜๊ฒŒ ๋  ๋•Œ, ๊ทธ๊ฑด ์ •๋ง ๋‚˜์œ ๋„๋ฐ•์ž…๋‹ˆ๋‹ค....

์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฒฉ์ฐจ( DirectoryService ๋“ฑ) ์ค‘ _์ผ๋ถ€_๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ๊ณ  ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๋Š” ์˜๊ฒฌ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ASP.NET Core์— ๋Œ€ํ•ด ๊ดœ์ฐฎ๊ณ  ๋กœ๋“œ๋งต์ด ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ 2.0 ๋ณดํŠธ๋ฅผ ๋†“์น˜๊ณ  ์ด๋Ÿฌํ•œ ๊ฒฉ์ฐจ(๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ฒฉ์ฐจ)๊ฐ€ ํ•ด๊ฒฐ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(๋‹ค์‹œ, ์ด์ „์— ์ด์‹ํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •). 1.X๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

ํ˜„์žฌ ์ƒํ™ฉ์œผ๋กœ ๋ณผ ๋•Œ WCF์— ๋Œ€ํ•ด ์ฐจ๋‹จ๋œ ๋ฌธ์ œ๋Š” 2015๋…„ 5์›” ์ดํ›„ ์ •์ฒด๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฒฐ์ฝ” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.. ์šฐ๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ขŒ์ดˆ์‹œํ‚ต๋‹ˆ๋‹ค.

@davidfowl

์•„๋‹ˆ์˜ค, ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›น์•ฑ์„ ASP.NET Core 2.0์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ์›ํ•  ๋•Œ๋งˆ๋‹ค netstandard 2๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ. ์ด ๊ฒฝ์šฐ Microsoft๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์ ์ ˆํ•œ 2.x ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ(์˜ˆ: SignalR)๋ฅผ ์ œ๊ณตํ•  ๋•Œ๊นŒ์ง€ 1.x๊ฐ€ ์ง€์›๋˜๋„๋ก ํ•˜๋Š” ํ•œ(๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ์šด์˜ ์ง€์›), asp.net ์ฝ”์–ด 2๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ข…์†์„ฑ์ด ์ด์‹๋  ๋•Œ๊นŒ์ง€ 1.x๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”?

๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์•Œ๋ ค์ง„ ๊ธฐ๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‚ ์งœ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋“ค์—ˆ๋˜ ๊ฒƒ์€ "2.0์—๋Š” ์—†๋‹ค"๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค...๊ทธ๋ž˜์„œ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด System.DirectoryServices ๋Š” 2015๋…„ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ์š”์ฒญ๋˜์—ˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋˜์—ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค( System.Drawing ๊ฐ€ ๋’ค๋”ฐ๋ฆ„). .NET Standard 2.0์„ ~60% API ํŒจ๋ฆฌํ‹ฐ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๋น„ํŠธ๊ฐ€ ๋ˆ„๋ฝ๋˜๋ฉด ๋ฌด์—‡์ด ์ค‘์š”ํ•œ์ง€์— ๋Œ€ํ•œ ํ˜ผํ•ฉ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ถˆ๋งŒ ์‚ฌํ•ญ์€ ASP.NET Core๊ฐ€ ์•„๋‹Œ .NET Core์—์„œ ๋ˆ„๋ฝ๋œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋น„ํŠธ(์˜ˆ: AD ์ธ์ฆ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋น ์ง„ ๊ฒƒ์€ ํ›„์ž์˜ ์ง€์›์ž…๋‹ˆ๋‹ค. 1.x์— ๋Œ€ํ•œ ์ง€์›์€ ํ™•์‹คํžˆ ์ €์˜ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ฒฝ๋กœ๋‚˜ ์˜ˆ์ƒ ์ผ์ •์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ 1๋…„ ์•ˆ์— ๋˜‘๊ฐ™์€ ํ† ๋ก ์„ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌธ์ œ๋Š” ์˜ค๋Š˜ ์ด์‹ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. API๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ์‹œ์ ์ด ์—†๋Š” ํ•œ ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” ์•ฝ๊ฐ„ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core์˜ .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์€ ํŒจ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธด ์ง€์› ๊ธฐ๊ฐ„์„ ๊ฐ€์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

DirectoryServices, Drawing ๋“ฑ์ด 2.x์— ๋‚˜์˜จ๋‹ค๋ฉด ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฆด๋ฆฌ์Šค๋Š” .NET Framework๋ฅผ ์ง€์›ํ•˜๊ณ  LTS ๋ฆด๋ฆฌ์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  3.x๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์„ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.NET Core์™€ ASP.NET Core๋ฅผ ๊ฒฐํ•ฉํ•  ๋•Œ ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ๋ช…๋ช… ๊ด‘๊ธฐ์˜ ์ผ๋ถ€๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ASP.NET Core๊ฐ€ .NET Framework์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์–‘ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฐ€์ง„ ๋งŽ์€ ๊ณ ๊ฐ์ด ์žˆ๊ณ  ๊ทธ๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์— ๊ท€๋ฅผ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค.

์ถฉ๋ถ„ํžˆ ๊ณตํ‰ํ•˜์ง€๋งŒ "๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?"์— ๋ถ€์ฐจ์ ์ธ ๋ชจ๋“  ๊ด‘๊ธฐ. ํ˜„์žฌ๋กœ์„œ๋Š” ํšŒ์‚ฌ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ASP.NET ๋ฐ .NET Core/Standard/๋ฌด์—‡์ด๋“  Microsoft ๋‚ด๋ถ€์˜ 2๊ฐ€์ง€ ์„ธํŠธ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ(์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค) ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์—ฌ์ „ํžˆ 1๊ฐœ์˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ASP.NET ์ธก์—์„œ๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์šฉํ•œ API๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ์•„์ง๊นŒ์ง€๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ด๋™์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๋ฅผ ๋”์šฑ ์ค„์ž…๋‹ˆ๋‹ค. ASP.NET ํŒ€์€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์„ ํฌ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ctolkien @NickCraver

์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ๊ฒฉ์ฐจ(DirectoryService ๋“ฑ)๊ฐ€ ์•Œ๋ ค์ ธ ์žˆ๊ณ  ํ•ด๊ฒฐ๋  ๊ฒƒ์ด๋ผ๋Š” ์˜๊ฒฌ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์•Œ๋ ค์ง„ ๊ธฐ๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‚ ์งœ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋“ค์—ˆ๋˜ ์œ ์ผํ•œ ๊ฒƒ์€ "2.0์—๋Š” ์—†๋‹ค"๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค...๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด System.DirectoryServices๋Š” 2015๋…„ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ์š”์ฒญ๋˜์—ˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋˜์—ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค(System.Drawing์— ์ด์–ด).

์ด๋Ÿฌํ•œ ๊ฒฉ์ฐจ๋Š” .NET Core ์ž์ฒด์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ์–ธ์ œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋ถˆ์•ˆ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์†Œ์‹์€ netstandard 2.0๊ณผ netcoreapp2.0์ด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋ฃน ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2.0์„ ์ถœ์‹œํ•œ ํ›„์—๋Š” ๋งค์šฐ ํ˜ธํ™˜๋˜๋Š” ๊ธฐ๋ฐ˜ ์œ„์— ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํฌํŒ…ํ•˜์—ฌ ๋‹ค๋ฅธ ์ข…์†์„ฑ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‰ฌ์šธ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

CSOM ์€ netcore 2์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์™€ ๋‚ด๊ฐ€ ํ•œ ๋ฒˆ๋„ ๋“ค์–ด๋ณธ ์ ์ด ์—†๋Š” ์˜์—ญ์— ๋Œ€ํ•œ ๊ฑฐ๋Œ€ํ•œ ๋ฐฉํ•ด ์š”์†Œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ๋‚˜๋„ ๊ทธ๋ ‡๊ฒŒ ๋˜๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ํฌ๋งํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ ํšŒ์‚ฌ๋ฅผ ๊ฑฐ๊ธฐ์— ๊ฑธ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ ์ „์— ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ๊ทธ ์ดํ›„๊ฐ€ ์•„๋‹ˆ๋ผ ์ €๋Š” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์†Œ๋น„์ž๋ฅผ ์œ„ํ•œ ์ค‘์š”ํ•œ API๊ฐ€ ๋ฐฐ์น˜ ๋œ ํ›„ 3.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์—์„œ ์ด๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ํƒ€๋‹นํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๊ฐ€ ๋˜๊ธฐ ์ „์— ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž…์–‘์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ API๊ฐ€ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ 2.x(๋˜๋Š” ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœ/์ˆ˜์ •๋œ ๋ชจ๋“  ๊ฒƒ)๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ • ํ•˜๊ณ  1.0์„ ์ฑ„ํƒํ•˜๋Š” ๊ธธ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ). ํ•˜์ง€๋งŒ ์ด ์‹œ์ ์—์„œ ์Šคํƒ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฐ€์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ์˜ ๋ฏธ๋ž˜๊ฐ€ ๋ถˆํ™•์‹คํ•œ ์ƒํ™ฉ์—์„œ ์ €๋Š” ์–‘์‹ฌ์ ์œผ๋กœ ํŒ€์—๊ฒŒ .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ทธ๋Ÿฌ๊ณ  ์‹ถ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์œ„ํ—˜๊ณผ ๊ณ ํ†ต์˜ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@NickCraver

ASP.NET Core์˜ .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์€ ํŒจ๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธด ์ง€์› ๊ธฐ๊ฐ„์„ ๊ฐ€์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ "๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž"๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ง€์›์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ์ข…์†์„ฑ ๋ชฉ๋ก์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ๋ชฉ๋ก์€ ์ด ๋ชฉ๋ก์˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ์˜์›ํžˆ ๋˜๋Š” .NET Core๊ฐ€ .NET Framework ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€(๋น„ํ˜„์‹ค์ ์ž„) ๋งํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ASP.NET Core 1.x๊ฐ€ ๊ทธ ๋ชฉ์ ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•  ๊ฒƒ์ด๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ ๋•Œ๊นŒ์ง€ ์ง€์›์„ ํ™•์žฅ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋น„ํŠธ(์˜ˆ: AD ์ธ์ฆ)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋น ์ง„ ๊ฒƒ์€ ํ›„์ž์˜ ์ง€์›์ž…๋‹ˆ๋‹ค. 1.x์— ๋Œ€ํ•œ ์ง€์›์€ ํ™•์‹คํžˆ ์ €์˜ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๊ฒฝ๋กœ๋‚˜ ์˜ˆ์ƒ ์ผ์ •์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ˆ„๋ฝ๋œ ASP.NET ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 1.x ๋Œ€ 2.x๋ผ๊ณ  ๋งํ•  ๋•Œ ASP.NET Core ๋Œ€ .NET Core๋ฅผ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DirectoryServices, Drawing ๋“ฑ์ด 2.x์— ๋‚˜์˜จ๋‹ค๋ฉด ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฆด๋ฆฌ์Šค๋Š” .NET Framework๋ฅผ ์ง€์›ํ•˜๊ณ  LTS ๋ฆด๋ฆฌ์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  3.x๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์„ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „์— ์ด๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ๋Š”๋ฐ, ASP.NET Core 1.x๊ฐ€ ์ด์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์–ด๋–ค ASP.NET Core ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

ASP.NET ๋ฐ .NET Core/Standard/๋ฌด์—‡์ด๋“  Microsoft ๋‚ด๋ถ€์˜ 2๊ฐ€์ง€ ์„ธํŠธ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ(์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค) ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์—ฌ์ „ํžˆ 1๊ฐœ์˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๋™์˜ํ•˜์ง€๋งŒ ์˜ํ–ฅ์„ ์ ์ ˆํ•˜๊ฒŒ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋…ผ์˜์— ๋Œ€ํ•œ FUD๋ฅผ ์ •๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 1.x๋Š” .NET Standard 1.x(1.0 - 1.6) ๋ฐ .NET Framework 4.5.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด๋‹น ๋ฒ„์ „์˜ netstandard ๋ฐ .NET Framework๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ASP.NET Core 1.x๊ฐ€ .NET Core 2.0์—์„œ ์‹คํ–‰๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@smbecker

CSOM์€ netcore 2์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์™€ ๋‚ด๊ฐ€ ํ•œ ๋ฒˆ๋„ ๋“ค์–ด๋ณธ ์ ์ด ์—†๋Š” ์˜์—ญ์— ๋Œ€ํ•œ ๊ฑฐ๋Œ€ํ•œ ๋ฐฉํ•ด ์š”์†Œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค. https://msdn.microsoft.com/en-us/library/ff798388.aspx์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. .NET Core 2.0์˜ .NET Framework ํ˜ธํ™˜์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚ด ์ƒ๊ฐ์—๋Š” .NET Core๋กœ ์ด์‹๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(5๋ถ„ ๋™์•ˆ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ). ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ "๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž"๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ง€์›์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ์ข…์†์„ฑ ๋ชฉ๋ก์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ๋ชฉ๋ก์€ ์ด ๋ชฉ๋ก์˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์€ ์˜์›ํžˆ ๋˜๋Š” .NET Core๊ฐ€ .NET Framework ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€(๋น„ํ˜„์‹ค์ ์ž„) ๋งํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ASP.NET Core 1.x๊ฐ€ ๊ทธ ๋ชฉ์ ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•  ๊ฒƒ์ด๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ ๋•Œ๊นŒ์ง€ ์ง€์›์„ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ๋ˆ„๋ฝ๋œ API๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ฐจ๋‹จ์„ ์ผ์œผํ‚ค๋Š” ์›์ธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ ๊ทธ๊ฒƒ์€ 1์œ„์ธ DiretoryServices์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ฑฐ๊ธฐ์—๋„ ์—†๋‹ค๋ฉด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ •๋ง ๋‚˜์œ ์ง•์กฐ์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก์ด ๋‹ค๋ฅด๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ 1 ๋ฒˆ๋„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ...

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ˆ„๋ฝ๋œ ASP.NET ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 1.x ๋Œ€ 2.x๋ผ๊ณ  ๋งํ•  ๋•Œ ASP.NET Core ๋Œ€ .NET Core๋ฅผ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „์— ์ด๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ๋Š”๋ฐ, ASP.NET Core 1.x๊ฐ€ ์ด์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์–ด๋–ค ASP.NET Core ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ(๋”ฐ๋ผ์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ์ง€์›ํ•˜๋Š” ์ตœ์‹  ASP.NET Core์— ๋Œ€ํ•œ ์ง€์›์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ, ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€ ๋“ฑ์„ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2.x๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค . ์šฐ๋ฆฌ๋Š” 2.x ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์‹œ์ ์—์„œ ์œ ์ผํ•œ ์˜ต์…˜์€ 1.x์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ASP.NET 5์—์„œ ASP.NET Core๋กœ, ๋ชจ๋“  ์ž‘์—… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ•œ ๋ฒˆ์— netcoreapp ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์•„ ๋น„์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์œ„ํ—˜ํ•ด ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ์ง€์› ์ฐฝ ๋‚ด์—์„œ ๊ทธ ๋น„์‹ธ๊ณ  ์œ„ํ—˜ํ•œ ์›€์ง์ž„์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋‚˜๋น ์„œ ์›€์ง์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ ์ƒํ™ฉ์—์„œ). ์ •๋ง ๋ถˆํ–‰ํ•œ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ˆ„๋ฝ๋œ ASP.NET ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? 1.x ๋Œ€ 2.x๋ผ๊ณ  ๋งํ•  ๋•Œ ASP.NET Core ๋Œ€ .NET Core๋ฅผ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ผ๋ถ€ Microsoft.Authentication.* NuGet ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด AD ์ธ์ฆ/์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ˜„์žฌ ๊ฐ™์€ ๋ฐฐ๋ฅผ ํƒ€๊ณ  ์žˆ์ง€๋งŒ .NET 462 ์œ„์— .NET Core 1.1์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์— ์ง€์›๋˜๋Š” ์ˆ˜๋‹จ์„ ํ†ตํ•ด AD ๊ทธ๋ฃน, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” corefx repo์—์„œ System.DirectoryServices ์— ๋Œ€ํ•ด ๋งŽ์€ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์œผ๋ฏ€๋กœ ์ ์–ด๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

  • System.Data.Common.DbDataAdapter / SqlClient.SqlDataAdapter . ํ˜„์žฌ๋Š” ์ „์ฒด .NET Framework ์œ„์— ์žˆ๋Š” .NET Core์—์„œ ์‹คํ–‰ํ•  ๋•Œ๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DbDataReader / SqlDataReader ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ํŽธ๋ฆฌํ•œ ๊ฒƒ ๊ฐ™์•„์š”.

๊ธฐ๋ณธ์ ์œผ๋กœ ASP.NET Core 2.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์ „์ฒด .NET Framework ์—†์ด๋„ AD ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ถ€ ์ง€์› ๋ฐฉ์‹์ด ๋ณด์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์˜ค๋Š˜ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์ด ์ƒ๊ฐํ–ˆ๊ณ , ๋‚ด ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์—ฌ๊ธฐ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ทธ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค).

๋‚˜๋Š” ์—ฌ์ „ํžˆ netstandard ์—์„œ ASP.NET Core ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์Šค ์ผ€์ด์Šค์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊นŒ์ง€ ๋‚˜๋Š” netstandard ๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์‚ฌ์‹ค์ƒ์˜ ๋ชฉํ‘œ๋ผ๊ณ  (์•„๋งˆ๋„ ์ž˜๋ชป) ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์˜ ์˜๋„๋œ ๋™์ž‘์€ ํ•„์š”ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์ด์œ ๊ฐ€ ์—†๋Š” ํ•œ netstandard ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Framework๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Xamarin ๋ฐ UWP์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ์˜ ํ˜ธํ™˜์„ฑ๋„ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. .NET Standard 2.0์— ๋Œ€ํ•œ ์ž‘์—…์€ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„์˜ API ๋…ธ์ถœ ์˜์—ญ์„ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ณตํ†ต ๋Œ€์ƒ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•จ์œผ๋กœ์จ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด ๋ณ€ํ™”๋Š” ๋ญ”๊ฐ€ ๋‹ค๋ฅธ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค. ๊ฒฐ๊ตญ ASP.NET Core๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ ๋ฟ์ด๋ฉฐ ๊ณตํ†ต netstandard ๋…ธ์ถœ ์˜์—ญ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” "ํ•„์ˆ˜์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ์ด์œ "๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋˜ํ•œ ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” Microsoft ๊ฐœ๋ฐœ .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ "์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ์ตœ์‹ ์˜ ๊ฒƒ์„ ์›ํ•˜๋ฏ€๋กœ netstandard ์ง€์›์„ ์ค‘๋‹จํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•จ์œผ๋กœ์จ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž(๋˜๋Š” ์ตœ์†Œํ•œ ์ €์—๊ฒŒ๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค) ์•„๋งˆ๋„ netstandard ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋ฉˆ์ถ”๊ณ  ํ•ต์‹ฌ ๋Ÿฐํƒ€์ž„์„ ๋ชฉํ‘œ๋กœ ์‚ผ๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Microsoft๊ฐ€ ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋ฐ๋„ ์™œ ๊ทธ ๋ชจ๋“  ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ์— ์‹ ๊ฒฝ์„ ์“ฐ๊ฒ ์Šต๋‹ˆ๊นŒ? .NET Core 4 ์ˆ˜๋ช…. ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ์ตœ์„ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋Ÿฐํƒ€์ž„๊ณผ ๋Œ€๋ถ€๋ถ„ ํ†ตํ•ฉ๋œ API ๋…ธ์ถœ ์˜์—ญ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ํ™•์‹คํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

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

๋งˆ์ง€๋ง‰์œผ๋กœ, ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ƒˆ๋กœ์šด API๊ฐ€ ASP.NET๊ณผ ํ•จ๊ป˜ rev์— ์ถ”๊ฐ€๋  ๊ฒƒ์ด๋ผ๋Š” ์—ฌ๊ธฐ ๋Œ“๊ธ€์— ๋Œ€ํ•ด ๋‹ค์†Œ(์กฐ๊ธˆ ๋œ) ๊ฑฑ์ •์ด ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ด๋Ÿฌํ•œ ์ƒˆ API๋Š” netstandard ๋˜๋Š” .NET Framework์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ๋ฐ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ๋Š์Šจํ•ด์ง€๋ฉด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ผ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ ASP.NET Core ํŒ€์ด ์•ž์„œ ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ๋‚˜์œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋’ค๋กœ ๋ฌผ๋Ÿฌ๋‚˜์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ด‘๋ฒ”์œ„ํ•œ ๊ฒฐ์ •์œผ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋Ÿฐํƒ€์ž„ ์„ธํŠธ๋ฅผ ํฌ๊ฒŒ ๋ถ„์—ด์‹œํ‚ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๊ถ๊ธˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Xamarin, Mono, UWP ๋“ฑ).

์ด ์ „์ฒด ์Šค๋ ˆ๋“œ๋กœ ์ธํ•ด netstandard ๋Œ€์‹  .NET Core๋ฅผ ์ค‘์‹ฌ์œผ๋กœ .NET์˜ ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์ดํ•ด์˜ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ ๊ทน๋‹จ์ ์ด๊ณ  ์•ž์œผ๋กœ ๋ช‡ ์ฃผ ์•ˆ์— ์™„ํ™”๋  ์ˆ˜๋„ ์žˆ๊ณ , ์‹ฌ์ง€์–ด ๊ทธ๊ฒƒ์ด ์˜๋„ํ•œ ์ž…์žฅ์ด๊ณ  ๊ทธ๊ฒƒ์ด ์ตœ์„ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“ , ์ €๋Š” ํ˜„์žฌ ๋‚˜๊ฐ€์„œ ๋‚ด ์ž์‹ ์„ ์œ„ํ•ด .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ์‹ถ์€ ์œ ํ˜น์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฝ์€ ๋ชจ๋“  ๊ฒƒ์—์„œ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ์—๋งŒ ์ง‘์ค‘ํ•˜์‹ญ์‹œ์˜ค.

@NickCraver

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ(๋”ฐ๋ผ์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ์ง€์›ํ•˜๋Š” ์ตœ์‹  ASP.NET Core์— ๋Œ€ํ•œ ์ง€์›์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ, ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€ ๋“ฑ์„ ์›ํ•˜๋ฏ€๋กœ 2.x๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 2.x ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ 1.1.1์ž…๋‹ˆ๋‹ค(2.0์—๋Š” ๋ชจ๋“ˆ์ด ์—†์Œ). Razor Pages๋Š” ์ข‹์€ ์ œํ’ˆ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” SignalR์ž…๋‹ˆ๋‹ค. ์ด 2๊ฐ€์ง€๊ฐ€ ์ด ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ๊ฐ€์žฅ ๊ณ ํ†ต์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜๋„ ๋˜๋‚˜์š”? ์ข…์†์„ฑ์ด ์ด์‹๋˜์—ˆ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— ASP.NET Core 1.x์—์„œ 2.x ๋˜๋Š” 3.x๋กœ์˜ ์ด๋™์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ASP.NET Core๋กœ ์ด๋™ํ•  ๊ณ„ํš์ด๋ผ๋ฉด 1.1๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋ฉฐ ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…์„ ์ €์žฅํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

@snickler

๊ธฐ๋ณธ์ ์œผ๋กœ ASP.NET Core 2.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์ „์ฒด .NET Framework ์—†์ด๋„ AD ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ถ€ ์ง€์› ๋ฐฉ์‹์ด ๋ณด์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

System.DirectoryServices๊ฐ€ .NET Core์—์„œ ์ง€์›๋  ๋•Œ๊นŒ์ง€ .NET Framework์—์„œ ASP.NET Core 1.x๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

System.DirectoryServices๊ฐ€ .NET Core์—์„œ ์ง€์›๋  ๋•Œ๊นŒ์ง€ .NET Framework์—์„œ ASP.NET Core 1.x๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ํ˜„์žฌ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ด๋‹ค. ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ .NET Framework์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ Mono์—๋Š” System.DirectoryServices.AccountManagement ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด Windows ์ปดํ“จํ„ฐ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋งฅ๋ฝ์—์„œ Windows์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ฒ—์–ด๋‚˜ System.DirectoryServices.AccountManagement ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ธํ•ด MVC ํ”„๋กœ์ ํŠธ์™€ Xamarin.iOS ์•ฑ์„ ๋กœ์ปฌ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋™์•ˆ ์ปดํ“จํ„ฐ ๊ฐ„์— ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ASP.NET Core๋กœ ์ด๋™ํ•  ๊ณ„ํš์ด๋ผ๋ฉด 1.1๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋ฉฐ ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…์„ ์ €์žฅํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๊นŒ์ง€ ์ง€์›์ด ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค๋ฉด ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ .NET Core ์„ธ๊ณ„์—์„œ ์–ธ์ œ ํ•„์š”ํ•œ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ง€๊ธˆ ์‹œ๊ฐ„ ์ œํ•œ์„ ์„ค์ •ํ•˜๊ณ  ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ ์–ธ์ œ ์˜ฌ์ง€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์€ ์•ฝ์†์— ๋ฒ ํŒ…ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ํ•ต์‹ฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํฌํŒ…์„ ํ—ˆ์šฉํ•˜๋Š” ์ง€์›๋˜๊ณ  ๊ฒน์น˜๋Š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ํˆฌ์žํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. API๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์ „์— ์ง€์›์ด ์ค‘๋‹จ๋œ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ์–‘์˜ ํ™œ์ฃผ๋กœ์™€ ํ•จ๊ป˜ ๋ฏฟ์Œ์˜ ๊ฒฉ์ฐจ๋ฅผ ๋›ฐ์–ด ๋„˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์˜ค๋Š˜๋‚  netcoreapp2.0 ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— DirectoryServices๋ฅผ ๊ณ„์† ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ™์€ ๋ฐฐ์— ๋–จ์–ด์ง€๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ”Œ๋žซํผ์—์„œ๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ASP.NET Core + ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ + ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 1.x์—์„œ๋Š” ๋งŽ์€ ์ด๋“์„ ์–ป์ง€ ๋ชปํ•˜๊ณ  ์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์€ ์ด๋ฏธ ~18ms ๋‚ด์— ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  ์ „์†ก ์‹œ๊ฐ„์— ์˜ํ•ด ์™œ์†Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ‹์ง„ ์ธ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2.0์€ ๊ฝค ์ข‹์€ ํ•ญ๋ชฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Razor ํŽ˜์ด์ง€์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐ€๋Šฅ์„ฑ์€ ์ด์‹ํ•˜๊ธฐ์— ๋งค์šฐ ๋งค๋ ฅ์ ์ž…๋‹ˆ๋‹ค. ์ •๋‹นํ™”๋  ๋งŒํผ.

์ง€๊ธˆ ๋‹น์žฅ์€ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฒ„์ „(๋” ๊ธด ์ง€์›์ด ์žˆ๋Š” 1.1.x๋Š” ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„ ์˜ˆ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค)์€ ์ด๋™ํ•  ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ๊นŒ์ง€ ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2.x๋Š” ์ตœ์†Œํ•œ ์šฐ๋ฆฌ๊ฐ€ ํ™œ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ ์ ˆํ•œ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ๋น„ํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์‚ฌ ๋น„์šฉ์„ ์ •๋‹นํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ~18ms ์•ˆ์— ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์€ ๋ฉ‹์ง„ ์ธ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์‚ฌ์†Œํ•œ OT์— ๋Œ€ํ•ด ~18ms @NickCraver ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ต‰์žฅํ•ด

@daveaglick

๋‚˜๋Š” ์—ฌ์ „ํžˆ netstandard์—์„œ ASP.NET Core ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์Šค ์ผ€์ด์Šค์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊นŒ์ง€ ๋‚˜๋Š” netstandard๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์‹ค์ƒ์˜ ๋ชฉํ‘œ๋ผ๊ณ  (์•„๋งˆ๋„ ์ž˜๋ชป) ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์˜ ์˜๋„๋œ ๋™์ž‘์€ ํ•„์š”ํ•˜๊ณ  ์„ค๋“๋ ฅ ์žˆ๋Š” ์ด์œ ๊ฐ€ ์—†๋Š” ํ•œ netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Framework๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Xamarin ๋ฐ UWP์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ๊ณผ์˜ ํ˜ธํ™˜์„ฑ๋„ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. .NET Standard 2.0์— ๋Œ€ํ•œ ์ž‘์—…์€ ๋‹ค์–‘ํ•œ ๋Ÿฐํƒ€์ž„์˜ API ๋…ธ์ถœ ์˜์—ญ์„ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ณตํ†ต ๋Œ€์ƒ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•จ์œผ๋กœ์จ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Š” ์—ฌ์ „ํžˆ netstandard์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ค์‹œ ์ฝ์œผ๋ฉด:

  • Microsoft.Extensions.*(๋กœ๊น…, DI, ๊ตฌ์„ฑ, FIleProviders ๋“ฑ)
  • ์—”ํ„ฐํ‹ฐ ํ”„๋ ˆ์ž„์›Œํฌ
  • SignalR ํด๋ผ์ด์–ธํŠธ(.NET Framework, Xamarin, UWP ๋“ฑ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ).

.NET Standard๋Š” ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ์‹ค์ƒ์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€์žฅ ๊ด‘๋ฒ”์œ„ํ•œ ํ”Œ๋žซํผ ๋„๋‹ฌ ๋ฒ”์œ„๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ์‚ผ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„์„œ๊ด€ ์ €์ž๋Š” ๋„๋‹ฌ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด JSON.NET๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard1.x ๋ฐ .NET Framework 2.0์„ ์ง€์›ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ @JamesNK ์ฒ˜๋Ÿผ ์ผ์ด "์ •์ƒ ์ž‘๋™"ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ์žฅ์†Œ์—์„œ netstandard์—์„œ ๋ฉ€์–ด์ง€๋Š” ASP.NET Core๋Š” ์ด๋Ÿฌํ•œ API๊ฐ€ UWP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ (์˜ˆ๋ฅผ ๋“ค์–ด) ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ง„์ˆ ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ .NET Core์™€ ASP.NET Core๊ฐ€ ํ•จ๊ป˜ ๋ฒ„์ „์ด ์ง€์ •๋˜๋Š” ๋‹จ์ผ ์ œํ’ˆ์ด๋ผ๋Š” ๊ฒƒ์„ ํ™•๊ณ ํžˆ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค(์ด๋ฆ„์— Core๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—). .NET Core์™€ .NET Framework๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ASP.NET Core 1.x์—์„œ๋Š” ํ•ด๋‹น ๋ฉ”์‹œ์ง€๊ฐ€ ์•ฝ๊ฐ„ ํ๋ฆฟํ•˜๊ณ  ๋งŽ์€ ์‚ฌ๋žŒ๋“ค(ํŠนํžˆ ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž)์—๊ฒŒ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ–ˆ์œผ๋ฉฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฉ์ฐจ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด ์—ฌ์ „ํžˆ ๋„ท์Šคํƒ ๋‹ค๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒƒ์ด ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋Ÿฐํƒ€์ž„ ์„ธํŠธ๋ฅผ ํฌ๊ฒŒ ๋ถ„์—ด์‹œํ‚ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๊ถ๊ธˆํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Xamarin, Mono, UWP ๋“ฑ).

netstandard ๊ฐ€ ๋ฐœ์ „ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ .NET Framework๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด API๋ฅผ ์–ป๋Š” ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(Xamarin ๋ฐ Mono๋Š” ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค).

@snickler

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ํ˜„์žฌ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ด๋‹ค. ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ .NET Framework์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ Mono์—๋Š” System.DirectoryServices.AccountManagement ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด Windows ์‹œ์Šคํ…œ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋งฅ๋ฝ์—์„œ Windows์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋ฒ—์–ด๋‚˜ System.DirectoryServices.AccountManagement๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ธํ•ด MVC ํ”„๋กœ์ ํŠธ์™€ Xamarin.iOS ์•ฑ์„ ๋กœ์ปฌ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋™์•ˆ ์ปดํ“จํ„ฐ ๊ฐ„์— ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

dotnet/corefx์—์„œ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์˜์กด์„ฑ์ด ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์€ (๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ) ์ž˜๋ชป๋œ ์ผ์ž…๋‹ˆ๋‹ค.

@davidfowl ์งˆ๋ฌธ: ASP.NET Core 2.0์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ -> ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  AD์— ๋Œ€ํ•ด ์ธ์ฆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? ์ด ๊ธฐ๋Šฅ์ด ์—†๋Š” Microsoft ํ”Œ๋žซํผ ์ถœ์‹œ๋Š” ์ƒ์ƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•˜์ง€๋งŒ ์ด ๊ฒฐ์ •์ด ๋‹น์‹ ์˜ ๋ง์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ๋ชจ๋“  ๊ฒƒ์„ ์›ํ•œ๋‹ค

.NET v4.x์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋ฉด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  .NET ์—์ฝ”์‹œ์Šคํ…œ์ด ๋”์šฑ ์„ธ๋ถ„ํ™”๋˜์–ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ์กฐ์ง์ด ์ด๋ฅผ ์ฑ„ํƒํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด ๋” ๋„“์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์‹ ํ’€๊ณผ ASP ํˆฌ์ž๊ฐ€ ์ค„์–ด๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ .NET ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ์กด ASP.NET v4.x ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๋ฌด๊ธฐํ•œ ์ง€์›ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— .

.NET Core์˜ ์‹œ์žฅ ์ ์œ ์œจ์ด ์ž‘์„์ˆ˜๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์ง€์›ํ•˜๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ๊ณ  ์ผ๋ถ€๋Š” ๋‹ค์Œ์œผ๋กœ ์ธํ•ด ๋” ์ด์ƒ ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ ๋ คํ•  ์ˆ˜ ์—†๋Š” ์กฐ์ง์—์„œ ์ผํ•˜๋Š” ๊ฒฝ์šฐ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฐจ๋ก€๋กœ ํŒจํ‚ค์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋‘ ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ด ์—†๊ณ  ์žฅ๊ธฐ์ ์ธ ์ง€์›์ด ๋ณด์žฅ๋˜์ง€ ์•Š์•„ ์ธ๊ธฐ ์žˆ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์ค‘๋‹จ๋˜์–ด ASP.NET Core ์ฑ„ํƒ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€์ž‘์šฉ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด .NET ์—์ฝ”์‹œ์Šคํ…œ์ด ๋ฒˆ์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์•Œ๋ ค์ง„ ์ˆ˜๋Ÿ‰, ๋†’์€ ํ˜ธํ™˜์„ฑ, ์•ˆ์ •์ ์ธ LTS ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•ž์œผ๋กœ ๋ช‡ ๋…„ ๋™์•ˆ ํ•ด๋กœ์šด ์˜ํ–ฅ์„ ๋ฏธ์น  ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค.

@davidfowl ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค - ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์˜ ์ผ๋ถ€๋กœ ๋Œ€๋ถ€๋ถ„์˜/๋ชจ๋“  ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ (๋ถ„๋ช…ํžˆ ๋ถ€์ •ํ™•ํ•˜๊ฒŒ) ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฝค ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๋Š” ๊ฒƒ์€ ๋ฐ˜๊ฐ€์šด ์†Œ์‹์ž…๋‹ˆ๋‹ค.

@NickCraver ์˜ค๋Š˜ AD์— ๋Œ€ํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? OpenIdConnect, WsFed, NTLM, ๊ธฐํƒ€?

@Tratcher AD ์ธ์ฆ, DirectoryServices๋ฅผ ํ†ตํ•ด(๊ทธ๋ฃน ๊ตฌ์„ฑ์› ์ž๊ฒฉ ๋“ฑ์„ ์ฟผ๋ฆฌํ•ด์•ผ ํ•จ - ํ‘œ์ค€ ๋น„ํŠธ)

@mythz ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ASP.NET Core 1.x์˜ ์ง€์› ์ˆ˜๋ช…์„ ์—ฐ์žฅํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์–ด๋Š ์‹œ์ ์—์„œ ์™œ ์ด ๊ฒฐ์ •์„ ๋‚ด๋ ค์•ผ ํ•˜๋Š”์ง€ ์•Œ์ง€๋งŒ ๋„ˆ๋ฌด ์‹œ๊ธฐ์ƒ์กฐ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ํ–‰๋ณตํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ASP.NET Core 2.x๋Š” LTS์ด๋ฉฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์ด๋ฏธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์— ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๊ฐ€์ง€ ์•Š์•˜์Œ). ์˜ฌํ•ด ํ›„๋ฐ˜์— SignalR๋„ ์ง€์›ํ•˜๋ฏ€๋กœ ์ ํ”„๋ฅผ ์œ„ํ•œ ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ASP.NET์—์„œ ASP.NET Core๋กœ
  • 3.x๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ์ƒ์œ„ ์ข…์†์„ฑ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ ๋ฆด๋ฆฌ์Šค๋จ

๋‹จ์ˆœํžˆ ASP.NET Core 1.1์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ํ•ด๋‹น ํ”Œ๋žซํผ์ด ๋งŽ์€ ASP.NET ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ๋Œ€์ƒ์ด ๋  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™/์ฑ„ํƒ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ œ ๊ฒฝ์šฐ์—๋Š” SignalR์ด ์ฐจ๋‹จ๊ธฐ์ž„).

lulz์— ๋Œ€ํ•ด์„œ๋งŒ EntityFramework 6(๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ASP.NET Core 1.0 ์•ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์žˆ์Œ)์„ ์ตœ์‹  preview2 .NET Core ์•ผ๊ฐ„ ๋นŒ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ญ”์ง€ ๋งž์ถฐ๋ด...

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <NetStandardImplicitPackageVersion>2.0.0-*</NetStandardImplicitPackageVersion>
    <RuntimeFrameworkVersion>2.0.0-preview2-002093-00</RuntimeFrameworkVersion>
    <PackageTargetFallback>net45;net461</PackageTargetFallback>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="EntityFramework" Version="6.1.3" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.0-*" />
  </ItemGroup>

</Project>

image

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์šฉ์œผ๋กœ ์„ค๊ณ„ ๋ฐ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ .NET Core์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์ฒ™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์‚ฌ์†Œํ•œ ๊ฒฝ์šฐ(hello world ์•ฑ ์ฝ๊ธฐ)๊ฐ€ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ˆ„๋ฝ๋œ API ๋˜๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” API๋กœ ์ธํ•ด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. .

์ ˆ๋Œ€์ ์œผ๋กœ ๋”์ฐํ•œ ๊ฒƒ์€ ๋Ÿฐํƒ€์ž„์— ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ „ํ˜€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด .NET Core์˜ SqlClient ๋Š” TransactionScope ๋ฅผ ์‚ฌ์šฉํ•œ ์•ฐ๋น„์–ธํŠธ ํŠธ๋žœ์žญ์…˜ ์ฐธ์—ฌ๋‚˜ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. EF 6์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋„ TransactionScope ์ „ํ˜€ ํšจ๊ณผ์ ์ด์ง€ ์•Š์œผ๋ฉฐ DB ํ˜ธ์ถœ์ด ํ•„์š”ํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ์›€์ง์ž„์— ๋Œ€ํ•œ ๋‚˜์˜ ์šฐ๋ ค์— ๋Œ€ํ•ด ์—ฌ๊ธฐ์— 2์„ผํŠธ๋ฅผ ๋”ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WPF์—์„œ ๊ฐœ๋ฐœ๋œ ์ƒˆ๋กœ์šด ์˜์—ญ ์ค‘ ์ผ๋ถ€๊ฐ€ ํฌํ•จ๋œ ์ฃผ๋กœ Windows Forms์ธ ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— 15๋…„ ์ด์ƒ์˜ ๋…ธ๋ ฅ์ด ์žˆ์—ˆ๊ณ  WinForms์—์„œ ์™„์ „ํžˆ ๋ฒ—์–ด๋‚˜๋ ค๋ฉด ๋ช‡ ๋…„์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์•˜์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์›น ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ธฐ์กด WinForms ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋” ๋งŽ์€ ๋ชจ๋“ˆ์„ฑ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒˆ๋กœ์šด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ๊ณง ASP.NET Core๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๋ฐฉ๊ธˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด .NET v4.6.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋Œ€๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. System.Drawing ๋ฐ System.Security.Cryptography๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐฉ์‹์œผ๋กœ TransactionScope๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MEF์— ์˜์กดํ•˜์ง€ ์•Š๊ณ ๋„ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์˜์—ญ์„ ๋ณ„๋„์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์บก์Šํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ ASP.NET Core์˜ ์ด์ ์„ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ ๋งŽ์€ ์ด์œ ๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ •๋ง ์ข‹์€ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ASP.NET Core๋กœ ์ „ํ™˜ํ•˜๋ฉด WinForms๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ์˜ ์ด์‹์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— 1.x์— ๊ณ ์ •๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ฃผ๋กœ ์›น ์ œํ’ˆ์— ์ค‘์ ์„ ๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— WMI ๋“ฑ๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์— ์—ฐ๊ฒฐํ•˜๋Š” ์œ„์น˜๋ฅผ ๋งํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ด์‹์„ฑ ๋ฌธ์ œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ์ •๋ง ํฅ๋ฏธ๋กœ์šด ๋‹จ๊ณ„์— ์žˆ์œผ๋ฉฐ ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ์€ ์šฐ๋ฆฌ ๊ธฐ๋Šฅ์˜ ๋ชจ๋“  ์›น ๋ฒ„์ „์„ ASP.NET MVC 5์— ๊ฐœ๋ฐœํ•˜๊ณ  ์ผ๋ถ€ ๋ฒ„์ „์œผ๋กœ ์ด์‹ํ•ด์•ผ ํ•˜๋Š” ๋งŽ์€ ์ƒˆ๋กœ์šด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ถ•์ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์˜ ๋…ธ๋ ฅ.

์šฐ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ WinForms๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋งŽ์€ ์šฉ๋„๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Microsoft ํŒŒํŠธ๋„ˆ์ด๋ฉฐ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์šฐ๋ฆฌ ์ œํ’ˆ์— ๋Œ€ํ•ด Microsoft์™€ ์ง์ ‘ ํ˜‘๋ ฅํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์ง€๋งŒ @ ์™€ ์ข€ ๋” ๊ฐœ์ธ์ ์ธ ํ† ๋ก ์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. @davidfowl ์ด ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ €๋Š” ๋˜ํ•œ MS Build์— ์ฐธ์„ํ•  ์˜ˆ์ •์ด๋ฉฐ ์ฐธ์„ํ•˜์‹ค ๊ฒฝ์šฐ ๊ทธ๊ณณ์—์„œ ๋งŒ๋‚˜ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋„์ „์— ๋‹น์‹ ์˜ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋Š” ํšŒ์‚ฌ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์™„์ „ํ•œ ๋ฉด์ฑ… ์กฐํ•ญ: ์ €๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚ด์—์„œ ์ด์‹์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ง‰ํžŒ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฒ€์‚ฌ์— ์‹คํŒจํ•œ .NET Framework API ๋ชฉ๋ก์„ ๊ธฐ๊บผ์ด ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌด์•„ํ•˜ํ•˜. ์›ƒ์–ด์•ผ ํ• ์ง€ ์šธ์–ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค...

๋‹ค์Œ์€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์†Œํ•œ 23์ค„ EF 6 ์•ฑ์— ๋Œ€ํ•ด ApiPort ๋ถ„์„ ๋„๊ตฌ์—์„œ ์ƒ์„ฑํ•œ ๋ณด๊ณ ์„œ์ž…๋‹ˆ๋‹ค.

image

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

์ด ๋ฌธ์ œ๊ฐ€ ์—ด๋ฆฌ๊ธฐ ์ „์— ํ”ผ๋“œ๋ฐฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ 1.1์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„ ๋ฐ ์ง€์›์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€๋งŒ ASP.NET Core๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์•„์˜ˆ ์‚ญ์ œํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์€ ์ €์—๊ฒŒ ์—„์ฒญ๋‚œ ๋†€๋ผ์›€์œผ๋กœ ๋‹ค๊ฐ€์™”์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๊ฒƒ์€ ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”Œ๋ ˆ์ด, ์ฆ‰ Windows์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2.0 ๋ฆด๋ฆฌ์Šค๋Š” ๋Œ€๋ถ€๋ถ„์˜ API๋ฅผ ๋‹ค์‹œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์—์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ธฐ๋‹ค๋ ค์˜จ ๋ฆด๋ฆฌ์Šค์˜€์Šต๋‹ˆ๋‹ค.

ASP.NET Core๋Š” ํ”„๋ ˆ์ž„์›Œํฌ API์˜ ์ž‘์€ ํ‘œ๋ฉด ์˜์—ญ์— ์˜์กดํ•˜์—ฌ ๋ชจ๋“  ๊ณณ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ธ ์ด ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ฐœ๋ฐฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฑฐ์˜ ๋™๋“ฑํ•ด์ง€๋ฉด ๋ชจ๋“  ์ƒˆ API๊ฐ€ netstandard์— ์ถ”๊ฐ€๋˜์–ด ๊ฒฐ๊ตญ ๋‘ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ชจ๋‘ ํฌํ•จ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด์ง€๊ฐœ์™€ ์œ ๋‹ˆ์ฝ˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ASP.NET์„ ์ฐพ์œผ๋ ค๋ฉด dogfood netstandard๋„ ์•„๋‹ˆ๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. eh :/

@๋กœํ•˜์ธ 

๋‹จ์ˆœํžˆ ASP.NET Core 1.1์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ํ•ด๋‹น ํ”Œ๋žซํผ์ด ๋งŽ์€ ASP.NET ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ๋Œ€์ƒ์ด ๋  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™/์ฑ„ํƒ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ œ ๊ฒฝ์šฐ์—๋Š” SignalR์ด ์ฐจ๋‹จ๊ธฐ์ž„).

SignalR์ด ASP.NET Core 1.x์—์„œ ์ž‘๋™ํ–ˆ๋‹ค๋ฉด? ๋‹น์‹ ์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ๋ฏธ์„ฑ์ˆ™ํ•œ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@millman82 ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. .NET Framework ์ง€์›์ด ์ž ์‹œ ์ค‘๋‹จ๋˜๊ธฐ ์ „์˜ ๋ฒ„์ „์—์„œ ๋ฉˆ์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์—์„œ 2.x ํ˜ธํ™˜์„ ์œ ์ง€ํ•˜๊ณ  3.x์—์„œ ์‚ญ์ œํ•˜๋Š” ์ œ์•ˆ ์ค‘ ์ผ๋ถ€๋Š” ๊ท€ํ•˜์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹น์‹ ์˜ ํ•ญ๊ตฌ์— ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด @NickCraver ์™€ ๊ฐ™์€ ๊ด€์‹ฌ์‚ฌ์ž…๋‹ˆ๊นŒ(2.x๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ธด์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค).

@jkells

ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฑฐ์˜ ๋™๋“ฑํ•ด์ง€๋ฉด ๋ชจ๋“  ์ƒˆ API๊ฐ€ netstandard์— ์ถ”๊ฐ€๋˜์–ด ๊ฒฐ๊ตญ ๋‘ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ชจ๋‘ ํฌํ•จ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด์ง€๊ฐœ์™€ ์œ ๋‹ˆ์ฝ˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ฉ€๋ฆฌ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์‹œ๊ฐ„ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ฐ์ž์˜ ์ผ์ •์— ๋”ฐ๋ผ ๋ฐฐ์†ก๋˜๋Š” ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ASP.NET์„ ์ฐพ์œผ๋ ค๋ฉด dogfood netstandard๋„ ์•„๋‹ˆ๊ณ  ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. eh :/

์ด ์Šค๋ ˆ๋“œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ์—ฌ์ „ํžˆ netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค - 2.0์ด ๋–จ์–ด์งˆ ๋•Œ๋ถ€ํ„ฐ 1๋…„ ๋™์•ˆ ์ง€์›์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค(2.0์ด ๋‹ค์Œ LTS๋ผ๊ณ  ๊ฐ€์ •).

@davidfowl ํ™•์‹คํžˆ ๊ทธ ๋ถ€๋ถ„์ด ์ƒ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ํ˜„์žฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ OData ๋ฐ SignalR์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด์ „ํ•˜๊ธฐ ์ „์— ASP.NET Core์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ฐ€์ง€๋Š” ASP.NET Core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜๊ณ  ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ถ€๋ถ„์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์—†์„ ๋•Œ ๋ฆผ๋ณด์— ๊ฐ‡ํžˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ASP.NET Core๊ฐ€ ASP.NET ๋„๋งค๋ฅผ ๋Œ€์ฒดํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ธธ ์•„๋ž˜ ์–ด๋”˜๊ฐ€์— ์žˆ์„์ง€๋„ ๋ชจ๋ฅด์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ASP.NET MVC 5์—์„œ UI๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ง€๊ธˆ์€ ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์ด๋™ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค). ๋ช‡ ๋…„ ํ›„์— ASP.NET Core์—์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ASP.NET์˜ ์ˆ˜๋ช…์ด ๋‹คํ•˜๋ฉด.

์ง€๊ธˆ Core 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘๊ฐ„์— ํ™•์žฅ๋˜๋Š” ๊ฒฝ์šฐ ASP.NET Core 1.x์˜ EOL์ด ๋„์ฐฉํ•  ๋•Œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ž ์žฌ์ ์œผ๋กœ ์‹ฌํ•˜๊ฒŒ ํ™”์ƒ์„ ์ž…๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌผ๋ก  ์ž์ฒด์ ์ธ ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@ctolkien

๋‹น์‹ ์€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค - 2.0์ด ๋–จ์–ด์งˆ ๋•Œ๋ถ€ํ„ฐ 1๋…„ ๋™์•ˆ ์ง€์›์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค(2.0์ด ๋‹ค์Œ LTS๋ผ๊ณ  ๊ฐ€์ •).

2.0์ด ๋–จ์–ด์งˆ ๋•Œ ์ง€์›์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ž ์‹œ ๊ฐ€์ •ํ•˜์‹ญ์‹œ์˜ค. ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ฐ€์ง€๋Š” ASP.NET Core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜๊ณ  ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ถ€๋ถ„์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์—†์„ ๋•Œ ๋ฆผ๋ณด์— ๊ฐ‡ํžˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์žฅ์—์„œ 1.x๋ฅผ 2.x๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 1๋…„ ์•ˆ์— ๋ชจ๋“  ์ข…์†์„ฑ์ด ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

ํ•ด๋‹น ๋ฌธ์žฅ์—์„œ 1.x๋ฅผ 2.x๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 1๋…„ ์•ˆ์— ๋ชจ๋“  ์ข…์†์„ฑ์ด ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ์ „ํ˜€ ๊ทธ๋ ‡์ง€๋Š” ์•Š์ง€๋งŒ ๋” ์ด์ƒ .NET Full์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์™œ ๊ทธ๊ฒƒ์„ ๋ฐ€์–ด๋ถ™์ด๋ ค๋Š”์ง€ ์ดํ•ดํ•˜์ง€๋งŒ ๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ์ด ์ด์‹๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์‚ฌ์—์„œ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋‹จ ์—†์ด ์ง€์›์ด ์ค‘๋‹จ๋˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฑ„ํƒํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ์ด ์ด์‹๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์‚ฌ์—์„œ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜๋‹จ ์—†์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ฑ„ํƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์™œ ์ง€์›์—์„œ ๋–จ์–ด์งˆ๊นŒ์š”? ๋‚ด ๊ฐ€์ƒ์˜ ์„ธ๊ณ„์—์„œ๋Š” .NET Framework์—์„œ ASP.NET Core 1.x๋ฅผ ๋” ์˜ค๋ž˜ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ ์ง€์›์—์„œ ๋–จ์–ด์งˆ๊นŒ์š”? ๋‚ด ๊ฐ€์ƒ์˜ ์„ธ๊ณ„์—์„œ๋Š” .NET Framework์—์„œ ASP.NET Core 1.x๋ฅผ ๋” ์˜ค๋ž˜ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์งˆ๋ฌธ์€ ์–ผ๋งˆ๋‚˜ ๋” ์˜ค๋ž˜์ž…๋‹ˆ๊นŒ? ๋˜ํ•œ ํŒ€์€ SignalR ๋ฐ OData์™€ ๊ฐ™์€ ํ•„์ˆ˜ ์ข…์†์„ฑ์„ ASP.NET Core 1.x๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๋ˆ„๋ฝ๋œ ๋ชจ๋“  ์ข…์†์„ฑ์ด ์‹ค์ œ๋กœ ์ด์‹๋  ๋•Œ๊นŒ์ง€ ์ง€์›์„ ์œ ์ง€ํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฐ ํŒ€์ž…๋‹ˆ๊นŒ? ์ง€๊ธˆ .NET ์ „์ฒด ์ง€์›์„ ์ค‘๋‹จํ•˜๋ ค๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ด์ „์— ๋งŒ๋“  ์ฃผ์žฅ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†”์งํ•œ ์งˆ๋ฌธ...

๋‚ด ์งˆ๋ฌธ์€ ์–ผ๋งˆ๋‚˜ ๋” ์˜ค๋ž˜์ž…๋‹ˆ๊นŒ? ๋˜ํ•œ ํŒ€์€ SignalR ๋ฐ OData์™€ ๊ฐ™์€ ํ•„์ˆ˜ ์ข…์†์„ฑ์„ ASP.NET Core 1.x๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ๋ˆ„๋ฝ๋œ ๋ชจ๋“  ์ข…์†์„ฑ์ด ์‹ค์ œ๋กœ ์ด์‹๋  ๋•Œ๊นŒ์ง€ ์ง€์›์„ ์œ ์ง€ํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ํฐ ํŒ€์ž…๋‹ˆ๊นŒ? ์ง€๊ธˆ .NET ์ „์ฒด ์ง€์›์„ ์ค‘๋‹จํ•˜๋ ค๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ผ์ฐ์ด ์ œ๊ธฐํ•œ ์ฃผ์žฅ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†”์งํ•œ ์งˆ๋ฌธ...

๋‚œ ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋ฒ„๋ฆด๊ฑฐ์•ผ, 3 ๋…„. ASP.NET ํŒ€์€ Odata ํ†ตํ•ฉ์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ณ  odata ํŒ€์ด ์†Œ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ œ๊ฐ€ ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. SignalR์˜ ๊ฒฝ์šฐ ASP.NET Core 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณด๋Š” ๋ฌธ์ œ๋Š” ๊ฐ ์‚ฌ๋žŒ์ด ์„œ๋กœ ๋‹ค๋ฅธ "๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ" ์ง‘ํ•ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ•ด๋„ "๊ดœ์ฐฎ์€" ์‹œ๊ธฐ์— ๋Œ€ํ•ด ์ถ”๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ ์ค‘ ์ผ๋ถ€๋Š” CSOM๊ณผ ๊ฐ™์ด ์ด์‹๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  1.x ๊ธฐ์ฐจ์— ์žˆ์œผ๋ฉด ๋ฒ„๊ทธ ์ˆ˜์ •๊ณผ ์‚ฌ์†Œํ•œ ๊ธฐ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ์ตœ์‹  ์ฃผ์š” ASP.NET Core์—์„œ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ASP.NET Core 1.x์™€ ํ•จ๊ป˜ .NET Core 2.0 ๋˜๋Š” .NET Standard 2.0์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ ์ƒ์ˆ˜๋Š” ASP.NET Core์™€ .NET Core๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(.NET Core๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž„).

๋‚ด๊ฐ€ ๋ณด๋Š” ๋ฌธ์ œ๋Š” ๊ฐ ์‚ฌ๋žŒ์ด ์„œ๋กœ ๋‹ค๋ฅธ "๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ" ์ง‘ํ•ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ•ด๋„ "๊ดœ์ฐฎ์€" ์‹œ๊ธฐ์— ๋Œ€ํ•ด ์ถ”๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชฉ๋ก์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ƒํƒœ๊ณ„๋ฅผ ์ฐธ์—ฌ์‹œํ‚ค์‹ญ์‹œ์˜ค(์•„๋‹ˆ์š”, ์ด ๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์„ ํ•  ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค). Microsoft ์†Œ์œ  ์ข…์†์„ฑ์ธ ๊ฒฝ์šฐ ์ด์‹ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์†Œ์œ ์ž์—๊ฒŒ ์—ฐ๋ฝํ•˜์—ฌ ๊ณ„ํš์„ ์•Œ๋ฆฌ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ Microsoft์˜ ์ž˜๋ชป์ด ์•„๋‹˜). ์ด ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ์‹œ๊ฐ„์— ASP.net core 1.x๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ํ™”๋‚˜๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  ๋‹น์‹ ์˜ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋†’์€ ์ˆ˜์ค€์˜ ์ฃผ์˜์™€ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ํฐ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.

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

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

ํ•„์ž๊ฐ€ WMI์™€ ๊ฐ™์€ ๊ฒƒ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์˜ˆ์™ธ์ ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ํŒ€์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋งŒํผ ์˜ˆ์™ธ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋‚˜๋Š” ์กฐ์‚ฌ๋ฅผ ํ•˜๊ณ  ๋ฌด์—‡์ด ๋น ์ ธ ์žˆ๋Š”์ง€ ๋ณผ ๊ฒƒ์ด๊ณ (๋น„๋ก ์ด์ „์— ์ž˜๋ชป๋œ ์ด์‹์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ ๊ฒŒ์‹œ๋ฌผ์ด ์ •ํ™•์„ฑ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ์šฐ๋ คํ–ˆ์ง€๋งŒ) ๋” ์‚ฌ์ ์ธ ๋งค์ฒด์—์„œ ๊ธฐ๊บผ์ด ๋‹น์‹ ์—๊ฒŒ ๋ณด๊ณ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์— ์—ด์ •์ ์ž…๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ๋งŽ์€ ๊ณ ๊ฐ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ‰์ƒ .NET์„ ๋ณธ ์ ์ด ์—†๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ Microsoft๋กœ์„œ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์ˆ˜์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .NET Framework์—์„œ ์‹คํ–‰๋˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ , ์‚ฌ๋ž‘ํ•˜๊ณ  ์ดํ•ดํ•˜๋ฏ€๋กœ ASP.NET Core๊ฐ€ .NET Framework์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. go ๋˜๋Š” node (์ด ์‹œ์ ์—์„œ ๊ฑฐ์˜ 0๊ฐœ์˜ ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ์žˆ์Œ)์™€ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ์ผ์€ ๋ชจ๋‘ ๋ณ‘๋ ฌ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core๋Š” "๋ชจ๋“  ๊ฒƒ"์ด .NET Framework์—์„œ .NET Core๋กœ ์ด์‹๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋Šฅ ์ž‘์—…์„ ์ค‘์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET์€ ๋™์ผํ•œ ์ƒ์ž์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋˜๋ฏ€๋กœ .NET Core์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ ๊ณ„์† ํ˜์‹ ํ•˜๊ณ  ํ™œ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠธ๋ Œ๋“œ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋‚˜๋Š” ๋‹น์‹ ์ด .NET Framework๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • ๋‚ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ํ•„์š”ํ•œ ์ข…์†์„ฑ์ด ์ด์‹๋  ๋•Œ๊นŒ์ง€ .NET Framework๋ฅผ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  • 1๋…„๋งŒ ๋” ์žˆ์œผ๋ฉด .NET Framework ์ง€์›(ASP.NET Core 3.x)์„ ์ค‘๋‹จํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋ฐœํ‘œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ(์ด๋Š” ์šฐ๋ฆฌ์˜ ์ž˜๋ชป์ž„) ๋ฐœํ‘œ๊ฐ€ ์˜ค๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ง์„ ํƒ“ํ•ฉ๋‹ˆ๋‹ค).

๋‚˜๋Š” ๋˜ํ•œ ์—ฌ๊ธฐ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ API ํŒจ๋ฆฌํ‹ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ œ ์ถ”์ธก์œผ๋กœ๋Š” ์‚ฌ๋žŒ๋“ค๋งˆ๋‹ค ๋‹ค๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Framework๋Š” Windows์— ์—ฐ๊ฒฐ๋œ 15๋…„ ์ด์ƒ ๋œ ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
.NET Core๋Š” ์ตœ์‹  ๊ฒฝ๋Ÿ‰ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์‹์ด ๋” ์‰ฌ์šธ ์ˆ˜ ์žˆ๋„๋ก ๋” ํ˜ธํ™˜์„ฑ์ด ์žˆ๋„๋ก ์ฒœ์ฒœํžˆ ์ง„ํ™”ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ˜ธํ™˜์„ฑ ์ธก๋ฉด์—์„œ .NET Framework์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋˜๋Š” ๊ทธ๊ฒƒ์ด ๋ชฉํ‘œ์ธ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค(์›๋ž˜๋Š” ์•„๋‹ˆ์—ˆ์Œ). ์–ด๋Š ์‹œ์ ์—์„œ .NET Framework ์œ„์—์„œ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ .NET Core์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ASP.NET Core๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„ํ•  ๋•Œ(๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์—) ์ด๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ 1.1์— ๋Œ€ํ•œ ํ›จ์”ฌ ๋” ๊ธด ๊ธฐ๊ฐ„์˜ ์ง€์›์€ ์ ์ ˆํ•œ ์™„ํ™”๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 1๋…„ ์•ˆ์— netfx ์˜์กด์„ฑ์„ ์—†์•จ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์ง€๋งŒ ๋‹น์‹ ์ด ๋ฐ€์งš๋งจ์œผ๋กœ ์ œ์•ˆํ•œ +3๋…„์œผ๋กœ ํ›จ์”ฌ ๋” ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด 2.0 ๋ ˆ๋ฒจ์—์„œ ๋จผ์ € ํ†ตํ•ฉ๋˜๋Š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋” ์‰ฝ๊ฒŒ ์ด์‹๋˜์–ด์•ผ ํ•˜๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค! ๋‚˜๋Š” ํ•œ ์กฐ์ง์— ๋Œ€ํ•ด์„œ๋งŒ ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ "2.0์€ LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 3.0์€ netfx๋ฅผ ์‚ญ์ œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค"๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ FUD์˜ ์›์ธ์ด ์•„๋‹ˆ๋ผ ํ‰์†Œ์™€ ๊ฐ™์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ @PureKrome ์ด ์ด ์ฐธ์—ฌ์— ๋Œ€ํ•œ ๊ฐ์‚ฌ์— ๋Œ€ํ•ด ๋งํ•œ ๊ฒƒ์„ ๋˜ํ’€์ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์œ ์ตํ•œ ํ† ๋ก ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒจ๋ฆฌํ‹ฐ ์ฃผ์ œ์— ๋Œ€ํ•ด - ๋‚˜๋Š” ์ด์ „์— .net ์ฝ”์–ด๊ฐ€ .net ํ”„๋ ˆ์ž„์›Œํฌ ์ˆ˜์ค€์˜ ํ˜ธํ™˜์„ฑ์— ์ ‘๊ทผ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ asp .net ์ฝ”์–ด๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ๊ณ„์† ์ง€์›ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ asp.net core๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด .net core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์ง€ ๊ทธ ์ž์ฒด์˜ ์žฅ์ ์„ ์œ„ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ๊ทธ๊ฒƒ๋“ค์€ ํ•˜๋‚˜์˜ ์ œํ’ˆ์ด๊ณ , ๋‚˜๋Š” core clr์„ ์„ ํƒํ•œ๋‹ค๋ฉด ์žฅ์ ๊ณผ ๋‹จ์ ์ด ์žˆ๋Š” ๊ทธ ์ œํ’ˆ์˜ ์„ ํƒ์ ์ธ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜๋ฃป๋ฐค ์ž๊ณ  ๋‚˜๋ฉด -

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์˜ค๋ž˜๋œ .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋’ค๋กœํ•˜๊ณ  ์ตœ์‹  ๋Ÿฐํƒ€์ž„์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

..๊ทธ๋ฆฌ๊ณ  ๋„ค - ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜์‚ฌ ์†Œํ†ต์€ (ํ‰์†Œ์™€ ๊ฐ™์ด) ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๋…์ผ์–ด์— ๋Œ€ํ•œ ์ด ๋ฌธ์žฅ์˜ ๊ฐ€์žฅ ์ •์ค‘ํ•œ ๋ฒ„์ „) ;)

+1

๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์˜ค๋ž˜๋œ .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋’ค๋กœํ•˜๊ณ  ์ตœ์‹  ๋Ÿฐํƒ€์ž„์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํฌ๋ง์€ ์ด๊ฒƒ์ด ์ ์ง„์ ์ธ ๋ณ€ํ™”๊ฐ€ ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kestrel์ด ๋จผ์ € perf(http.sys ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŒ… ๋‚จ์•„ ์žˆ์Œ)์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•œ ๋‹ค์Œ, netstandard2.0์— ๋Œ€ํ•œ ์ด์‹/ํ˜ธํ™˜์„ฑ ํ…Œ์ŠคํŠธ ๋…ธ๋ ฅ์ด ์‹œ์ž‘๋˜๋Š” ๋™์•ˆ API ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด mvc/*๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ. ์ด ๊ฒฝ์šฐ Microsoft๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์ ์ ˆํ•œ 2.x ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ(์˜ˆ: SignalR)๋ฅผ ์ œ๊ณตํ•  ๋•Œ๊นŒ์ง€ 1.x๊ฐ€ ์ง€์›๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํ•œ(๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ >์šด์˜ ์ง€์›), ๋‚˜๋Š” >ํŽธ์•ˆํ•˜๊ฒŒ ์ž…์ฐฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. asp.net core 2๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€.

+1

.NET Core๋กœ๋งŒ ์ด์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ์˜ˆ์ œ๋กœ ์ด์‹๋˜์ง€ ์•Š์„ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ์„ ์ˆ˜ ์žˆ์Œ).

์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ์ข‹์€ ๊ฒฐ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” 1๋…„ ์ด์ƒ์˜ ์ง€์›์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์‹ ๋ขฐ๋ฅผ ์œ„ํ•ด 2-3๋…„๊ณผ ํฌํŒ…๋  ์ •๋ณด์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
.net 461 ์ง€์›์ด ์—†์Šต๋‹ˆ๋‹ค.

@dasMulli

๋‚˜๋Š” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํฌ๋ง์€ ์ด๊ฒƒ์ด ์ ์ง„์ ์ธ ๋ณ€ํ™”๊ฐ€ ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Kestrel์ด ๋จผ์ € perf(http.sys ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŒ… ๋‚จ์•„ ์žˆ์Œ)์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•œ ๋‹ค์Œ, netstandard2.0์— ๋Œ€ํ•œ ์ด์‹/ํ˜ธํ™˜์„ฑ ํ…Œ์ŠคํŠธ ๋…ธ๋ ฅ์ด ์‹œ์ž‘๋˜๋Š” ๋™์•ˆ API ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด mvc/*๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” .NET Framework์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... .NET Core ๋ฐ .NET Standard์— ๋Œ€ํ•œ ์ด์‹ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ์€ ์–ด์จŒ๋“  ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ IMO๋Š” .NET Framework ์ง€์›์ด ์ค‘๋‹จ๋˜๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์œ ์ผํ•œ ๋ชฉํ‘œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ๋Š” ๊ทธ๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋ ˆ์ด์ € ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

@gulbanana

๋ชจ๋“  ๊ฒƒ์ด 2.0 ๋ ˆ๋ฒจ์—์„œ ๋จผ์ € ํ†ตํ•ฉ๋˜๋Š” ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋” ์‰ฝ๊ฒŒ ์ด์‹๋˜์–ด์•ผ ํ•˜๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค! ๋‚˜๋Š” ํ•œ ์กฐ์ง์— ๋Œ€ํ•ด์„œ๋งŒ ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ "2.0์€ LTS ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 3.0์€ netfx๋ฅผ ์‚ญ์ œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค"๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ FUD์˜ ์›์ธ์ด ์•„๋‹ˆ๋ผ ํ‰์†Œ์™€ ๊ฐ™์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET Core 2.0์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ(.NET Standard ๋ฐ .NET Core 2.0์€ ์žŠ์Œ)?

asp.net core 2.0์˜ ๊ธฐ๋Šฅ์€ ํŠน๋ณ„ํžˆ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2.0 ์›จ์ด๋ธŒ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋” ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. netcoreapp2.0์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ asp.net ์ฝ”์–ด 1.1์ด netstandard2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋ฌด๋„ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 'ํ‘œ์ค€' ๋ฐ ์ง€์›๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๊นŒ?

๊ธฐ๋ณธ์ ์œผ๋กœ 1.1์ด LTS๊ฐ€ ๋œ๋‹ค๋ฉด '๊ธ€์Ž„, ๋‹น์‹ ์€ 2.0 API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค'์™€ ํ•จ๊ป˜ ์ง€๊ธˆ๋ถ€ํ„ฐ 18๊ฐœ์›” ํ›„์— ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•ฉ๋‹ˆ๋‹ค.

asp.net core 2.0์˜ ๊ธฐ๋Šฅ์€ ํŠน๋ณ„ํžˆ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2.0 ์›จ์ด๋ธŒ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋” ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์™€ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. netcoreapp2.0์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ asp.net ์ฝ”์–ด 1.1์ด netstandard2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋ฌด๋„ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 'ํ‘œ์ค€' ๋ฐ ์ง€์›๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๊นŒ?

๋ฌผ๋ก  ํšจ๊ณผ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋‚ด๋‚ด ๋งํ–ˆ๋“ฏ์ด 3๊ฐ€์ง€๊ฐ€ ์˜ค๋Š˜ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ .NET Standard 2.0 ํŒจํ‚ค์ง€๋กœ ์ด์‹๋œ System.Configuration API ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ .NET Core 2.0์—์„œ ASP.NET Core 1.1์„ ์‹คํ–‰ํ•˜๋Š” ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

https://github.com/davidfowl/AspNetCore1OnNetCore2

.NET Core์™€ .NET Framework ์‚ฌ์ด์— ์ž๋™ interop ๊ณ„์ธต์ด ์žˆ๋Š” ๊ฒฝ์šฐ(๋Ÿฐํƒ€์ž„์— ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ํ˜„์žฌ ๊ณ„์ธต์ด ์•„๋‹ˆ๋ผ ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“  ๋‚ด๋ถ€ WebAPI ํ˜ธ์ถœ์ด ์•„๋‹Œ) ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๊ฒƒ์ด ๋” ํ–‰๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ์ข…์˜ ๋ž˜ํผ ("WowNET"?) 4.6 ์ข…์† ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .dll์— ์œ ์ง€ํ•ด์•ผ ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์„ ํฌ์ƒ์‹œํ‚ค๋ฉด์„œ ๋ ˆ๊ฑฐ์‹œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(LOB ์•ฑ์˜ ๊ฒฝ์šฐ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹˜). ์ด๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๋˜ํ•œ ์ด ๋ณ€๊ฒฝ์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด๊ฐ€ ์ˆ˜๋ช… ์ข…๋ฃŒ์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ๋Œ€๋ถ€๋ถ„์˜ API๊ฐ€ .NET Standard๋กœ ์ด๋™๋˜๋ฉด ๋ ˆ๊ฑฐ์‹œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ 1.1์ด LTS๊ฐ€ ๋œ๋‹ค๋ฉด '๊ธ€์Ž„, ๋‹น์‹ ์€ 2.0 API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค'์™€ ํ•จ๊ป˜ ์ง€๊ธˆ๋ถ€ํ„ฐ 18๊ฐœ์›” ํ›„์— ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ํ•ญ์ƒ ๊ฑฑ์ •์ž…๋‹ˆ๋‹ค. ๋Œ€๋‹ต์€ ํ•ญ์ƒ "๊ทธ๊ฒƒ์€ ์˜์กดํ•œ๋‹ค"์ด๋‹ค. ๋ฒ„๊ทธ ์ˆ˜์ •์€ ๊ทธ์— ๋”ฐ๋ผ ๊ฐ€์ค‘์น˜๊ฐ€ ๋ถ€์—ฌ๋˜๋ฉฐ ํฐ ๊ธฐ๋Šฅ์€ ํ•ด๋‹น ๋ฒ„ํ‚ท์— ๋” ์ž์ฃผ ํฌํ•จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@๋กœํ•˜์ธ 

.NET Core์™€ .NET Framework ์‚ฌ์ด์— ์ž๋™ interop ๊ณ„์ธต์ด ์žˆ๋Š” ๊ฒฝ์šฐ(๋Ÿฐํƒ€์ž„์— ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ํ˜„์žฌ ๊ณ„์ธต์ด ์•„๋‹ˆ๋ผ ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“  ๋‚ด๋ถ€ WebAPI ํ˜ธ์ถœ์ด ์•„๋‹Œ) ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๊ฒƒ์ด ๋” ํ–‰๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ์ข…์˜ ๋ž˜ํผ ("WowNET"?) 4.6 ์ข…์† ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ .dll์— ์œ ์ง€ํ•ด์•ผ ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์„ ํฌ์ƒ์‹œํ‚ค๋ฉด์„œ ๋ ˆ๊ฑฐ์‹œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(LOB ์•ฑ์˜ ๊ฒฝ์šฐ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹˜). ์ด๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root ์™€ ๋น„์Šทํ•˜์ง€๋งŒ .NET Core ๋ฐ .NET Framework์šฉ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ASP.NET์ด IIS์—์„œ coreclr์„ ๋ถ€์ŠคํŠธ๋žฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ .NET Framework shim์ธ Helios๋ฅผ ์ง€์›ํ•  ๋•Œ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. COM๊ณผ string[] args๋ฅผ ํ†ตํ•ด Main ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ํ˜ผํ•ฉ๋˜์–ด ์žˆ์ง€๋งŒ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ํ•ดํ‚น์€ ๊ฝค ์ถ”์•…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ. ๋™์ผํ•œ ๋Ÿฐํƒ€์ž„์ด ์•„๋‹ˆ๋ฉฐ ๊ฐœ์ฒด๋ฅผ ์•ž๋’ค๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ถฉ์‹ค๋„๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ 2๊ฐœ์˜ GC, 2๊ฐœ์˜ Jits ํ†ค ๋” ๋งŽ์€ dll์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ”„๋กœ์„ธ์Šค ์™ธ๋ถ€์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์–ป๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ๋ณ€๊ฒฝ์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด๊ฐ€ ์ˆ˜๋ช… ์ข…๋ฃŒ์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ๋Œ€๋ถ€๋ถ„์˜ API๊ฐ€ .NET Standard๋กœ ์ด๋™๋˜๋ฉด ๋ ˆ๊ฑฐ์‹œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๊ธฐ๋Š” ์ปค๋…•. .NET Framework๋Š” Windows ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฏ€๋กœ Windows์˜ ์†๋„๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” .NET Framework 4.7(https://blogs.msdn.microsoft.com/dotnet/2017/04/05/announcing-the-net-framework-4-7/)๊ณผ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค .NET Core๋Š” ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋นจ๋ฆฌ ์ œ๊ณต๋  ์ˆ˜ ์žˆ๊ณ  ์ œ๊ณต๋  ๊ฒƒ์ด๋ฏ€๋กœ API, ๋Ÿฐํƒ€์ž„ ๊ธฐ๋Šฅ ๋“ฑ์ด ๋จผ์ € ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ .NET Standard ๋ฐ .NET Framework์— ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋„์ฐฉํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๋ฟ์ž…๋‹ˆ๋‹ค. .NET Framework๊ฐ€ ์ œ์ž๋ฆฌ์—์„œ ์—…๋ฐ์ดํŠธ๋œ๋‹ค๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํŒ…ํ•  ๋•Œ ๋งค์šฐ ์‹ ์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์ž๋™์œผ๋กœ 10์–ต ๋Œ€์˜ ๋จธ์‹ ์œผ๋กœ ํ‘ธ์‹œ๋  ๋•Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰ . .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‚˜๋ž€ํžˆ ์žˆ์œผ๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ์‹  ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์–ป์œผ๋ ค๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ASP.NET Core 1.x์— ์žˆ๋Š” net4x ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋น„๊ตํ•˜๋ฉด 2.0: EntityFramework 6์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. EFCore์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๊ฐ€๋กœ์ฑ„๊ธฐ/์ˆ˜๋ช… ์ฃผ๊ธฐ ํ›„ํฌ). ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ž ์‹œ ๋™์•ˆ EF6์— ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  @PinpointTownes ์˜ ๊ฒŒ์‹œ๋ฌผ์— ๋”ฐ๋ฅด๋ฉด EF6์€ ํ˜„์žฌ(๊ฐœ๋ฐœ ์ค‘์ธ) ASP.NET Core 2.x ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@nphmuller ๊ทธ๋Ÿฌ๋ฉด ๋” ๋งŽ์€ ์ข…์†์„ฑ์ด ์ด๋™ํ•  ๋•Œ๊นŒ์ง€ ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(EF Core์— ํ•„์š”ํ•œ ํ•ญ๋ชฉ์˜ ์ˆ˜์™€ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค).

@davidfowl ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. ๊ทธ ์‹œ๊ฐ„ ๋™์•ˆ ASP.NET Core 1.x์˜ ์ง€์› ๊ธฐ๊ฐ„์ด ์ง€๋‚˜์ง€ ์•Š์œผ๋ฉด.
์ฃผ์š” ๊ธฐ๋Šฅ์€ ๊ฐ€๋กœ์ฑ„๊ธฐ(์ˆ˜๋ช… ์ฃผ๊ธฐ ํ›„ํฌ)์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์€ ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋กœ์ฑ„๊ธฐ๋Š” ๋ฐฑ๋กœ๊ทธ์— ์žˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ง๊ฐ์€ ๊ทธ๊ฒƒ์ด ํ•œ๋™์•ˆ ๊ตฌํ˜„๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

@gulbanana : ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ์„œ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ asp.net core๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด .net core๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ž์ฒด์˜ ์žฅ์ ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ž์‹ ์„ ์œ„ํ•ด ๋งํ•˜์‹ญ์‹œ์˜ค. .NET Core์˜ ์ฃผ์š” ์ด์ ์€ ์„œ๋ฒ„์˜ Windows์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒ๊ฐ์—, ๋”๋Ÿฌ์šด Mac ์†Œ์œ  ํžˆํ”ผ๋“ค. ๐Ÿ˜

@bradwilson ๊ทธ๋ฆฌ๊ณ , ๋‚ด ์ƒ๊ฐ์—, ๋”๋Ÿฌ์šด Mac ์†Œ์œ  ํžˆํ”ผ๋“ค.

์Šค์Šค๋กœ ๋งํ•˜์„ธ์š”, ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๋Š” ํžˆํ”ผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค ;P

ํ•˜์ง€๋งŒ ์˜ˆ, Windows(๋˜๋Š” ์‹ค์ œ๋กœ IIS ๋ฐ http.sys)๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜๋Š” ๊ฒƒ์€ xcopy ๋ฐฐํฌ, perf ๋“ฑ๊ณผ ํ•จ๊ป˜ .NET Core์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ„๋„์˜ ์„œ๋น„์Šค์—์„œ ์ด์ „ ์ฝ”๋“œ๋ฅผ ๊ฒฉ๋ฆฌํ•˜๊ฑฐ๋‚˜ ASP.NET Core๋กœ ์ด์‹ํ•˜๋ฉด ์ƒˆ๋กญ๊ณ  ๋ฐ˜์ง์ด๋Š” ์ด์œ ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@PinpointTownes ๋Š” ์ฐธ์กฐ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. https://github.com/aspnet/Home/issues/2022#issuecomment -299810945์— ๋”ฐ๋ผ System.Configuration์„ ์ฐธ์กฐํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? EF6์€ ๋ชจ๋“  ๊ฒƒ์ด ye'olde GAC/Full Framework ๋ฒˆ๋“ค์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…์†์„ฑ์ด ์—†๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

@benaadams ๋ฐ @PinpointTownes ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ ๋Š” System.Configuration.ConfigurationManager๊ฐ€ .NET Framework์—์„œ ์˜ˆ์ƒํ•˜๋Š” DLL ์ด๋ฆ„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. System.Configuration์˜ ํฌํŠธ๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

      "system.configuration.configurationmanager/4.4.0-preview2-25308-01": {
        "dependencies": {
          "System.Security.Cryptography.ProtectedData": "4.4.0-preview2-25308-01"
        },
        "runtime": {
          "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {}
        },
        "compile": {
          "ref/netstandard2.0/System.Configuration.ConfigurationManager.dll": {}
        }

์˜ˆ, Windows๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•˜๊ณ  ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ asp.net ์ฝ”์–ด๊ฐ€ ์—†์œผ๋ฉด ์„œ๋ฒ„ ์—์„œ ๋ฌด์—‡์„ ์‹คํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? .net ์ฝ”์–ด์šฉ Nancy๋„ kestrel, UseOwin() ๋“ฑ์„ ํ†ตํ•ด asp.net ์ฝ”์–ด์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐ์—ด์„ ํด๋งํ•˜๋Š” ์ž‘์—…์ž ํ”„๋กœ์„ธ์Šค์™€ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ณต์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋กœ๋“œ๋งต์„ ๋”ฐ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ ์ด์ „์—๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!!
์ด์ „์— ๋งํ–ˆ๋‹ค๋ฉด .NET 4.x ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ์—์„œ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๊ณ„ํš์—๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ASP.NET Core 2๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
.NET 4.x๋„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋ฉด ASP.NET Core 2๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ASP.NET Core 1.x์˜ ์ง€์›์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ฒ„๊ทธ๋งŒ ์ˆ˜์ •ํ•  ๊ณ„ํš์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ๊ณ„ํš์—๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ASP.NET Core 2๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์–ด๋Š ๊ฒƒ?

@PinpointTownes ๋Š” ์ฐธ์กฐ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. #2022(์ฝ”๋ฉ˜ํŠธ)์— ๋”ฐ๋ผ System.Configuration์„ ์ฐธ์กฐํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

<Reference Include="System.Configuration" /> ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด GAC์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์ฆ‰, ๋™์ผํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•จ).

image

System.Configuration์˜ ํฌํŠธ๊ฐ€ ์œ ํšจํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ณต์‹์ ์ธ ๊ฒฐ๋ก ์€ ... System.Configuration ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ .NET Core์—์„œ .NET Framework 4.x์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@PinpointTownes System.Configuration ๋ฒ„์ „์ด ๋ฐฐ์†ก๋˜๊ณ  ์žˆ๋Š”์ง€์กฐ์ฐจ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(ํŒจํ‚ค์ง€์— ์žˆ๋Š” ๋ฒ„์ „). ์•„๋งˆ๋„ ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(corefx์—์„œ ์‹œ์ž‘ํ•˜๋Š” ํ† ๋ก ์ž…๋‹ˆ๋‹ค). ๋‚˜๋Š” ๋‹จ์ง€ ๋‹น์‹ ์˜ ์ƒ˜ํ”Œ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๋ง๊ฐ€์กŒ๋Š”์ง€ ๋งํ•ด์ฃผ๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ฒจ๊ฐ€ GAC์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์ฆ‰, ๋™์ผํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•จ).

AFAIK, SDK ํ”„๋กœ์ ํŠธ์˜ GAC ์ฐธ์กฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์ด ์—†์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•์€ https://github.com/dotnet/sdk/issues/987#issuecomment -286307697์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋”ฐ๋ผ์„œ ๊ณต์‹์ ์ธ ๊ฒฐ๋ก ์€... System.Configuration์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ .NET Core์—์„œ .NET Framework 4.x์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ๊ฒฐ๋ก ์€ ์œ„์—์„œ ์ œ๊ณตํ•œ ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•˜์—ฌ CoreFX์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
EF Core์˜ ์ผ๋ถ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ๋ฐ ๋„์šฐ๋ฏธ๋Š” ํŠนํžˆ ๋งคํ•‘ ๋ฐ์ดํ„ฐ(์ž์ฒด ํฌํ•จ ํ˜•์‹ ๋งคํ•‘)๋ฅผ ์œ„ํ•ด 2.0์—์„œ ๊ณ„ํš๋ฉ๋‹ˆ๋‹ค.
์–ด์จŒ๋“  ๋‚˜๋Š” ASP.NET Core 1.x์˜ ๋กœ๋“œ๋งต์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์•„์ด๋””์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์€ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ๊ฑฑ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๊ณ ๊ตฐ๋ถ„ํˆฌํ•˜๋Š” ํ•œ ๊ฐ€์ง€๋Š” "์•ˆ์ •๋œ ํ”Œ๋žซํผ"๊ณผ "์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ"์ž…๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ์ด ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ํ˜ธํ™˜๋˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” 2.x ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋„ 1.x์— ๋จธ๋ฌผ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.x์—๋Š” ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋งค์šฐ ๋งค๋ ฅ์ ์ธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 1.x์—์„œ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๊นŒ(์ƒˆ๋กญ๊ณ  ๋น›๋‚˜๊ธฐ ๋•Œ๋ฌธ์—)?

@davidfowl ๋‚˜๋Š” signlarR์ด ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ์ด์ „ ํ”„๋กœ์ ํŠธ์—๋Š” ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ๋žŒ๋“ค์ด ์ฝ”์–ด๋กœ ์ „ํ™˜ํ•  ์ค€๋น„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ asp.net 1.1์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•œ๋‹ค๋ฉด 1.1(2018?)์— ๋Œ€ํ•œ ์ง€์› ๊ธฐ๊ฐ„์ด ๋น„๊ต์  ์งง๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์„ ์กฐ๊ธˆ ์ง„์ •์‹œํ‚ฌ ํŒจ์น˜๋ฅผ ์œ„ํ•ด ๋ฎ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ .net core 2.0์—์„œ asp.net core 1.1 ์ง€์›์„ ๋” ๊ฐ•์กฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ข‹์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. asp.net 5 on 46 >asp.net core 1.x on 46 > .net core 2.0์˜ asp.net core 1.x > .net core 2์˜ asp.net core 2. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฑฑ์ •ํ•˜๋Š” ์œ„ํ—˜์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ฒซ๋‚ ๋ถ€ํ„ฐ ์ด๊ฒƒ์„ ๋”ฐ๋ฅด๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ† ๋ก ๊ณผ ์„ค๋ช… ํ›„์—๋„ ( @davidfowl ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ) ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ฒ„์Šค ์•„๋ž˜์— ๋˜์ ธ์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค.

Full/desktop .NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋Š์Šจํ•˜๊ฒŒ ์ž˜๋ผ์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์  ์žฅ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ASP.NET์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ, ์ฒ˜์Œ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์šฐ๋ฆฌ ๊ณ ๊ฐ๋“ค์€ ๋‘ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ชจ๋‘์—์„œ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ถˆํ‰ํ•  ๊ฒƒ์ด์ง€๋งŒ ์ €๋Š” "์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ์ฒœ์ฒœํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๊ต์ฒดํ•˜๋Š” ๋ฐ ํˆฌ์žํ•ฉ๋‹ˆ๋‹ค"์— ๋ฒ ํŒ…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค "์ƒˆ ๋ฐ˜์ง์ด๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ฑฐ์ง“์ž„์„ ์•Œ์•„๋‚ด์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฒ˜์Œ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ถ”์ธก:

.NET Core 1.x์—์„œ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์™„์ „ํžˆ ์ค‘๋‹จ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.NET Core 2.x์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  .NET Standard 1.x - 2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

.NET Core 2.0์—์„œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋Š” dotnet/corefx ์— ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” "ํด๋ผ์šฐ๋“œ์˜ ์ตœ์‹  ์›น ์•ฑ"์ด๋ฉฐ, ์ข…์ข… ํƒ€์‚ฌ ์ข…์†์„ฑ์ด ๋งŽ์ง€ ์•Š์€(๋˜๋Š” "์ฝ”๋“œ์ผ ๋ฟ"์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค).

์ง€๊ธˆ๊นŒ์ง€ ๋Œ€๋ถ€๋ถ„์˜ ๋…ผ์˜๋Š” BCL ๊ฐ€์šฉ์„ฑ์— ์ค‘์ ์„ ๋‘์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด .NET ํ™˜๊ฒฝ์—์„œ ์ข…์ข… ๋’ค์ฒ˜์ง€๊ณ  ๊ฑฐ์˜ ํ•ญ์ƒ ๋’ค๋–จ์–ด์ง€๋Š” ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ(์˜ˆ: ๋ณต์žกํ•œ ๋น„๋””์˜ค, ์˜ค๋””์˜ค ํ•˜์œ„ ์‹œ์Šคํ…œ๊ณผ์˜ ๋‚ฎ์€ ์ˆ˜์ค€ ํ†ตํ•ฉ)์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ธฐ์ˆ ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core 1์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์œผ๋ฉฐ Libs์šฉ .NET ํ‘œ์ค€์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ์„œ๋น„์Šค ์ข…์†์„ฑ์— ๋”ฐ๋ผ ์ „์ฒด .NET ๋˜๋Š” .NET Core์— ๋ฐฐํฌํ•˜๋„๋ก ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ/๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ ์ „์ฒด .NET์„ ์‰ฝ๊ฒŒ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ๋‚ด๊ธฐ๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Full .NET์— ๋จธ๋ฌด๋ฅด๋Š” ๊ฒƒ์€ ๋ช‡ ๋…„ ์•ˆ์— ํ”ผํ•ด์•ผ ํ•  ๊ฒฐ์ •์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฅ๊ธฐ ํ”Œ๋žซํผ์— ๋ฒ ํŒ…ํ–ˆ์Šต๋‹ˆ๋‹ค.

_.NET Core 2.x์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  .NET Standard 1.x - 2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค._

@benaadams ๋Œ€๋ถ€๋ถ„์˜ BCL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ Full .NET์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ(๋‚ด๋ถ€์ ์œผ๋กœ .NET Standard 2.0/์œ ํ˜• ํ†ตํ•ฉ์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ) ์‚ฌ์ด์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์ด ASP.NET 4์—์„œ ASP.NET Core 2.0์œผ๋กœ ์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?
๋‚ด๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋งŽ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ASP.NET Core 2.0์œผ๋กœ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ ASP.NET Core์— ๋Œ€ํ•œ OWIN/Katana ์ง€์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋™์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. @damianh ๋Š” https://github.com/aspnet/AspNetKatana/issues/27 ์—์„œ ์œ ์‚ฌํ•˜๊ฒŒ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

EF6(๊ณต๊ฐ„์šฉ) ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ ์ ˆํ•œ SignalR์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค(ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ž‘๋™ํ•จ). ๋‚˜๋Š” ํ•œ๋™์•ˆ ๋‹ค๋ฅธ ์ฐจ๋‹จ๊ธฐ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋” ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ์šฐ๋ฆฌ๋Š” ์ด์ œ asp.net core 2.0์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ๋‚˜์˜ฌ ๋•Œ signalr๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ด ์ฐจ๋‹จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” dnx, RC1์—์„œ RC2๋กœ, json์„ csproj๋กœ ์˜ฎ๊ธด ํ›„ ๋งˆ์นจ๋‚ด ์šฐ๋ฆฌ๊ฐ€ ์ˆฒ์„ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค... ์ง€๊ธˆ์€ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ณ€ํ™”๊ฐ€ ๊ฒฐ๊ตญ ์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ asp.net ์ฝ”์–ด๊ฐ€ ๊ฒฌ์ธ๋ ฅ์„ ์–ป์œผ๋ ค๊ณ  ํ•  ๋•Œ ์ •๋ง๋กœ ์ง€๊ธˆ์ด ๊ทธ๊ฒƒ์„ ํ•  ๋•Œ์ž…๋‹ˆ๊นŒ? ๋˜ํ•œ ๋‚ด ์ง๊ฐ์— ๋”ฐ๋ฅด๋ฉด EF Core๋Š” ์•„์ง ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์•˜๊ณ (๊ทธ๋ฆฌ๊ณ  ํ™•์‹คํžˆ ๊ณต๊ฐ„์ ์œผ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Œ) ์ฝ”์–ด ์ง€์›์— ๋ฒ ํŒ…ํ•˜๋Š” ์‚ฌ๋žŒ์€ libs ์ด์‹๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋” ๋งŽ์€ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.... ์ด ์ „ํ™˜์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹ ํ˜ธ r์€ ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ  EF Core ๋ฐ ๊ธฐํƒ€ ํฌํŠธ๊ฐ€ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ๋Š” ์•ฝ๊ฐ„์˜ ์•ˆ์ •์„ฑ๊ณผ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—…์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ asp.net ์ฝ”์–ด(๊ทธ๋Ÿฐ๋ฐ ํ›Œ๋ฅญํ•จ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ์™€ ๋น„์Šทํ•œ ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core์šฉ ๊ณ ์† ์—ด์ฐจ๋กœ์˜ ์ด๋™์„ ๊ฐ์•ˆํ•  ๋•Œ LTS ๋ฐ ํ˜„์žฌ ๋ฒ„์ „์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด ์ธ์Šคํ„ด์Šค์˜ ์ง€์› ๊ธธ์ด๋Š” ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‚ด๊ฐ€ netfx์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์—†๋Š” ๋ฏธ๊ฐœ๋ฐœ ์†”๋ฃจ์…˜์„ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ์šด์ด ์ข‹์€ ๊ฒฝ์šฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ•ญ์ƒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๋‚ด๊ฐ€ netfx๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” Windows ์„œ๋น„์Šค์ด์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ณ€ํ™”๊ฐ€ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋‚€๋‹ค. netstandard๊ฐ€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ํ•ต์‹ฌ ๋…์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ•ต์‹ฌ ์ „์šฉ ๊ฒฝ๋กœ๋กœ ๊ฐ€๋Š” ๊ฒƒ์€ ๋ถ„์—ด๋œ ์ƒํƒœ๊ณ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฏธ๋„๋Ÿฌ์šด ๊ฒฝ์‚ฌ์ž…๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋‚ด๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ์ง„์ˆ ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. netcoreapp๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ๋‚ด ์˜๊ฒฌ์„ ์“ฐ๊ณ  ์‹ถ์—ˆ๋‹ค.

.net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .net ํ”„๋ ˆ์ž„์›Œํฌ + .net ์ฝ”์–ด๋ฅผ ํ•จ๊ป˜ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค ๋ฌธ์ œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด ๊ฒฐ์ •์ด AspNet Core๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์กฐ๊ธˆ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํšŒ์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ".net ์ฝ”์–ด๋กœ AspNet Core๋ฅผ ์‹œ์ž‘ํ•ฉ์‹œ๋‹ค.. ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ–ฅํ›„ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ) ํ•ญ์ƒ .net ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ๋Š” ๋” ์ด์ƒ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ธฐ์—…์€ AspNet Core๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์ฃผ์ €ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด .netstandard์˜ ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@hikalkan

์ผ๋ถ€ ํšŒ์‚ฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ".net ์ฝ”์–ด๋กœ AspNet Core๋ฅผ ์‹œ์ž‘ํ•ฉ์‹œ๋‹ค.. ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(์˜ˆ: ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ–ฅํ›„ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ) ํ•ญ์ƒ .net ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

ํ•˜์ง€๋งŒ ํ•ญ์ƒ ASP.NET Core 1.1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ด ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด .netstandard์˜ ๊ฐ€์น˜๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿด์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ๊ต์ฐจ ์ ˆ๋‹จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ .NET Standard์™€ ๋ชจ๋“  .NET ๊ตฌํ˜„์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” API๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก , ๊ทธ๋“ค์€ asp.net core 1.1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ "ASP.NET Core์˜ ์ตœ์‹  ๋ฒ„์ „์€ 2.x์ด์ง€๋งŒ .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋ฉด ASP.NET Core 1.x๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "MVC 5.x ์‚ฌ์šฉ"์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :)

๋‚˜๋Š” .net ํ•ต์‹ฌ์ด ๋ฏธ๋ž˜๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ(๋ฏธ๋ž˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ์ด๋ผ๋„!) .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ค‘๋‹จํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฐ์ •์€ .net ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ดํ•ด๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

ํ•˜์ง€๋งŒ ํ•ญ์ƒ ASP.NET Core 1.1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ช…ํ™•ํ•œ ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์•„์ง ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ธฐ์ž…๋‹ˆ๋‹ค.
๋‘˜์งธ, ASP.Net Core์˜ ๊ฐœ๋ฐœ์ž๋Š” ์˜ค๋ž˜๋œ ๋„๊ตฌ๋กœ ์ž‘์„ฑํ•˜๊ณ  ๋’ค์— ๋จธ๋ฌผ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ASP.Net Core, Dapper ๋“ฑ์˜ ๋ฏธ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์—์„œ ์™„์ „ํžˆ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด 4.6 ์–ด์…ˆ๋ธ”๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์ฝ์€ ๊ฒƒ์ฒ˜๋Ÿผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ์ดํ•ดํ–ˆ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  2. ์‹œ๊ทธ๋„R . DirectoryServices, MS ์˜ฌ๋ฆฌ์–ธ์Šค, Azure.
  3. ์œ„์˜ ๋Œ€ํ™”์™€ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ UWP ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” UWP์˜ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€๋กœ Kestrel ๋˜๋Š” ๊ธฐํƒ€ HttpListener๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ASP.Net Core๋ฅผ ๋กœ์ปฌ๋กœ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜์‚ฌ ์†Œํ†ต์— ๊ฝค ์‹ค๋งํ–ˆ๋‹ค๊ณ  ๋งํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ๊ฒฐ์ •๊ณผ ํ•จ๊ป˜ ์‚ด ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์•„๋ฌด๋ฐ๋„ ๋‚˜์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

7์›”์— ์šฐ๋ฆฌ ํŒ€์€ .NET Core์—์„œ ์ˆ˜๋…„๊ฐ„ ์ฝ์–ด์˜จ ๋ฉ‹์ง„ ๋‚ด์šฉ์„ ๋ชจ๋‘ ํฌํ•จํ•˜์—ฌ ASP.NET Core 2.0์—์„œ ์‹คํ–‰๋  ๋ฏธ๊ฐœ๋ฐœ 12-18๊ฐœ์›” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋™์•ˆ ์šฐ๋ฆฌ๋Š” .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋ž˜ํผ ์—ญํ• ์„ ํ•˜๋Š” ๊ธฐ์กด ์ œํ’ˆ์˜ ์ค‘์‹ฌ์ธ ASP.NET MVC Core 1.0 ์•ฑ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋“ค์˜ ๊ณ„ํš์ด ์•ฑ์„ ASP.NET MVC Core 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  .NET Framework ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ต์ฒดํ•  ๋•Œ ์ƒˆ ์•ฑ์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ๊ณ„ํš์ž„์„ ํŒ€๊ณผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์™„๋ฃŒํ•˜๊ธฐ ์ „์— EOL๋  ASP.NET MVC Core 1.0์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์˜๊ฒฌ์„ ๋…ผํ•˜๊ธฐ ์ง์ „์— ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
ASP.NET Core๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๋ฉด
.Net 4.5 ์ด์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” dll์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ˜„์žฌ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@louislewis2 ์•„๋‹ˆ์š”, ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. $ netstandard2.0 ์ง€์›๋˜๋Š” API ๊ณต๊ฐ„ ๋‚ด์— ์žˆ๋Š” ํ•œ net45 - net461 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@bradwilson ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์˜ค๋Š˜ ๋ฐค์— ํ™•์‹คํžˆ ์ž ์„ ๋” ์ž˜ ์ž˜ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์•„์ฃผ ์•ˆ์‹ฌ์ด ๋ฉ๋‹ˆ๋‹ค :)

@shanselman @DamianEdwards @davidfowl ์•„์ง ์ด์‹๋˜์ง€ ์•Š์€ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ญ๋ชฉ ๋ชฉ๋ก์€ system.management dll์— ์žˆ๋Š” ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ํ•˜๋“œ์›จ์–ด ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹๋ณ„์ž๋Š” Azure Service Bus์™€ ์ „์ฒด โ€‹โ€‹๋ผ์ด์„ ์Šค ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ž๋™ ๋งํฌ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ API๊ฐ€ ์•„๋‹Œ ์ƒํƒœ์—์„œ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

https://github.com/dotnet/corefx/issues/3324
https://github.com/dotnet/corefx/issues/14762

์ด๊ฒƒ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์•ฑ์„ ๊ณ„์† ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๋ฅผ ๊ณค๋ž€ํ•œ ์ƒํ™ฉ์— ๋น ๋œจ๋ฆฝ๋‹ˆ๋‹ค.

์ €๋Š” ์šฐ๋ฆฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Kestrel(๋ ˆ๊ฑฐ์‹œ ํ˜ธํ™˜์„ฑ ์ด์œ ) ์œ„์— ์žˆ๋Š” ASP.Net 4.5 ์ž์ฒด ํ˜ธ์ŠคํŒ… ํ”„๋กœ์„ธ์Šค์—์„œ ์ „์ฒด ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.Net Core 1.x๋กœ ์ด์‹ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์—๋Š” ๊ทธ๋Ÿด๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ธํ”„๋ผ์˜ ์ผ๋ถ€์ด๋ฉฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋Š” ๋งŽ์€ ํ•˜๋“œ Windows ์ข…์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” NTLM ์ธ์ฆ, ์ด๋ฒคํŠธ ๋กœ๊ทธ ๋กœ๊น… ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ASP.Net Core 2.x๊ฐ€ netstandard ์ง€์›์—์„œ ๋ฒ—์–ด๋‚˜๋ฉด ์•„์˜ˆ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ ๊ทน์ ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์™„์ „ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€์•ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Katana๋Š” ์ฃฝ๊ณ  ๋Š๋ฆฝ๋‹ˆ๋‹ค(๋น„๊ตํ•˜์—ฌ).

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ .Net Framework์šฉ Kestrel๋งŒํผ ๋น ๋ฅธ HTTP ์„œ๋ฒ„๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ASP.Net์ด ์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋‚˜์™€ ๊ฐ™์€ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ๊ณ ๊ฐ์„ ๋’ค๋กœํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ์— ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ์ŠคํŒฌ๊ณผ ๊ฐ™์€ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. netstandard2.0์ด ์•„๋‹Œ netcoreapp2.0์— ์žˆ๋Š” ASP.Net Core 2.x์—์„œ ์‚ฌ์šฉํ•˜๋Š” API๋Š” ๋ฌด์—‡์ด๋ฉฐ ๊ทธ ๋™์•ˆ ํ•ด๋‹น API๋ฅผ netstandard2.0 ํ™•์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MS๊ฐ€ ์ด ํ‘œ์ค€์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฃผ๋ ฅ ์ œํ’ˆ์„ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ฑธ์ณ (์ˆœ) ํ‘œ์ค€ ์ž‘์—…์— 2๋…„์„ ๋ณด๋ƒˆ๋‹ค๊ณ  ์ง„์ง€ํ•˜๊ฒŒ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— GitHub ํŒ€์—์„œ ๋ฌธ์ œ ์„น์…˜์— ๋Œ€ํ•œ ํŽ˜์ด์ง€ ๋งค๊น€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@mattnischan

์ €๋Š” ์šฐ๋ฆฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ Kestrel(๋ ˆ๊ฑฐ์‹œ ํ˜ธํ™˜์„ฑ ์ด์œ ) ์œ„์— ์žˆ๋Š” ASP.Net 4.5 ์ž์ฒด ํ˜ธ์ŠคํŒ… ํ”„๋กœ์„ธ์Šค์—์„œ ์ „์ฒด ์ž์ฒด ํ˜ธ์ŠคํŒ… ASP.Net Core 1.x๋กœ ์ด์‹ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์—๋Š” ๊ทธ๋Ÿด๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์Šคํƒ์— ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ์ŠคํŒฌ๊ณผ ๊ฐ™์€ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ netstandard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. netstandard2.0์ด ์•„๋‹Œ netcoreapp2.0์— ์žˆ๋Š” ASP.Net Core 2.x์—์„œ ์‚ฌ์šฉํ•˜๋Š” API๋Š” ๋ฌด์—‡์ด๋ฉฐ ๊ทธ ๋™์•ˆ ํ•ด๋‹น API๋ฅผ netstandard2.0 ํ™•์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

.NET Framework์— ์—†๋Š” API๊ฐ€ .NET Standard์— ๋‚˜ํƒ€๋‚˜๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@stefan2410

ASP.NET Core 1.x๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ASP.NET Core 2.0 ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ SignalR์ž…๋‹ˆ๊นŒ?

ํ–ฅํ›„ 2๋…„ ๋™์•ˆ ์•ฑ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋˜ ์™„๋ฃŒ๋˜๋ฉด .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•ด๋‹น .NET Core๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋“ฑ์„ ๋‘ ์•ฑ ๊ฐ„์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2018๋…„ 7์›”์ด ASP.NET MVC Core 1.0 ์ง€์› ๋งˆ๊ฐ์ผ์ด๋ฏ€๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ, ๊ฐ€์ƒ์˜ ์„ธ๊ณ„์—์„œ 1.x์˜ ์ˆ˜๋ช…์„ ์—ฐ์žฅํ•ฉ๋‹ˆ๋‹ค.

์•ฑ์„ ASP.NET MVC Core 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  .NET Framework ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ต์ฒดํ•  ๋•Œ ์ƒˆ ์•ฑ์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
Core 2.0์€ .NET Framework๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ASP.NET Core 2.0์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด .NET Core 2.0์ธ๊ฐ€์š”?

.NET Framework์— ์—†๋Š” API๊ฐ€ .NET Standard์— ๋‚˜ํƒ€๋‚˜๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ๊ณ„ํš์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋“ค์–ด๊ฐˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์‹œ๊ฐ„ ๋ฌธ์ œ๋ผ๊ณ  ์•ž์„œ ๋ง์”€ํ•˜์…จ์ฃ ? ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ผ์ •๋Ÿ‰๋งŒํผ ๋ธ”๋ฆฌ๋”ฉ ์—ฃ์ง€๋ฅผ ์ง€์—ฐ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ์–ด๋„ ์˜๊ตฌ์ ์œผ๋กœ ๋’ค์ฒ˜์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

@davidfowl
ASP.Net core 2.0์œผ๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํŒ€์—๊ฒŒ ์ง„ํ™” ๋’ค์— ๋จธ๋ฌผ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ASP.Net Core๋ฅผ ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค.
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง 4.6 ์–ด์…ˆ๋ธ”๋ฆฌ ์ฐธ์กฐ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ํ•œ.
Azure/Amazon ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, MS Orleans ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ SignalR, DirectoryServices๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ์œ„์˜ ๋Œ€ํ™”์™€ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด UWP ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ UWP์˜ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€๋กœ Kestrel/HttpListener๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ASP.Net Core๋ฅผ ๋กœ์ปฌ๋กœ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
XAML์šฉ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ Electron์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ๊ธฐ๊ฐ„ ๋™์•ˆ? ์ด๋ฒคํŠธ ๋กœ๊ทธ๊ฐ€ netstandard๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

.NET Framework์— ์—†๋Š” API๊ฐ€ .NET Standard์— ๋‚˜ํƒ€๋‚˜๋ฉด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ด๊ฒŒ ์ผ์ด์•ผ? netstandard20์€ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์—ฌ์ „ํžˆ net461์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. netstandard20์˜ API๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์•„์ง ๊ณต๊ฐœ๋˜์ง€ ์•Š์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋„˜์–ด netstandard๋ฅผ ์ด๋™ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ๊ณ„ํš์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋“ค์–ด๊ฐˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์‹œ๊ฐ„ ๋ฌธ์ œ๋ผ๊ณ  ์•ž์„œ ๋ง์”€ํ•˜์…จ์ฃ ? ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ผ์ •๋Ÿ‰๋งŒํผ ๋ธ”๋ฆฌ๋”ฉ ์—ฃ์ง€๋ฅผ ์ง€์—ฐ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ์–ด๋„ ์˜๊ตฌ์ ์œผ๋กœ ๋’ค์ฒ˜์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ‘œ์ค€ ์œ„์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ์ž์ฒด์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  .NET ๊ตฌํ˜„์—์„œ ์ฑ„ํƒํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • .NET Standard๋Š” ๊ฐ€์žฅ ๋Š๋ฆฐ ๊ตฌํ˜„ ์†๋„๋กœ ๋ฐœ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • .NET Standard๋Š” ๋‹ค๋ฅธ ์†๋„๋กœ ๋ฐœ์ „ํ•  ๊ฒƒ์ด๋ฉฐ .NET Framework๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋ ค๋Š” .NET Standard ๋ฒ„์ „์„ ์„ ํƒํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์ฃผ์˜ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ„์˜ ๋Œ€ํ™”์™€ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด UWP ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ UWP์˜ ๋ฐ์Šคํฌํ†ฑ ๋ธŒ๋ฆฌ์ง€๋กœ Kestrel/HttpListener๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ASP.Net Core๋ฅผ ๋กœ์ปฌ๋กœ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

UWP์˜ ASP.NET Core๋Š” ํ˜„์žฌ ๋กœ๋“œ๋งต์— ์—†์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. HttpListener ๋Š” .NET Standard 2.0์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ์ž‘๋™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์—ฌ๊ธฐ์—์„œ ์˜๊ฒฌ๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ๊ธธ์„ ์ฐพ๋Š” ๋™์•ˆ ๋‹น์‹ ์˜ ์ธ๋‚ด์™€ ํ•จ๊ป˜ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ฒฝ๊ณ  ์—†์ด ๋„ˆ๋ฌด ํž˜๋“ค๊ณ  ๋„ˆ๋ฌด ๋Šฆ์„ ์˜๋„๊ฐ€ ์•„๋‹ˆ์—ˆ์Œ์„ ์•Œ์•„ ์ฃผ์‹ญ์‹œ์˜ค. ์‚ฌํ›„ ํŒ๋‹จ์€ 20/20์ด๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค๋ฉด ๋” ์ผ์ฐ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋” ์—ด์‹ฌํžˆ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ฃผ ํ›„๋ฐ˜์— 2.0.0-preview1 ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ๋ฐœํ‘œ๋กœ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์—ฌ๊ธฐ์—์„œ ๋ฐ›์€ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๊ณ„ํš์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์—ฌ๊ธฐ์—์„œ ๊ณ„์†ํ•ด์„œ ๊ท€ํ•˜์˜ ์ƒ๊ฐ๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

  • .NET Framework์—์„œ ASP.NET Core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ตœ์†Œ 1๋…„ ๋” ์—ฐ์žฅ๋ฉ๋‹ˆ๋‹ค(2019๋…„ 7์›”๊นŒ์ง€). ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋งค๋…„ ์žฌํ‰๊ฐ€ํ•˜๊ณ  ASP.NET Core 1.x ์ง€์›์„ ์ข…๋ฃŒํ•˜๊ธฐ 12๊ฐœ์›” ์ „์— ํ†ต์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ 2018๋…„ 7์›”๊นŒ์ง€ 2020๋…„ 7์›”๊นŒ์ง€ 12๊ฐœ์›” ๋” ์—ฐ์žฅํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐœํ‘œํ•  ์˜ˆ์ • ์ž…๋‹ˆ๋‹ค). ์ด๋ฏธ 2020๋…„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ผ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”? ์ข‹์•„์š”, ์ €๋งŒ์š”. )
  • ์ƒˆ๋กœ์šด SignalR์€ ASP.NET Core 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ์™„์ „ํžˆ ์ง€์›๋ฉ๋‹ˆ๋‹ค(์˜ฌํ•ด ๋ง ์ถœ์‹œ ์˜ˆ์ •).
  • System.Web ์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ์–ธ์–ด ๋ฒ„์ „ ๋“ฑ์„ ์ง€์›ํ•˜๋„๋ก ASP.NET Core 1.x๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • .NET Core 1.x์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 1.x๋Š” 2018๋…„ 7์›”๊นŒ์ง€ ์ง€์›๋ฉ๋‹ˆ๋‹ค(๋ณ€๊ฒฝ ์‚ฌํ•ญ ์—†์Œ).
  • .NET Framework์˜ ASP.NET Core 1.x๊ฐ€ ์ง€์›๋˜๋Š” ํ•œ .NET Core 2+์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 1.x๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

    • ์ด๋Š” .NET Framework์—์„œ ์‹คํ–‰์„ ์ง€์›ํ•˜๋Š” ๋™์•ˆ ์ง€์›๋˜๋Š” .NET Core์—์„œ ์ง€์›๋˜๋Š” ASP.NET Core๊ฐ€ ํ•ญ์ƒ ๊ฒน์น˜๋„๋ก ํ•˜์—ฌ ๊ณ ๊ฐ์ด ์ง€์›๋˜๋Š” ๋น„ํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • .NET Core 1.x ์ง€์›(๋Ÿฐํƒ€์ž„)์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2018๋…„ 7์›”์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ASP.NET Core 1.x๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ณ ๊ฐ์€ ํ•ด๋‹น ์‹œ์ ์—์„œ .NET Core 2.0์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ .NET Framework์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” .NET Core 2.0์—์„œ ASP.NET Core 2.0์œผ๋กœ ์ด๋™).
  • ์˜ฌํ•ด System.DirectoryServices ๋ฐ System.Drawing ๋ฅผ .NET Core๋กœ ์ด์‹ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ๊ทธ ์ดํ›„์— .NET Core๋กœ ์ด์‹ํ•  ํ•ญ๋ชฉ ๋ชฉ๋ก์—๋Š” ํ˜„์žฌ ServiceBase (.NET Core Windows ์„œ๋น„์Šค ์ง€์›)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํƒ€์ž„๋ผ์ธ ์™ธ์—๋Š” ์•„์ง ํƒ€์ž„๋ผ์ธ์ด ์—†์Šต๋‹ˆ๋‹ค(๋ชฉ๋ก์„ ์ž‘์—…ํ•˜๋ฉด์„œ ํƒ€์ž„๋ผ์ธ์ด ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ํ‘œ์‹œ๋จ). ๊ณ ๊ฐ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด ๋ชฉ๋ก์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜„์žฌ System.ServiceModel (์„œ๋ฒ„ ์ธก WCF)๋ฅผ .NET Core๋กœ ์ด์‹ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. .NET Core์šฉ WCF๋Š” ๊ณ„์† ํ–ฅ์ƒ๋˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ(์˜ˆ: HTTP ๋ฉ”์‹œ์ง€ ์•”ํ˜ธํ™”)์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@DamianEdwards @davidfowl ๋ฌธ์ œ์˜ ํฐ ๋ถ€๋ถ„์€ ์ˆ˜๊ฐœ์›”์˜ ๊ณ„ํš๊ณผ ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์กฐ์ง์ด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋Š” ASP.NET Core๋กœ ์ด์ „ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋ง‰๋Œ€ํ•œ ๊ธฐํšŒ ๋น„์šฉ์„ ํฌ์ƒํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET 4.x๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ ์ข…์†์„ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํ”Œ๋žซํผ์ด๊ธฐ ๋•Œ๋ฌธ์—.

์ง€๊ธˆ๊นŒ์ง€ MS๋Š” ASP.NET 4.x์˜ ๊ฐœ๋ฐœ์ด ์ค‘๋‹จ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ํ–ฅํ›„ ๋ชจ๋“  ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์ด ASP.NET Core์— ํˆฌ์ž๋ ์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ถˆํ™•์‹คํ•œ ASP.NET์˜ ๋ฏธ๋ž˜๋กœ .NET Core๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๋งˆ์ผ€ํŒ…ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ชจ๋“  ๋…ธ๋ ฅ์˜ ๊ฒฐ๊ณผ๋กœ EOL'๋œ ํ”Œ๋žซํผ์œผ๋กœ ํšจ๊ณผ์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ๊ฒฝ์šฐ ๋ฒ„์Šค ์•„๋ž˜๋กœ ๋˜์ ธ์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” .NET Core๋กœ์˜ ์ „ํ™˜์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ํฐ ์—ญํ• ์„ ํ•œ ๊ฐœ๋ฐœ์ž/์ปจ์„คํ„ดํŠธ์™€ ์กฐ์ง ๋ชจ๋‘์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ASP.NET Core 2.0์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์žˆ๊ณ  ๋ชจ๋“  ๋…ธ๋ ฅ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ IMO๊ฐ€ .NET์˜ ๊ฐ€์žฅ ํฐ ์ž์‚ฐ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•  ๋•Œ ๊ธฐ์กด "๋ ˆ๊ฑฐ์‹œ" ์ฝ”๋“œ๊ฐ€ ์ฑ…์ž„์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ .NET Core๋Š” ๊ทธ๋‹ค์ง€ ๋งค๋ ฅ์ ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. . Java๋Š” ์–ธ์–ด ์ž์ฒด์˜ ๊ณ ์œ ํ•œ ์•ฝ์ ๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ JVM์˜ ๋ฐฉ๋Œ€ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์ƒํƒœ๊ณ„๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

MS๊ฐ€ ๋ฐœํ‘œ๋  ๋•Œ๊นŒ์ง€ ๋„๋ฆฌ ์•Œ๋ ค์ง€์ง€ ์•Š์€ .NET 4.x ์ง€์› ์ค‘๋‹จ์œผ๋กœ ์ธํ•œ ๋ฐ˜๋ฐœ์„ ๋Š๋ผ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub ๊ฐœ๋ฐœ์„ ์ ๊ทน์ ์œผ๋กœ ๋”ฐ๋ฅด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋ณด๋Š” ๋ฐ ๋” ๊ด€์‹ฌ์ด ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ์žˆ๊ณ  ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์— ๋Œ€ํ•œ ์›ํ™œํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งค์šฐ ๋†€๋ž์ง€๋งŒ ๋ฐœํ‘œ๋œ ํ›„ ์ด ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด ์—ด์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋งˆ๋„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋กœ ์ธํ•ด ์ƒ์ฒ˜๋ฅผ ๋ฐ›์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์ด ์˜ณ์€ ๊ฒฐ์ •์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core 2.0 ์•ˆ์ •/ํ˜ธํ™˜ ๋ฆด๋ฆฌ์Šค์— ์ดˆ์ ์„ ๋งž์ถ˜ ๋‹ค์Œ ํ›„์† ๋ฒ„์ „์˜ .NET Core ์ „์šฉ ๋ฏธ๋ž˜๋ฅผ ๋ฐœํ‘œํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ „ํ˜€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ ์ด ์ƒํ™ฉ์—์„œ ํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•œ ์ผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@DamianEdwards ์—…๋ฐ์ดํŠธ์™€ ๋ช…ํ™•ํ•œ ๊ณ„ํš์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋™์˜ํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋ฐฐ์น˜ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์—ฌ์ „ํžˆ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 1.x์— ๋Œ€ํ•œ ํฌํŠธ๋Š” ๊ฑฐ์˜ ์™„์ „ํžˆ ์ธก๋ฉด ํฌํŠธ์ด๋ฉฐ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. 2.x๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์น˜ ์žˆ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์žˆ๋Š” ๊ณณ์ด๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด 1.x๋กœ ํฌํŒ…ํ•˜๋Š” ๋ฐ์—๋งŒ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„, ๋น„์šฉ ๋ฐ ๋…ธ๋ ฅ์„ ์†Œ๋น„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ ํšŒ์‚ฌ์™€ ๊ทธ๋Ÿฐ ๋„๋ฐ•์„ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ASP.NET 4.x์—์„œ ์ง€์›ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ ์€ ์ง€์›์„ ๋ฐ›๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ์šฐ๋ฆฌ ์•ฑ์€ ASP.NET Core๋กœ ์ด๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•œ dogfood ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ํ›จ์”ฌ โ€‹โ€‹๋” ๋‚˜๋น ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์„ ์žฌ๊ณ ํ•˜์‹œ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ .NET Core ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์„ ๋•๊ธฐ ์œ„ํ•ด ํ—Œ์‹ ํ•œ ์ˆ˜์ฒœ ์‹œ๊ฐ„์˜ ๊ฐœ์ธ ์‹œ๊ฐ„์„ Stack Overflow์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@NickCraver

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด 1.x๋กœ ํฌํŒ…ํ•˜๋Š” ๋ฐ์—๋งŒ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„, ๋น„์šฉ ๋ฐ ๋…ธ๋ ฅ์„ ์†Œ๋น„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ ์ „์ฒด์—์„œ System.DirectoryServices๋ฅผ ํ•ต์‹ฌ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋กœ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ์ ˆ๋Œ€ ์ด์‹๋˜์ง€ ์•Š์„ ์ข…์†์„ฑ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. 2.0์ด .NET Framework๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์ด 1๋…„ ์•ˆ์— ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

2.x๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์น˜ ์žˆ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์žˆ๋Š” ๊ณณ์ด๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋Š ๊ฒƒ? ์ „ํ™˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core 1.1๋กœ ๋‹ค์‹œ ํฌํŒ…ํ•˜๋Š” ์ค‘์š”ํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ ์šฐ๋ฆฌ ์•ฑ์€ ASP.NET Core๋กœ ์ด๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด์— ๋Œ€ํ•œ dogfood ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ํ›จ์”ฌ โ€‹โ€‹๋” ๋‚˜๋น ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” stackoverflow.com์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด์ง€๋งŒ ASP.NET Core๋ฅผ ์ผ๋ถ€ ๋ถ€๋ถ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฐ์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ("๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค)?

@mythz

์ด๋Š” ์กฐ์ง๊ณผ .NET Core๋กœ์˜ ์ „ํ™˜์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ํฐ ์—ญํ• ์„ ํ•œ ๊ฐœ๋ฐœ์ž/์ปจ์„คํ„ดํŠธ ๋ชจ๋‘์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET Core๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” .NET ์ฝ”์–ด?

@davidfowl ASP.NET Core๋ฅผ ์˜๋ฏธํ–ˆ์ง€๋งŒ ASP.NET Core/.NET 4.x์—์„œ ๋จผ์ € ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ๋‹ค์Œ ๋‚˜์ค‘์— .NET Core์—์„œ ๋‹จ๊ณ„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ„ํšํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๋งํ•˜์ž๋ฉด ASP.NET Core/.NET Core์—๋Š” SAML์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ IdP๋ฅผ ํ†ตํ•ด SSO๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ• ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@davidfowl ASP.NET Core๋ฅผ ์˜๋ฏธํ–ˆ์ง€๋งŒ ASP.NET Core .NET 4.x์—์„œ ๋จผ์ € ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ๋‹ค์Œ ๋‚˜์ค‘์— .NET Core์—์„œ ๋‹จ๊ณ„์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ„ํšํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿด์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๊ณ„ํš์ด ์•„๋งˆ๋„ ๋‚ด ์กฐ์ง์ด ํ”Œ๋žซํผ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‚จ์•„ ์žˆ๋Š” netfx dep๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์› ๊ธฐ๊ฐ„(=๋ณด์•ˆ ํŒจ์น˜)์ด ๋” ๊ธธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ชจ๋“  ๊ฒƒ์ด ๋ณต์žกํ•˜๊ณ  ๊ฐœ๋…์ ์œผ๋กœ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ 3๋…„ ํ›„์— Excel ๋ฌธ์„œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฑฐ๋‚˜ ์•ฑ์— ์›น ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? netcoreapp ๋Œ€์‹  ํ‘œ์ค€ ์œ„์— ๊ตฌ์ถ•๋œ Orleans์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

ASP.NET Core์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ netstandard2.0์—์„œ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

3๋…„ ํ›„ Excel ๋ฌธ์„œ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

๋งํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๊ทธ๊ฒƒ์„ ์†Œ์œ ํ•œ ํŒ€์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์•„๋งˆ๋„ .NET Core๋กœ ์ด์‹๋˜๊ณ  ํฌ๋กœ์Šค ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ์•ฑ์— ์›น์„œ๋ฒ„๋ฅผ ํฌํ•จ์‹œํ‚ค๋ ค๋ฉด?

HttpListener ๋Š” netstandard 2.0์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

netcoreapp ๋Œ€์‹  ํ‘œ์ค€ ์œ„์— ๊ตฌ์ถ•๋œ Orleans์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

.NET Framework, UWP, .NET Core, ๋ชจ๋…ธ ๋“ฑ์—์„œ ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. Orleans๋Š” .NET Core์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ ์ œํ’ˆ๋“ค์€ ํ•˜๋‚˜์ด๋ฉฐ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ(๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ๊ณ ๊ฐ๋“ค)์—๊ฒŒ ์–ด๋ ค์šด ๊ฒฐ์ •์ด ๋  ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋„์„œ๊ด€์ด ์•„๋‹ˆ๋ผ 6๊ฐœ์›” ํ›„์— ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๋„์„œ๊ด€์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ง netstandard ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ์ง€ ํ•œ ๋‹ฌ์ด ์ง€๋‚ฌ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” EF Core๋Š” ๊ณ ์‚ฌํ•˜๊ณ  EF6์—์„œ๋Š” ๊ฐ€๊น์ง€ ์•Š์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด NHibernate์— ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ „์ฒด .NET์—์„œ ASP.NET Core 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฏธ๋ž˜์— ApiPort๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ „์ฒด .NET์—์„œ ASP.NET Core 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์˜ต์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋„ค.

๋งํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๊ทธ๊ฒƒ์„ ์†Œ์œ ํ•œ ํŒ€์— ๋Œ€ํ•ด ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์•„๋งˆ๋„ .NET Core๋กœ ์ด์‹๋˜๊ณ  ํฌ๋กœ์Šค ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์‹๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ asp.net ํŒ€์˜ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์‹๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ asp.net ํŒ€์˜ ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

.NET์€ ํฌ๊ณ  ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฏ€๋กœ ASP.NET ํŒ€์ด .NET ์—์ฝ”์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ˆจ๊ฒฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋น„ํ˜„์‹ค์ ์ด์•ผ. ๋ฐฉ๊ธˆ CSOM(https://msdn.microsoft.com/en-us/library/office/jj163123.aspx)์ด ์ด ์Šค๋ ˆ๋“œ์˜ ์ผ๋ถ€๋กœ ๋ฌด์—‡์ธ์ง€ ๋ฐฐ์› ๊ณ  ์ด์‹๋  ๊ฒƒ์ธ์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•œ.

.NET Framework์—์„œ ASP.NET 1.1์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์•ฝ๊ฐ„ ์™„ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ .NET Core์˜ ASP.NET Core๋กœ ์ œ๋Œ€๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ผ๋ถ€ ์ข…์†์„ฑ ์„ ๊ฒฉ๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„์›€์ด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋ฏธ๋ž˜).

๊ทธ ์ ์€ ์ด๋ฏธ ๊ธธ๊ฒŒ ๋…ผ์˜๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋”ฐ๋กœ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ(amilia.com, ์ „์ž ์ƒ๊ฑฐ๋ž˜ SaaS) ํƒ€์‚ฌ ๋„๊ตฌ๋Š” ์ด๋ฏธ ๋ˆˆ์— ๋„์—ˆ๊ณ  ํ˜„์žฌ๋กœ์„œ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ •๋‹นํ•œ ์ด์œ ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์ž…๋‹ˆ๋‹ค.

์ด๋ก ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋„๊ตฌ(์˜ˆ: ํ”„๋กœํŒŒ์ผ๋Ÿฌ, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋นŒ๋“œ ์„œ๋ฒ„ ๋“ฑ)๋ฅผ .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ๋Œ€์•ˆ์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ช‡ ๊ฐœ์›”์„ ํˆฌ์žํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ASP.NET Core/.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๊ฒƒ์ด์ง€๋งŒ ์ง€๊ธˆ์€ ์ƒ๋‹นํžˆ ์›€์ง์ด๋Š” ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค.

์ด ์‹œ์ ๊นŒ์ง€๋Š” ASP.NET Core ๊ฐ€ ๋ฐ์Šคํฌํ†ฑ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ฐป์žŽ์„ ์ฝ์–ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋น„ํ˜„์‹ค์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค :/

์˜ˆ๋ฅผ ๋“ค์–ด, ASP.NET Core๊ฐ€ .NET Core์—์„œ๋งŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ ์ž์ฒด๊ฐ€ ๋ฏธ์นœ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ด์ „์— ๋“ค์–ด๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณต๊ฐœ ์ •๋ณด๋Š” .NET Framework์—์„œ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋Š” ํ‘œ์‹œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

.NET์€ ํฌ๊ณ  ์˜ค๋ž˜๋œ ๊ฒƒ์ด๋ฏ€๋กœ ASP.NET ํŒ€์ด .NET ์—์ฝ”์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ˆจ๊ฒฐ์— ๋Œ€ํ•ด ๋งํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋น„ํ˜„์‹ค์ ์ด์•ผ

์ด๊ฒƒ์ด .NET 4.x๋ฅผ ๊ณ„์† ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ข‹์€ ์ด์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ? ํ˜ธํ™˜์„ฑ/์ƒํ˜ธ ์šด์šฉ์„ฑ์˜ ๋ถ€๋‹ด์€ .NET Core๊ฐ€ ์ด์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ƒํ˜ธ ์šด์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๊ณ  ๊ธฐ์กด์˜ ์ธ๊ธฐ ์žˆ๋Š” .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ .NET Core( MS ๋ฐ ์™ธ๋ถ€ ์ž‘์„ฑ์ž์šฉ).

@mythz

์ด๊ฒƒ์ด .NET 4.x๋ฅผ ๊ณ„์† ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์ข‹์€ ์ด์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ? ํ˜ธํ™˜์„ฑ/์ƒํ˜ธ ์šด์šฉ์„ฑ์˜ ๋ถ€๋‹ด์€ .NET Core๊ฐ€ ์ด์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ƒํ˜ธ ์šด์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๊ณ  ๊ธฐ์กด์˜ ์ธ๊ธฐ ์žˆ๋Š” .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ .NET Core( MS ๋ฐ ์™ธ๋ถ€ ์ž‘์„ฑ์ž์šฉ).

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— 1.1 ์˜ ์ˆ˜๋ช…์— ๋Œ€ํ•œ ASP.NET Core๊ฐ€ ์—ฐ์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜๊ตฌ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ). SignalR์ด ASP.NET Core 2.0์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— SignalR์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ASP.NET Core๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ์›ํ•˜๋Š” ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜๋„๋Š” ํ•ญ์ƒ ํ†ตํ•ฉ .NET Core ํ”Œ๋žซํผ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@gulbanana

์ด ์‹œ์ ๊นŒ์ง€๋Š” ASP.NET Core๊ฐ€ ๋ฐ์Šคํฌํ†ฑ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ฐป์žŽ์„ ์ฝ์–ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋น„ํ˜„์‹ค์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค :/

.NET Framework์˜ ASP.NET Core๋Š” ๋ถˆํ–‰ํžˆ๋„ ์ด์‹์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ์Šคํ†ฑ ๊ฐญ ์†”๋ฃจ์…˜์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ข…์†์„ฑ์ด ์ ˆ๋Œ€ ์ด์‹๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์ ์ธ ๊ฒฐ๋ก ์ธ ์˜์›ํžˆ ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์œผ๋กœ ์˜๋„๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— 1.1 ์˜ ์ˆ˜๋ช…์— ๋Œ€ํ•œ ASP.NET Core๊ฐ€ ์—ฐ์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜๊ตฌ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ).

๋ฌธ์ œ๋Š” ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•œ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜ธํ™˜/์•ˆ์ •๋œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ๊ณต๋˜๊ธฐ ์ „์— EOL'๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ํˆฌ์ž์˜ ๊ฐ€์น˜๊ฐ€ ๊ณ ๋ ค๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. EOL ํ”Œ๋žซํผ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ผ ์‚ฌ๋žŒ์ด ๋ˆ„๊ฐ€ ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ? Devs๋Š” ๊ธฐ์กด ๋ธŒ๋ผ์šดํ•„๋“œ ์‹œ์Šคํ…œ์—์„œ ๋ฌด๊ธฐํ•œ ์ž‘์—…ํ•  ๊ฒƒ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ASP.NET v4.x ๊ธฐ์ˆ ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ . NET 4.x ์ง€์›์ด ์ค‘๋‹จ๋˜๊ณ  ๋ง‰๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์ฑ…์ž„ํ•ฉ๋‹ˆ๋‹ค.

@davidfowl

.NET Framework์˜ ASP.NET Core๋Š” ๋ถˆํ–‰ํžˆ๋„ ์ด์‹์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ์Šคํ†ฑ ๊ฐญ ์†”๋ฃจ์…˜์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ข…์†์„ฑ์ด ์ ˆ๋Œ€ ์ด์‹๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์ ์ธ ๊ฒฐ๋ก ์ธ ์˜์›ํžˆ ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์œผ๋กœ ์˜๋„๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฌธ์ œ๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌํ•œ ๊ฐ€์ •์„ ํ–ˆ๊ณ  ๋…ผ๋ฆฌ์ ์ด์ง€๋งŒ ์ž˜๋ชป๋œ ๊ฒฐ๋ก  ๋•Œ๋ฌธ์— ASP.NET Core ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€์ง€ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค./

asp.net ์ฝ”์–ด 2/ .net ์ฝ”์–ด 2๋ฅผ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ธ๋Š”๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋„ˆ๋ฌด ์šฐ์šธํ•ฉ๋‹ˆ๋‹ค.

@mythz

๊ธฐ์กด ํˆฌ์ž์˜ ๊ฐ€์น˜๊ฐ€ ๊ณ ๋ ค๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. EOL ํ”Œ๋žซํผ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ผ ์‚ฌ๋žŒ์ด ๋ˆ„๊ฐ€ ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚ด๋…„์— 3.0์ด ๋‚˜์˜ค๋ฉด ASP.NET Core 2.0์ด .NET Framework์—์„œ EOL๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ™์€ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์—†๋‚˜์š”? ASP.NET Core 1.1์—์„œ 1๋…„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒฝ์šฐ ASP.NET Core 2.0์—์„œ 1๋…„์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Devs๋Š” ๊ธฐ์กด ๋ธŒ๋ผ์šดํ•„๋“œ ์‹œ์Šคํ…œ์—์„œ ๋ฌด๊ธฐํ•œ ์ž‘์—…ํ•  ๊ฒƒ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ASP.NET v4.x ๊ธฐ์ˆ ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ . NET 4.x ์ง€์›์ด ์ค‘๋‹จ๋˜๊ณ  ๋ง‰๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์ฑ…์ž„ํ•ฉ๋‹ˆ๋‹ค.

ASP.NET 4.x ๊ธฐ์ˆ ์ด ์“ธ๋ชจ ์—†๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ง์„ ๋ˆ„๊ฐ€ ๋“ค์—ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋“ค์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ MVC๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ์˜ ๊ฐœ๋… ํ˜ธํ™˜์„ฑ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core๋Š” Katana์™€ ๋งค์šฐ ํก์‚ฌํ•ฉ๋‹ˆ๋‹ค(์‹ค์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค). Web Forms์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด MVC๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ปจ์„คํŒ… ๊ฒฝํ—˜์ด ์—†์ง€๋งŒ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋™์˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@xyting ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

@davidfowl

๋‚ด๋…„์— 3.0์ด ๋‚˜์˜ค๋ฉด ASP.NET Core 2.0์ด .NET Framework์—์„œ EOL๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ™์€ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์—†๋‚˜์š”? ASP.NET Core 1.1์—์„œ 1๋…„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒฝ์šฐ ASP.NET Core 2.0์—์„œ 1๋…„์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ์˜ค๋žซ๋™์•ˆ ASP.NET Core 1.1์ด ASP.NET Core 2.0 ๋ฐ .NET Standard 2.0์— ๋Œ€ํ•œ ์ž„์‹œ ์†”๋ฃจ์…˜์ผ ๋ฟ์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. .NET 4.x์—์„œ ๋ˆ„๋ฝ๋œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ - ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ ๊ฐ€์ •์„ ํŒŒ๊ดดํ•  ๋•Œ๊นŒ์ง€. .NET 4.x ํ˜ธํ™˜์„ฑ์„ ASP.NET Core 2.0๊นŒ์ง€ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ด์ƒ์ ์ด์ง€ ์•Š์ง€๋งŒ ์•„๋ฌด๋„ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ํ˜„์žฌ ๋ฆด๋ฆฌ์Šค์—์„œ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค.

ASP.NET 4.x ๊ธฐ์ˆ ์ด ์“ธ๋ชจ ์—†๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ง์„ ๋ˆ„๊ฐ€ ๋“ค์—ˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋“ค์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MS๋Š” ASP.NET Core์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ชจ๋“  ์ƒˆ๋กœ์šด ๋ฐœํ‘œ์™€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ .NET Core์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ณต๊ฒฉ์ ์ธ ๋งˆ์ผ€ํŒ…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ASP.NET WebForms/MVC๊ฐ€ ๊ณต๊ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ด์ „ ASP.NET WebForms/MVC์™€ .NET Core์— ์–ด๋Š ์ •๋„์˜ ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์ด ํˆฌ์ž๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ๊ทผ์— ๋ณธ ๋ชจ๋“  ๊ฒƒ, ๋ชจ๋“  ์ฃผ๊ฐ„ ์Šคํƒ ๋“œ์—…, ๋น„๋””์˜ค ์ž์Šต์„œ๋Š” ASP.NET Core์—๋งŒ ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ „ ASP.NET WebForms ๋˜๋Š” MVC ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฏธ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ํ™•์‹คํžˆ ํŽธํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

MS๊ฐ€ ์•„๋‹ˆ๊ธธ ๋ฐ”๋ž€๋‹ค๋ฉด ๋ช…ํ™•ํ•œ ๋กœ๋“œ๋งต์œผ๋กœ ๋” ์ž˜ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ASP.NET์ด ์–ผ๋งˆ๋‚˜ ๋ถˆ์•ˆ์ •ํ–ˆ๋Š”์ง€(์ด ๋ฌธ์ œ๋Š” ์™„๋ฒฝํ•œ ์˜ˆ์ž„)๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๊ณต์‹์ ์ธ ์•ฝ์†๊ณผ ๋ฐœํ‘œ ์—†์ด๋Š” ๋ฏธ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 1์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด ๋” ์ข‹์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋„ค์ด๋ฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Œ€๋„ ์•ˆํ–ˆ๋Š”๋ฐ ์ด์ œ ๋ง›์„ ๋ณด์•˜๊ณ  ์žƒ์–ด๋ฒ„๋ ค์„œ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ „์ฒด ์Šคํƒ์„ ๋ฐ˜๋ณตํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ „์ฒด ์Šคํƒ์„ ์ œ์–ดํ•˜๊ณ  ๋Œ๊ณ  ๊ฐˆ ์ง์ด ์—†๋Š” ๋งŽ์€ ๋ฏธ๊ฐœ๋ฐœ ๋ถ„์•ผ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฒฝ์Ÿํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. System.Web์˜ ์ง์„ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ASP.NET Core๊ฐ€ ํฅ๋ฏธ๋กœ์šด ์ฃผ๋œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ž๊ณ  ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ๋ฒ•์ด ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ์ข…์†์„ฑ ์€ ๋ชจ๋‘ 2.0์—์„œ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ์— ASP.NET Core๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ์›ํ•˜๋Š” ์œ„์น˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜๋„๋Š” ํ•ญ์ƒ ํ†ตํ•ฉ .NET Core ํ”Œ๋žซํผ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

.NET Core๊ฐ€ .NET์˜ ๋ฏธ๋ž˜ ํ”Œ๋žซํผ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ดˆ๋Šฅ๋ ฅ์ž๊ฐ€ ํ•„์š”ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ... ์ฒ˜์Œ๋ถ€ํ„ฐ(๋˜๋Š” "ํ•ญ์ƒ"์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ ๋Œ€๋กœ) ์˜๋„๊ฐ€ ASP.NET Core๋ฅผ . NET Core์—์„œ, ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๋ณธ ์–ด๋–ค ๋งค์ฒด์—์„œ๋„ ํ™•์‹คํžˆ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ๋‹จ์ผ ASP.NET ์Šคํƒ ๋“œ(Hanselman ๋ฐ Glenn์ด 3์‹œ๊ฐ„ ๋™์•ˆ Docker ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ... ๋‚˜๋Š” ์ธ์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—)์˜ ๋งค๋ถ„์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ๊ณ , ํ•ญ์ƒ Twitter๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , 1๋…„์— 2๋ฒˆ ์ด์ƒ์˜ ํšŒ์˜, ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ์ฐธ์„ ๋“ฑ์„ ํ•˜๊ณ  ASP.NET Core์˜ ์˜๋„๋กœ ์ „๋‹ฌ๋œ ๊ฒƒ์„ ํ•œ ๋ฒˆ๋„ ๋“ค์–ด๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  "๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘์—์„œ ์‹คํ–‰๋œ๋‹ค"๋Š” ๋ง์„ ๊ณ„์†ํ•ด์„œ ๋“ค์—ˆ๊ณ , ๋‹น์—ฐํžˆ ์‚ฌ๋žŒ๋“ค์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์˜์ž ์•„๋ž˜์—์„œ ์˜์ž๋ฅผ ๊บผ๋‚ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋‚๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ฌ์ง€์–ด ASP.NET Core์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  "๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘์—์„œ ์‹คํ–‰๋œ๋‹ค"๊ณ  ๋งํ–ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ๋‚ด๊ฐ€ ์ด ๊ธธ์„ ์•ˆ๋‚ดํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•ด ์ฃ„์ฑ…๊ฐ์„ ๋Š๋‚๋‹ˆ๋‹ค. ๋‚˜๋Š” ITT ์‚ฌ๋žŒ๋“ค์ด ์ตœ์ฒจ๋‹จ์— ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋‰ด์Šค๋ฅผ ๊ฐ€์žฅ ์ˆ˜์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋งŽ์€ ๋ฐ˜๋ฐœ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‰ด์Šค๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ITT๋ณด๋‹ค ๋” ๋ณด์ˆ˜์ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฐœ๋ฐœ์ž์™€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ „ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์ด ๋” ๋‚˜๋น ์งˆ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ถ€์กฑ๊ณผ ์ผ๋ถ€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ง€์› ๋ถ€์กฑ ์™ธ์—๋„ ๋งŽ์€ ๋ฐ˜๋ฐœ์ด ์ด ๋ฐœํ‘œ์˜ ์‹œ๊ธฐ์— ๊ธฐ์ธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .NET Core 2๋Š” ์•„์ง RTM๋„ ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฏธ ์œ ์ผํ•œ ์žฅ๊ธฐ์  ๊ฒฝ๋กœ๋กœ ๊ฐ„์ฃผ๋˜์—ˆ์œผ๋ฉฐ ๋ณธ์งˆ์ ์œผ๋กœ ASP.NET Core์šฉ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์‹œํ•œ ํญํƒ„์ด ๋†“์˜€์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐค์ž  ์™ธ์— ๋†€ ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ์ƒ๊ธฐ๋ฉด ์šฐ๋ฆฌ์˜ ๋‘๋ ค์›€์ด ๋งŽ์ด ํ•ด์†Œ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

VS์˜ .NET Core 2+์—์„œ net461+ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ "์‹คํ–‰ํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ"ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ๋„๊ตฌ ์‚ฌ์šฉ ๊ฒฝํ—˜์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 461๊ฐœ ์ด์ƒ์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค!" ์ฃฝ์Œ์— ํŒ๋งค๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ฐธ์กฐํ•œ ๊ฒƒ์˜ ๋ˆ„๋ฝ๋œ API๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ, ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ, ์ด์ƒ์ ์œผ๋กœ๋Š” ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ compat nupkg๊นŒ์ง€ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ(์˜ˆ: ์œ„์˜ EF6 ์˜ˆ์—์„œ System.Configuration... ์ž‘๋™ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค :smile:). ๋ถ„๋ช…ํžˆ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ๋ชจ๋“  ๊ฒƒ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ(์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋ฏธ๋ฆฌ ๋ถ„์„ํ•˜๊ธฐ ํž˜๋“  ๊ฒƒ์œผ๋กœ ๋งˆ์Œ์— ๋– ์˜ค๋ฆ„), ๋” ๋งŽ์ด ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. Immo๊ฐ€ PlatformNotSupportedException ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•œ ๊ฒƒ๊ณผ netstandard2์— ๋Œ€ํ•ด ๋ˆ„๋ฝ๋œ net461 API๊ฐ€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ. ์ œ๊ฐ€ ๊ณผ๋ฏผ๋ฐ˜์‘์„ ํ•˜๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ASP.NET Core๋ฅผ ์‚ฌ๋ž‘ํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ์–ด๋–ค ๊ฒƒ๋„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ถ๊ทน์ ์œผ๋กœ ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‹ค๋งํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. โค๏ธ

์ด๋ฏธ ๋‚˜์—ด๋œ ์šฐ๋ ค ์‚ฌํ•ญ์— ์ œ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ํ•ฉ์น˜๋ฉด ๋‹ค์Œ ๋‹ฌ์— ์ƒˆ๋กœ์šด ASP.NET MVC ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ASP.NET MVC๊ฐ€ ํฌํ•จ๋œ ์ผ๋ฐ˜ .NET Framework๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ๊ฐ์€ Microsoft๊ฐ€ ๋‹ค์Œ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์žฅ๊ธฐ ๊ณ„ํš.

๊ณ ๊ฐ ์กฐ์ง์€ ์—ฌ์ „ํžˆ โ€‹โ€‹Windows 7 ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ์›น ํ”„๋กœ์ ํŠธ์˜ ๋Œ€๋ถ€๋ถ„์€ ์‹ค์ œ๋กœ UNIX์—์„œ Java์™€ ํ•จ๊ป˜ ์ˆ˜ํ–‰๋˜๊ณ  .NET์€ ๋Œ€๋ถ€๋ถ„ ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ถˆํ™•์‹ค์„ฑ์€ Windows 8 .NET ์Šคํƒ ๋ฐ UWP์˜ ๊นจ์ง„ ์—ญ์‚ฌ๋ฅผ ๋ˆ„์ ์‹œ์ผœ .NET ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ๋Œ€์•ˆ์„ ์ฐพ๋Š” ์กฐ์ง CTO์˜ ๊ด€์‹ฌ์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์กฐ์ง์—์„œ ASP.NET Core์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•˜๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ ๊ฐ์—๊ฒŒ ๋‚ด๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ฒด๋ฉด์„ ์žƒ๋Š” ๋Œ€์‹  ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ๋กœ๋“œ๋งต์ด ์žˆ๋Š” ๊ฒƒ์„ ์ฑ„ํƒํ•˜๋„๋ก ์กฐ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@davidfowl ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ”„๋กœ์ ํŠธ์˜ 99%์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ "๋‘ ํ”Œ๋žซํผ์—์„œ ๋ชจ๋‘ ์‹คํ–‰๋œ๋‹ค", "ํ•„์š”ํ•˜๋‹ค๋ฉด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค"๋ผ๋Š” ๋ฌธ๊ตฌ๋กœ ํŒ๋งค๋๋‹ค. asp.net ์ฝ”์–ด์˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ณ  ์žˆ์—ˆ๊ณ  ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ณ  ๊ณ„ํšํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์€ ์ฝ”๋“œ ์ธก๋ฉด์—์„œ ์ตœ์•…์€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋” ๋งŽ์€ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‰ด์Šค๋ฅผ ๋ณผ ๋•Œ ์—„์ฒญ๋‚œ ํญํ’์„ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ฝ”๋“œ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•ฝ์†๋œ ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•ฝ์†์€ "net ๋˜๋Š” core๋ฅผ ์‹คํ–‰ํ•˜๊ณ  netstandard๋ฅผ ๋ชจ๋‘ ๊ฒฐํ•ฉํ•˜์—ฌ"์˜€์Šต๋‹ˆ๋‹ค.

@DamianEdwards @davidfowl ๊ณ„ํš์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

1.x์˜ SignalR์€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „์„ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ ServiceBase๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ServiceBase๊ฐ€ ๋‹ค์Œ ๋ชฉ๋ก์— ์žˆ๋‹ค๋Š” ์†Œ์‹์ž…๋‹ˆ๋‹ค!

์šฐ๋ฆฌ๋Š” EF6๊ณผ ๊ณต๊ฐ„์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๊ฐ€ ์ƒ๊ธธ ๋•Œ๊นŒ์ง€ 1.x์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค....

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ˜์ฏค ์žฌ๋ฏธ์žˆ๋Š” ์ธก๋ฉด์—์„œ ์ด๊ฒƒ์€ ๊ฒฐ๊ตญ ์ด๋ฅผ ์œ„ํ•ด ๋” ๋งŽ์€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๋ฐฐํฌ๋ฅผ ๊ฐ•์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ LOB ๊ณ ๊ฐ์ด ์šฐ๋ฆฌ ์ œํ’ˆ์„ ์ž‘๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด IIS์— ๋ช‡ ๊ฐœ์˜ API๋ฅผ ๋” ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค....

๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋ณด์ด๊ณ  ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ๋–จ์–ด์งˆ ๋•Œ ์ƒ๋‹นํ•œ ๋ฐ˜๋ฐœ์„ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋ณด๋ฅ˜๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๊ฒƒ์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๊ณ  ๋™๋ฃŒ๋“ค์—๊ฒŒ ๊ฐ™์€ ๋‚ด์šฉ์„ ์„ค๊ตํ•ด ์™”๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ์„ ๋•Œ ์•ฝ๊ฐ„ ๊ฐ•์„ธ๋ฅผ ๋Š๊ผˆ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. asp.net ์ฝ”์–ด์˜ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ช…๋ช… ์„ ํƒ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

@shanselman @davidfowl ๋‚˜์˜ ๊ฐ€์žฅ ํฐ ๊ณ ์ถฉ์€ NHibernate์ž…๋‹ˆ๋‹ค. EF Core๊ฐ€ ์ถœ์‹œ๋œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์œ ์ผํ•˜๊ฒŒ ๊ฐ€์žฅ ๋ฐœ์ „๋œ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ O/R ๋งคํผ์ž…๋‹ˆ๋‹ค.

@shanselman @DamianEdwards ์ €๋Š” ASP.NET MVC 4์—์„œ ์ตœ์‹  ๋ฒ„์ „์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— ์‚ฌ์ดํŠธ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค(5์ธ์ง€ 1์ธ์ง€ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค). SyncFusion๊ณผ Telerik ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SyncFusion์€ PDF ํŒŒ์ผ์„ ํ‘œ์‹œํ•˜๊ณ  Telerik์€ Word .docx ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ง€์ ํ–ˆ๋“ฏ์ด ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Microsoft์˜ ์ „๋žต์ด "์‹œ๋„ํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ"ํ•˜๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ์ฝ”๋“œ์˜ ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ํ”„๋กœ๋•์…˜์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

SyncFusion ์ง€์›์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค์šฐ ํ›Œ๋ฅญํ•˜์ง€๋งŒ Telerik์˜ ์ง€์›์€ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉฐ .net ์ฝ”์–ด์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋†€๋ž„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .net core์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” Apis๊ฐ€ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ์ œํ’ˆ์˜ ํ•ต์‹ฌ์ธ ์ตœ์ข… ์‚ฌ์šฉ์ž๋กœ์„œ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๊ฝ‚๊ธฐ๋งŒ ํ•˜๋ฉด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ ๋ฌผ๊ฑด์„ ์ž์ฃผ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ณ ๊ฐ(์ €๋Š” ์ฃผ๋กœ WPF๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค)์—๊ฒŒ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋น„ํ˜ธํ™˜์„ฑ๊ณผ ํ•จ๊ป˜ ๋„ˆ๋ฌด ๋งŽ์€ ๋‹ค๋ฅธ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด UWP XAML๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ WPF XAML๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ข‹์ง€ ์•Š์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ Microsoft์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋ฅผ ์žƒ๊ฒŒ ๋งŒ๋“œ๋Š” ๋˜ ๋‹ค๋ฅธ ์›์ธ์ž…๋‹ˆ๋‹ค(์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ๋งŽ์€ ๊ฒƒ ์ค‘ ํ•˜๋‚˜). ์‚ฌ๋žŒ๋“ค์ด ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋Œ€ํ•œ ๋„๊ตฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ASP.NET์€ ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ™•์‹คํžˆ ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ƒˆ๋กœ์šด ASP.net ๊ธฐ๋Šฅ์— ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ตœ์‹  ASP.net ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ตœ์‹  ๋ฒ„์ „์˜ .net ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋Š” ์‚ฌ๋žŒ๋“ค์ด ์™„์ „ํžˆ ๋›ฐ์–ด๋“ค๊ธฐ ์ „์— ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

...์Šคํ…ŒํŒ

.NET Framework์˜ ASP.NET Core๋Š” ๋ถˆํ–‰ํžˆ๋„ ์ด์‹์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ์Šคํ†ฑ ๊ฐญ ์†”๋ฃจ์…˜์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ข…์†์„ฑ์ด ์ ˆ๋Œ€ ์ด์‹๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ์ ์ธ ๊ฒฐ๋ก ์ธ ์˜์›ํžˆ ์ง€์›๋˜๋Š” ํ”Œ๋žซํผ์œผ๋กœ ์˜๋„๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด ๋ฌธ์ œ์— ๋‚˜์—ด๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ๋‹ต๋ณ€์„ ์ฝ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๋ก ์„ ์ดํ•ดํ•˜๊ณ  ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฉ๊ธˆ ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์€ ๊ถ๊ทน์ ์œผ๋กœ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด ๋ฌด์—‡์ธ์ง€ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Microsoft ์ „์ฒด์˜ ์ž˜๋ชป๋œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค(๊ท€ํ•˜ ๋˜๋Š” _ํŠน์ •_ ๊ฐœ์ธ์˜ ์ž˜๋ชป์ด ์•„๋‹˜์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค).

์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์„์ง€๋„ ๋ชจ๋ฅด์ง€๋งŒ, ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ดํŽด๋ณด๊ณ  ๊ฐ€์ง€๊ณ  ๋†€ ์ˆ˜ ์žˆ๋„๋ก github์— ์ฝ”๋“œ๋ฅผ ๋‘๋Š” ๊ฒƒ๋ณด๋‹ค "๊ณต๊ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœ"ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋žŒ๋“ค์„ ๋†€๋ผ๊ฒŒ ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์–ด๋Š ๋‚  ์ฝ”๋“œ์— ๋‚˜ํƒ€๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ๋˜์—ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋‹น์‹ ๊ณผ .net ํŒ€์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์ดํ•ดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ์˜ ๋‚˜๋จธ์ง€ ๋‹จ์ˆœํ•œ ํ•„์‚ฌ์ž๋“ค์ด ๊ทธ๊ฒƒ์— ์™„์ „ํžˆ ๋ˆˆ์ด ๋ฉ€์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์‹๊ณผ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด github์— ๋„ˆ๋ฌด ๋งŽ์€ ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ณ€๊ฒฝ์€ ์ด๋ฏธ ์—ฌ๊ธฐ์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๋†€๋ผ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด์ปค๋‰ด์Šค์˜ RSS ํ”ผ๋“œ์— ์˜ฌ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์ง์ ‘ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

MSDN์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ 2.0์ด ์ถœ์‹œ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ asp.net ์ฝ”์–ด์™€ ์ด์ „์— "๋ˆ„๋ฝ๋œ" ๋ชจ๋“  ๊ฒƒ ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋ฉ”์šฐ๋Š” ์„ฑ๋ฐฐ๋ผ๊ณ  ๋ณผ ๊ฒƒ์ด์ง€๋งŒ ์ „ํ˜€ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ํŠน์ • ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. asp.net core 2.0์˜ ์„ค๊ณ„์—์„œ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ ํ›„๋ฐ˜์— Build์—์„œ ๋” ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์€๋ฐ์š”? ํฌ๋งํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

.net slack์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์ด์ง€๋งŒ ์‹ค์ œ๋กœ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ์‹œ๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž ์ฐธ์—ฌ ๋ฐ ์งˆ๋ฌธ์— ์ ํ•ฉํ•˜์ง€๋งŒ ๋‰ด์Šค ์†Œ์Šค๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

ํŠธ์œ„ํ„ฐ์™€ ์†Œ์…œ ๋ฏธ๋””์–ด๋Š” ๋˜ ๋‹ค๋ฅธ ์ •๋ณด ์ถœ์ฒ˜์ด์ง€๋งŒ, ๋‹ค์‹œ ์ด github ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ์ฏค์ด๋ฉด ์ด๋ฏธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ฏธ ๋‚ด๋ฆฐ ๊ฒฐ์ •์— ๋Œ€ํ•ด ์šฐ๋ ค๋ฅผ ์ œ๊ธฐํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์„ ๋†€๋ผ๊ฒŒ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ œ์•ˆํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ .net์˜ ๊ณต๊ฐœ ๊ฐœ๋ฐœ์—์„œ ํ™•์‹คํžˆ "๋ˆ„๋ฝ๋œ" ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฆฌ์†Œ์Šค์™€ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ผ์„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์™„์ œํ’ˆ๊ณผ ์ถœํ•˜๋œ ์ œํ’ˆ์— ๋Œ€ํ•ด์„œ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ๋งต, ๊ณ„ํš ํšŒ์˜, ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋””์ž์ธ๊ณผ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ "์„ ํƒ๋œ ํŒŒํŠธ๋„ˆ" ๋“ฑ์˜ ์–ธ๊ธ‰๊ณผ ํ•จ๊ป˜ ๋น„๊ณต๊ฐœ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํšŒ์˜๊ฐ€ ์ŠคํŠธ๋ฆฌ๋ฐ๋˜๊ณ  ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๋ฐฉ์†ก๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‚ด๋ฆฐ ๊ฒฐ์ •๊ณผ ๊ทธ ์ด๋ฉด์˜ ๊ทผ๊ฑฐ๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์‰ฝ๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋” ๋‚˜์€ ์ค‘๊ฐ„ ์ง€์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง _์›ํ•˜๋Š”_ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์š”์•ฝํ•˜๊ณ  ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์ด ๋‚ด๋ ค์ง€๋ฉด ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” MSDN(๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ)์˜ ์ „์šฉ ๋ธ”๋กœ๊ทธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์ž‘๋…„์— ASP.NET Core๊ฐ€ ๋ฐœํ‘œ๋œ ๊ฑฐ์˜ ๋ชจ๋“  ํšŒ์˜์—์„œ .net Framework์™€ .net Core ๋ชจ๋‘์—์„œ ์‹คํ–‰๋˜๋Š” asp.net Core๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋ฐœํ‘œํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ํ•ด Ignite ์˜ Microsoft ASP.NET Core 1.0์œผ๋กœ ์›น ๊ฐœ๋ฐœ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค . 7์‹œ 50๋ถ„๊ฒฝ์— ์Šฌ๋ผ์ด๋“œ๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ํฐ ์‡ผ์Šคํ† ํผ๋Š” System.DirectoryServices, ServiceBase, EF6(EF Core๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์Œ), ClosedXML(์—‘์…€ ์‹œํŠธ ์ƒ์„ฑ์šฉ)์ž…๋‹ˆ๋‹ค.

.NET Framework์—์„œ ASP.NET Core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ตœ์†Œ 1๋…„ ๋” ์—ฐ์žฅ๋ฉ๋‹ˆ๋‹ค(2019๋…„ 7์›”๊นŒ์ง€). ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋งค๋…„ ์žฌํ‰๊ฐ€ํ•˜๊ณ  ASP.NET Core 1.x ์ง€์›์„ ์ข…๋ฃŒํ•˜๊ธฐ 12๊ฐœ์›” ์ „์— ํ†ต์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ 2018๋…„ 7์›”๊นŒ์ง€ 2020๋…„ 7์›”๊นŒ์ง€ 12๊ฐœ์›” ๋” ์—ฐ์žฅํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐœํ‘œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค)(์ฐธ๊ณ : ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ 2020๋…„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”? ์ข‹์•„์š”, ์ €๋งŒ์š”.)

@DamianEdwards ๋ฐœํ‘œํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” .NET Framework 4.6.2์—์„œ ASP.NET Core 1.1์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ ์ฝค๋ณด์— ๋Œ€ํ•œ ์ง€์›์ด ์ตœ์†Œ 2019๋…„๊นŒ์ง€ ์ง€์›๋˜๊ณ  2020๋…„๊นŒ์ง€ ์—ฐ์žฅ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ณ  ํฐ ์•ˆ๋„๊ฐ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.

์˜ฌํ•ด System.DirectoryServices ๋ฐ System.Drawing์„ .NET Core๋กœ ์ด์‹ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ .NET Framework๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์œ ์ผํ•œ ์ด์œ  ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์ด .NET Core 2๋กœ ์™„์ „ํžˆ ํฌํŒ…๋œ๋‹ค๋ฉด ๋‚ด๋…„์— ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ASP.NET Core 2๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ํฌํŒ…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ppl์ด MS ๊ฐœ๋ฐœ์ž๋ผ๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์„ ์–ด๊ธด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ V2๊ฐ€ ๋  ๋•Œ๊นŒ์ง€๋Š” ์ œํ’ˆ/ํฌํฌ์— ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

ํ•˜์ง€๋งŒ ์˜ˆ, ๊ธฐ์—… ๊ณ ๊ฐ์„ ์†Œ์™ธ์‹œํ‚ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์‹ญ์‹œ์˜ค! ๊ทธ๋“ค์ด MS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ด์œ ๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ASP.NET์„ ์‹คํ–‰ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ppl์€ Linux์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ASPNET Core์™€์˜ ์†๋„ ๋น„๊ต๊ฐ€ ํฌํ•จ๋œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณธ ๊ฒฝ์šฐ ๋ ˆ๊ฑฐ์‹œ .NET์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค๋ฉด ์ด์ „ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ฝ๋Š” ๊ฒƒ์กฐ์ฐจ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋กค์บฃ.

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

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ASP.NET Core 3.0์ด ์žˆ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์งํ›„์—๋Š” ์ƒˆ๋กญ๊ณ  ๋น›๋‚˜๋Š” ๋ฏธ๊ฐœ๋ฐœ ๋ถ„์•ผ์—์„œ ์ž‘์—…ํ•˜๊ณ  ๋น ๋ฅธ ํŠธ๋ž™์— ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด netcoreapp2.0๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์˜ ASP.NET Core(2.0 ๋ฐ 3.0)๋ฅผ ๋‚˜๋ž€ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ (์ ์–ด๋„ ์ž ์‹œ ๋™์•ˆ์€) ์ •๋ง ์ข‹์€ ์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ MVC๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ „์ฒด .NET์—์„œ๋„ ์‹คํ–‰๋˜๋Š” ASP.NET Core MVC 2.0์ด๊ธฐ ๋•Œ๋ฌธ์— MSFT๊ฐ€ ํ˜„์žฌ MVC 5 ์Šคํƒ์„ ๋” ๋น ๋ฅด๊ฒŒ ๋‹จ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋กœ์˜ ์›ํ™œํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core 2.0์„ net46x์—์„œ ์™„์ „ํžˆ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core 1.x์—์„œ ์ด์‹ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ASP.NET Core 2.0 ๋ฐ .NET Core 2.0์ด ์˜ค๋Š˜๋‚ ์˜ ๋งŽ์€ ๊ฒฉ์ฐจ๋ฅผ ์ค„์ด๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ—ˆ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ํฌ๋ง์œผ๋กœ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์˜ ๋Œ€๋ถ€๋ถ„์€ .NET Core 2.0 ๋ฐ .NET Standard 2.0์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.0์—๋Š” ์†”์งํžˆ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. SignalR์„ ASP.NET Core 1.x(์–ด์จŒ๋“  ํฌ์ŠคํŠธ 2.0์ž„)๋กœ ๋ฐฑํฌํŠธํ•  ์˜ˆ์ •์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ง€ ์ธ์‹์˜ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์˜ ASP.NET Core(2.0 ๋ฐ 3.0)๋ฅผ ๋‚˜๋ž€ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ 1.1๊ณผ 2.0์œผ๋กœ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค(์ˆซ์ž ๋’ค์ง‘๊ธฐ).

์ƒˆ ๋ฒ„์ „์˜ MVC๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ „์ฒด .NET์—์„œ๋„ ์‹คํ–‰๋˜๋Š” ASP.NET Core MVC 2.0์ด๊ธฐ ๋•Œ๋ฌธ์— MSFT๊ฐ€ ํ˜„์žฌ MVC 5 ์Šคํƒ์„ ๋” ๋น ๋ฅด๊ฒŒ ๋‹จ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MVC 5๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .NET Framework๊ฐ€ ์กด์žฌํ•˜๋Š” ํ•œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ IIS ํ†ตํ•ฉ ํŒŒ์ดํ”„๋ผ์ธ(System.Web์—์„œ) ๋‚ด์—์„œ ASP.NET Core ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ System.Web์—์„œ MVC 5์™€ ๋™์ผํ•œ ์ž‘์—…์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .

@davidfowl ์ „์ฒด .NET ๋ฐ netcoreapp2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ASP.NET Core 1.x ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ชจ๋“  ์ข…์†์„ฑ์ด net46x์ธ ํ˜„์žฌ ๋ ˆ๊ฑฐ์‹œ ์•ฑ์„ ๋จผ์ € ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ์ฒœ์ฒœํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒƒ์ด netstandard2.0์— ์žˆ์„ ๋•Œ๊นŒ์ง€ netstandard2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ข…์†์„ฑ์„ ์ฐจ๋ก€๋กœ ์ง€์ •ํ•˜๋ฉด ASP.NET Core 1.x ์•ฑ์„ 2.x๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ผ๋ถ€๋กœ net46x์— ๋Œ€ํ•œ ๋Œ€์ƒ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ)?

๊ทธ๋ ‡๋‹ค๋ฉด ์Šค๋ ˆ๋“œ๋ฅผ ์ž˜๋ชป ์ดํ•ด ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dustinmoris ๋„ค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๊ฒช๊ณ  ์žˆ๋Š” ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ASP.NET Core 1.x์—์„œ ์ง€์›์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ASP.NET Core 2.x๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€์ž…๋‹ˆ๋‹ค.

@alexwiese ์•„ ๊ทธ๋ ‡๊ตฐ์š” ์ž˜๋๋„ค์š”. ๊ทธ๋ ‡๋‹ค๋ฉด ์ง€๊ธˆ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋Œ€์ƒ์œผ๋กœ ์‚ผ์„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋…ผ์˜ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ASP.NET Core 1.x์˜ ์ง€์› ๊ธฐ๊ฐ„์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 1.x๋Š” ์›ํ•˜๋Š” ๊ฒฝ์šฐ MSFT๊ฐ€ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

ํŽธ์ง‘ํ•˜๋‹ค:
@DamianEdwards ๋Š” ์Šค๋ ˆ๋“œ์—์„œ ์ด๊ฒƒ์„ ์กฐ๊ธˆ ๋” ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

.NET Framework์—์„œ ASP.NET Core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ตœ์†Œ 1๋…„ ๋” ์—ฐ์žฅ๋ฉ๋‹ˆ๋‹ค(2019๋…„ 7์›”๊นŒ์ง€). ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋งค๋…„ ์žฌํ‰๊ฐ€ํ•˜๊ณ  ASP.NET Core 1.x ์ง€์›์„ ์ข…๋ฃŒํ•˜๊ธฐ 12๊ฐœ์›” ์ „์— ํ†ต์ง€ํ•  ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ 2018๋…„ 7์›”๊นŒ์ง€ 2020๋…„ 7์›”๊นŒ์ง€ 12๊ฐœ์›” ๋” ์—ฐ์žฅํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐœํ‘œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค)(์ฐธ๊ณ : ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ 2020๋…„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”? ์ข‹์•„์š”, ์ €๋งŒ์š”.)

๋‚˜์—๊ฒŒ ์ข‹์€ ์†Œ๋ฆฌ. 1๋…„ ๋” ์ง€์›ํ•˜๊ธฐ๋กœ ์•ฝ์†ํ•œ ๋‹ค์Œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์žฌํ‰๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ๋‚˜์—๊ฒŒ ์™„์ „ํžˆ ์˜๋ฏธ๊ฐ€์žˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•œ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์ด ์—†์Šต๋‹ˆ๋‹ค. ์™œ ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ช…์˜ 'ํ˜ผ๋ž€'์ด ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ Microsoft๋Š” ๋” ๋‚˜์€ PR ๋‹ด๋‹น์ž๋ฅผ ๊ณ ์šฉํ•˜๊ณ  ์ด ์Šค๋ ˆ๋“œ์—์„œ ํŒ€์ด ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์—‰ํ„ฐ๋ฆฌ๋ฅผ ํœ˜์ “๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด netstandard2.0์—์„œ ASP.NET core 2.0์„ ์ฐจ๋‹จํ•œ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์†Œํ”„ํŠธ์›จ์–ด ์˜์—ญ์—์„œ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ .NET ์ „์ฒด์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š”(๋”ฐ๋ผ์„œ netstandard20์— ํฌํ•จ๋  ์ˆ˜ ์—†๋Š”) ์†”๋ฃจ์…˜์„ ์ƒ๊ฐํ•ด๋‚ด์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค, ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ๋ชจ๋‘๊ฐ€ ์ด ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„/๋…ธ๋ ฅ์„ ํˆฌ์žํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ด ๊ฒฐ์ •์˜ ๋ถ€์ž‘์šฉ์„ ์‹ค์ œ๋กœ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค.

์ด ๊ฒฐ์ •์—๋Š” ๋˜ ๋‹ค๋ฅธ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” netstandard์˜ ์†Œ๋น„์ž๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ netstandard์˜ ๋™์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ netstandard ๋ฅผ ์ถ”์ข…์ž๋กœ ๋งŒ๋“ค๊ณ  ASP.NET core๋Š” ๊ทธ๊ฒƒ์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๋„ท์Šคํƒ ๋‹ค๋“œ2.0.

๊ทธ๋ฆฌ๊ณ  ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค @davidfowl ๋‹˜ , ์ข‹์€ ๋ง์”€์ด์‹  ๊ฑด ์••๋‹ˆ๋‹ค๋งŒ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณ„์†ํ•ด์„œ ASP.NET core 1.x๋ฅผ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์€ ๋‹น์‹ ์ด ์ œ์•ˆํ•œ ์‚ฌ๋žŒ๋“ค์˜ ์ƒํ™ฉ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•œ ๊ธฐํ•œ ์—†์ด๋Š” ์›ํ™œํ•œ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ASP.NET core 1.x๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์˜ค๋žซ๋™์•ˆ ํ•ด๋‹น ํ”Œ๋žซํผ์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ์–ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ข…์†์„ฑ์„ ์ด์‹ํ•ด์•ผ ํ•จ ๋“ฑ.). ์ด๊ฒƒ๋งŒ์œผ๋กœ๋„ Microsoft์˜ '์•ฝ์†'์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ASP.NET core 1.xa๋กœ์˜ ์ „ํ™˜์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ API์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ Microsoft๊ฐ€ ๋ณด์•ˆ ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 3๋…„ ์ด๋‚ด์— ์˜ค๋Š˜ ๋นŒ๋“œํ•œ ์•ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด).

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

Microsoft๋Š” ์ด ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋”์ฐํ•œ PR์„ ๋ณด์—ฌ์ฃผ์—ˆ์ง€๋งŒ, ๊ทธ ํ™•์‹ ์„ ์ค„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ \build์—์„œ ์•„๋ฌด๋ฆฌ ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๋”๋ผ๋„ ์šธํƒ€๋ฆฌ ๋ฐ˜๋Œ€ํŽธ์— ์žˆ๋Š” ์šฐ๋ฆฌ๋Š” Microsoft Marketing != ๋ชจ๋“  ๊ฒƒ์ด ๋‚ด์ผ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ณด์žฅ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

@FransBouma ๊ธฐ์ˆ ์  ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  netcoreapp2.0๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๋™๊ธฐ๋Š” MSFT๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํŠธ๋ž™์ด๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ASP.NET Core 2.x๊ฐ€ ์ด์ „ .NET ์„ธ๊ณ„์˜ ๋‹ค๋ฅธ ์–ด๋–ค ์›น ์Šคํƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋น ๋ฅธ ํ›ˆ๋ จ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ASP.NET Core 1.x๋ฅผ ๋” ์˜ค๋ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ 2019๋…„๊นŒ์ง€ ์ง€์›๋จ).

@davidfowl ๋ฐ @shanselman ์ด ์–ธ๊ธ‰ํ•œ @FransBouma ๋Š” .NET Core์— ์ƒˆ๋กœ์šด API๊ฐ€ ๋น ๋ฅธ ์†๋„๋กœ ์ถ”๊ฐ€๋˜๊ณ  ์žˆ์œผ๋ฉฐ ASP.NET Core 2.x๋Š” ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ netcoreapp20์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ API๋ฅผ netstandard2x์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด .NET Framework ๋ฐ ๊ธฐํƒ€ ํ”Œ๋žซํผ์ด ๋”ฐ๋ผ์žก์•„์•ผ ํ•˜๋ฉฐ ์ด๋™ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธฐ๋กœ ์•…๋ช…์ด ๋†’์Šต๋‹ˆ๋‹ค.

์ €๋Š” ํ† ๋ก ์˜ This is Good Thing ์ธก์—์„œ ์ œ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํŒ€์€ ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์ „์ฒด Windows .NET Framework์— ํฌํ•จ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•œ .NET Core์—์„œ ๋กค๋งํ•  ์ค€๋น„๊ฐ€ ๋œ(๋˜๋Š” ๊ฑฐ์˜ ์ค€๋น„๋œ) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ์ตœ์ ํ™”๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ๋ช‡ ๊ฐœ์›” ๋Šฆ์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ถˆ๋งŒ ์‚ฌํ•ญ์€ ์ž‘์„ฑ์ž๊ฐ€ ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ _".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"์ผ ๋•Œ ".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. _. ์˜ˆ, ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ, ๋‚˜์œ ์ผ์ด ์•„๋‹ˆ๋‹ค. ASP.NET MVC ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— PDF ๋˜๋Š” DOCX ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ๊ฐœ๋ณ„ ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  _์ •๋ง_ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์‹œ๋„ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?), ์ค‘๋‹จํ•˜์‹ญ์‹œ์˜ค. ๊ธฐ๋Šฅ์„ Windows Server์˜ ์ „์ฒด .NET์—์„œ ์‹คํ–‰๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋‚ด๋ณด๋‚ด๊ณ  .NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP API๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„ํ•ดํ•˜๊ณ  ํŠน์ • ๊ธฐ๋Šฅ์„ ์ž‘์€ ๋…๋ฆฝํ˜• ์„œ๋น„์Šค๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋„ ์•„๋‹ˆ๋ฉฐ _๋ฒ”์šฉ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค._

    • NB ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, OpenXML ํŒจํ‚ค์ง€๋Š” ์ด์ œ .NET Standard๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ Word/Excel/๋ฌด์—‡์ด๋“  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

  • .NET Core 2.0์€ ์•„์ง ์ ์ ˆํ•œ ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ LDAP ๋˜๋Š” ์‹œ๊ธฐ์ƒ์กฐ๋กœ ๋ณด์ด๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. 3๋ถ„๊ธฐ์— RTM์ด ์ถœ์‹œ๋˜๊ณ  ์—ฌ์ „ํžˆ AD ๋˜๋Š” Kerberos์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒฝ์šฐ(ํ•˜์ง€๋งŒ ๋” ์ด์ƒ 2008๋…„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”).
  • ASP.NET MVC 4.5์—์„œ ASP.NET Core 2.0์œผ๋กœ์˜ ์›ํ™œํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด _is_ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ASP.NET Core 1.0์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ 1.0์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ ์ธ ์ง€์›์— ๋Œ€ํ•œ ์•ฝ์†์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค). 1.0์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  Windows Server 2012 R2์˜ IIS 8.5์—์„œ ํ†ตํ•ฉ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ „์ฒด .NET์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ „์ฒด .NET์ด ๋”ฐ๋ผ์žก์•„ ASP.NET Core 2.x๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š”

    • ์˜์กดํ•˜๋Š” ํƒ€์‚ฌ ๊ธฐ์ˆ ์ด ๋ฌด์—‡์ด๋“  .NET Core๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ๋™๋“ฑํ•œ ๊ธฐ์ˆ ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Œ).

  • ํŒ€์ด ์™ธ๋ถ€ ์ข…์†์„ฑ, ๋‚ด๋ถ€ ํšŒ์‚ฌ ์ •์ฑ… ๋˜๋Š” ์ •์ฑ… ๋˜๋Š” ๋‹จ์ˆœํ•œ ๊ด€์„ฑ์— ์˜ํ•ด ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ „ ์„ธ๊ณ„์—๋Š” ์ตœ์‹  ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์„œ๋น„์Šค ๋ฐ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋ฐฑ๋งŒ์€ ์•„๋‹ˆ๋”๋ผ๋„ ์ˆ˜์‹ญ๋งŒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ํ”Œ๋žซํผ(ํด๋ผ์šฐ๋“œ/์—์ง€/IoT/etc), ASP.NET Core 2.0์ด ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋น ๋ฅด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์‚ฌ ์ œ์–ด ๊ณต๊ธ‰์—…์ฒด๋‚˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„์ง ์ฝ”๋“œ๋ฅผ ์ด์‹ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ด์œ ๋กœ Microsoft์— ๋น ๋ฅด๊ฒŒ ํ™•์žฅ๋˜๋Š” ์‹œ์žฅ์„ ๋ฌด์‹œํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

@dustinmoris ๋Š” netstandard์— ๋น ๋ฅธ ์›น ์Šคํƒ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๋” ํฐ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@alexwiese ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ์™„์ „ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ๊ณ  ๋”ฐ๋ผ์„œ ๋‹น์‹ ์ด ์ฐธ์กฐํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ๋„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ทธ๋“ค์˜ ์š”์ ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด๋ฆฐ ๊ฒฐ์ •์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฌผ๊ฑด์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ €๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ์ง์ ‘ ์ œํ’ˆ์„ ๋งŒ๋“ค๊ณ  ์žˆ์œผ๋ฉฐ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ตฌ์‹์˜ ๊ตฌ์‹ ์—†์ด ๋” ๋นจ๋ฆฌ ๋ฌผ๊ฑด์„ ์ž˜๋ผ๋‚ด๊ณ  ์‹ถ์–ด์ง€๋Š” ์ง€์ ์— ๋„๋‹ฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋”ฐ๋ฅด๋ฉฐ, ์ง€๋‚œ 14๋…„ ๋™์•ˆ ์ œ๊ฐ€ ๋ฐฐ์šด ํ•œ ๊ฐ€์ง€๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ท€ํ•˜์˜ ํ”Œ๋žซํผ์„ ๊ฒฐ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜๊ณ  ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ํ˜„์‹ค์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ๋ณด์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

asp.net ํ•ต์‹ฌ ํŒ€์ด ๋นจ๋ฆฌ ์›€์ง์—ฌ์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ asp.net core 1.x๋กœ ์ด๋™ํ•  ๋•Œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ๊ฐ€์ •์„ ๊นจ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@FransBouma ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ œํ’ˆ์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋ณด๋‹ค ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@๋งˆํฌ๋ Œ๋“ค

ํŒ€์€ ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์ „์ฒด Windows .NET Framework์— ํฌํ•จ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•œ .NET Core์—์„œ ๋กค๋งํ•  ์ค€๋น„๊ฐ€ ๋œ(๋˜๋Š” ๊ฑฐ์˜ ์ค€๋น„๋œ) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ์ตœ์ ํ™”๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ๋ช‡ ๊ฐœ์›” ๋Šฆ์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์Šˆํผ ๋“€ํผ API๋ฅผ .net ํ‘œ์ค€ 2.0 ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“ค๊ณ  nuget์— ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ œํ’ˆ์œผ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋ณด๋‹ค ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์•„ ๋ชฐ๋ผ, ์ด ์Šค๋ ˆ๋“œ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ๋ฉด์„œ?

@FransBouma

์ด๋Š” netstandard์— ๋น ๋ฅธ ์›น์Šคํƒ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๋” ํฐ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

netstandard๋Š” ๊ทธ ํ‘œ์ค€์„ ์ง€์›ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”Œ๋žซํผ์—์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ ๋ชฉ๋ก์— ๋ถˆ๊ณผํ•˜๊ธฐ ๋•Œ๋ฌธ์— netstandard์— ๋ถ€์กฑํ•œ ๊ฒƒ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ก ์ƒ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์›ํ•˜๋Š” ๋งŒํผ ๋นจ๋ฆฌ netstandard๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์–‘์— ๋” ๋งŽ์€ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์‹ค์ ์œผ๋กœ ๋ชจ๋“  ํ”Œ๋žซํผ์ด ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์‚ฌ์–‘์„ ๋”ฐ๋ผ์žก๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ASP.NET Core 2.x๊ฐ€ netstandard2.0(ํ˜„์žฌ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’)์— ์ปค๋ฐ‹ํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ์ •์˜๋œ ๋ชจ๋“  ๊ฒƒ์ด ๋ถ™์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด ASP.NET Core 2.x๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค. netstandard2.0 ์ด์ƒ์ผ ์ˆ˜ ์žˆ๋Š” netcoreapp2.x์— ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„ ๋‚˜๋Š” netcoreapp์˜ ์ƒˆ๋กœ์šด ๋ฐ˜์ง์ด๋Š” ๊ฒƒ๋“ค์„ ๋”ฐ๋ผ์žก์„ ์ƒˆ๋กœ์šด netstandard(3.x?)๊ฐ€ ๋‹ค์‹œ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ, ๊ทธ๊ฒƒ์€ ํ›จ์”ฌ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๊ณ  ์™œ ๋ชจ๋“  asp.net ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ง„ํ–‰์„ ๋Š๋ฆฌ๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? . ์‚ฌ๋žŒ๋“ค์—๊ฒŒ netstandard๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” ๋ณด๋‹ค ์žฅ๊ธฐ์ ์ธ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์Šคํƒ์ด ์žˆ๋Š” ํ•œ ์ •๋ง ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ASP.NET Core ์Šคํƒ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์ผ์ข…์˜ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค.

@FransBouma ์•„, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ ํฌ๊ธฐ๊ฐ€ ์ด๋ ‡๊ฒŒ ํฐ ์ค„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ฒฐ์ •์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ๊ฐ•ํ•œ ํŽธ๊ฒฌ์ด ์žˆ๋Š” ๋Œ“๊ธ€ 257๊ฐœ? ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ: ์ €๋Š” ๋น… ๋ฐ์ดํ„ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@davidfowl :

์ด ์Šค๋ ˆ๋“œ ์ „์ฒด์—์„œ System.DirectoryServices๋ฅผ ํ•ต์‹ฌ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋กœ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ์ ˆ๋Œ€ ์ด์‹๋˜์ง€ ์•Š์„ ์ข…์†์„ฑ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. 2.0์ด .NET Framework๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์ด 1๋…„ ์•ˆ์— ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์˜ˆ, ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. System.Directory ์„œ๋น„์Šค๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋„ ์ค€๋น„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์ง€์ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. API ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” VS 2017์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ ํ•˜๋Š” ๋ถ„์„๊ธฐ๋Š” ์•„์ง ํˆฌ์ž๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฏธ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋Š ๊ฒƒ?

Razor ํŽ˜์ด์ง€๋Š” ๊ฑฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” stackoverflow.com์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด์ง€๋งŒ ASP.NET Core๋ฅผ ์ผ๋ถ€ ๋ถ€๋ถ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฐ์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ("๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค)?

์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” API ํ˜ธ์ถœ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ๋ฌผ ์‚ฌ์ด์— ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ 18ms ์•ˆ์— ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์–ธ์ œ๋“ ์ง€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒ€ํ† ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋” ์ผ์ฐ ์„ค๋ช…ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ๋˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง„ํ™”ํ•ด์•ผ ํ•˜๋Š” netstandard์˜ ์ผ๋ถ€์ธ ๋ชจ๋“  API๋Š” ์ฒœ์ฒœํžˆ ๋ฐœ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. netstandard ์œ„์— ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ณ  ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. http ํด๋ผ์ด์–ธํŠธ, SSL ์ŠคํŠธ๋ฆผ, Int, String, Array, LINQ ๋˜๋Š” NET Standard์— ์กด์žฌํ•˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ์— ๋Œ€ํ•œ ์ƒˆ API๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„ โ€‹โ€‹์ƒˆ .NET Standard ๋ฒ„์ „์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ณ  ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์‹œํ–‰ํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋…ธ, .NET Core, .NET Framework, UWP ๋“ฑ ๋Œ€๋ถ€๋ถ„์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์ƒ์˜ ๋์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Unity์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ œํ’ˆ๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์•„๋งˆ๋„ ๋‹ค๋ฅธ ์ œํ’ˆ). ๊ฐ .NET ์นดํ…Œ๊ณ ๋ฆฌ์—๋Š” ๊ณ ์œ ํ•œ ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„๊ณผ ๋ฐฐ์†ก ์ฃผ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ๋ณ„๋„์˜ ์ œํ’ˆ์ด๋ฏ€๋กœ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์ƒˆ API๊ฐ€ ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์ƒˆ netstandard ๋ฒ„์ „์ด ์ƒ์„ฑ๋œ๋‹ค๋Š” ์•„์ด๋””์–ด๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋Ÿฌํ•œ ์ƒˆ API๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์„ ์ฆ‰์‹œ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ต์ฐจ ์ปดํŒŒ์ผํ•˜๊ณ  ํด๋ฆฌํ•„์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ํ™•์žฅ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด API๋ฅผ netstandard๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. @terrajobst ๋Š” ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ๋” ์ž˜ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@DamianEdwards ๋ฐ @shanselman Service Fabric ๋ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ•ต์‹ฌ ํ”„๋กœ์ ํŠธ์ด์ง€๋งŒ .Net Framework 4.5์—์„œ 4.6.(๋ฌด์–ธ๊ฐ€)๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋Š” SF ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งŽ์ด ํฌํ•จ๋œ ๋Œ€๊ทœ๋ชจ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. SF๋Š” ํ˜„์žฌ netcoreapp์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ .Net Framework๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์ง€๋งŒ ๋’ค์ฒ˜์ง€๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— .Net Core ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

(๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š”) ์šฐ๋ฆฌ ์„œ๋น„์Šค๊ฐ€ .Net Framework์ด๊ณ  MS Fakes๊ฐ€ netcoreapp์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ(๋˜๋Š” ๋ ˆ๊ฑฐ์‹œ๋ผ๊ณ  ๋งํ•ด์•ผ ํ•˜๋Š”) .Net Framework ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” netstandard 1.0์—์„œ 1.6์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ ์•ฑ์€ Xamarin Forms + UWP๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ netstandard๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ˜ธํ™˜๋˜๋„๋ก ๊ด€๋ฆฌ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฉˆ์ถฐ์„œ .Net Core 2.0, netcoreapp2.0 ๋ฐ netstandard 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@NickCraver

Razor ํŽ˜์ด์ง€๋Š” ๊ฑฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋‹น์‹ ์ด ๋ชจ๋“  ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€๋กœ๋งŒ ๋ณ€ํ™˜ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ด๋ฏธ MVC๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ผ๋ฐ˜ ๋ณด๊ธฐ๋กœ ์ด์‹ํ•˜๊ณ  ๋” ๋งŽ์€ ์ข…์†์„ฑ์ด ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. razor ํŽ˜์ด์ง€๊ฐ€ ์„ค๊ณ„๋œ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ์ปจํŠธ๋กค๋Ÿฌ ์ž‘์—…์—์„œ razor ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. System.Directory ์„œ๋น„์Šค๋Š” ๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋„ ์ค€๋น„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์ง€์ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. API ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” VS 2017์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ถ„์„๊ธฐ๋Š” ์•„์ง ํˆฌ์ž๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฏธ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ์ค‘์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ์ข…์†์„ฑ ๋ชฉ๋ก์„ ์—์Šค์ปฌ๋ ˆ์ด์…˜ํ•˜์„ธ์š”.

@์•„๋ถ€

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฉˆ์ถฐ์„œ .Net Core 2.0, netcoreapp2.0 ๋ฐ netstandard 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

๋‹น์‹ ์€ ASP.NET Core 2.0์„ ์˜๋ฏธํ–ˆ๊ณ ? .NET Core 2.0 ๋ฐ .NET Standard 2.0์€ ์—ฌ๊ธฐ์— ์‹ค์ œ๋กœ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ, ASP.NET Core 1.x๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์˜ ๋Œ€๋ถ€๋ถ„์€ .NET Core 2.0 ๋ฐ .NET Standard 2.0์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core 2.0์—๋Š” ์†”์งํžˆ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. SignalR์„ ASP.NET Core 1.x(์–ด์จŒ๋“  ํฌ์ŠคํŠธ 2.0์ž„)๋กœ ๋ฐฑํฌํŠธํ•  ์˜ˆ์ •์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ง€ ์ธ์‹์˜ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

@davidfowl ๋‚ด ์ƒ๊ฐ์— ๋‹น์‹ ์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ง์„ ๋“ค์—ˆ์„ ๋•Œ Windows ๊ฐœ๋ฐœ์ž์˜ ๋งˆ์Œ์„ ๊ฐ•ํƒ€ํ•˜๋Š” ๋‘๋ ค์›€์„ ์—„์ฒญ๋‚˜๊ฒŒ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. _ํŠนํžˆ_ ์ƒˆ ์Šคํƒ์ด ์ด์ „ ์Šคํƒ๊ณผ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ•˜์ง€ ์•Š๊ณ  ์–ธ์ œ ๋ฐœ์ƒํ• ์ง€ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ. ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „์ฒด .NET Framework์—์„œ ASP.NET Core์˜ EOL-ing์„ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์žฅ๊ธฐ์ ์ธ ๊ณ„ํš์€ ์•„๋‹์ง€ ๋ชจ๋ฅด์ง€๋งŒ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐœํ‘œ๋˜์—ˆ๊ณ  ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ํ•œ๋™์•ˆ ์œ ์ง€๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ๋Œ€๋กœ ๋กœ๋“œ๋งต์ด ๋ฐ”๋€Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ์˜๊ฐ€ ์—ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ช…๋ชฉ์ƒ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅํ„ฐ์™€ SDK ๋•Œ๋ฌธ์— ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ์—ญ๊ฒน๋„๋ก ์˜ค๋ž˜๋œ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณต๊ธ‰์—…์ฒด ์ค‘ ์ผ๋ถ€๋Š” ๊ธฐ์กด ์ œํ’ˆ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ 30%, HTML5 ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ์ƒˆ๋กœ์šด ์ผ๋ จ์˜ ๋ฒ„๊ทธ๊ฐ€ ํฌํ•จ๋œ ์ƒˆ๋กœ์šด API๋ฅผ ์ถœ์‹œํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํ›จ์”ฌ ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๊ฒฝ์Ÿ์—…์ฒด๋ฅผ ์ธ์ˆ˜ํ•˜๊ณ  ์ œํ’ˆ์„ ์ถœ์‹œํ•œ ํ›„ ์‹ ์†ํ•˜๊ฒŒ EOLํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณต๊ธ‰์—…์ฒด ์ค‘ ์ผ๋ถ€๋Š” ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ํฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ์ฝ”๋“œ ์ค‘ ์ผ๋ถ€๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•ญ์ƒ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์„ ์˜ ๋…ธ๋ ฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Windows ์Šฌ๋Ÿผ์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์€ ๋‹จ์ˆœํžˆ ์šฐ์•„ํ•˜๊ฒŒ ์€ํ‡ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์นจ๋Œ€ ์•„๋ž˜, ์šฐ๋ฆฌ ์˜ท์žฅ๊ณผ ํ‚ค๋ณด๋“œ ์•„๋ž˜์— ์ˆจ์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฟŒ๋ฆฌ๊ณ , ์ฝ”๋“œ๋ฅผ ํ”Œ๋žซํผ๋ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์—ฌ๋Ÿฌ ๋Œ€์ƒ์œผ๋กœ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋ฌด๋ก€ํ•œ ๋ถ€๋ถ„์€ ASP.NET Core ํŒ€์ด ๋‹ค์ค‘ ๋Œ€์ƒ ์ง€์ • ๋ฐ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋Ÿฐํƒ€์ž„ ๋ฐ ๋„๊ตฌ ์ง€์›์— ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋…์‹ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜ ํŒ€์ด ๊ทธ๊ฒƒ์„ ์›ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์‹ค์งˆ์ ์ธ ๋ถ€๋ถ„์€ ์ตœ์†Œํ•œ .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ASP.NET Core์˜ ์ฃผ๊ธฐ์  ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์‹ค์ œ _stable_ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ git์—์„œ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Standard์˜ ๋” ์ž‘์€ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ASP.NET ๋ฆด๋ฆฌ์Šค์™€ ์ผ์น˜์‹œํ‚ค์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

MVC 5๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .NET Framework๊ฐ€ ์กด์žฌํ•˜๋Š” ํ•œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

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

์š”์ปจ๋Œ€, ๋‚˜๋Š” ๋‹น์‹ ์ด ํ•˜๊ณ  ์žˆ๋Š” ์ผ๊ณผ ๊ทธ ์ด๋ฉด์˜ ๋ชฉํ‘œ๋ฅผ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ ์™€์„œ ๋‹น์‹ ์ด ๋‚ด๋ฆฐ ๊ฒฐ์ •์— ๋Œ€ํ•ด ๋งค์šฐ ์ข‹์€ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐœ์ฒ™์ž ๊ธฐ์ฐจ์— ํƒˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ์ถ”์ธกํ•ฉ๋‹ˆ๋‹ค. .Net Framework์—์„œ ํ•ต์‹ฌ ํ”„๋กœ์ ํŠธ(์‹ ๊ทœ)๋ฅผ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ด๋“ , ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๊ฒƒ์€ netstandard vNext๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@markrendle ์šฐ๋ฆฌ๋Š” ์‹ค์ œ ๊ณ ๊ฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ตฌ์กฐ๋ฅผ ๋‹น์‹ ๋ณด๋‹ค ๋” ์ž˜ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋งŒํ•œ ๋Œ“๊ธ€์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํฌ์ธํŠธ:

ํŒ€์€ ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API ๋ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์ „์ฒด Windows .NET Framework์— ํฌํ•จ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•œ .NET Core์—์„œ ๋กค๋งํ•  ์ค€๋น„๊ฐ€ ๋œ(๋˜๋Š” ๊ฑฐ์˜ ์ค€๋น„๋œ) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ์ตœ์ ํ™”๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ๋ช‡ ๊ฐœ์›” ๋Šฆ์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์ง€์ง€ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ถˆ๋งŒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์กฐ๊ฑด๋ถ€๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋ถˆ๋งŒ์€ ์ž‘์„ฑ์ž๊ฐ€ ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค"์ธ ๊ฒฝ์šฐ ".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. ์˜ˆ, ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ, ๋‚˜์œ ์ผ์ด ์•„๋‹ˆ๋‹ค. ASP.NET MVC ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— PDF ๋˜๋Š” DOCX ํŒŒ์ผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ๊ฐœ๋ณ„ ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  ๊ทธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์‹ค์ œ๋กœ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(ํ•ด ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ๊ธฐ๋Šฅ์„ Windows Server์˜ ์ „์ฒด .NET์—์„œ ์‹คํ–‰๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋‚ด๋ณด๋‚ด๊ณ  .NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP API๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„ํ•ดํ•˜๊ณ  ํŠน์ • ๊ธฐ๋Šฅ์„ ์ž‘์€ ๋…๋ฆฝํ˜• ์„œ๋น„์Šค๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๋ฒ”์šฉ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ์–ด ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŽ˜์ด์ง€๋Š” "๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค"์—์„œ ํ›จ์”ฌ ๋Š๋ฆฌ๊ณ  ๋” ๋น„์Œ‰๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค GC์—์„œ ํ›จ์”ฌ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์ข…์†์„ฑ์ด ๋ชจ๋“  ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฐ€์ •์„ ํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๊ฐ€์ •์ž…๋‹ˆ๋‹ค.

.NET Core 2.0์€ ์•„์ง ์ ์ ˆํ•œ ๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ LDAP ๋˜๋Š” ์‹œ๊ธฐ์ƒ์กฐ๋กœ ๋ณด์ด๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. 3๋ถ„๊ธฐ์— RTM์ด ์ถœ์‹œ๋˜๊ณ  ์—ฌ์ „ํžˆ AD ๋˜๋Š” Kerberos์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒฝ์šฐ(ํ•˜์ง€๋งŒ ๋” ์ด์ƒ 2008๋…„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”).

์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ๊ฑฐ๊ธฐ์— ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ๋“ค์—ˆ ์Šต๋‹ˆ๋‹ค. ์ผ์–ด์„œ๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณด์‹ญ์‹œ์˜ค. ๋˜๋Š” "Future"๋ผ๋Š” ๋ ˆ์ด๋ธ”์ด ๋ถ™์€ GitHub๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”. ์ด ์ž˜๋ชป๋œ ๊ฒฐ์ •์ด 3๋ถ„๊ธฐ์— ๋ฐฐ์†ก๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ๋ถˆํ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET MVC 4.5์—์„œ ASP.NET Core 2.0์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ASP.NET Core 1.0์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ 1.0์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ ์ธ ์ง€์›์— ๋Œ€ํ•œ ์•ฝ์†์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค).

์žฅ๊ธฐ ์ง€์›์ด ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ช…์ด ๋‹คํ•œ 1.x์—์„œ๋Š” ์—ฌ์ „ํžˆ ์‰ฝ๊ฒŒ ์ขŒ์ดˆ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์ด ๋” ์˜ค๋ž˜ ์ง€์†๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „์ฒด .NET์ด ๋”ฐ๋ผ์žก์•„ ASP.NET Core 2.x๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

netcoreapp ์„(๋ฅผ) ํƒ€๊ฒŸํŒ…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๋Ÿฐ ์ผ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

...๋˜๋Š” ์˜์กดํ•˜๋Š” ๋ชจ๋“  ํƒ€์‚ฌ ๊ธฐ์ˆ ์ด .NET Core๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” .NET Core๋ฅผ ์ง€์›ํ•˜๋Š” ๋™๋“ฑํ•œ ๊ธฐ์ˆ ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Œ).

์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ข…์ข… ์‚ฌ๋žŒ๋“ค์˜ ํ†ต์ œ์™€ ์‹œ๊ฐ„ ์˜ˆ์‚ฐ์„ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. Microsoft์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . install.ps1์ด ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํŒจํ‚ค์ง€๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ SQL ํŒ€๊ณผ ์‹ธ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์กฐ์ฐจ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด netstandard ํฌํŠธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒ€์ด ์™ธ๋ถ€ ์ข…์†์„ฑ, ๋‚ด๋ถ€ ํšŒ์‚ฌ ์ •์ฑ… ๋˜๋Š” ์ •์ฑ… ๋˜๋Š” ๋‹จ์ˆœํ•œ ๊ด€์„ฑ์— ์˜ํ•ด ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ „ ์„ธ๊ณ„์—๋Š” ์ตœ์‹  ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์„œ๋น„์Šค ๋ฐ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋ฐฑ๋งŒ์€ ์•„๋‹ˆ๋”๋ผ๋„ ์ˆ˜์‹ญ๋งŒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ๋ฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ํ”Œ๋žซํผ(ํด๋ผ์šฐ๋“œ/์—์ง€/IoT/etc), ASP.NET Core 2.0์ด ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋น ๋ฅด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์‚ฌ ์ œ์–ด ๊ณต๊ธ‰์—…์ฒด๋‚˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„์ง ์ฝ”๋“œ๋ฅผ ์ด์‹ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ด์œ ๋กœ Microsoft์— ๋น ๋ฅด๊ฒŒ ํ™•์žฅ๋˜๋Š” ์‹œ์žฅ์„ ๋ฌด์‹œํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ๋ฐ”๋ณด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ๋น„ํ•˜ํ•˜๊ณ , ๋ฌด๋ก€ํ•˜๊ณ , ํ•„์š” ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์‚ถ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ์˜ ์•ฑ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ ๋ช‡ ๋…„ ๋˜๋Š” ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ๋งŒ๋“ค์–ด ๋‚ธ ๊ฒƒ๋“ค์ด๋ฉฐ ์ถœ์‹œ ์ „์— ๊ฐ‘์ž๊ธฐ ์šฐ๋ฆฌ๋Š” ์ „๋ง์ด ์šฐ๋ฆฌ์—๊ฒŒ ์‹œ๊ฐ„ ์ œํ•œ์ด ์žˆ์Œ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„ ์—†์ด ๋งŽ์€ ๋ถˆํ™•์‹ค์„ฑ์ด ๋„์ž…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ๋‹น์‹ ์˜ ๊ฒฝ๋ ฅ์—์„œ ์ •๋ง๋กœ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋ชจ๋“  ์ ์€ ์ดํ•ด๊ฐ€ ๋˜์ง€๋งŒ, ์ด ์šฐ์ฃผ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋” ์ ์€ ์—๋„ˆ์ง€๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์ƒํƒœ๋กœ ๊ฐˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ ์ƒํƒœ๊ฐ€ ๋‹น์‹ ์ด ๊ฐ€๊ณ  ์‹ถ์€ ๊ณณ์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ทธ๊ณณ์— ๊ฐˆ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํŠน์ • ์ƒํƒœ๋ฅผ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ์ ์€ ์—๋„ˆ์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋ˆ„๊ตฐ๊ฐ€ IRC์—์„œ ์ด๊ฒƒ์„ ์ œ์ณ๋‘๊ณ  ์–ธ๊ธ‰ํ•œ ํ›„ ์ด ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์ด์— ๋Œ€ํ•œ ๊ณต์‹์ ์ธ ๋ฐœํ‘œ๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์™„์ „ํžˆ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” .NET Core๋ฅผ ๊ด€์ฐฐํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด SDK ๋ฐ ๋Ÿฐํƒ€์ž„์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ์–ป๊ณ  macOS ๋ฐ Linux์—์„œ ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์—ฌํ•˜๊ณ  .NET Framework์—์„œ .NET Standard/.NET Core๋กœ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. .

๋‚ด ํฐ ๋ชฉํ‘œ๋Š” .NET Core 1.0 ๋˜๋Š” 1.1์—์„œ [์•„์ง] ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ตฌ์„ฑ ์š”์†Œ ํž™์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” Active Directory( System.DirectoryServices )
  • Entity Framework 6( EntityFramework ), EF Core๋Š” ์•„์ง ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • OData ( Microsoft.Data.Services / System.Data.Services ) v1-3, ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” v4๋ฅผ (์•„์ง) ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ WebAPI OData๋Š” ์„ค์ •ํ•˜๊ธฐ ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.
  • ์›น ์„œ๋น„์Šค ์ž์ฒด ์—…๊ทธ๋ ˆ์ด๋“œ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ IIS ๊ด€๋ฆฌ( System.Web.Management ) ๋ฐ .NET Remoting( System.Runtime.Remoting ) - ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ.
  • ์‹œ๊ทธ๋„R
  • ์‚ฌ์šฉ์ž ์ •์˜ IHttpHandler s ๋ฐ IHttpModule s, ASP.NET Core์— ์ƒ์‘ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์—, ์•„๋งˆ๋„ ์ผ์ข…์˜ ๋ฏธ๋“ค์›จ์–ด์— ๋งž๊ฒŒ ์กฐ์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ASP.NET WebAPI์˜ ํ™•์žฅ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ง€์ • ํ•ญ๋ชฉ.
  • net46๋งŒ ์ง€์›ํ•˜๊ณ  ์ผ๋ถ€ ๊ธฐ๋ณธ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉฐ .NET Core 2.0์—์„œ ์ž‘์—…ํ•  ํ™•๋ฅ ์ด ์•ฝ 0%์ธ ์„œ๋ฒ„์—์„œ Microsoft.TeamFoundationServer.ExtendedClient ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๋“ฑ.

์ด ์„œ๋น„์Šค์˜ ํฌ๊ธฐ์™€ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด .NET Core๋กœ์˜ ๋ชจ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์ ์ง„์ ์ด์–ด์•ผ ํ•˜๋ฉฐ ์•„๋งˆ๋„ ์ƒˆ๋กœ์šด ASP.NET-Core-2.0 API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€๋Š” ์•„์ง ์ด๋ฅด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

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

.NET Core๊ฐ€ ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ–ˆ๊ฑฐ๋‚˜ ๊ฑฐ์˜ ํŒจ๋ฆฌํ‹ฐ์— ๊ฐ€๊นŒ์šฐ๋ฉด .NET Framework ์ง€์›์ด ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ฒ ์ง€๋งŒ ์ถฉ๋ถ„ํžˆ ๊ณ ๊ธ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ๋’ค์ณ์ ธ ์žˆ๊ณ  2.0์ด ๊ทธ๋Ÿฐ ๊ฒƒ์„ ๋งŒ๋“ค๊ธฐ์— ์ ํ•ฉํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํš๊ธฐ์ ์ธ ๋ณ€ํ™”.

@davidfowl

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋‹น์‹ ์ด ๋ชจ๋“  ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€๋กœ๋งŒ ๋ณ€ํ™˜ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์ด๋ฏธ MVC๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ผ๋ฐ˜ ๋ณด๊ธฐ๋กœ ์ด์‹ํ•˜๊ณ  ๋” ๋งŽ์€ ์ข…์†์„ฑ์ด ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ๋ฉด๋„๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. razor ํŽ˜์ด์ง€๊ฐ€ ์„ค๊ณ„๋œ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ์ปจํŠธ๋กค๋Ÿฌ ์ž‘์—…์—์„œ razor ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์ด ์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค(๋ฉ”์ธ ์›น์‚ฌ์ดํŠธ๋Š” ๊ฑฐ์˜ ์™„์ „ํžˆ ๋‹จ์ผ ์•ฑ์ด์ง€๋งŒ ํšŒ์‚ฌ๋กœ์„œ: ์šฐ๋ฆฌ๋Š” ๊ด€๋ จ๋˜๊ณ  ์†Œํ†ตํ•˜๋Š” ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ์ค‘์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ์ข…์†์„ฑ ๋ชฉ๋ก์„ ์—์Šค์ปฌ๋ ˆ์ด์…˜ํ•˜์„ธ์š”.

๋„ค, ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ๋งˆ์ง€๋ง‰ ์ข…์†์„ฑ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ ์—†์ด๋Š” ์ผ๋ถ€ ์•ฑ์— ๋กœ๊ทธ์ธ์กฐ์ฐจ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํฐ ์ฐจ๋‹จ๊ธฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ฒซ ํ™”๋ฉด ์ฐจ๋‹จ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ(์˜ค๋Š˜ ์•„์นจ์— ์ถœ์‹œ๋œ ํ›„) ์•ฑ ์ „์ฒด์— ์ด์‹์„ฑ ๋ถ„์„๊ธฐ๋ฅผ ์™„์ „ํžˆ ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์šฐ์šธํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์›€์ง์ž„์ด ๊ณ ๋ ค๋˜๊ธฐ ์ „์— ๋ถ„์„๊ธฐ๊ฐ€ ํ˜„์žฌ ํˆด๋ง์— ๋Œ€ํ•ด ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ์—๋„ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฐ์ •์ด ๋ฐ”๋€” ๊ฐ€๋Šฅ์„ฑ์ด 0์ด ์•„๋‹Œ ํ•œ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋” ์ด์ƒ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์ง€ ์•Š๋„๋ก ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

์ฐธ๊ณ ๋กœ OData๋Š” ์•„์ง netcoreapp์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์—ฌ์ „ํžˆ System.Web์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ(ASP.NET Core์—์„œ OWIN ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•จ) ์ง€์›์„ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/OData/WebApi/issues/939 ์ฐธ์กฐ).

์—ฌ์ „ํžˆ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Microsoft์—์„œ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: @yaakov-h๊ฐ€ 2๋ถ„ ๋” ๋นจ๋ผ์„œ OData์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•œ ๊ฒƒ์— ๋Œ€ํ•ด +1

๋‚˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋กœ ์—ฌ์ „ํžˆ ์—ฌ๊ธฐ์— ๋‹ต์žฅ์„ ํ•˜๊ณ  ์žˆ๋‹ค

  • ๋‚œ ์ƒ๊ด€
  • ์ž ์€ ์•ฝํ•œ ์ž์˜ ๊ฒƒ์ด๋‹ค ๐Ÿ˜†
  • ์ธํ„ฐ๋„ท์ƒ์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ‹€๋ ธ๊ธฐ ๋•Œ๋ฌธ์— FUD๋ฅผ ๋ถˆ๋Ÿฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@NickCraver

์•ฑ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์ด ์—ฌ๊ธฐ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค(๋ฉ”์ธ ์›น์‚ฌ์ดํŠธ๋Š” ๊ฑฐ์˜ ์™„์ „ํžˆ ๋‹จ์ผ ์•ฑ์ด์ง€๋งŒ ํšŒ์‚ฌ๋กœ์„œ: ์šฐ๋ฆฌ๋Š” ๊ด€๋ จ๋˜๊ณ  ์†Œํ†ตํ•˜๋Š” ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Razor ํŽ˜์ด์ง€ tbh๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 2.0์—๋Š” ๋งŽ์€ ์ž‘์€ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ 1.x๋กœ ๋‹ค์‹œ ํฌํŒ…๋˜์ง€ ์•Š๋Š” ํฐ ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค. EOL์€ ๋งค์šฐ ํ˜„์‹ค์ ์ด๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ์•ž์œผ๋กœ .NET Framework๋ฅผ ์ง€์›ํ•˜๋Š” ASP.NET Core 2.0์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•˜๋“  ๋ง๋“ , ๊ทธ ์‚ฌ์ด์—๋Š” ์ •๋ง ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

@dustinmoris ๋Š” ๊ทธ ๋ฟ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋Œ€์น˜์˜ ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•˜๋‹ค. ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ๋™์ผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” aspnetcore 1.* ์•ฑ์„ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ .NET ๋ฐ์Šคํฌํƒ‘์„ ๋Ÿฐํƒ€์ž„(์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์šฉ LOB)์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  .net ์ฝ”์–ด ๋Ÿฐํƒ€์ž„, netstandard ๋“ฑ์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ํ๋ฆ„/๋น„์ „/๊ธฐํƒ€๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  .net ์ฝ”์–ด๋กœ ์ด๋™ํ•œ ํ›„(๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ) aspnetcore ์„ ํƒ์˜ ๊ฒฐ์ •์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € aspnet ์ฝ”์–ด(.net ๋ฐ์Šคํฌํƒ‘ ๋Œ€์ƒ)๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” aspnetcore 1.*์ด ํ•ญ์ƒ "๋‘ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ชจ๋‘ ์‹คํ–‰"๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋งˆ์ผ€ํŒ…๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์Œ(๋ฒ„์ „ ๋˜๋Š” ์—ฐ๋„) ์‚ญ์ œ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์ „ํ˜€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋Š” ์•ฝ๊ฐ„ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ตœ์†Œํ•œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” -> ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฃผ๊ธฐ ๋˜๋Š” ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ(๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค)์„ ๊ธฐ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

.net(๋ฐ ์›น ์Šคํƒ์„ ์œ„ํ•œ aspnet ์„ ํƒ)์˜ ์ข‹์€ ์ ์€ ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ผ๋ถ€๋Š” ๋‚ด๋ถ€์ ์ด๋ฉฐ ๋Œ€์ƒ(.net core/netstandard)์ด ๋„ˆ๋ฌด ์œ ๋™์ ์ผ ๋•Œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์‹ค์ œ ํˆฌ์ž ์ˆ˜์ต์ด ์—†์Šต๋‹ˆ๋‹ค.
์ผ๋ถ€๋Š” ์™ธ๋ถ€์ ์ด๊ณ  ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. netcoreapp2 ํด๋กœ์ €์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋‚ด ์•„์ด๋””์–ด๋Š” netcoreapp2 netstandard2 $ ์— ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
libs๊ฐ€ ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ netstandard2๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋น„ํŠธ ๋ฐ ์•ฝ์†์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ํ‰๊ฐ€ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค(์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ ์•ฝ์†์˜ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๊ฐ€ ๋‚ฎ์•„์ง).

๋‚˜๋Š” ์™„์ „ํžˆ ๊ทธ๋ฆฐํ•„๋“œ์™€ ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ, ๊ทธ๋ฆฐํ•„๋“œ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์‹œ์Šคํ…œ(excel/pdf/etc)๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— scracth์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋˜๋Š” ์ตœ์‹  ์ถ”์„ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ rpc๋กœ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ์ƒํ™ฉ์ด ๋” ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์ฆ‰, ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ž˜ํ•‘ํ•˜๋„๋ก ๊ฐ•์š”๋ฐ›์ง€ ์•Š๊ณ  ํ‰๊ฐ€ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์€ ๋™์‹œ ์„ ํƒ์ž…๋‹ˆ๋‹ค). ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(aspnetcore ๊ฐœ๋ฐœ ํ๋ฆ„์€ ํ›Œ๋ฅญํ•˜๊ณ  ์ƒ์‚ฐ์ ์ž„).

์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ํ‰๊ฐ€์—์„œ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ .net core ๋ฐ/๋˜๋Š” netstandard lib์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์€ atm์ด ๋„ˆ๋ฌด ๋‚ฎ์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ฌด๋ฃŒ nuget.org oss pkg๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค). ๋”ฐ๋ผ์„œ ์ƒˆ ์Šคํƒ์œผ๋กœ ์—ด์‹ฌํžˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์Šคํƒ(๋น„์šฉ/์ด์ /๋ฏธ๋ž˜/์‹ ๋ขฐ/๊ธฐํƒ€)๋„ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” TODO ์›น ์•ฑ์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ .NET์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ €๋Š” ์ˆ˜๋…„ ๊ฐ„์˜ ์ค€๋น„๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๊ฐ€์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ aspnetcore, ๋‚˜๋จธ์ง€๋Š” ์ด ๋ฐ˜๋ณต์— ๋Œ€ํ•ด ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค).
๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋‚ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์žฌ์•™์˜ ๋น„๋ฒ•์ด๋ฉฐ, ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•  ๋•Œ lib๊ฐ€ ์กด์žฌํ•˜๋Š” ๋‹ค๋ฅธ ์Šคํƒ(์ž๋ฐ”/๋…ธ๋“œ)์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ธ์ง€ ์‹ค์ œ๋กœ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์›ํ™œํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์ €๋Š” ๋ฏธ๋ž˜์˜ aspnet ์ฝ”์–ด์— ๋Œ€ํ•œ ๋น„์ „์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช…ํ™•ํ•œ ๊ฒฝ๋กœ(๋˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์˜์‹ฌ)๊ฐ€ ์—†์œผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ํŒ๋งคํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ฆ‰, .net ๋ฐ์Šคํฌํƒ‘์„ ๋‚จ๊ฒจ๋‘๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜๊ณ  ๋” ๋งŽ์€ ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด aspnet ํŒ€์ด ์ข‹์€ ๋„๋ฐ•์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๋…ธ๋“œ/์ž๋ฐ”์— ๋Œ€ํ•œ ํ๋ฆ„์„ ์žƒ์ง€ ์•Š์Œ).
๊ทธ๋Ÿฌ๋‚˜ ํ™•์‹คํžˆ ๋Š๋ฆฐ ๋ง์—์„œ ๊ฐœ๋ฐœ์ž์˜ ์‚ถ์„ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ฉฐ ์ด๊ฒƒ์€ aspnet ํŒ€ ํ˜ธ์ถœ(๊ทธ๋“ค์˜ ์ œํ’ˆ)์ž…๋‹ˆ๋‹ค.
๋‚ด ํ”ผ๋“œ๋ฐฑ์€ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  fw๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ €๋Š” ์‹ ๋ขฐ์™€ ์•ˆ์ •์„ฑ์ด ํ•„์š”ํ•˜๊ณ  ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ .net ์ƒํƒœ๊ณ„(netcore/project.json ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋˜ํ•œ ๋งˆ์ผ€ํŒ…/์ „๋„์‚ฌ๊ฐ€ ์‹ ๋ขฐ๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค)

@yaakov-h

ASP.NET Core(1.x ๋˜๋Š” 2.x)๋กœ ์ด์‹ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core๋Š” System.Web์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ ์ง„์  ํฌํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

.NET Core๊ฐ€ ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ–ˆ๊ฑฐ๋‚˜ ๊ฑฐ์˜ ํŒจ๋ฆฌํ‹ฐ์— ๊ฐ€๊นŒ์šฐ๋ฉด .NET Framework ์ง€์›์ด ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ฒ ์ง€๋งŒ ์ถฉ๋ถ„ํžˆ ๊ณ ๊ธ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ์ „ํžˆ ๋’ค์ณ์ ธ ์žˆ๊ณ  2.0์ด ๊ทธ๋Ÿฐ ๊ฒƒ์„ ๋งŒ๋“ค๊ธฐ์— ์ ํ•ฉํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํš๊ธฐ์ ์ธ ๋ณ€ํ™”.

๊ทธ๊ฒƒ์„ ๋ฒ„๋ฆด ์ ์ ˆํ•œ ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. .NET Framework์™€ ํŒจ๋ฆฌํ‹ฐ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์ด์‹ํ•˜์ง€ ์•Š์„ ์ข…์†์„ฑ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๋‚ด ์งˆ๋ฌธ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์„ค๊ณ„ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ํ˜„์‹ค์ ์œผ๋กœ ์˜์›ํžˆ .NET Framework๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@davidfowl ์€ ์—…์ŠคํŠธ๋ฆผ ์ข…์†์„ฑ์— ์ „์ ์œผ๋กœ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ์˜์›ํžˆ .NET Framework์— ๋จธ๋ฌผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋Œ€๋ถ€๋ถ„์˜ ํƒ€์‚ฌ ์ œํ’ˆ์—๋Š” ์ด๋ฏธ netstandard ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework์—์„œ ์šฐ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ฃผ๋กœ Microsoft ์ข…์†์„ฑ์ด๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋ฐ˜์ฏค ํฌ๊ธฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜ˆ: OData).

@NickCraver ๋น„ํ•˜ ํ•˜๊ฑฐ๋‚˜ ๋ชจ์š•ํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋Šฆ์€ ๋ณ€ํ™”๋ผ๋Š” ์ ์— ๊ฐ์‚ฌํ•˜๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์–ด๋Š ๋ถ€๋ถ„์ด ์˜ํ–ฅ์„ ๋ฐ›๋“  ์‹ค๋ง์Šค๋Ÿฝ๊ณ , ๋‚ด๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค๋ฉด ๋‚˜๋„ ์†Œ๋ž€์„ ํ”ผ์šฐ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” (๋‚ด๊ฐ€ ์ผํ•˜๋Š” ๊ณณ์—์„œ๋Š” ์—ฌ์ „ํžˆ ASP.NET WebAPI 5.2.3์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ) ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฒฌํ•ด๊ฐ€ ๋œ ๊ฐ์ •์ ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณด์„ธ์š”. ์˜ค๋Š˜ ๋‹ค์Œ Stack Exchange(๋ฌด์—‡์ด๋“  ๊ฐ„์—) ๋นŒ๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ASP.NET Core ํŒ€์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋Š” netcoreapp20 ์— ์žˆ๋Š” ํ•ญ๋ชฉ์ด ์•„๋‹™๋‹ˆ๋‹ค( UTF8Strings ๋ฐ Pipelines ๋ฐ ๋‚ฎ์€ ํ• ๋‹น, ๋น„๋™๊ธฐ, _fast_ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ(์•ฝ๊ฐ„ ์ถ”์ธกํ•˜๊ณ  ์žˆ์Œ))๊ฐ€ ์ „์ฒด .NET๋ณด๋‹ค ๋” ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ด๋‚˜์š”? .NET Core 2.0์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด .NET 4.7.1๋ณด๋‹ค ๋” ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ง„ํ™”ํ•˜๊ณ  ๋ณ€ํ™”์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์Šคํƒ๊ณผ ์ง€์›์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ์˜ 20๋…„์— ๊ฑธ์นœ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด๋Š” ๊ธฐ๋ณธ ๊ธฐ์ˆ ์— ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†์ด ๋ฌถ์ธ ์›น ์Šคํƒ ์ค‘ ์–ด๋Š ๊ฒƒ์„ ์„ ํƒํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@ZigMeowNyan

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

๊ทธ๊ฒƒ๋“ค์€ ์‹ค์ œ๋กœ ์ •๋ง ์ข‹์€ ์ ์ด๋ฉฐ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Standard๊ฐ€ ์ œ์™ธ๋˜๋Š” ๊ฒƒ๊ณผ ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ง€ ๋ฌผ๋ฆฌํ•™์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ฐ .NET ํ”Œ๋žซํผ์ด ์ž์ฒด ์†๋„๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  .NET Standard๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Š๋ฆฌ๊ฒŒ ์ด๋™ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ž‘์—…์„ ๋œ ์ž์ฃผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ชจ๋‘๊ฐ€ ๋‚ด๋ฉดํ™”ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๋œ ์œ ์šฉํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์ง์Šน์˜ ๋ณธ์„ฑ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€๋‹ด์„ ์ œ๊ฑฐํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋‹จ์ผ ๊ตฌํ˜„๊ณผ ๋‹จ์ผ ๋ฐฐ์†ก ์ผ์ •์„ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ฟŒ๋ฆฌ๊ณ , ์ฝ”๋“œ๋ฅผ ํ”Œ๋žซํผ๋ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์—ฌ๋Ÿฌ ๋Œ€์ƒ์œผ๋กœ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋ฌด๋ก€ํ•œ ๋ถ€๋ถ„์€ ASP.NET Core ํŒ€์ด ๋‹ค์ค‘ ๋Œ€์ƒ ์ง€์ • ๋ฐ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ๋Ÿฐํƒ€์ž„ ๋ฐ ๋„๊ตฌ ์ง€์›์— ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋…์‹ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜ ํŒ€์ด ๊ทธ๊ฒƒ์„ ์›ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์‹ค์งˆ์ ์ธ ๋ถ€๋ถ„์€ ์ตœ์†Œํ•œ .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ASP.NET Core์˜ ์ฃผ๊ธฐ์  ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์‹ค์ œ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ git์—์„œ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Standard์˜ ๋” ์ž‘์€ ๋ฐ˜๋ณต์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ASP.NET ๋ฆด๋ฆฌ์Šค์™€ ์ผ์น˜์‹œํ‚ค์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๊ฐ™์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—๋Š” ifdef๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ 2.x ๊ธฐ๊ฐ„์— ์ƒˆ๋กœ์šด API๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์š”์ปจ๋Œ€, ๋‚˜๋Š” ๋‹น์‹ ์ด ํ•˜๊ณ  ์žˆ๋Š” ์ผ๊ณผ ๊ทธ ์ด๋ฉด์˜ ๋ชฉํ‘œ๋ฅผ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ ์™€์„œ ๋‹น์‹ ์ด ๋‚ด๋ฆฐ ๊ฒฐ์ •์— ๋Œ€ํ•ด ๋งค์šฐ ์ข‹์€ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐœ์ฒ™์ž ๊ธฐ์ฐจ์— ํƒˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†”์งํ•œ ์งˆ๋ฌธ(Microsoft๊ฐ€ ์•„๋‹Œ ์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค)์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋ณด๋‹ค ํ˜ธํ™˜์„ฑ์„ ์„ ํ˜ธํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ASP.NET Core๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ?

๋˜ ๋‹ค๋ฅธ ๊ฐ„๋‹จํ•œ ์ƒ๊ฐ: ์ด์™€ ๊ฐ™์€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ์—๋Š” "์˜ค๋ž˜๋œ" .NET ์ง€์›์— ๋Œ€ํ•œ ์–‘๋ณด๊ฐ€ ์ด๋ฃจ์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ทธ๋ฃน์˜ ์‚ฌ๋žŒ๋“ค์ด ํ™”๋ฅผ ๋‚ด๋Š” ๋™๋“ฑํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€๋˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋Œ€๋ถ€๋ถ„์˜ ํƒ€์‚ฌ ์ œํ’ˆ์—๋Š” ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ netstandard ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework์—์„œ ์šฐ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ฃผ๋กœ Microsoft ์ข…์†์„ฑ์ด๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋ฐ˜์ฏค ํฌ๊ธฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜ˆ: OData).

๐Ÿ˜ž

@๋งˆํฌ๋ Œ๋“ค

โ€ข ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ถˆ๋งŒ ์ค‘ ์ƒ๋‹น์ˆ˜๋Š” ์ž‘์„ฑ์ž๊ฐ€ ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ"์ธ ๊ฒฝ์šฐ ".NET Core 2.0์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. . ์˜ˆ, ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ, ๋‚˜์œ ์ผ์ด ์•„๋‹ˆ๋‹ค. ASP.NET MVC ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— PDF ๋˜๋Š” DOCX ํŒŒ์ผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ๊ฐœ๋ณ„ ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  ๊ทธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์‹ค์ œ๋กœ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(ํ•ด ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?) ๊ธฐ๋Šฅ์„ Windows Server์˜ ์ „์ฒด .NET์—์„œ ์‹คํ–‰๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋‚ด๋ณด๋‚ด๊ณ  .NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP API๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„ํ•ดํ•˜๊ณ  ํŠน์ • ๊ธฐ๋Šฅ์„ ์ž‘์€ ๋…๋ฆฝํ˜• ์„œ๋น„์Šค๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๋ฒ”์šฉ ๋ชจ๋ฒ” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.
NB ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, OpenXML ํŒจํ‚ค์ง€๋Š” ์ด์ œ .NET Standard๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ Word/Excel/๋ฌด์—‡์ด๋“  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.<<

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฏธ ๋งํ–ˆ๋“ฏ์ด ๋ฉ‹์ง„ ๋””์ž์ธ์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๊ณ„ํš์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ WPF ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ฐจ์ด๋ฅผ ๋” ๋งŽ์ด ๋งŒ๋“ค์ˆ˜๋ก ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

PDF, DocX ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ ๋„๊ตฌ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ์œผ๋ฉฐ ๊ฐœ๋ฐฉํ˜• XML์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ํƒ€์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•œ ์ˆ˜๋งŒ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ  ๊ฐœ๋ฐœ/์œ ์ง€๊ด€๋ฆฌ/ํ…Œ์ŠคํŠธํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค.

.net ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ASP.net์ด ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์„์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์™€ ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์˜ ASP.Net์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋ณด์•ˆ ๊ฐœ์„  ๋“ฑ์œผ๋กœ ์ธํ•ด ์ตœ์‹  ๋ฒ„์ „์—์„œ ๋„ˆ๋ฌด ๋ฉ€์–ด์ง€๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณดํŠธ์—๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์–ด๋–ค ํ˜•ํƒœ์˜ ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ์ง€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•˜๋Š” ์ผ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ WPF ์•ฑ๊ณผ ๋‚ด ์„œ๋ฒ„ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ์„ธ ๊ฐœ์˜ ์ž์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Apis๊ฐ€ .net ์ฝ”์–ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ docx ๋ฐ pdf๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Telerik ๋ฐ SyncFusion์˜ WPF ๋„๊ตฌ์˜ ์ „์ฒด ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€ ๋˜๋Š” ์ „๋ถ€๋Š” .net core์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Microsoft๋Š” .net์— ๋›ฐ์–ด๋‚œ ๊ธฐ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ .net ์ฝ”์–ด ๋’ค์— ์žˆ๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์˜ ์ค‘์š”์„ฑ์„ ์žŠ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํ…ŒํŒ

@๋งˆํฌ๋ Œ๋“ค

์•„, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ‘œ๋ณธ ํฌ๊ธฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํฐ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ฒฐ์ •์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ๊ฐ•ํ•œ ํŽธ๊ฒฌ์ด ์žˆ๋Š” ๋Œ“๊ธ€ 257๊ฐœ? ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ฉด์ฑ… ์กฐํ•ญ: ์ €๋Š” ๋น… ๋ฐ์ดํ„ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋ฌด์Šจ ์ง“์„ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์˜น์•Œ์ด๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ง•์ง•๊ฑฐ๋ฆด ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹จ์ง€ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

@stefanolson

.net ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ ๋ชจ๋‘ ๊ฐ€ ๋™์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ์•ˆ ๋˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

.Net Core x๋กœ ์ด์‹ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
NewRelic (.Net Core ๊ณ„ํš์ด ์—†์œผ๋ฏ€๋กœ alt๋ฅผ ์ฐพ์•„์•ผ ํ•จ)
NH (EF Core์— ๊ธฐ๋Šฅ์ด ์—†๋Š” ๊ฒฝ์šฐ).
ServiceBase (์—ฌ๋ฆ„์— .Net Core 2์— ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค)

์šฐ๋ฆฌ๋Š” ์ค‘๊ฐ„์— Core 1.0์„ ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ  NH, EF ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ์ฐฝ์˜๋ ฅ์„ ๋ฐœํœ˜ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Razor ํŽ˜์ด์ง€ tbh๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 2.0์—๋Š” ๋งŽ์€ ์ž‘์€ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ 1.x๋กœ ๋‹ค์‹œ ํฌํŒ…๋˜์ง€ ์•Š๋Š” ํฐ ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์—†์Šต๋‹ˆ๋‹ค. EOL์€ ๋งค์šฐ ํ˜„์‹ค์ ์ด๋ฉฐ ๊ฐœ์ธ์ ์œผ๋กœ ์•ž์œผ๋กœ .NET Framework๋ฅผ ์ง€์›ํ•˜๋Š” ASP.NET Core 2.0์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•˜๋“  ๋ง๋“ , ๊ทธ ์‚ฌ์ด์—๋Š” ์ •๋ง ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

Razor ํŽ˜์ด์ง€๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์ปค์„œ ์ด๋™ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” (ํ˜„์žฌ) ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  1. ์šฐ๋ฆฌ๋Š” ๋‚ด๋‚ด ์ง€์›๋ฉ๋‹ˆ๋‹ค
  2. ๋ฐ˜๋Œ€์ชฝ์— ์‹ค์ œ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ˜„์žฌ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์™„์ „ํžˆ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ค€๋น„๋„ ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋„ ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋  ๊ฒƒ์— ๋Œ€ํ•œ ์•ฝ์† ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์•ฝ์†์„ ๋ฏฟ๊ณ  ์žˆ์œผ๋ฉฐ ๋งŽ์€ ์•ฝ์†์ด ๋ถˆํƒ€๋ฒ„๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ๋งˆ์ผ€ํŒ…ํ•˜๋Š” ์ตœ์•…์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ณผ๋„ํ•œ ์•ฝ์†๊ณผ ๊ณผ๋„ํ•œ ์ „๋‹ฌ(์ „๋ฐ˜์ ์ธ ๊ฒฝํ—˜)์ž…๋‹ˆ๋‹ค.

ASP.NET Core๊ฐ€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ์ผ์„ ํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๋‹ค. ์šด์ด ์ข‹๊ฒŒ๋„ ์ผ๋ถ€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์‹œ์ ์—์„œ ์ด ์Šค์œ„์น˜๋Š” ๋‚˜์ฉ๋‹ˆ๋‹ค. ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์‹ค์ œ๋กœ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ์ด์‹๋œ๋‹ค๋ฉด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ 3.x์—์„œ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค. ๋Œ€์•ˆ์ด ์ค€๋น„๋˜๊ธฐ ์ „์— ์ด์‹ํ•˜๊ณ  EOL ์ˆ˜๋ช…์„ ์„ ์ข…๋ฃŒํ•  ๊ธฐํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌ -> EOL ๋ฒ„์ „์œผ๋กœ ์ด์‹ํ•˜๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. .NET์ด ์ด๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๊ท€ํ•˜๋ฅผ ๊ฑฑ์ •ํ•˜๋Š” ๊ฒƒ๋งŒํผ ๊ท€ํ•˜๋„ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๊ฐ€ ๋•๊ณ  ์‹ถ์ง€ ์•Š์•˜๋‹ค๋ฉด ์—ฌ๊ธฐ์— ์žˆ์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@FransBouma ๋‹น์‹ ์€ Microsoft๊ฐ€ ์ˆ˜๋งŽ์€ GitHub ๋ฌธ์ œ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•œ ๊ทธ๋ฆผ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ์›๊ฒฉ ์ธก์ •, ํ”ผ๋“œ๋ฐฑ ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ์˜ ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ ํ•˜๋Š” ๊ฒƒ์€

์•„ ๋ชฐ๋ผ, ์ด ์Šค๋ ˆ๋“œ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์œผ๋ฉด์„œ?

.net ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ASP.net์ด ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์„์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์™€ ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์˜ ASP.Net์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋ณด์•ˆ ๊ฐœ์„  ๋“ฑ์œผ๋กœ ์ธํ•ด ์ตœ์‹  ๋ฒ„์ „์—์„œ ๋„ˆ๋ฌด ๋ฉ€์–ด์ง€๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ณดํŠธ์—๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์–ด๋–ค ํ˜•ํƒœ์˜ ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ์ง€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ .NET ๋Ÿฐํƒ€์ž„ ๊ฐ„์˜ ์ฝ”๋“œ ๊ณต์œ  ์Šคํ† ๋ฆฌ๋Š” .NET Standard์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET Core ๋ฐ .NET Framework์—์„œ ๊ณต์œ ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Microsoft๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์˜ ์ค‘์š”์„ฑ์„ ์žŠ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์˜๋„ ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋”๋ผ๋„ 1.0์€ ์ด์ „ ๋ฒ„์ „๊ณผ ๋งค์šฐ ํ˜ธํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด๋Š” ์ƒํƒœ๊ณ„์˜ ๋ฐฉ๋Œ€ํ•œ ์œ ์‚ฐ ์ „์ฒด๋ฅผ ์ง€์›ํ–ˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋†’์ด ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ์•„๋ฌด๋„ ์ž์‹ ์˜ ์ผ€์ดํฌ๋ฅผ ๋‚˜๋ˆ ์ฃผ๊ฑฐ๋‚˜ ๋จน์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

@NickCraver

Razor ํŽ˜์ด์ง€๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์ปค์„œ ์ด๋™ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” (ํ˜„์žฌ) ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

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

๊ทธ๊ฒƒ๋„ ์ •๋ง ๋นจ๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์–ด์š” ๐Ÿ˜‰

ASP.NET Core๊ฐ€ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ์ผ์„ ํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๋‹ค. ์šด์ด ์ข‹๊ฒŒ๋„ ์ผ๋ถ€ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์‹œ์ ์—์„œ ์ด ์Šค์œ„์น˜๋Š” ๋‚˜์ฉ๋‹ˆ๋‹ค. ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์‹ค์ œ๋กœ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์— ์ด์‹๋œ๋‹ค๋ฉด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ 3.x์—์„œ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค. ๋Œ€์•ˆ์ด ์ค€๋น„๋˜๊ธฐ ์ „์— ์ด์‹ํ•˜๊ณ  EOL ์ˆ˜๋ช…์„ ์„ ์ข…๋ฃŒํ•  ๊ธฐํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์ง€ ๊ด€๋ฆฌ -> EOL ๋ฒ„์ „์œผ๋กœ ์ด์‹ํ•˜๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2.x(์ง€์›) ๋ฐ 3.x(์‚ญ์ œ)๊ฐ€ 1.x(์ง€์›) ๋ฐ 2.x(์‚ญ์ œ)๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒŒ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

ASP.NET ๋ณ€ํ˜•์˜ ์žฅ๊ธฐ์ ์ธ ์ง€์›์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ //BUILD 2017 ์„ธ์…˜ ๊ถŒ์žฅ ์‚ฌํ•ญ:

  • T6009 ASP.NET Web Forms ์—…๋ฐ์ดํŠธ

    • ์ฆ‰, ๊ทธ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์™„์ „ํ•œ .NET ์›น ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

  • ASP.NET Core์— ๋Œ€ํ•œ T6072 ์ง€์›: LTS๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

    • ์ œ ์ƒ๊ฐ์—๋Š” ์ง€๊ธˆ ๋ฏธ์นœ ๋“ฏ์ด ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :grimacing:

@davidfowl :

๊ทธ๊ฒŒ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

2.0 ์ดํ›„ ์— ์ถœ์‹œ๋  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ˆ„๋ฝ API ์ค‘ ์ผ๋ถ€๋ฅผ ์•ฝ์†ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—?

@yaakov-h

2.0 ์ดํ›„์— ์ถœ์‹œ๋  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ˆ„๋ฝ API ์ค‘ ์ผ๋ถ€๋ฅผ ์•ฝ์†ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—?

ASP.NET Core์—์„œ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@davidfowl System.DirectoryServices, System.Drawing์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์†”์งํ•œ ์งˆ๋ฌธ(Microsoft๊ฐ€ ์•„๋‹Œ ์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค)์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋ณด๋‹ค ์•ˆ์ •์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์„ ์„ ํ˜ธํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ASP.NET Core๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ์•„์ฃผ ์ข‹์€ ์งˆ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ „์ฒด .NET ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์˜ค๋Š˜๋‚  ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•œ๋‹ค๋ฉด ์™œ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์Šคํƒ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์—ด์‹ฌ์ž…๋‹ˆ๊นŒ? .NET Core์™€ ASP.NET Core์˜ ์ด๋ฆ„์ด .NET int ์—†์ด ๋‹ฌ๋ž๋‹ค๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ›จ์”ฌ ์ค„์–ด๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” Go ๋˜๋Š” Node.js ์›น ์Šคํƒ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค.

@davidfowl ์ด ASP.NET MVC 5.x์™€ ์—ญํ˜ธํ™˜๋˜๋Š” ๊ฒƒ๊ณผ .net ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์—ญํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์€ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. .net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ํฐ ์ผ์ž…๋‹ˆ๋‹ค...

2.x(์ง€์›) ๋ฐ 3.x(์‚ญ์ œ)๊ฐ€ 1.x(์ง€์›) ๋ฐ 2.x(์‚ญ์ œ)๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

2.x๊ฐ€ ๊ณง ์ถœ์‹œ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@davidfowl System.DirectoryServices, System.Drawing์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์€ ASP.NET Core 1.x ๋˜๋Š” 2.x์™€ ์•„๋ฌด ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ์˜จ๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ๋‘˜ ๋‹ค์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ๋‹จ์ง€ FUD์™€ ๊ทธ๊ฒƒ์˜ ์ผ๋ถ€๋ฅผ ๋ถ€๋ฅด๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ๋„ˆ๋ฌด ์ปค์ ธ์„œ ์•„๋ฌด๋„ ์ผ๋ถ€ ์‘๋‹ต์—์„œ ์‚ฌ์‹ค์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@FransBouma ๋‹น์‹ ์€ Microsoft๊ฐ€ ์ˆ˜๋งŽ์€ GitHub ๋ฌธ์ œ ์Šค๋ ˆ๋“œ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•œ ๊ทธ๋ฆผ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ์›๊ฒฉ ์ธก์ •, ํ”ผ๋“œ๋ฐฑ ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ์˜ ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ ํ•˜๋Š” ๊ฒƒ์€

@markrendle ์›๊ฒฉ ์ธก์ •์€ ๋งˆ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ppl/dev๊ฐ€ ์ „ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ด์œ , ๋‹ค๋ฅธ ์Šคํƒ์œผ๋กœ ์ „ํ™˜ํ•œ ์ด์œ , ํ”„๋กœ์ ํŠธ์˜ ์ค‘์š”์„ฑ, ์Šคํƒ์„ ์–ผ๋งˆ๋‚˜ ์ข‹์•„ํ•˜๋Š”์ง€(์ปจ์„คํŒ…์ด๋‚˜ oss๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ๋•๋Š”) ๋˜๋Š” ๊ทธ๋“ค์ด ํ•˜๋Š” ์ผ์„ ์ธก์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋ฐ”๋กœ ํ”ผ๋“œ๋ฐฑ์ž…๋‹ˆ๋‹ค.

2.x(์ง€์›) ๋ฐ 3.x(์‚ญ์ œ)๊ฐ€ 1.x(์ง€์›) ๋ฐ 2.x(์‚ญ์ œ)๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒŒ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@davidfowl ์‹œ๊ฐ„.
์กฐ๊ธˆ ์•ˆ์ •๋  ์‹œ๊ฐ„. ์‚ฌ๋ฌผ์„ ํ‰๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. netstandard2 ํŒจํ‚ค์ง€๋ฅผ rtm๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ netstandard1(์–ด๋ ค์›€) ๋Œ€์‹  netstandard2(๋” ์‰ฌ์›€)๋กœ ์ด๋™ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€ ๋ฌผ๊ฑด์„ ๋ฐ”๊ฟ€ ๋•Œ์ž…๋‹ˆ๋‹ค.
๋‹น์‹ ์€ aspnet์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‚ด ์ œํ’ˆ์€ aspnet์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ ˆ์ถฉ์•ˆ ๋ฐ ์ƒํƒœ๊ณ„์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.

2.x๊ฐ€ ๊ณง ์ถœ์‹œ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋ฌด์Šจ ์ƒ๊ด€์ด์•ผ? 2.0์ด ์—ฐ๋ง์ด๋‚˜ 1์›”์— ๋‚˜์˜จ๋‹ค๋ฉด? ์ฐจ์ด๊ฐ€ ๋‚ ๊นŒ์š”? 2.0์—์„œ 1.x๊ฐ€ ๊ฐ€์น˜๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@yaakov-h @shanselman ์ด ๋งํ•œ ๊ณณ ์—์„œ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ฐ•์กฐ ๋‚ด)

AD โ€“ ์™„์ „ํžˆ, ์ด๊ฒƒ์€ LDAP๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. Windows Auth NOW์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋ฆ„ ๊ธฐ๊ฐ„ ๋™์•ˆ Core 2.0์„ ์œ„ํ•œ DirectoryServices ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํŠน๋ณ„ํžˆ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ธฐ - ์™„์ „ํžˆ, ์ด๊ฒƒ์€ ๊ณต๋ฐฑ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ Core 2.0์—์„œ ์—ฌ๋ฆ„ ๊ธฐ๊ฐ„ ์— ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ๊นŒ์ง€ ์ด๋Ÿฌํ•œ netstandard ์˜ต์…˜์€ ImageSharp, ImageResizer, Mono ์˜ต์…˜ ๋“ฑ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ๋ฒ„์ „์ด ์•„๋‹ˆ๋ผ .net ์ฝ”์–ด ๋ฐ ์ƒํƒœ๊ณ„์˜ ๋‚ ์งœ์™€ ์„ฑ์ˆ™๋„์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@hikalkan

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๋†’์€ ์ˆ˜์ค€์˜ POV์—์„œ ์ดํ•ดํ•˜์ง€๋งŒ ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ๋Š” ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๊ธฐ์ˆ ์ ์ธ ๋…ผ์˜๊ฐ€ ์•„๋‹Œ๊ฐ€?

@enricosada

์กฐ๊ธˆ ์•ˆ์ •๋  ์‹œ๊ฐ„. ์‚ฌ๋ฌผ์„ ํ‰๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€๋ฅผ ๋ณ€๊ฒฝํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. rtm๊ณผ ํ•จ๊ป˜ netstandard2 ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ netstandard1(์–ด๋ ค์›€) ๋Œ€์‹  netstandard2(๋” ์‰ฌ์›€)๋กœ ์ด๋™ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€ ๋ฌผ๊ฑด์„ ๋ฐ”๊ฟ€ ๋•Œ์ž…๋‹ˆ๋‹ค.
๋‹น์‹ ์€ aspnet์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‚ด ์ œํ’ˆ์€ aspnet์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ ˆ์ถฉ์•ˆ ๋ฐ ์ƒํƒœ๊ณ„์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ASP.NET Core 2.0์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ASP.NET Core์—์„œ ๋ฌด์—‡์„ ์„ ํƒํ•˜๋“  ํ”Œ๋žซํผ์—์„œ ์ด๋Ÿฌํ•œ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@markrendle ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ ๋‹ฌ๋ ฅ์„ ๊ฐ€์ ธ๋‹ค ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ณ„์ ˆ์€ ์ „์ฒด ๋ถ„๊ธฐ์— ๊ฑธ์ณ ์žˆ๊ณ (๊ฐ™์€ ๋ถ„๊ธฐ์˜ ๋‹ค๋ฅธ ํ•ญ๋ชฉ๋ณด๋‹ค 3๊ฐœ์›”์ด ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ) ๋‚จ๋ฐ˜๊ตฌ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŠนํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@enricosada ์›๊ฒฉ ์ธก์ • ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค(์›น ๋ถ„์„, ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ, ์ง์ ‘์ ์ธ ๊ณ ๊ฐ ํ”ผ๋“œ๋ฐฑ)์—์„œ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜ ํ™”๋‚œ ๋ชน์œผ๋กœ๋ถ€ํ„ฐ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ๊ฐ ๊ฐœ์ธ์˜ ๋ถ„๋…ธ๊ฐ€ ์ •๋‹นํ™”๋  ์ˆ˜ ์žˆ์Œ).

@yaakov-h ์Œ, .NET Core 2.0(๋ฐ ASP.NET Core 2.0)์— ๋Œ€ํ•œ ํ˜„์žฌ ์˜ˆ์ƒ RTM์€ 7์›”/8์›”/9์›”์ธ Q3 ๋‹ฌ๋ ฅ์ด๊ณ  ๋ถ๋ฐ˜๊ตฌ์˜ ์—ฌ๋ฆ„์€ ๋Œ€๋ถ€๋ถ„ 7์›”/8์›”/9์›”์ž…๋‹ˆ๋‹ค. , ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›๊ฒฉ ์ธก์ • ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค(์›น ๋ถ„์„, ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ, ์ง์ ‘์ ์ธ ๊ณ ๊ฐ ํ”ผ๋“œ๋ฐฑ)์—์„œ ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ์›๊ฒฉ ์ธก์ •(์ ์–ด๋„ ์ž๋™ํ™”๋œ ๋ถ€๋ถ„)์ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฐฐํฌ์— ์–ผ๋งˆ๋‚˜ ์•ˆ์ •์ ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (๋Œ€๋ถ€๋ถ„์˜ ๋ฐ˜๋ฐœ์ด ๊ฑฐ๊ธฐ์—์„œ ๋‚˜์˜ค๋Š” ๊ฒƒ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.)

2.x(์ง€์›) ๋ฐ 3.x(์‚ญ์ œ)๊ฐ€ 1.x(์ง€์›) ๋ฐ 2.x(์‚ญ์ œ)๋ณด๋‹ค ๋‚˜์€ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒŒ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@davidfowl ์‹œ๊ฐ„. ๊ทธ๋ฆฌ๊ณ  ์ ์ ˆํ•œ ๋ฐœํ‘œ. ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ๋ช…ํ™•ํ–ˆ๋‹ค๋ฉด ์‚ฌ๋žŒ๋“ค์€ ๋†€๋ผ์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ์‹œ๊ฐ„. ๊ทธ๋ฆฌ๊ณ  ์ ์ ˆํ•œ ๋ฐœํ‘œ. ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ๋ช…ํ™•ํ–ˆ๋‹ค๋ฉด ์‚ฌ๋žŒ๋“ค์€ ๋†€๋ผ์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ดํ•ด๋Š” ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ด์‹ํ•˜๋Š” ๋Šฅ๋ ฅ์— ์ฐจ์ด๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ EOL ์ •์ฑ…์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ์ด ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์€ ํ›„, ๋‚˜๋Š” ๋‚˜์™€ ๊ฐ™์ด ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ๊ณ  ๋˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ๊ฒฐ๊ตญ ๋„ท ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋„ทํ‘œ์ค€์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ netcore๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  aspnet core๊ฐ€ netstandard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋Šฅ์ด ๋” ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

์˜ˆ์‹œ:
2017 asp.net์€ ๊ธฐ๋Šฅ A๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
2018 netstandard๋Š” ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ns์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

ํŒ€์ด ๋งํ•˜๋Š” ๊ฒƒ์€ netcore๊ฐ€ netstandard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
2017 asp.net์€ ๊ธฐ๋Šฅ A๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค
2017 aspnet ํŒ€์€ ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Asp.Net Core๋Š” netcore์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
2018 netstandard๋Š” ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ns์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๊ฒฐ์ •์€ ์‹ค์ œ๋กœ ๋ฐฉ์ •์‹์— ๋” ๋งŽ์€ "์œ ์—ฐ์„ฑ๊ณผ ์†๋„"๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ํ”ผ๋“œ๋ฐฑ ๋“ฑ์„ ์œ„ํ•œ ๋” ๋น ๋ฅธ ๋ฆด๋ฆฌ์Šค. ๋„คํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋Š๋ฆฐ ํ‰ํ™”์— ํฐ ๋„์›€์ด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์€ NS์— ๋„๋‹ฌํ•˜๋ฉด ์ •๋ง ์„ฑ์ˆ™ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

netstandard 2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” netcore๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ธฐ๋Šฅ์ด 1๋…„(๋˜๋Š” ์ž„์˜์˜ ๊ธฐ๊ฐ„) ํ›„์— ์ถœ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ด๊ฒƒ์„ ์›ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ• ๊นŒ์š”? ์ด๊ฒƒ์€ NET Framework ์— ์ต์ˆ™ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋ฌผ๊ฑด์„ ๋ฐฐ์†กํ•  ์ˆ˜ ์žˆ๋Š” aspnet ํŒ€์˜ ์ฒœ๊ตญ์ด๋ฉฐ, ๋น ๋ฅธ ๋ฌผ๊ฑด์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ฐ์—๊ฒŒ๋„ ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ๋น ๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ด์ „ ๋ฒ„์ „์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ธ ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๋Š” ์—ฌ์ „ํžˆ netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ์‚ผ์•„์•ผ ํ•˜๋ฉฐ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ „ํ˜€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
netstandard(์•„๋งˆ๋„ razor ํŽ˜์ด์ง€(?))์— ์—†๋Š” ๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ netcore๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค 1์—์„œ๋Š” razor ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‚˜์  ์ˆ˜ ์žˆ๋Š”์ง€ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ํ˜„์žฌ NET Framework์—์„œ Net Core๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ์ข…์†์„ฑ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ €๋งŒ ์—ฌ๊ธฐ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ aspnet ์ฝ”์–ด๊ฐ€ NET Framework์—์„œ ์˜์›ํžˆ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด "์ „ํ™˜" ๋‹จ๊ณ„๋ผ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ NET Framework๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ์€ splited ์ž…๋‹ˆ๋‹ค. (์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค).

2.x ์ง€์› ๋ฐ 3.x ๋“œ๋กญ์€ 1.x ์ง€์› ๋ฐ 2.x ๋“œ๋กญ๊ณผ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ์ถ”์ธกํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ์ ์–ด๋„ ์ผ๋ถ€๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@NickCraver ๋‹น์‹ ์€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ์ด ๊ฒฐ์ •์„ ๋˜๋Œ๋ฆฌ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ๋œ ๋„ท์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋” ๋Š๋ฆฐ ๊ธฐ๋Šฅ ๋ฆด๋ฆฌ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (์†”์งํ•œ ์งˆ๋ฌธ)

@davidfowl ํ˜„์žฌ ์ œ์•ˆ์— ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฑฑ์ •์‹œํ‚ค๋Š” ๋ฏธ๋ฌ˜ํ•œ ์ˆจ๊ฒจ์ง„ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
asp.net(netcore ํฌํ•จ)์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ A๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋งˆ์ผ€ํŒ… ๋ฐ ๋ฐฐ์†ก(๊ทธ๋ฆฌ๊ณ  management/pm ์ฒดํฌ๋ฐ•์Šค ์„ ํƒ)์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ netstandard์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ "๊ฒŒ์œผ๋ฆ„"์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ™•์‹ค์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
๋”ฐ๋ผ์„œ ์ด์ „ ์˜ˆ์—์„œ netstandard๋Š” ๊ธฐ๋Šฅ A๊ฐ€ 2019๋…„ ๋˜๋Š” 2020๋…„์— ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  2018๋…„ ๋Œ€์‹ ์— ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. <-- ์ด๊ฒƒ์€ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค(?) ๋งž์Šต๋‹ˆ๊นŒ? Microsoft๋Š” ์—ฌ๊ธฐ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์•ฝ์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐœํ‘œ๊ฐ€ ๋งˆ์Œ์— ๋“œ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์˜๊ฒฌ์ด ๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ํ† ๋ก ์— ์‹œ๊ฐ„์„ ํ• ์• ํ•ด ์ฃผ์‹  @davidfowl @DamianEdwards ์™€ @shanselman ๋•๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ฐธ์—ฌ๋„์™€ ๊ฐœ๋ฐฉ์„ฑ์ด ์ฆ๊ฐ€ํ–ˆ๋‹ค๋Š” ๋˜ ๋‹ค๋ฅธ ์ฆ๊ฑฐ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ํƒ€์ด๋ฐ ๋“ฑ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ, ๊ทธ๊ฒƒ์€ ์ง„์ „์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ:
2017 asp.net์€ ๊ธฐ๋Šฅ A๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.
2018 netstandard๋Š” ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ns์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

ํŒ€์ด ๋งํ•˜๋Š” ๊ฒƒ์€ netcore๊ฐ€ netstandard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
2017 asp.net์€ ๊ธฐ๋Šฅ A๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค
2017 aspnet ํŒ€์€ ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Asp.Net Core๋Š” netcore์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
2018 netstandard๋Š” ๊ธฐ๋Šฅ A๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ns์—์„œ ๊ธฐ๋Šฅ A๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ํ–ˆ์–ด์•ผ ํ•  ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
2017 aspnet ํŒ€์€ netstandard2.0์„ ์ง€์›ํ•˜๋Š” lib X์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ aspnet์€ .netstandard๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ lib X๋Š” .NET full์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” .net full์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋‹จ์ง€ ๋„ˆ๊ฒŸ ์„ค์น˜๋งŒ ๊ฐ€๋Šฅ).

๋Œ€์‹ , ๊ทธ๋“ค์€ ์ด๊ฒƒ์„ ํ•˜์ง€ ์•Š๊ณ  lib X๋ฅผ .NET ์ฝ”์–ด๋กœ๋งŒ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ฒ˜์Œ์— ์ด ์Šค๋ ˆ๋“œ/๊ฒฐ์ •์ด ํ•„์š”ํ•œ ์ด์œ ). lib X๊ฐ€ CoreCLR ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋งค์šฐ ๊ณ ๊ธ‰์ธ ๊ฒฝ์šฐ Microsoft๋Š” ์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด .NET ์ „์ฒด CLR๋กœ ์ด์‹๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ž๋ฌธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ฒด๋กœ MS๊ฐ€ Azure ๊ณ ๊ฐ์—๊ฒŒ AWS ๋˜๋Š” Google ํด๋ผ์šฐ๋“œ์˜ JVM/NodeJS ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฒฝ์Ÿํ•  ์ˆ˜ ์žˆ๋„๋ก Azure์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” .NET ์ฝ”์–ด/aspnet ์ฝ”์–ด๊ฐ€ ํ•„์š”ํ•œ ์ •์น˜์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€์ ์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ๋ณด์—ฌ ์ฃผ๋Š” ๊ฒƒ์€ MS๊ฐ€ .NET ์ฝ”์–ด๋ฅผ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ .NET ์ „์ฒด์— ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅธ ๋ฐœ์ „์„ ์œ„ํ•ด .NET ์ „์ฒด์— ๊ด€ํ•œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ 2๋…„ ๋™์•ˆ .NET ์ „์ฒด์— ์ถ”๊ฐ€๋œ API์˜ ์–‘์„ ๋ณด์‹ญ์‹œ์˜ค. ํฐ ํŒ€์ด ๊ทธ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”.

Microsoft๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ธ SQL Server Enterprise๋ฅผ ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฉ‹์ง„ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. .NET Core์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ’๋น„์‹ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ์ž ์žฌ ๊ณ ๊ฐ์ธ ๊ธฐ์—…์— .NET Core 2.0์„ ์ฆ๊ฒ๊ฒŒ ํŒ๋งคํ•˜์‹ญ์‹œ์˜ค.

'๋นจ๋ฆฌ' ์ด๋™ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๋™ํ•˜๋ ค๋Š” ๋ชฉ์ ์ง€๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๋จผ์ € ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ 1-2๋ถ„ ์ •๋„ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ƒ๊ฐํ•˜๋ฉด ํ• ์ˆ˜๋ก ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ .net๊ณผ asp.net ์‚ฌ์ด์˜ ์ค„์„ ๋Š๊ณ  ์žˆ๋‹ค๊ณ  ๋Š๋‚€๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ˜„์žฌ asp.net, asp.net ์ฝ”์–ด(.net) ๋ฐ asp.net ์ฝ”์–ด(core)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”์–ด๊ฐ€ ์—†๋Š”์ง€, ์ ์€์ง€ ๋˜๋Š” ์™„์ „ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์€ asp.net ๋ฐ asp.net ์ฝ”์–ด(.net)๊ฐ€ ๊ณ ์ฐฉ๋œ ๋™์•ˆ ํ˜์‹ ๊ณผ ์ง„ํ–‰์ด ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ผ ๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์‹œ๋„ํ•˜์ง€ ์•Š๊ณ  lib๊ฐ€ netstandard2.0์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์ฒด ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ asp.net(์ด์ „) ๋˜๋Š” asp.net ์ฝ”์–ด(์ด์ „)๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‘˜ ๋‹ค ์˜ค๋ž˜๋œ ๊ฒƒ์ด๋ฏ€๋กœ system.web๊ณผ ์˜ค๋ž˜๋œ asp.net์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  asp.net ์ฝ”์–ด๊ฐ€ ์–ด์จŒ๋“  EOL์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ท€์ฐฎ๊ฒŒ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์šฉ๊ฐํ•œ ์„ ํƒ ์ฝ”์–ด๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ์•ˆ์ •์ ์ธ system.web์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ํ›จ์”ฌ ๋” ๋ถ„์—ด๋œ ์ƒํƒœ๊ณ„์— ์˜์›ํžˆ ๊ฐ‡ํž ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”์‹ : ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ˜„์žฌ์˜ ๋Š๋‚Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น asp.net ์ฝ”์–ด 1.x๋Š” 2.x์— ๋น„ํ•ด "์˜ค๋ž˜๋˜๊ณ  ๊ตฌ์‹"์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl

๊ฐ .NET ํ”Œ๋žซํผ์ด ์ž์ฒด ์†๋„๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  .NET Standard๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Š๋ฆฌ๊ฒŒ ์ด๋™ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ž‘์—…์„ ๋œ ์ž์ฃผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ด๋ฏธ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฌธ์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ _vNext_๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€์„ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ ์ „์— ๋ชจ๋“  ํ”Œ๋žซํผ์ด ๋™๋“ฑํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ์•ž์„œ ์ •์˜๋œ ํ‘œ์ค€์„ ๋ณด๊ณ  ํ”Œ๋žซํผ์ด ๋”ฐ๋ผ์žก๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ •์˜์™€ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ฐธ์—ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ASP.NET Core๊ฐ€ ๋ฆด๋ฆฌ์Šค์˜ ํ‘œ์ค€์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ๋‹ค๋ฉด ํ”Œ๋žซํผ๊ณผ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ƒˆ ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•˜๋Š” ์ˆœ๊ฐ„ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ‘œ์ค€ ๋ฒ„์ „์€ VS ์—…๋ฐ์ดํŠธ ๋˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Standard๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ณ„ํšํ•œ ๋…ธ๋ ฅ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€ ์•Š์ง€๋งŒ ๊ทธ๊ฒƒ์ด ์ œ์‹œ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฒ€ํ† ๋ฅผ ํ†ต๊ณผํ•œ ๊ตฌํ˜„๋œ ๊ณ„์•ฝ์˜ ์Šค๋ƒ…์ƒท๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฃผ์š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ถœ์‹œ์— ๋Œ€ํ•œ ๊ณ„ํš์ด ๊ฑฐ์˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜‘๊ฐ™์€ ์ผ์„ ํ•œ๋‹ค

์˜ค ์ข‹๋„ค. ๊ณต์œ ๋œ ๋ถˆํ–‰์ด ์ตœ๊ณ ์˜ ๋ถˆํ–‰์ž…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ/๊ตฌ์„ฑ ํ•ญ๋ชฉ์ด ์žˆ๋Š” Csproj ๋ฐ sln ํŒŒ์ผ์€ ๋นŒ๋“œ ์กฐํ•ฉ์ด ํ•ญ์ƒ ์„ ์–ธ๋˜์ง€ ์•Š๊ณ  ์œ ์ถ”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ VS๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋นŒ๋“œ ์กฐํ•ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ์— ํ”Œ๋žซํผ/๊ตฌ์„ฑ ์กฐํ•ฉ์„ ์„ ์–ธํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ถ”๊ฐ€ ์„น์…˜์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. csproj PropertyGroup ์š”์†Œ์—์„œ Substring ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด์€ ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์—ฌ๊ธฐ์— ์ „์ฒด ๋ฌธ์ž์—ด ๊ฐ’์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌผ๊ฑด์€ ๊ทธ๋ ‡๊ฒŒ ๋ฒˆ๊ฑฐ๋กญ์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์†”์งํ•œ ์งˆ๋ฌธ(Microsoft๊ฐ€ ์•„๋‹Œ ์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค)์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋ณด๋‹ค ํ˜ธํ™˜์„ฑ์„ ์„ ํ˜ธํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ASP.NET Core๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ?

๊ฐœ์ธ์ ์œผ๋กœ, ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ํ•œ, ํ…Œ์ŠคํŠธํ•  PITA๋‚˜ ์ด์ ์ด ๊ฑฐ์˜ ์—†๋Š” ํฐ ๋…ธ๋ ฅ์ด ์•„๋‹Œ ํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๊ฐ€์žฅ ์ถ”์ง„๋ ฅ๊ณผ ์ž ์žฌ๋ ฅ์ด ์žˆ๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Win32, COM, CORBA, ADO.NET, ์—ฌ๋Ÿฌ ๋ณด๊ณ  ์—”์ง„, ๋‹ค์–‘ํ•œ ์›น API, CEF/Firefox/IE์™€ ๊ฐ™์€ ๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ €(๋ฌผ๋ก  ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—์ง€๋Š” ์—†์Œ)์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์— ๊ฑธ์ณ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ณต๊ธ‰์—…์ฒด๋ณ„ ์‚ฌํ•ญ์€ ์ œ๊ฐ€ ๋ถ€๋„๋Ÿฌ์›Œํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ์‹คํ–‰ ํŒŒ์ผ์—์„œ ์ตœ์†Œ ๊ณตํ†ต ๋ถ„๋ชจ์™€ ๊ฒฐํ˜ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ธฐ์ˆ ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์„ฑ๊ฐ€์‹  ์ผ์ด์ง€๋งŒ ์ •์ ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๋ฐ์Šคํฌํƒ‘/์„œ๋ฒ„ ํ•ญ๋ชฉ์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ƒํ˜ธ ์šด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋งŒ ์ฃผ์–ด์ง€๋ฉด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ASP.NET์€ ์›น ์Šคํƒ์˜ ์ผ๋ถ€์ด๋ฉฐ ์›น ์Šคํƒ์€ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํ•ฉ๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์‹ฌ๊ฐํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์ด ์—†๋Š” ํ•œ ์›น ์ž‘์—…์— ์ตœ์‹  ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ๋ถˆํ–‰ํ•œ ๊ธฐ๋Œ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ํ‘œ์ค€์ด ๋น ๋ฅด๊ณ  ํฌ๊ฒŒ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์›น๊ณผ ๋ณด์กฐ๋ฅผ ๋งž์ถ”๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๊ณ ์ˆ˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋ž˜๋œ ์Šคํƒ์— ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ASP.NET์ด PHP ๋ฐ Node์™€ ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์žฌ๋Šฅ๊ณผ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์œ„ํ•ด ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ์Šคํƒ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›น ์ž‘์—…์„ ๋œ ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ƒˆ๋กœ์šด UI ๊ธฐ๋Œ€์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€์„ ๊ณ ์ˆ˜ํ•˜๋ฉด ๋‘ ์„ธ๊ณ„์˜ ์žฅ์ ์„ ๋ชจ๋‘ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์ง€๋งŒ ์ด๋Š” ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์ œ๊ณต๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ๊ฒฐ๊ตญ ๋„ท ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋„ทํ‘œ์ค€์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ๋Ÿฐ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์…จ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. .NET Standard๋Š” ํ•ญ์ƒ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐ ๋Ÿฐํƒ€์ž„์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ช‡ ๋ฒˆ ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์—ฌ๊ธฐ์— ๋ฏธ์นœ ๊ฒƒ๋“ค์„ ๋˜์ง€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์•„๋ฌด โ€‹โ€‹์ƒ๊ด€์ด ์—†์œผ๋ฉฐ, ์ด ์‹œ์ ์—์„œ ๋ชจ๋‘ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด .NET Standard ๋Œ€์‹  .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” .NET Core์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ utf8๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ˜๋งŽ์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋”ฐ๋ผ์˜ค์„ธ์š”).
  • ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด/๋ฌธ์ž์—ด์˜ ์ €๋ ดํ•œ ์กฐ๊ฐ, ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Span<T> ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด Buffer<T> ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. String ๋ฐ Array๊ฐ€ 0 ํ• ๋‹น์ด ํ•„์š”ํ•œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ๋งค๋ฒˆ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜๋Š” String์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด Span<char> ๋ฐ Span<byte> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Int, UInt ๋“ฑ(TryParse)์— ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ Span<byte> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธ์ฝ”๋”ฉ ๋ฃจํ‹ด์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • Buffer<T> ๋ฐ Span<T> ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ท ์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ Span<T> ๋˜๋Š” Buffer<T> ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ๋ฆฌ ๊ณ ์ •๋œ ๋ฒ„ํผ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํ‚น ์Šคํƒ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • Kestrel์€ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„(ํ˜„์žฌ 2.1์„ ๋ชฉํ‘œ๋กœ ํ•จ)์— HTTP2๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ALPN์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด SSL ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation).
  • .NET Core์˜ Http ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ค‘ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์›น ์†Œ์ผ“์ด ์•„๋‹Œ ๋‹จ์ผ http ์š”์ฒญ์„ ํ†ตํ•ด ์‹œ๊ทธ๋„๋Ÿฌ์—์„œ http๋ฅผ ํ†ตํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ ๋์ ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HttpClient ๋ฐ System.Net.Http์—์„œ ํ—ค๋” ํŒŒ์„œ ๊ตฌํ˜„์„ ๋ถ„๊ธฐํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/aspnet/HttpAbstractions/tree/d1d9bceff56cb44a194ae36923ce687e5e353006/src/Microsoft.Net.Http.Headers). .NET Framework์™€ .NET Core๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. .NET Core์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์˜ ๋ณต์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ).
  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐํž ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋”ฉ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(https://github.com/dotnet/corefx/issues?q=is%3Aopen+is%3Aissue+ ์ €์ž%3Adavidfowl+label%3Aarea-System.Threading), ์ด๊ฒƒ๋“ค์€ ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ์ œ์ถœํ•œ ๊ฒƒ ์ค‘ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์—†๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋ถ„๊ธฐํ•˜์—ฌ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ASP.NET Core https://github.com/aspnet/Common/tree/dev/src/Microsoft.Extensions.Primitives ๋‚ด์— ์ž์ฒด BCL์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ .NET์˜ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌด์ž‘์œ„ ๋คํ”„์˜€์Šต๋‹ˆ๋‹ค.

@FransBouma

.NET Core๋ฅผ ๋”ฐ๋ผ์žก๊ธฐ ์œ„ํ•ด .NET ์ „์ฒด์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ 2๋…„ ๋™์•ˆ .NET ์ „์ฒด์— ์ถ”๊ฐ€๋œ API์˜ ์–‘์„ ๋ณด์‹ญ์‹œ์˜ค. ํฐ ํŒ€์ด ๊ทธ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด .NET Framework๋กœ ์ง€์†์ ์œผ๋กœ ํฌํŒ…๋˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋“ฏ์ด .NET Core์—์„œ ๋™์ผํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์œ„ํ—˜์ด ์ƒ๋‹นํžˆ ๋†’์Šต๋‹ˆ๋‹ค. .NET Framework ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ์‹ซ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋„ ๊ทธ๊ฒƒ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐœ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—”์ง€๋‹ˆ์–ด๋ง์— ๊ฐ€ํ•ด์ง€๋Š” ๋ชฉ ์กธ๋ฆผ์„ ๋ฏฟ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๊ทธ ๋ชจ๋“  ๊ธฐ๋Šฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, .NET Core๋งŒํผ ๋น ๋ฅด๊ฒŒ ์ด๋™ ํ•˜์ง€ ์•Š์œผ๋ฉฐ Windows ์ผ์ •์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋Š” Windows ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

์ดํ•ด๋Š” ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ด์‹ํ•˜๋Š” ๋Šฅ๋ ฅ์— ์ฐจ์ด๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ EOL ์ •์ฑ…์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š๋ƒ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ์ „๋‹ฌ ๋˜๋Š”์ง€๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ ์š”. ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ƒ๊ฐํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ .NET Framework์—์„œ ASP.NET Core๋กœ์˜ ์ด์‹/์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ์ฝ”๋“œ์™€ ์ข…์†์„ฑ์„ .NET Core๋กœ ์ด์‹ํ•˜๊ณ  ASP.NET Core 2.x๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ์ตœ์ ์˜ ์†”๋ฃจ์…˜์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€์˜ ๊ฒฝ์šฐ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ธํ•ด ์ œ์–ดํ•  ์ˆ˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ASP.NET Core 1.x ๋ฐ .NET Framework๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ์ง€์›๋˜์ง€ ์•Š๊ธฐ ์ „์— 1. ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ๊ฝค ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. 1๋…„(๋˜๋Š” 2, 3? ๋ˆ„๊ฐ€ ์•Œ๊ฒ ์Šต๋‹ˆ๊นŒ?) ์ด๋‚ด์— ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ASP.NET 4.x๋กœ ๋‹ค์‹œ ์ด๋™

    • ์ด ๋Œ€์•ˆ์ด ์ง€์›๋˜๋Š” ๋™์•ˆ "๋˜๋Œ์•„๊ฐ€" ์ด๋ฏธ ์‹œ์ž‘ํ•œ ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ ์ง๋ฉดํ•ฉ์‹œ๋‹ค. ์ด ํ”Œ๋žซํผ์€ ์•ž์œผ๋กœ ๋งŽ์€ ์‚ฌ๋ž‘์„ ๋ฐ›์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ์•Œ๊ณ  ๊ณ„ํšํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด 1.๊ณผ 2. ๋ชจ๋‘ ๊ดœ์ฐฎ์€ ๋Œ€์•ˆ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‘ ๋Œ€์•ˆ ๋ชจ๋‘ ๊ฝค ๋งŽ์€ ๋ฏธ์ง€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. A ๋„์„œ๊ด€์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋„์„œ๊ด€ B๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ A๊ฐ€ ์ด์‹๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์„ ํƒ์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ์ˆ˜๋ฐ˜ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๊ทธ๋ฆผ ์—†์ด ์„ ํƒ์„ ๊ฐ•์š”๋ฐ›๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@khellang (๊ท€ํ•˜์˜ ๊ฐ€์ƒ ์†”๋ฃจ์…˜์—์„œ)

  1. .NET Framework์—์„œ ASP.NET Core 2.0์œผ๋กœ ์ด๋™

    • ์ด๊ฒƒ์€ ๊ฝค ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. 1๋…„ ์ด๋‚ด์— ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@davidfowl

์†”์งํ•œ ์งˆ๋ฌธ(Microsoft๊ฐ€ ์•„๋‹Œ ์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค)์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋ณด๋‹ค ์•ˆ์ •์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์„ ์„ ํ˜ธํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ASP.NET Core๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๊นŒ?

์ •์งํ•œ ๋Œ€๋‹ต:
ํ˜ธ์˜: ์•ˆ์ •์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์ข‹์ง€๋งŒ ์ถœ์‹œ๋  ๋•Œ ๊ธฐ์กด ์ƒํƒœ๊ณ„ ๋ฅผ ๊นจ๋œจ๋ฆฌ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
ASP.NET Core๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ : ๋‹จ์ˆœํžˆ OS X ๋ฐ Linux์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

.NET(์ด์ „ ๋ฐ/๋˜๋Š” ์ฝ”์–ด) ๋˜๋Š” Java์™€ ๊ฐ™์€ ์—์ฝ”์‹œ์Šคํ…œ์€ ๊ธฐ์—…์—์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ํ•ด๋‹น ํ”Œ๋žซํผ/์ƒํƒœ๊ณ„๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ ๊ณ ๊ฐ ์ค‘ ํ•œ ๋ช…์ด ์ด๋ฏธ ASP.NET Core์— ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. .NET Core์˜ ์ด์ „ ๋ฐœํ‘œ ๋ฐ ํŒ๋งค ์•„์ด๋””์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด (ASP.)NET Core ์ฝ”๋“œ๋Š” ์ดˆ๊ธฐ๋ถ€ํ„ฐ (ASP).NET Core์˜ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํŒ€๊ณผ ํ•จ๊ป˜ (๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ) ์ž‘์„ฑํ•œ ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์˜.
๊ทธ๋ฆฌ๊ณ  ์ด ์ฝ”๋“œ๋Š” Linux ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ํ˜„์žฌ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•˜๋Š” ๋งค์šฐ ์˜ค๋ž˜๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ง‘ํ•ฉ์—์„œ๋„ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ WPF/Windows Forms/C++/CLI ๋ฐ ์ผ๋ฐ˜ C++(DirectX ํ•ญ๋ชฉ ํฌํ•จ).

์ด์ œ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒˆ๋กœ์šด .NET Core ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ .NET Core ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ช‡ ๋…„ ๊ฐ„์˜ ๋…ธ๋ ฅ์— ๋Œ€ํ•œ ๊ณ ๊ฐ์˜ ํˆฌ์ž๋ฅผ ๋‹จ์ˆœํžˆ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ƒˆ๋กœ์šด ์„œ๋ฒ„์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

์งˆ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ: ๊ธฐ์—…์€ ์ง€๋‚œ 17๋…„ ๋™์•ˆ .NET์ด ์ œ๊ณตํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํ˜ธํ™˜์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๊ธฐ๋Œ€ํ•˜๋ฉด์„œ .NET Core๋ฅผ ".NET, ์ด์ œ XPlat์šฉ"์œผ๋กœ ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†”์งํžˆ ๋งํ•ด์„œ ์ด๊ฒƒ์ด .NET Core์˜ ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Node.js ๋˜๋Š” Java๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ด์ œ .NET Core๋ณด๋‹ค ํ›จ์”ฌ ๋” ์„ฑ์ˆ™ํ•˜๊ณ  XPlat์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด .NET Core๋Š” project.json ๋“ฑ์„ ํ†ตํ•ด ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฉ‹์ง€๊ณ  ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ".NET๊ณผ์˜ ํ˜ธํ™˜์„ฑ"์„ ์ด์œ ๋กœ Msbuild ๋ฐ .csproj๋ฅผ ์œ„ํ•ด project.json์„ ๋‹ค์‹œ ๊ฐ€์ ธ๊ฐ”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์ •ํ™•ํžˆ ์ด ".NET๊ณผ์˜ ํ˜ธํ™˜์„ฑ"์˜ ์ด์ ๋„ ์‚ฌ๋ผ์ง€๊ณ  .. ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์œ„ํ•ด?

@์ƒ๊ฐ•

์šฐ์„ , ํ›Œ๋ฅญํ•œ ๋‹ต๋ณ€!

ASP.NET Core๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ : ๋‹จ์ˆœํžˆ OS X ๋ฐ Linux์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ MVC 5 on mono๊ฐ€ ์ •๋ง ์›ํ•˜์…จ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

์งˆ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ: ๊ธฐ์—…์€ ์ง€๋‚œ 17๋…„ ๋™์•ˆ .NET์ด ์ œ๊ณตํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํ˜ธํ™˜์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๊ธฐ๋Œ€ํ•˜๋ฉด์„œ .NET Core๋ฅผ ".NET, ์ด์ œ XPlat์šฉ"์œผ๋กœ ์„ ํƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†”์งํžˆ ๋งํ•ด์„œ ์ด๊ฒƒ์ด .NET Core์˜ ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Node.js ๋˜๋Š” Java๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ด์ œ .NET Core๋ณด๋‹ค ํ›จ์”ฌ ๋” ์„ฑ์ˆ™ํ•˜๊ณ  XPlat์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด .NET Core๋Š” project.json ๋“ฑ์„ ํ†ตํ•ด ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฉ‹์ง€๊ณ  ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ".NET๊ณผ์˜ ํ˜ธํ™˜์„ฑ"์„ ์ด์œ ๋กœ Msbuild ๋ฐ .csproj๋ฅผ ์œ„ํ•ด project.json์„ ๋‹ค์‹œ ๊ฐ€์ ธ๊ฐ”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ์ •ํ™•ํžˆ ์ด ".NET๊ณผ์˜ ํ˜ธํ™˜์„ฑ"์˜ ์ด์ ๋„ ์‚ฌ๋ผ์ง€๊ณ  .. ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์œ„ํ•ด?

์ด๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ‰๊ฐ€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ:

์ด ์ƒˆ๋กœ์šด (ASP.)NET Core ์ฝ”๋“œ๋Š” (ASP).NET Core์˜ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํŒ€๊ณผ ํ•จ๊ป˜ (๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ) ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ •๋ง ์˜ค๋ž˜๋œ ASP.NET 4.x ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” Linux์˜ ๊ธฐ์กด .NET Framework๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋‹นํ•œ ์š”์•ฝ์ž…๋‹ˆ๊นŒ?

ํ˜ธ์˜: ์•ˆ์ •์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์ข‹์ง€๋งŒ ์ถœ์‹œ๋  ๋•Œ ๊ธฐ์กด ์ƒํƒœ๊ณ„๋ฅผ ๊นจ๋œจ๋ฆฌ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

.NET Core๋Š” Desktop์ด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ‘๋ ฌ ์‹คํ–‰์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ์‹ค์ œ๋กœ Desktop๋ณด๋‹ค ๋” ์•ˆ์ •์ ์ธ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ฒ„์ „์˜ Desktop์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ „์ฒด ์‹œ์Šคํ…œ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์•ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ชฉ์ ์„ ์œ„ํ•œ ์ „์šฉ ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋Š ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ๋‹ค๋ฅธ ์†๋„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋Š”(๋˜๋Š” ์ „ํ˜€ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š๋Š”) ๋งŽ์€ ์•ฑ์ด ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@davidfowl ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

.NET Framework, UWP, .NET Core, ๋ชจ๋…ธ ๋“ฑ์—์„œ ์‹คํ–‰ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. Orleans๋Š” .NET Core์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ ์ œํ’ˆ๋“ค์€ ํ•˜๋‚˜์ด๋ฉฐ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Orleans์˜ ๊ฒฝ์šฐ "2.0 Technical Preview" ๋นŒ๋“œ์—์„œ .NET Standard 1.5๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด .NET Standard 2.0์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ๊ด€์‹ฌ์‚ฌ๋Š” ๋ฏธ๋ž˜์˜ ๋‹ค์ด๋ฒ„์ „์Šค์— ๊ด€ํ•œ ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์ฐจ์ด๋Š” ์–ด๋Š ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ @davidfowl & co, ๋ชจ๋‘์˜ ์งˆ๋ฌธ์— ๋‹ตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

.NET Core๋ฅผ ๋”ฐ๋ผ์žก๊ธฐ ์œ„ํ•ด .NET ์ „์ฒด์— ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚œ 2๋…„ ๋™์•ˆ .NET ์ „์ฒด์— ์ถ”๊ฐ€๋œ API์˜ ์–‘์„ ๋ณด์‹ญ์‹œ์˜ค. ํฐ ํŒ€์ด ๊ทธ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด .NET Framework๋กœ ์ง€์†์ ์œผ๋กœ ํฌํŒ…๋˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋“ฏ์ด .NET Core์—์„œ ๋™์ผํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์œ„ํ—˜์ด ์ƒ๋‹นํžˆ ๋†’์Šต๋‹ˆ๋‹ค. .NET Framework ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ์‹ซ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋„ ๊ทธ๊ฒƒ์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐœ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—”์ง€๋‹ˆ์–ด๋ง์— ๊ฐ€ํ•ด์ง€๋Š” ๋ชฉ ์กธ๋ฆผ์„ ๋ฏฟ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๊ทธ ๋ชจ๋“  ๊ธฐ๋Šฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, .NET Core๋งŒํผ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ Windows ์ผ์ •์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋Š” Windows ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ aspnet์ด .net full์—์„œ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก netstandard2.0 ํŒจํ‚ค์ง€๋กœ ์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ .NET ์ „์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์œ„ํ—˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ•œ ๋ฒˆ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด๋„ˆ์งˆ ์ˆ˜ ์žˆ๋Š” ๋”์ฐํ•˜๊ฒŒ ์กฐ์งํ™”๋œ ์ฝ”๋“œ ๋”๋ฏธ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๊ทธ ๋ชจ๋“  ๊ธฐ๋Šฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋‹ค๋ฅธ ๋ชจ๋“  .NET ๊ฐœ๋ฐœ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์ง€๋ฆ„๊ธธ์„ ํƒํ•˜๊ณ (ASPNET ํŒ€์ด ์ด์ „์— ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด์™”๋˜ ๊ฒƒ์ฒ˜๋Ÿผ!) ๊ทธ๋Ÿฐ ๋ถ€๋‹ด ์—†์ด ์›€์ง์ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ฒฐ๊ตญ ๋‚ ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, .NET Core๋งŒํผ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ Windows ์ผ์ •์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋Š” Windows ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ? .NET ์ฝ”์–ด ํŒ€์€ ๊ฑฐ๋Œ€ 'WinDiv'์™€ ํ†ต์‹ ํ•˜์ง€ ์•Š๊ณ ๋„ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft๊ฐ€ ๋‚ด๋ถ€ ์ •์ฑ… ๋ฌธ์ œ๋ฅผ ์‚ฌ๋‚ด์—์„œ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๊ณ  Windows ์ •์ฑ… ์—†์ด .NET ์ „์ฒด + .NET ์ฝ”์–ด ๋ฒ„์ „์ด ์ง€์ •/์ด๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Btw, .NET Core 2.0 ์‚ฌ์šฉ์ž์—๊ฒŒ SQL Server Enterprise์˜ ์•”ํ˜ธํ™” API๋ฅผ ํŒ๋งคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์—ฌ์ „ํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ด€๋ จ๋˜์–ด ์žˆ๊ณ  ์—ฌ์ „ํžˆ ์‹œ๋ฏผ์˜์‹์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ฝค ๊ฐ๋ช…์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค โค๏ธ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ์ธํ„ฐ๋„ท์—์„œ ๋งค์ผ ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค ๐Ÿ‘ ์–ด์ฉŒ๋ฉด .NET OSS ์ƒํƒœ๊ณ„๊ฐ€ ๊ฒฐ๊ตญ ์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹๊นŒ์š”? ๐Ÿ˜‰

์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ netstandard2.0 ํŒจํ‚ค์ง€๋กœ ๋ฆด๋ฆฌ์Šคํ•˜์—ฌ aspnet์ด .net ์ „์ฒด์—์„œ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ .NET ์ „์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์œ„ํ—˜ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ•œ ๋ฒˆ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด๋„ˆ์งˆ ์ˆ˜ ์žˆ๋Š” ๋”์ฐํ•˜๊ฒŒ ์กฐ์งํ™”๋œ ์ฝ”๋“œ ๋”๋ฏธ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์€ ํฌ๊ณ  ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ผ๋ถ€ ๋ถ€ํ’ˆ์€ ๋‹ค๋ฅธ ๋ถ€ํ’ˆ๋ณด๋‹ค ์šฐ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ถ€ ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์‹ค์งˆ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฒ ํ…Œ๋ž‘๋“ค์ด ํ•œ ์˜์—ญ์˜ ๋ฒ„๊ทธ ์ˆ˜์ •์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ชจํ˜ธํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์–ด๋–ป๊ฒŒ ๊นจ๋œจ๋ ธ๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ๋ฏธ์žˆ๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…์†์„ฑ ๊ฒฝ๊ณ„๊ฐ€ ์ž˜ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ €๋ฅผ ๋ฏฟ์„ ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. referencesource.microsoft.com์„ ์ฐพ์•„๋ณด์„ธ์š”. ํ˜„์žฌ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋Š” .NET Framework์— ๋Œ€ํ•œ ์ž ์žฌ์ ์ธ ๋‹จ ํ•˜๋‚˜์˜ ์ž ์žฌ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ ์Šค์œ„์น˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌผ๋ฆฌํ•™์ž…๋‹ˆ๋‹ค, ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๋นจ๋ฆฌ ์›€์ง์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋‹ค๋ฅธ ๋ชจ๋“  .NET ๊ฐœ๋ฐœ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์ง€๋ฆ„๊ธธ์„ ํƒํ•˜๊ณ (ASPNET ํŒ€์ด ์ด์ „์— ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด์™”๋˜ ๊ฒƒ์ฒ˜๋Ÿผ!) ๊ทธ๋Ÿฐ ๋ถ€๋‹ด ์—†์ด ์›€์ง์ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ฒฐ๊ตญ ๋‚ ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค! ๊ฐœ๋ฐœ์ž๋Š” ๊ฒŒ์œผ๋ฅด๋‹ค ๐Ÿ˜„ . ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ .NET Framework๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  .NET Core๋ฅผ ์ง„์ •์œผ๋กœ ๊ฐœ์„ ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. Sparkle ๐Ÿ˜„ ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งž์ฃ ? .NET ์ฝ”์–ด ํŒ€์€ ๊ฑฐ๋Œ€ 'WinDiv'์™€ ํ†ต์‹ ํ•˜์ง€ ์•Š๊ณ ๋„ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft๊ฐ€ ๋‚ด๋ถ€ ์ •์ฑ… ๋ฌธ์ œ๋ฅผ ์‚ฌ๋‚ด์—์„œ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๊ณ  Windows ์ •์ฑ… ์—†์ด .NET ์ „์ฒด + .NET ์ฝ”์–ด ๋ฒ„์ „์ด ์ง€์ •/์ด๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฌผ๋ฆฌํ•™์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋‹ต๋ณ€์„ ์ฝ์–ด๋ณด์‹ญ์‹œ์˜ค.

Btw, .NET Core 2.0 ์‚ฌ์šฉ์ž์—๊ฒŒ SQL Server Enterprise์˜ ์•”ํ˜ธํ™” API๋ฅผ ํŒ๋งคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์—ฌ์ „ํžˆ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ์ œ ์ „๋ฌธ ๋ถ„์•ผ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋‹ต์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@khellang lol ๊ทธ๊ฑด GitHub ๋ฌธ์ œ๊ฐ€ ์•„์ง ํŠธ๋กค์„ ์‹ซ์–ดํ•˜๋Š” MS๋ฅผ ๋Œ์–ด๋“ค์ด์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ Twitter๋Š” ์•„์ง downvote๊ฐ€์—†๋Š” ๋งค์ฒด์ž…๋‹ˆ๋‹ค. :)

@davidfowl

๋‹น์‹ ์€ ์ •๋ง ์˜ค๋ž˜๋œ ASP.NET 4.x ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” Linux์˜ ๊ธฐ์กด .NET Framework๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋‹นํ•œ ์š”์•ฝ์ž…๋‹ˆ๊นŒ?

์•„๋‹ˆ ์ •๋ง. ์šฐ๋ฆฌ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ธฐ์กด .NET 4.x(์‹œ์ž‘ํ•  ๋‹น์‹œ์—๋Š” 3.5์˜€์Œ) Windows ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์™„์ „ํ•œ ์ƒˆ/๋น›๋‚˜๋Š”(๋งˆ์ดํฌ๋กœ) ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ๋ชจ๋“  ๋ฐ˜์ง์ด๋Š” Core์— ๋Œ€ํ•ด ๋ฒ ํƒ€ ๋ฒ„์ „์ด ๋˜์—ˆ์„ ๋•Œ DTO, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ASP.NET Core ์œ„์— ์™„์ „ํžˆ ์ƒˆ๋กœ์šด MVC๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด 4.6 ๋ฐ์Šคํฌํƒ‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณ‘๋ ฌ๋กœ ์‚ฌ์šฉ๋˜์–ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ASP.NET Core ์„œ๋ฒ„ ์ค‘ ์ผ๋ถ€๋Š” Linux์—์„œ๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  Topshelf(์ „์ฒด 4.6 ํ”„๋ ˆ์ž„์›Œํฌ ์œ„์— ์žˆ์Œ)๊ฐ€ ์žˆ๋Š” Windows ์„œ๋น„์Šค๋กœ๋„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋งŽ์€ ํˆฌ์ž๊ฐ€ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ ์ด์ œ .NET Core 1์— ๊ฐ‡ํžŒ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 2๋กœ ์ด๋™ํ•˜๊ณ  netstandard๋ฅผ ์žƒ๋Š” ๊ฒƒ๋„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์„œ๋น„์Šค ๋ฐ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋จ)์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ .NET 4.6 ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž‘์„ฑํ•˜๋Š” ์ƒˆ๋กœ์šด (ASP) .NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์Šคํฌํ†ฑ .NET ๋ฒ„์ „์ด ์ง€์›๋˜๋Š” ํ•œ .NET Core ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ .NET Core 1์ด .NET 4.6์ฒ˜๋Ÿผ ์ง€์›๋˜๊ณ  .NET 5๊ฐ€ ๋‚˜์˜ฌ ๋•Œ .NET Core x๋กœ์˜ ์„ ํ˜• ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๊ณ  .NET Core x ์ฝ”๋“œ๊ฐ€ .NET Core์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ. NET 5๋ผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@gingters asp.net ์„œ๋น„์Šค์—์„œ netstandard2.0์— ์—†๋Š” .net ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ libs๊ฐ€ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹น์‹ ์ด netstandard2.0์— ์—†๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@davidfowl c++/cli dll์ด netcoreapp 2.0์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์กฐ๋งŒ๊ฐ„ ๊ต์ฒด๋˜์ง€ ์•Š์„ ์˜ค๋ž˜๋œ ํƒ€์‚ฌ C++/CLI ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@davidfowl ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ASP.NET Core 2.0์—๋Š” ์†”์งํžˆ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—, ์™œ ์ด ๋งค์šฐ ํŒŒ๊ดด์ ์ธ ๋ณ€ํ™”๊ฐ€ ์ง€๊ธˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

@qrli C++/CLI๋Š” CoreCLR์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/coreclr/issues/659#issuecomment -91341753

1x์— 4๋…„ ์ง€์›์„ ์ œ๊ณตํ•˜๊ณ (2x์—์„œ ์ตœ๋Œ€ํ•œ ํฌํŒ…) 2x๋กœ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ๋Š๋ฆฐ ๋„์‹œ ๊ตํ†ต์„ ์œ„ํ•œ ๋„์‹œ ์ž๋™์ฐจ์™€ ๊ณ ์†๋„๋กœ๋ฅผ ์œ„ํ•œ ํŽ˜๋ผ๋ฆฌ. ์šฐ๋ฆฌ๋Š” .net ์„ธ๊ณ„ ๋ฐ–์—์„œ ๋งŽ์€ ๊ฒฝ์Ÿ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ASP.Net Core๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด MS๊ฐ€ 4๋…„ ๋™์•ˆ 1x๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋ฌธํ™”๊ฐ€ ๋ฐ”๋€” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@idg10 ์ •๋ง ์•„๋‹ˆ์—์š”. 2.x๋Š” ์ฝ”์–ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ์ด ํฌํ•จ๋œ ๊ฑฐ์˜ 1.x์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์€ Razor Pages๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฒ„์ „ 1.x์— ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๊ตฌ์‹ ๋ฒ„์ „์— ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ž˜ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๊ฒฝ์šฐ์—, ์™œ ์ด ๋งค์šฐ ํŒŒ๊ดด์ ์ธ ๋ณ€ํ™”๊ฐ€ ์ง€๊ธˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ๊ฑฐ์˜ ์š”์•ฝ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ํ• ๋ผํ† ๋ ˆ
๋‚˜๋Š” ๊ทธ๊ฒƒ์ด _์ง€๊ธˆ_ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ 1์— ๋จธ๋ฌผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ (ASP) .NET Core 2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ๋ฅผ ์›ํ•  ๋•Œ(๋˜๋Š” ๋” ๋‚˜์˜๊ฒŒ: ํ•„์š”๋กœ ํ•  ๋•Œ)(์ฆ‰, 1์ด ์„œ๋น„์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์ค‘์š”ํ•œ ๋ณด์•ˆ ๊ตฌ๋ฉ์ด ์ˆ˜์ •๋œ ๊ฒฝ์šฐ) ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. .NET ๋ฐ์Šคํฌํ†ฑ ์•ฑ์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘/์ถ”๊ฐ€: ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์˜ ์„ ํ˜• ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ณ ์ • .NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์ „์ฒด .NET ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—†๋Š” ํ•œ.

@gingters ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋˜๋„ค์š”.

๋ฐ์Šคํฌํƒ‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.0์—์„œ ์ž‘๋™ํ•œ๋‹ค๋ฉด ์ฝ”์–ด์—์„œ๋„ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋งŒ์•ฝ ๊ทธ๋“ค์ด wpf ๋ฌผ๊ฑด ๋“ฑ์„ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ๊ทธ๋“ค์€ ๋ฌผ๋ก  ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค)
์ด ๊ฒฝ์šฐ asp.net core 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์Šคํฌํƒ‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.0์— ์—†๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”์–ด์—์„œ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ. ๊ทธ๋Ÿฌ๋ฉด ์™œ 1.x๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์งง์€ EOL์ด ์™œ ๋ฌธ์ œ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.x๊ฐ€ ๋Œ€๋ถ€๋ถ„ ํ•ต์‹ฌ ์„ฑ๋Šฅ ํ•ญ๋ชฉ๋งŒ ํฌํ•จํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด 1.x๊ฐ€ ๋” ์‰ฝ๊ณ  ๋” ๋‚˜์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(1.x๋Š” 2.x์— ๋น„ํ•ด ๊ตฌ์‹์ด ์•„๋‹˜์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋ฆฌ๊ณ  ๊ทธ 1.x๋Š” ํŒจ์น˜๋ฅผ ๋ฐ›๊ณ  *๋…„ ๋™์•ˆ ์ง€์›๋ฉ๋‹ˆ๊นŒ?

@hallatore ๋ฐ˜๋Œ€ ์ž…๋‹ˆ๋‹ค. ์ด์ „ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: 4.6 ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋Š” Windows Forms, WPF, C++/CLI, ์ผ๋ฐ˜ C++, DirectX, ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ ์ฝ”๋“œ ๋“ฑ pp์˜ ํ˜ผํ•ฉ.

.NET Core์—์„œ: ์ƒˆ๋กœ์šด ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์‚ฌ์šฉ, ์ฆ‰ .NET Core ๋ฒ„์ „์˜ Serilog ์‚ฌ์šฉ), ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ถ”์ƒํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ + ์„œ๋น„์Šค + ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์„œ๋น„์Šค๋Š” Linux ๋ฐ Windows ์„œ๋น„์Šค๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(ํ˜„์žฌ๋Š” ์ „์ฒด .NET 4.6 ํ”„๋ ˆ์ž„์›Œํฌ์˜ Topshelf, ๊ทธ๋Ÿฌ๋‚˜ Windows ์„œ๋น„์Šค ์ง€์›์ด Core์— ๋„์ž…๋˜๋Š” ์ฆ‰์‹œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ).

์ด์ œ ์ƒˆ๋กœ์šด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ถ”์ƒํ™” ๋ฐ ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ .NET 4.6 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์ด ์‹คํ–‰๋˜๋Š” ํ•œ ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค(์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹Œ ํ•œ ๋ฐ์Šคํฌํ†ฑ์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฝค ์˜ค๋ž˜ ์ง€์†๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค).

@gingters ์—ฌ์ „ํžˆ netstandard _min(usable)_์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์†”๋ฃจ์…˜์— ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๊ณ  ASP.NET Core 2.0 ์ฝ”๋“œ์—์„œ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ WPF, Xamarin, UWP ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MS ์—ฌ๋Ÿฌ๋ถ„์ด ์—ฌ์ „ํžˆ ์š”์ ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ์Šฌํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทธ๊ฒƒ์ด ๋‹จ์ง€ API ๊ฒฉ์ฐจ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ณ  netcoreapp์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ตฌ๊ธ€๋ณด๋‹ค ๊ธฐ์—…์„ ํ›จ์”ฌ ๋” ์ž˜ ์ดํ•ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ MVC 5 on mono๊ฐ€ ์ •๋ง ์›ํ•˜์…จ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

@davidfowl ๋‚ด ๋ง์€, ์–ด์„œ. ๊ทธ๊ฒƒ์€ ๋ฌด์‹œํ•˜๊ณ  ์†”์งํžˆ ๋ชจ์š•์ ์ธ ๋Œ€๋‹ต์ž…๋‹ˆ๋‹ค. MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋” ์ด์ƒ ๋‹จ์ผ ๊ฐœ๋ฐœ์ž๊ฐ€ Framework ASP์— ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋ฐ”๋ณด๊ฐ€ ๋˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒ, ๋•Œ๋•Œ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์š•์„ ๋จน๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ .Net Core์™€ ASP.Net Core๋ฅผ ๋™์ผํ•œ ์ œํ’ˆ์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ „ํ˜€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Mono๊ฐ€ .Net Core ๋ฐœํ‘œ ์ดํ›„์— Microsoft ์œ™์— ๋“ค์–ด์™”๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ๋•Œ. ๊ทธ๊ฒƒ์€ ํ•ญ์ƒ .Net์˜ ๋” ์ž‘๊ณ  ๋ฏผ์ฒฉํ•œ xplat ๋ฒ„์ „์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ASP.Net Core๊ฐ€ ์‹ค์ œ๋กœ ASP.Net 5์˜€๊ณ  ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•  ์˜ˆ์ •์ด์—ˆ๋˜ ์‹œ์ ˆ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์  ์žฅ, ๊ทธ ๋ณ€ํ™”๋Š” ๋ถˆ๊ณผ 1๋…„ ๋ฐ˜ ์ „์˜ ์ผ์ด๋‹ค.

netstandard20์˜ ์ž์ฒด ํ˜ธ์ŠคํŒ… HTTP ์Šคํ† ๋ฆฌ๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ "Kestrel 1.x๋ฅผ ์‚ฌ์šฉ"ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” Nancy ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ASP.Net 2.x๋Š” ๊ธฐ๋Šฅ ๋ฉด์—์„œ ์ ์ง„์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ Kestrel 2๋Š” ์„ฑ๋Šฅ์ƒ์˜ ์ด์ ์ด ์žˆ์–ด ๊ทธ๋‚  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์˜จ๋‹ค.

@davidfowl

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

ํฅ๋ฏธ๋กœ์šด ๋Œ“๊ธ€์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @davidfowl ๋ฐ @DamianEdwards ์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋Š” ASP.NET 4์˜ ๋ ˆ๊ฑฐ์‹œ ์กฐ๊ฐ ์ค‘์—์„œ ๋‹น์‹ ์ด ์ •๋ง๋กœ ๋‚จ๊ธฐ๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์„ ๊ณจ๋ผ๋‚ด๋Š” ์ด์ „ NDC ํšŒ์˜ ์„ธ์…˜์„ ๋ณธ ๊ธฐ์–ต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ์˜๊ฒฌ์€ ๋˜ํ•œ ์šฐ๋ฆฌ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ์šฐ๋ ค๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ข…์ข… ๋นˆ์•ฝํ•œ ์ข…์†์„ฑ ๊ฒฝ๊ณ„๋กœ ์ž˜ ์„ค๊ณ„๋˜์ง€ ์•Š์€ ๋Œ€๊ทœ๋ชจ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. .NET Core์šฉ์œผ๋กœ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค๋Š” ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋ณ€ํ™”์˜ ์œ„ํ—˜์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ •๋‹ต์ด ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ์ž์‹ ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ASP.NET4/MVC5๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MVC5๊ฐ€ _๋งˆ์นจ๋‚ด_ GitHub๋กœ ์˜ฎ๊ฒจ ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋ž‘์„ ๋ฐ›๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋” ๋‚˜์€(์˜ˆ: ๋” ๋‚˜์€ ๋น„๋™๊ธฐ ์ง€์›, ์„ฑ๋Šฅ ๊ฐœ์„  ๋“ฑ) ๋” ๋‚˜์€ ๊ฒƒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ๊ธฐ๋ถ€ํ•  ์˜ํ–ฅ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@qrli Enterprises๋Š” ์—ฌ์ „ํžˆ Windows Server 2008 R2 IIS 7.5 ์›น ํŒœ์—์„œ ์‹คํ–‰ํ•  ์ „์ฒด .NET 4.5๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ๋“ค์—๊ฒŒ์„œ ๊ทธ๊ฒƒ์„ ๋นผ์•—์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@mattnischan

netstandard20์˜ ์ž์ฒด ํ˜ธ์ŠคํŒ… HTTP ์Šคํ† ๋ฆฌ๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ "Kestrel 1.x๋ฅผ ์‚ฌ์šฉ"ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” Nancy ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๋ฉฐ ๋‚˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

HttpListener ๋Š” netstandard20์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ netcore20๋„ netcore20์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๊ทธ ์ „๋ฉด์—์„œ ์•„๋ฌด๊ฒƒ๋„ ์ œ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HttpListener ๋Š” netstandard20์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ netcore20๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  HttpListener ์—์„œ ์ดˆ๋‹น ๋™์ผํ•œ ์š”์ฒญ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

@markrendle ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€.

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: serilog, newtonsoft, autofac ๋“ฑ)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard_min(usable)์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•  ๋•Œ ์ œ์•ˆํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์—ฌ์ „ํžˆ ์ง€์›ํ•˜๋Š” ์ตœ์‹  ๋ฒ„์ „์—์„œ ๊ฐ์ง€๋œ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@mattnischan

HttpListener๋Š” netstandard20์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ netcore20๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  HttpListener์—์„œ ์ดˆ๋‹น ๋™์ผํ•œ ์š”์ฒญ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ?

๋„ค, Nancy๋Š” .NETStandard 1.6์ด๋ฏ€๋กœ Core 2.0์—์„œ ์‚ฌ์šฉํ•˜๊ณ  Kestrel 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€?

@gingters ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์— ์˜ฌ ๋•Œ ๋‚˜๋Š” ๊ทธ ๋‹ค๋ฆฌ๋ฅผ ๊ฑด๋„ˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฏธ๋ž˜๊ฐ€ ๋‹น์‹ ์„ ๋ฐฉํ•ดํ•˜๊ฒŒ ๋‘์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ ํ˜„์žฌ์— ๋Œ€ํ•ญํ•˜์—ฌ ์˜ค๋Š˜๋‚  ๋‹น์‹ ์„ ๋ฌด์žฅ์‹œํ‚ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ด์„ฑ์˜ ๋ฌด๊ธฐ๋กœ ๋‹น์‹ ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ๋งž๋‹ฅ๋œจ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.
__~๋งˆ๋ฅด์ฟ ์Šค ์•„์šฐ๋ ๋ฆฌ์šฐ์Šค_

์œ ์ง€ ๊ด€๋ฆฌ ์˜ˆ์‚ฐ์ด ์—†๊ณ  ์•ž์œผ๋กœ ๋ช‡ ๋…„ ๋™์•ˆ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ๊ณตํ•  ๋•Œ ์ด๋Š” ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•œ ์ฃผ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๋ช‡ ๋…„ ๋™์•ˆ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ–ฅํ›„ ๋ช‡ ๋…„ ๋™์•ˆ ์˜์กดํ•˜๋Š” ๋„์„œ๊ด€์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€๊ฐ€ ์™œ ์ค‘์š”ํ•ฉ๋‹ˆ๊นŒ?

@markrendle ์ด์ œ ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๋ช…์ด ์œ„ํƒœ๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๊ธฐ ์ „์— ๋ฒ•์— ๋”ฐ๋ผ(์ ์–ด๋„ ์ผ๋ถ€ ๊ตญ๊ฐ€์—์„œ๋Š”) ์ •ํ™•ํžˆ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๋น„์ƒ ํ”„๋กœํ† ์ฝœ์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. .

๋”ฐ๋ผ์„œ Kestrel๋งŒํผ ๋น ๋ฅธ ์›น ์„œ๋ฒ„๋ฅผ ์›ํ•˜๊ณ  Kestrel์ด ์•„๋‹Œ ์œ ์ผํ•œ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค, Nancy๋Š” .NETStandard 1.6์ด๋ฏ€๋กœ Core 2.0์—์„œ ์‚ฌ์šฉํ•˜๊ณ  Kestrel 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€?

@markrendle @benaadams ์•„๋‹ˆ์š”, ๋‹น์‹ ์ด ์˜คํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ฐ”๋ณด๊ฐ€ ๋˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ASP.Net Core ์กฐ๊ฐ์˜ ๋‹ค๋ฅธ ๊ณ ๊ฐ์ด ์žˆ๋‹ค๋Š” ์ ์„ ์ง€์ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” Kestrel 2.0์ด ๋‚˜์˜ค๋ฉด ๊ทธ ์œ„์— ์šฐ๋ฆฌ์˜ ํ”„๋กœ๋•์…˜ ํ”Œ๋žซํผ์„ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ ํ”„๋กœ๋•์…˜ ํ”Œ๋žซํผ์€ ํ•œ๋™์•ˆ Framework์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. netcoreapp20์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Nancy๋Š” netstandard16์ด์ง€๋งŒ Core 2.0 ์™ธ์—๋Š” Kestrel 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ตฌ์ฒด์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์•„๋งˆ๋„ ๋Œ€๋‹ต์€ ์ง„์ •์œผ๋กœ "Kestrel 2๋งŒํผ ๋น ๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ž์‹ ์˜ ์›น ์„œ๋ฒ„๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. Kestrel์€ ASP.Net ์ „์šฉ์ž…๋‹ˆ๋‹ค."์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋˜๊ธฐ๋ฅผ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค.

@gingters @gulbanana ๋‚˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์ถ”์ •๋˜๋Š” ๋ฏธ๋ž˜ ๋‚ ์งœ์— ๊ธฐ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ž„์˜ ๋ฒ„์ „ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์ •๋œ ์ข…์†์„ฑ ์„ธํŠธ๊ฐ€ ์žˆ๋Š” ๋ฐฐ์†ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ป๊ฒŒ ์ค‘๋‹จ๋˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@mattnischan ๋„ค, ๋ฌด์Šจ ๋ง์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ๊ทธ ๋Œ“๊ธ€์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค :)

@์Šคํ…ŒํŒŒ๋†€์Šจ

์„œ๋ฒ„์™€ ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์˜ ASP.Net์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ Desktop๊ณผ Core ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ Desktop, Core, Mono, Unity, UWP, Tizen ๋“ฑ์˜ ๋ฒ”์šฉ ํ”Œ๋žซํผ ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์‹คํ–‰ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋์ ์€ ๋„์„œ๊ด€์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ์ข… ์ถœ๋ ฅ์ธ ASP.NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ/์‹คํ–‰ ํŒŒ์ผ์€ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ชจ๋“  ํ”Œ๋žซํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ASP.NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ํ”Œ๋žซํผ๊ณผ ๋™์ผํ•œ ๋Œ€์ƒ์ด ์•„๋‹Œ ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

.NET Core๋Š” ํ”Œ๋žซํผ ๊ฐ„ ์ ์šฉ ๋ฒ”์œ„๊ฐ€ ๋„“๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํƒ‘๊ณผ ๋‚˜๋ž€ํžˆ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•ฑ๋ณ„๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ๊ณผ ๋ชจ๋“  ์•ฑ๋ณด๋‹ค๋Š”

์ผ๋ถ€ ํ’ˆ๋ชฉ์€ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Wyam ์€ ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ์„ ์œ„ํ•ด Razor๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Razor๋Š” ํ˜„์žฌ .NET Standard 1.3์ด๋ฏ€๋กœ Core ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ˜„์žฌ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ทน๋‹จ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Standard 2.0 ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ. ๊ทธ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์ฑ„์›Œ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ณต๋ฐฑ์ด๊ธธ ๋ฐ”๋ผ๋ฉฐ ์ด ๋ฌธ์ œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ MS๋Š” ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋Ÿฌํ•œ ๊ณต๋ฐฑ์ด ๋ฌด์—‡์ธ์ง€ ๋ฌป๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด UWP ์•ฑ์— ํฌํ•จ๋œ ์›น ์•ฑ ์‹คํ–‰ ๊ทธ๋Ÿฌ๋‚˜ Desktop์ด ์—ฌ์ „ํžˆ ์ง€์›๋˜์—ˆ์ง€๋งŒ ๋ฒ„์ „ 4.7.1๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ UWP๊ฐ€ ํ˜„์žฌ 4.7.1์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ASP.NET์ด ์ง€์›ํ–ˆ์„ ๋•Œ 4.7.2, 4.7์ด ํ•„์š”ํ•  ๋•Œ์™€ ๋™์ผํ•œ ์ƒํ™ฉ์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 3 ๋“ฑ. ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ๋Š” ์ ˆ๋Œ€ ์žก์„ ์ˆ˜ ์—†๋Š” Sisyphean ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ„ ์˜๋ฏธ ์—†์ด ๊ทธ๋ƒฅ ๋ฐ”์˜๊ฒŒ ํ•˜๋Š” ๊ฑธ๊นŒ์š”?

๋„ค, ๋ฌด์Šจ ๋ง์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ๊ทธ ๋Œ“๊ธ€์„ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค :)

๊ฑฑ์ •๋งˆ์„ธ์š”. ๐Ÿ‘

@davidfowl

ASP.NET Core ํšŒ์ „ ๋ฒ„์ „์€ ์ด์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ 3.0์—์„œ .NET Framework ์ง€์›์„ ์ค‘๋‹จํ–ˆ๋‹ค๋ฉด(์ด ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„) ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์žˆ์ง€ ์•Š์„๊นŒ์š”? ASP.NET Core 2.0 ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ 1๋…„ ๋™์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์ด์‹๋˜์—ˆ์œผ๋ฉฐ 3.0์ด ๋‚˜์˜ค๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  .NET Framework์—์„œ ์‹คํ–‰๋˜๊ณ  ASP.NET Core 2.0์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋„ ์ง€์›๋˜๋Š” ASP.NET Core 1.1.x๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"์–ธ์  ๊ฐ€ ์ „์ฒด .net์„ ์ค‘๋‹จํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์ง€๊ธˆ ๋‹น์žฅ์€ ์•ˆ ๋œ๋‹ค"๊ณ  ๋งํ•˜๋Š” ๊ฒƒ(๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋Œ€๋กœ)์€ ์ค‘์š”ํ•œ ์š”์ ์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ถ„๋“ค์ด ์ฝ”์–ด 2.0์˜ ์ถœ์‹œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์…จ์„ ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ •์‹ .net๊ณผ์˜ ํ˜ธํ™˜์„ฑ์—์„œ ๋งŽ์€ ๊ฐœ์„ ์„ ๊ณต๊ฐœ์ ์œผ๋กœ ์•ฝ์†ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ ์ฝ”์–ด๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Core 2.0์ด ์ถœ์‹œ๋œ ํ›„์— Core์—์„œ ํ›จ์”ฌ ๋” ๋งŽ์€ libs๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ asp.net ์ฝ”์–ด๋ฅผ ์ฝ”์–ด 3.0์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฒƒ์€ ์ƒํƒœ๊ณ„์— ํ›จ์”ฌ ๋œ ์‹ค๋ง์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 3.0์˜ ์ˆœ๊ฐ„์— ์ด๊ฒƒ๋“ค์€ ์ฝ”์–ด๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋œ ์ฐจ๋‹จํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ์žฌ์•™์ž…๋‹ˆ๋‹ค.

์ด์ „์— ๋‚˜๋Š” ๋‘ ๋‹จ๊ณ„๋กœ ์šฐ๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ( @benaadams๊ฐ€ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ด์•ผ๊ธฐ)๋ฅผ core/asp.net ์ฝ”์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์›น ํŒŒํŠธ(ํ˜„์žฌ mvc/webapi์— ์žˆ์Œ)๋ฅผ asp.net ์ฝ”์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ  ์ „์ฒด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. .net์„ ์„ ํƒํ•œ ๋‹ค์Œ ๋ชจ๋“  ์ข…์†์„ฑ์ด ์ฝ”์–ด์— ํ•ด๋‹นํ•˜๋Š” ๊ตฌํ˜„์„ ๊ฐ€์งˆ ๋•Œ ์ฝ”์–ด์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ๋ฅผ ๊ฐ€๋กœ๋ง‰๋Š” ๊ฒƒ์€ Oracle ADO ๊ณต๊ธ‰์ž์™€ Postgres ADO ๊ณต๊ธ‰์ž์ž…๋‹ˆ๋‹ค(corefx์—๋Š” ์•„์ง ํŒŒ๊ณ ๋“ค์ง€ ์•Š์€ ๋‹ค๋ฅธ ๋น„ํ˜ธํ™˜์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ์ด์ œ ์ด ๊ณ„ํš์€ ์ฃฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์•‰์•„์„œ Core ์„ธ๊ณ„์˜ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฒ„๋ฆฌ๊ณ  ์ข…์†์„ฑ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์€ MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ "๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š”" ํ”Œ๋žซํผ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@markrendle ๊ทธ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
.NET Core 2๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—(๋ฒ„์ „ 1์—์„œ๋Š” ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์—ˆ์œผ๋ฉฐ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด ์ค‘๋‹จ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€ ์•Š๋Š” Microsoft์˜ ์ œํ’ˆ์ž„), ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ง€์›์ด ์กฐ๋งŒ๊ฐ„ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์—์„œ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฉฐ ์ตœ์‹  ๋ฒ„์ „์ด ๋” ์ด์ƒ ๋Ÿฐํƒ€์ž„์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋‹จ๋œ ๋ฒ„์ „์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งค์šฐ ๊ทœ์ œ๋œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์„ ๋•Œ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์น˜๊ฑฐ๋‚˜ ์•…ํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๋น„์ƒ ๊ณ„ํš์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "๊ธ€์Ž„์š”, ์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋Œ€๋‹ตํ•˜๋ฉด ํ•ด๋‹น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐ์†กํ•  ์ˆ˜ ์žˆ๋Š” ํ—ˆ์šฉ์ด ์ทจ์†Œ๋ฉ๋‹ˆ๋‹ค.

@gingters ๋ณด์„ธ์š”, ์š”์ ์€ ํ˜„์žฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ •๋ณด์™€ ํšŒ์‚ฌ๊ฐ€ ์šด์˜๋˜๋Š” ์‹œ์žฅ์˜ ํŠน์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ์ˆ  ์„ ํƒ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ธ์ƒ์˜ ์ตœ์„ ์˜ ์˜์ง€๋กœ ๋ชจ๋“  ์‚ฌํƒœ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ, ์„ธ์ƒ์˜ ๊ด€๋ฃŒ์™€ ๊ทœ์ œ ๊ธฐ๊ด€์ด ๋‹น์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒ™ ํ•˜๊ณ  ์‹ถ์–ด ํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ Apple์˜ ์ ๋Œ€์  ์ธ์ˆ˜๋กœ ์ธ์ˆ˜๋˜๊ณ  .NET์ด ์™„์ „ํžˆ ์ค‘๋‹จ๋˜์–ด Swift์— ์œ ๋ฆฌํ•˜๋‹ค๋ฉด? ํŒ๋งค ๋Œ€์ƒ ๊ตญ๊ฐ€ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ฐ•๋ ฅํ•œ ์•”ํ˜ธํ™”๊ฐ€ ๋ถˆ๋ฒ•์ด ๋˜๊ณ  SHA256์„ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์ด ๊ธˆ์ง€๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? Nicolas ๋˜๋Š” James ๋˜๋Š” _insert-name-of-Autofac-maintainer-here_๊ฐ€ ํ™”์„ฑ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์ˆ˜๋ถ„ ๋†๋ถ€๊ฐ€ ๋˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ž๊ทน์ด ์—ญ์ „๋˜์–ด ๋””์ง€ํ„ธ๋กœ ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ๋“  ๋น„ํŠธ๊ฐ€ ์ง€์›Œ์ง€๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

ํšŒ์‚ฌ๋กœ์„œ JSON.NET์—์„œ ์ค‘์š”ํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: ๊ณต์‹ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ) ์ˆ˜ํ–‰ํ•  ์ž‘์—…์— ๋Œ€ํ•œ ์‹ค์ œ ๋‹ต๋ณ€์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๋Œ€๋‹ต์€ "JSON.NET์„ ํฌํฌํ•˜์—ฌ ํŒจ์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค"์ž…๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์€ James Newton-King์ด ์–ด๋–ค ์ด์œ ๋กœ๋“  ๋ฌด๊ธฐ๋ ฅํ•ด์ง€๋ฉด ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์‹œ์žฅ์—์„œ ์ผํ•œ ๋‚˜์˜ ์ด์ „ ๊ฒฝํ—˜์—๋Š” ๊ทธ๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์‚ฌํƒœ์— ๋Œ€๋น„ํ•˜์—ฌ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋…์  ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์—์Šคํฌ๋กœ ๊ณ„์•ฝ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋น„ํ•˜๋ฉด ์˜คํ”ˆ ์†Œ์Šค ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” ์‚ฌ์†Œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์€ MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ "๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š”" ํ”Œ๋žซํผ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

"๋น ๋ฅด๊ฒŒ ์›€์ง์ธ๋‹ค"๋Š” ํ‘œํ˜„์ด ๊ณผ์žฅ๋œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Full Framework์˜ ์ด์ „ ๋ฆด๋ฆฌ์Šค ์ผ์ •์— ๋”ฐ๋ผ ๋ฐฐ์†ก์— "1~2๋…„ ์ถ”๊ฐ€ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ "๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์›น ์„ธ๊ณ„์—์„œ ๋ฏธ์นœ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์ƒํ™ฉ์€ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ”Œ๋žซํผ์€ ๊ด€๋ จ์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ๋ฐ @DamianEdwards ์ด ๋ชจ๋“  ํ˜ผ๋ž€์€ ASP.NET Core 1.x๊ฐ€ .NET Framework์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ASP.NET Core๊ฐ€ ASP.NET 4/MVC5์˜ ์ง„ํ™”๋ผ๋Š” ๊ฐ€์ •์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ชจ๋“  ์ด์ (์†๋„ ๋ฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ)์„ ์–ป์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์žฅ๊ธฐ์ /์˜๊ตฌ์  ๋‹ต๋ณ€์€ ์žฅ๊ธฐ์  ์ง€์›๊ณผ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๋‹ต๋ณ€์œผ๋กœ ASP.NET 4/MVC5๋ฅผ ๋‹ค์‹œ ํ™๋ณดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์•ฝ๊ฐ„์˜ ๊ฐœ์„ ๋„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Œ).

๊ทธ๋Ÿฌ๋ฉด ASP.NET Core๋Š” ๋„์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—„์ฒญ๋‚œ ์ด์ ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณผ๊ฑฐ์—์„œ ํƒˆํ”ผํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋žซํผ์ด ๋˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์ ์—์„œ (ASP).NET(Framework) ๋ฐ (ASP).NET Core๋Š” ๊ณ ๊ฐ์ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํ‰ํ–‰ํ•˜๊ณ  ๋™๋“ฑํ•˜๊ฒŒ ์œ ํšจํ•œ ๋„๋กœ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ์ผ์ด ํ–ˆ์–ด์•ผ ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@markrendle ์˜ˆ, ์ด๊ฒƒ์€ ๊ฐ€์ƒ์ด์ง€๋งŒ ์Šฌํ”„๊ฒŒ๋„ ๊ด€๋ฃŒ์ œ๋Š” ํ˜„์‹ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ๋ชจ๋“  ์ƒํ™ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„๋“ค์—๊ฒŒ๋งŒ.

๊ทธ๋ฆฌ๊ณ  ์ด์ œ .NET Core 1์—์„œ ์ œ๋Œ€๋กœ ์ง€์›๋˜์—ˆ๋˜ ์™„์ „ํ•œ ํ”Œ๋žซํผ(.NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ)์˜ ์‚ญ์ œ๊ฐ€ ์˜ˆ์ƒํ•  ์ˆ˜ ์—†์—ˆ๋˜ ์ƒํ™ฉ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— b) ๋‹ค๋ฅธ ์ข…์†์„ฑ์—์„œ v1์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์˜ˆ, ๋‚˜์ค‘์— ๋ณด๋‹ค ๋นจ๋ฆฌ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์™„์ „ํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ถ„๊ธฐํ•˜๊ณ  ๋ฐฑํฌํŒ…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜์ด์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ํ•œ ํ”ผํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Core ํŒ€์ด "์ด๋ด. ๋ด, ์šฐ๋ฆฌ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•  ์ƒ๊ฐ์ด ์—†์œผ๋‹ˆ ๊ทธ๊ฒƒ์— ์˜์กดํ•˜์ง€ ๋งˆ"์™€ ๊ฐ™์€ ๋ง์„ ํ•˜๊ฑฐ๋‚˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด ์ด ์ „์ฒด ํ† ๋ก  ๊ณ ๊ฐ์ด ์ฒ˜์Œ๋ถ€ํ„ฐ .NET Core ์œ„์— ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์— ํˆฌ์žํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@gingters .NET Core 2.x ์ด์ƒ์—์„œ ASP.NET Core ์›น ๋น„ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Core์™€ Full/UWP/๋ฌด์—‡์ด๋“  ๊ฐ„์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด .NET Standard 2.x๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์‹œ์ ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. . ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Core 2.x๋งŒ์„ ์œ„ํ•ด .NET Standard 2.x์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•œ๋‹ค๋ฉด ์ „์ฒด .NET์— ๋Œ€ํ•œ ์ง€์›๋„ ์ค‘๋‹จํ•  ๊ฒƒ์ด๋ฉฐ ์–ด๋Š ์ชฝ์ด๋“  ๊ณค๊ฒฝ์— ์ฒ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@markrendle 1x ์ดํ›„ ๊ณต์œ  ํ•ญ๋ชฉ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ASP.NET Core ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜์— ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‹œ์ ๊นŒ์ง€๋Š” ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@gingters ์šด ์ข‹๊ฒŒ๋„ ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž์‹ ์„ ์ง€์›ํ•˜๊ฑฐ๋‚˜ ์ œ3์ž์—๊ฒŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

@๋งˆํฌ๋ Œ๋“ค ๋ฒˆํ˜ธ ์ˆœ์ˆ˜ํ•œ ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ๋Š” ์ฃฝ์€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์‹ญ ๋…„ ์ „์˜ ์ตœ์‹  ์ฝ”๋“œ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ํ˜ผํ•ฉ ์ฝ”๋“œ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. netcoreapp์ด๋ผ๋Š” ๊ฒƒ์€ ํ˜ผํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋” ์ด์ƒ ๋ฉ‹์ง„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ž ๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ˆํ‹ฐ ms ์ง์žฅ ๋™๋ฃŒ๋Š” ๊ธฐ๊บผ์ด "๋‚ด๊ฐ€ ๋งํ–ˆ์ง€..."๋ผ๊ณ  ๋งํ•œ ๋‹ค์Œ Google ์†”๋ฃจ์…˜์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋„๋ก ์šฐ๋ฆฌ๋ฅผ ์••๋ฐ•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” netfx๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” netfx๊ฐ€ ์ง€๊ธˆ๋ถ€ํ„ฐ ์ตœ์†Œ 2๋…„ ๋™์•ˆ asp.net ์ฝ”์–ด์—์„œ ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 1.x๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 2.x๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@qrli "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ ... ์ฝ”๋“œ/lib๊ฐ€ ํฌํ•จ๋œ ๋Œ€๊ทœ๋ชจ ํ˜ผํ•ฉ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์ˆ˜์‹ญ ๋…„ ์ „์˜ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค." ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ž˜๋ชป๋˜์–ด ์ค‘์ง€ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๋กœ ์ธํ•ด ์‹ฌ, ์ฒ ์‚ฌ ๋ฐ ๊ฑฐ๋ถ€๋กœ ๋ฌถ์ธ ์ ˆ๋ง์˜ ํฐ ๊ณต์— ๋” ๋งŽ์€ ์ง„ํ™ ๋ฉ์–ด๋ฆฌ๋ฅผ ๋˜์ง€์ง€ ๋ชปํ•œ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ์‚ฐ์—…์šฉ ๋ ˆ์ด์ € ์ ˆ๋‹จ๊ธฐ์— ๊ธฐ๋Œ€์–ด ์ ˆ๋‹จํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์•ˆ์ „ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„.

@benaadams

"๋น ๋ฅด๊ฒŒ ์›€์ง์ธ๋‹ค"๋Š” ํ‘œํ˜„์ด ๊ณผ์žฅ๋œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Full Framework์˜ ์ด์ „ ๋ฆด๋ฆฌ์Šค ์ผ์ •์— ๋”ฐ๋ผ ๋ฐฐ์†ก์— "1~2๋…„ ์ถ”๊ฐ€ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ "๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์›น ์„ธ๊ณ„์—์„œ ๋ฏธ์นœ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์ƒํ™ฉ์€ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ”Œ๋žซํผ์€ ๊ด€๋ จ์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ์ˆ ์ /์ •์น˜์  ์ œํ•œ์ด ์•„๋‹ˆ๋ผ ์ •์น˜์ /์กฐ์ง์  ์ œํ•œ์ž…๋‹ˆ๋‹ค. JVM/Java๊ฐ€ ์–ด๋–ป๊ฒŒ ์›€์ง์ด๋Š”์ง€ ๋ณด์‹ญ์‹œ์˜ค. ๊ทธ๋“ค์ด ์ „ํ˜€ ์›€์ง์ด๊ณ  ์žˆ๋‹ค๋ฉด. ์—ฌ์ „ํžˆ ๊ด€๋ จ์„ฑ์ด ์žˆ์ง€๋งŒ ์˜ค๋Š˜๋‚  .NET๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋žŒ๋“ค์ด Java/JVM์„ ์„ ํƒํ•˜๋Š” ์ด์œ ๋Š” '๋น ๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๊ฒƒ'์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ. ๊ทธ๋“ค์€ '๋น ๋ฅธ ์ด๋™'๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋‹จ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Java/JVM์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 1-2๋…„ ์•ˆ์— ํˆฌ์ž๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š๋Š” ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

MS๊ฐ€ .net์„ ์™„์ „ํžˆ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ์†Œ์œ ํ•˜๊ณ  ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .net full์€ ํ˜„์žฌ ์ƒํƒœ์— ๋Œ€ํ•ด '์ถฉ๋ถ„ํžˆ' ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

MS๋Š” ์ˆ˜๋…„ ๋™์•ˆ ์šด์ „์„์—์„œ ์ž ์„ ์ž๋‹ค๊ฐ€ ์ด์ œ ๊ฐ‘์ž๊ธฐ ์„ฑ๋Šฅ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์••๋ ฅ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค(์˜์‹ฌํ•  ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค). ๋ฐ˜๋ฉด JVM ํ† ์ง€์—์„œ๋Š” ๋Ÿฐํƒ€์ž„์˜ ํŠน์ • ์ธก๋ฉด์— ๋Œ€ํ•œ ํˆฌ์ž๊ฐ€ ๋งŽ์€ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋…„์ด ์ง€๋‚˜๋ฉด ๋ณด์ƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์ด ๋ฌด์—‡์ธ์ง€ ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ๋ชจ๋ฅด์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ .NET์€ ๋‘ ๊ฐœ์˜ ์ฃผ์š” ๋ถ€์„œ(.net์€ Windows๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๊ณ  .net ์ฝ”์–ด๋Š” devdiv๋กœ)์— ๊ฑธ์ณ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ณ ์šฉ์ฃผ๋Š” ์šฐ๋ฆฌ ์™ธ๋ถ€์ธ์—๊ฒŒ ์ข‹์€ ์ง•์กฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ์š”์ ์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ๋ชจ๋‘๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๊ด€์ ์„ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ "๋Œ€๊ธฐ์—…์€ ๊ทธ๋ ‡์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ์†”๋ฃจ์…˜์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์„ค๋“ํ•œ๋‹ค ํ•ด๋„ ๋Œ€๊ธฐ์—…์ด๊ธฐ ๋•Œ๋ฌธ์— 20๋…„์€ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@kolectiv ๊ทธ๊ฑด ์‚ฌ์‹ค์ด์ง€๋งŒ, ๊ธฐ์—…์ด ๊ฐ‘์ž๊ธฐ ๊ธฐ์—…์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ธ๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๋Ÿฌํ•œ ํ–‰๋™์„ ์ ๊ทน์ ์œผ๋กœ ์žฅ๋ ค/ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋˜ํ•œ _my_ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋” ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋˜๊ณ  ํ˜ธ์ŠคํŒ… ๋น„์šฉ์ด ๋” ๋งŽ์ด ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

ASP.NET Core 1.x(EF6, NHibernate, NServiceBus) ๋ฐ man์—์„œ .NET 4.x๋ฅผ ์—ฌ์ „ํžˆ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด์‹์„ฑ ๋ถ„์„์„ ์‹คํ–‰ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” netstandard20 ์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค. netstandard20 .

๋ฆฌ๋ธŒ | ํผ์„ผํŠธ
---------- | ----------
EF6 | 62.74
์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ | 67.39
N์„œ๋น„์Šค๋ฒ„์Šค | 65.68

๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ๋ˆ„๋ฝ๋œ API์— ํฐ ๊ฒฉ์ฐจ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. EF Core๋Š” ์—ฌ์ „ํžˆ EF6๊ณผ ํฐ ๊ฒฉ์ฐจ๊ฐ€ ์žˆ์œผ๋ฉฐ EF6์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์ด ์žˆ์„ ๋•Œ ์—ฌ์ „ํžˆ NHibernate๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. NServiceBus๋Š” ๋ฉ”์‹œ์ง•์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„ํœด.

@๋งˆํฌ๋ Œ๋“ค

"์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ ... ์ฝ”๋“œ/lib๊ฐ€ ํฌํ•จ๋œ ๋Œ€๊ทœ๋ชจ ํ˜ผํ•ฉ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์ˆ˜์‹ญ ๋…„ ์ „์˜ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค." ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ž˜๋ชป๋˜์–ด ์ค‘์ง€ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๋กœ ์ธํ•ด ์‹ฌ, ์ฒ ์‚ฌ ๋ฐ ๊ฑฐ๋ถ€๋กœ ๋ฌถ์ธ ์ ˆ๋ง์˜ ํฐ ๊ณต์— ๋” ๋งŽ์€ ์ง„ํ™ ๋ฉ์–ด๋ฆฌ๋ฅผ ๋˜์ง€์ง€ ๋ชปํ•œ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ์€ ์ƒˆ๋กœ์šด ์‚ฐ์—…์šฉ ๋ ˆ์ด์ € ์ ˆ๋‹จ๊ธฐ์— ๊ธฐ๋Œ€์–ด ์ ˆ๋‹จํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์•ˆ์ „ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„.

์˜ˆ, ๊ทธ ์„ฑ๊ฐ€์‹  ๊ธฐ์—…๊ณผ ๋Œ€๊ทœ๋ชจ ์กฐ์ง์— ๋‹ค๋ฅด๊ฒŒ ์ผ์„ ํ•˜๋ผ๊ณ  ๋งํ•ฉ์‹œ๋‹ค. ์ „์„ ์„ ๋Š์œผ์‹ญ์‹œ์˜ค! ์ง„ํ™ ํ™์ˆ˜๋ฅผ ๋ง‰์•„๋ผ! ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ทธ๋“ค์ด ๊นจ์–ด๋‚˜ ๋“ฃ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค, ์ž ๊น, ๊ทธ๊ฑด ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋‹น์‹ ์ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ฑฐ๋‚˜ ๋‹น์‹  ์ž์‹ ์˜ ์ฃผ์žฅ์„ ๋ฌด์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์ผ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ณด์„ธ์š”, ์•„๋ฌด๋„ '์ƒˆ๋กœ์šด ๊ธฐ์ˆ : ๋‚˜์˜๋‹ค!'๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์ด ๊ฐ€์ ธ์˜ฌ ๊ฒฐ๊ณผ๋ฅผ ๊นจ๋‹ซ์ง€ ๋ชปํ•œ ์ฑ„ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์ตœ์‹  ๋น„ํŠธ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ์˜ค๋ž˜๋œ cruft์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๊ทธ๊ฒƒ์„ ์›ํ•˜๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์‹ค์€ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋น„ํŠธ๋กœ๋งŒ ์ž‘์—…ํ•ด์•ผ ํ•˜๊ณ  ์˜ค๋ž˜๋œ ๊ฒƒ์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค! ์Šฌํ”„๊ฒŒ๋„ ์ฐธํ˜ธ์—์„œ ์ผํ•˜๋Š” ๋“œ๋ก ์€ ๋‹ค๋ฅธ ํ˜„์‹ค๊ณผ ํ•จ๊ป˜ ์‚ด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ˜„์‹ค์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ณ , ๋‹ค๋ฅธ ๋ฏธ๋ž˜๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์—†๊ณ , ํ•จ๊ป˜ ์ผํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ตœ์†Œํ•œ ์ธ์ •ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ์ ํ•ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@markrendle ๋ฌด์—‡์„ ์ œ์•ˆํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. 1,500๋งŒ ์ค„์˜ ์ž‘๋™ํ•˜๋Š” C# ์ฝ”๋“œ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ ์ž‘์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” netstandard 2.0์œผ๋กœ (์ฒœ์ฒœํžˆ) ์ „ํ™˜ํ•˜๊ณ  Span ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ์ง€๋งŒ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ์ธํ•ด ๊ทธ๊ฒƒ์ด ํ˜„๋ช…ํ•œ ๊ฒƒ์ธ์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Linux ์ง€์›์„ ์›ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ถ„๊ธฐ์ ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๋‚˜๋Š” netstandard๊ฐ€ ๊ฐ€์žฅ ์ง„๋ณด๋œ ๊ตฌํ˜„์œผ๋กœ ๋‚˜์•„๊ฐ€๊ณ  ๊ทธ ๋‹ค์Œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@FransBouma ๊ทธ๋Ÿผ ๊ธฐ์—…์ด ๋ฉ์ฒญํ•œ ์ง“์„ ํ•˜๋ ค๊ณ  ํ•ด์„œ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ณ ํ†ต์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ˆ˜๋ฐฑ๋งŒ ๋‹ฌ๋Ÿฌ ๊ทœ๋ชจ์˜ ๊ณต๊ณต ๋ถ€๋ฌธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์€ ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

@markrendle ๊ณ„์† ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ฆฌ์„์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทธ๋“ค์€ '๋น ๋ฅธ ์ด๋™'๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋‹จ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Java/JVM์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 1-2๋…„ ์•ˆ์— ํˆฌ์ž๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š๋Š” ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜์›ํžˆ System.Web์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows์— ๊ตฌ์›Œ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET ์ฝ”์–ด 1.x -> ASP.NET ์ฝ”์–ด 2.x; ๋ชจ๋“  API๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ .NET Framework์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‰ฌ๋Š”๋‚ ์—๋„ ์ƒ˜๋ฒ„๋ฐ”๊ฟ”์š” ๐Ÿ˜ฑ

ASP.NET Core 1.x๋Š” .NET Core 2.x ๋ฐ .NET Framework์—์„œ ์‹คํ–‰๋˜๋ฉฐ .NET Standard 2.x(.NET Core 2.x๋ฅผ ํ†ตํ•ด)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 2.x์™€ ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋””๋”ค๋Œ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.

ASP.NET Core 2.x๋Š” ์ค‘๋‹จ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ .NET Standard 2.x(.NET Core 2.x๋ฅผ ํ†ตํ•ด)๋ฅผ ์ง€์›ํ•˜๋ฉฐ ASP.NET Core 1.x์™€ ASP.NET Core 2.x ๊ฐ„์— API ์ธก๋ฉด์—์„œ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET Framework๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ASP.NET Core๋Š” ๊ณ„์†ํ•ด์„œ netstandard3.0 (2.x์ผ ์ˆ˜ ์žˆ์Œ)์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  netstandard ๋ฒ„์ „์„ ๋” ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ถ„๊ธฐ์— ํ•œ ๋ฒˆ์ฒ˜๋Ÿผ.
  • NetFx ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋Š” ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค netstandard3.x ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์ ํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ํ‘œ์ค€์ด ์•„๋‹ˆ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์ด netstandard์˜ ์ผ๋ถ€์ผ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ตœ์†Œํ•œ ASP.NET Core 2.x๋Š” ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฒฐ๊ตญ ์‚ฌ์šฉํ•  ํ‘œ์ค€์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์Šคํ•๋ณผ๋ง. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ œ๊ธฐ๋˜์—ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

@bencyoung ์ €๋Š” ์ „ ์„ธ๊ณ„๊ฐ€ 1,500๋งŒ ์ค„์˜ ์ž‘๋™ํ•˜๋Š” C# ์ฝ”๋“œ(์ž‘์—…์„ ๋ฉˆ์ถ”์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค, btw)๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์ด๊ธฐ์ ์ž„์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ASP.NET Core 2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์ดํŠผ์ด ๋ฝ์„ ๊ด€ํ†ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ ˆ๊ฑฐ์‹œ ์ง€์›์ด ์‹คํ–‰๋˜๋Š” ์ „์ฒด Windows ์ „์šฉ ํ”„๋ ˆ์ž„์›Œํฌ ASP.NET์ด ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์ด์‹ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฆฌํŒฉํ„ฐ๋ง/์žฌ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๊ฒฝ์ œ์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ง€๊ณ  ๋†€ ์ˆ˜ ์—†๋Š” ์ƒˆ๋กœ์šด ์žฅ๋‚œ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์งœ์ฆ๋‚˜์ง€๋งŒ ๋งŽ์€ ์ผ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Microsoft๊ฐ€ VB 6.0์œผ๋กœ ์ž‘์„ฑ๋œ COM ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์—ฌ์ „ํžˆ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ์กด์˜ 20๋…„ ๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋ชจ๋“  ๊ฒƒ์„ ํ”ผํ•œ๋‹ค๋ฉด ์•ž์œผ๋กœ 20๋…„ ํ›„์—๋Š” Micro Focus๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@adamhathcock ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ netstandard์˜ ๋ชฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œ ๊ณตํ†ต ๋ถ„๋ชจ๊ฐ€ ์•„๋‹ˆ๋ผ ํ†ตํ•ฉ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋งŒํผ ๋น ๋ฅด๊ฒŒ ์›€์ง์ผ ์ˆ˜ ์žˆ์ง€๋งŒ .NET ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฒฐ๊ตญ ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ .NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ”Œ๋žซํผ๋ณ„ ํ•ญ๋ชฉ์„ ๋บ€ ๋„คํŠธํ‘œ์ค€์ด ์ƒ๊ฒจ ํ†ตํ•ฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NetFx ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋Š” ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค netstandard3.x๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์ ํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Framework ์—…๋ฐ์ดํŠธ๋Š” Windows(๋Œ€๋ถ€๋ถ„)๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ง€๊ตฌ์ƒ์˜ ๋ชจ๋“  ์ปดํ“จํ„ฐ ์— ๋Œ€ํ•œ ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค.

.NET Core ์—…๋ฐ์ดํŠธ๋Š” ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด ์„ ํƒ ํ•˜๋Š” ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋งค์šฐ ๋‹ค๋ฅธ ์ง์Šน์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„, ํ•œ ๊ฐ€์ง€ ์‰ฌ์šด ์ผ์€ ASP.NET Core ๋ฌธ์„œ์˜ ๋งจ ์ฒซ ํŽ˜์ด์ง€ ์—์„œ ์ด ํŽ˜์ด์ง€ ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(๋˜๋Š” ๋‹จ์ˆœํžˆ "ASP.NET Core๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ ค๋ฉด .NET Framework๋ฅผ ์„ ํƒํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!"๋ผ๋Š” ์ค„์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.)

๊ทธ๋“ค์€ .NET ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฒฐ๊ตญ ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/aspnet/Home/issues/2022#issuecomment -299609207์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์•ฝ์†์€ ์ผ๋ฐ˜์ ์œผ๋กœ .NET Framework์™€ .NET Core ๊ฐ„์— ์œ ํ˜•์ด ๊ณต์œ ๋˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ฉค๋ฒ„๋ฅผ .NET Framework๋กœ ์ด์‹ํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ๋“œ๋ฌธ ๊ฒฝ์šฐ์— ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฌธ์ œ๋Š” ์ž๋™์œผ๋กœ ๊ณ ๋ ค๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋”ฐ๋ผ์žก์„ ๋•Œ์ฏค์ด๋ฉด ASP.NET์€ ์ฐจ๊ธฐ .NET Standard ๋ฒ„์ „์œผ๋กœ ๋„˜์–ด๊ฐ”์„ ๊ฒƒ์ด๋ฉฐ ASP.NET์šฉ .NET Framework์˜ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์€ ๊ฒฐ์ฝ” ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•ญ์ƒ ๋’ค์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@markrendle ์•„๋‹ˆ์š”, ๊ทธ๋“ค์€ ํฐ ์ง„ํ™ ๊ณต์ด ์•„๋‹™๋‹ˆ๋‹ค. ํฐ ๋ฏน์Šค๊ฐ€ ๋‚˜์œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ชจ๋“ˆ์‹์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๋ชจ๋“ˆ์ด ์˜ค๋ž˜ ์ „์— ์ •๋ง ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•ด ์ž‘์„ฑ๋˜์—ˆ๊ฑฐ๋‚˜ ํƒ€์‚ฌ์—์„œ ๊ตฌ์ž…ํ•œ ์ „ํˆฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” C๋กœ, ์ผ๋ถ€๋Š” ํฌํŠธ๋ž€์œผ๋กœ, ์ผ๋ถ€๋Š” C++/cli ๋“ฑ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋…ผ๋ฌธ์„ ์ฝ๊ณ , ๋” ๋งŽ์€ ์‹ค์ œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ƒˆ ๋ฒ„์ „์„ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์€ ์˜ˆ์‚ฐ์ด ์ฑ…์ •๋˜์ง€ ์•Š๊ณ  ์šฐ๋ฆฌ ์ž์‹ ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ๋žŒ๋“ค์€ ์šฐ๋ฆฌ๊ฐ€ .net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋ง๋“  ์ƒ๊ด€ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ๋Šฅ์ด ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ3์ž์—๊ฒŒ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์„ ์ด‰๊ตฌํ•˜๊ฑฐ๋‚˜ ๊ต์ฒด๋ฅผ ๋ชจ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ ๋ช‡ ๋…„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@benaadams

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜์›ํžˆ System.Web์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows์— ๊ตฌ์›Œ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET ์ฝ”์–ด 1.x -> ASP.NET ์ฝ”์–ด 2.x; ๋ชจ๋“  API๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ .NET Framework์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‰ฌ๋Š”๋‚ ์—๋„ ์ƒ˜๋ฒ„๋ฐ”๊ฟ”์š” ๐Ÿ˜ฑ
ASP.NET Core 1.x๋Š” .NET Core 2.x ๋ฐ .NET Framework์—์„œ ์‹คํ–‰๋˜๋ฉฐ .NET Standard 2.x(.NET Core 2.x๋ฅผ ํ†ตํ•ด)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 2.x์™€ ๋™์ผํ•œ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋””๋”ค๋Œ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.
ASP.NET Core 2.x๋Š” ์ค‘๋‹จ ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ .NET Standard 2.x(.NET Core 2.x๋ฅผ ํ†ตํ•ด)๋ฅผ ์ง€์›ํ•˜๋ฉฐ ASP.NET Core 1.x์™€ ASP.NET Core 2.x ๊ฐ„์— API ์ธก๋ฉด์—์„œ ํฌ๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET Framework๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์˜ต์…˜์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์ธ์ง€ ๋ด…์‹œ๋‹ค. ASPNET Core 1.x๋Š” ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์ž…๋‹ˆ๋‹ค. ์ด์‹ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜ค๋Š˜๋‚  .net์ด ๊ฝ‰ ์ฐฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ .net core๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€์›์ด ์ข…๋ฃŒ๋˜๋ฉด .net core /standard๋กœ ์ด์‹๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ASP.NET core 1.x๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์ข…์†์„ฑ์ด ์ด๋ฏธ netstandard2.0/.netcore์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ˜„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ๋น ์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋ฌธ์ œ ์—†์ด asp.net core 2.x๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ์ •์„ฑ์„ ์›ํ•œ๋‹ค๋ฉด nginx์™€ JVM ์Šคํƒ์˜ ๋Œ€์•ˆ์œผ๋กœ system.web์„ ์„ ํƒํ•˜๋ผ๋Š” ๋‹น์‹ ์˜ ์ œ์•ˆ์€ ์•ฝ๊ฐ„ ์•ฝํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? :) ํ”Œ๋žซํผ์œผ๋กœ ์„ ํƒํ•ด์•ผ ํ•  ๋Œ€๊ทœ๋ชจ ์กฐ์ง์˜ ์˜ต์…˜์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ƒˆ๋กญ๊ณ  ์™ธ๋ถ€ ์ข…์†์„ฑ(๋“œ๋ฌผ๊ฒŒ)๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์•ฑ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ ์•ˆ์ „ํ•œ ๋‚ด๊ธฐ๋ฅผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ ์™œ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ system.web ๋˜๋Š” JVM/nginx๋กœ ๋‚ด๋ ค์˜ค๋ฉด ์„ ํƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์ž‘์€ ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ „์— ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋‘๋“œ๋ ธ๋‹ค: sql ์„œ๋ฒ„ ๊ธฐ์—…์˜ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ. .net ์ฝ”์–ด์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ ํƒ? ์•„๋‹ˆ์š”. ๋”ฐ๋ผ์„œ asp.net core์™€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด .net full๊ณผ asp.net core 1.x๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ asp.net core 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ์ข…๋ฃŒ๋  ๋•Œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์ด์‹/์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? (๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ฐ€ ์ด๋ฏธ 'QFE ๋ชจ๋“œ'์ธ ํ”Œ๋žซํผ์— ๋†์žฅ์„ ๊ฑธ๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?) system.web์œผ๋กœ ๋Œ์•„๊ฐ€์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ์˜ ์ผ๋ถ€๋Š” ASP.NET์ด .NET Core์˜ ์ง„ํ™”๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ฃผ๋„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ๋‚ด๋ถ€์ ์ธ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ ํ”Œ๋žซํผ๊ณผ ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ฒƒ์ด .NET ๋ฒ„์ „์— ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ netstandard ๋ฒ”ํ”„(vNext ํฌํ•จ)๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ASP.NET์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์€ ASP.NET์˜ ํŠน๊ถŒ์  ์œ„์น˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Microsoft ๋‚ด๋ถ€์˜ ๊ฐœ๋ฐœ์ž ๊ทธ๋ฃน์ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” HPC ์†Œํ”„ํŠธ์›จ์–ด ์ž‘์„ฑ์ž๋กœ์„œ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ž์ฒด ์ œ๋กœ ํ• ๋‹น ๊ตฌ๋ฌธ ๋ถ„์„ ๋“ฑ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Span ๋“ฑ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ „์ ์œผ๋กœ! .NET Core๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ค๋žซ๋™์•ˆ ์•„๋‹™๋‹ˆ๋‹ค. .NET Framework์— Span ๋“ฑ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? netstandard ์•ฝ์ • ์—†์ด๋Š” ์ง€๊ธˆ ๋งํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

@markrendle ๋ฌผ๋ก ์ด์ง€๋งŒ ์ „ํ™˜ ๊ณ„ํš์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด netstandard์— ์žˆ์—ˆ๊ณ  ASP.NET Core๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ ์–ด๋„ ๊ฒฐ๊ตญ์—๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค....

@markrendle asp.net ์ฝ”์–ด์˜ ์˜๋„๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ๋ณธ ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ .net๊ณผ ํฐ ๋ ˆ๊ฑฐ์‹œ(๋‚˜์˜์ง€ ์•Š์€) ์ฝ”๋“œ๋ฒ ์ด์Šค์— ํฐ ํˆฌ์ž๋ฅผ ํ•œ .net ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์˜๋„ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ .net์ด ์•„๋ฌด๋ฆฌ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋”๋ผ๋„ node.js/python/go ๋…€์„๋“ค์ด .net์— sh*t๋ฅผ ์ฃผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด asp๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  nancy๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—…์€ ์•ˆ์ •์ ์ธ ๋ณด์ฆ๊ณผ ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€/์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํฐ ๋ˆ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‰ฌ์šด ํ•ด๊ฒฐ์ฑ…์€ Microsoft๊ฐ€ .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ์ง€์›ํ•˜๋Š” Windows ์ „์šฉ CoreCLR ๋ฐฐํฌํŒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฐœ์ธ์ ์ธ ์ธก๋ฉด์€ ์šฐ๋ถ„ํˆฌ์˜ PI์—์„œ .NET Core๋กœ ๋…ธ๋Š” ๊ฒƒ์ด ๋ฉ‹์ง€์ง€๋งŒ .NET Framework๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  .NET Core๋Š” ๋น„๊ตํ•  ๋•Œ ๋ฌธ์ œ์ผ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ์ธก๋ฉด์€ .NET Core๋ฅผ ๊ณ ๋ ค์กฐ์ฐจ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ๋Œ€๋ถ€๋ถ„์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์„ค์ •ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ณ ํ†ต์ด ๋งˆ์นจ๋‚ด ์‚ฌ๋ผ์ง€๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค... EF Core๋Š” EF6 ๋˜๋Š” NHibernate๋ฅผ ๋Œ€์ฒดํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋ถ€๋“œ๋Ÿฝ์ง€ ๋ชปํ–ˆ์œผ๋ฉฐ ๊ทธ๋“ค์€ ์ด๊ฒผ์Šต๋‹ˆ๋‹ค. .NET Core 2์—์„œ๋„ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SOAP ์„œ๋น„์Šค์šฉ WCF(ํ˜ธ์ŠคํŠธ)๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ํ•˜๋ฃจ ์ข…์ผ ํ•˜๋Š” ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํ•œ ๋ถ€๋‹ด์ด ๋˜์ง€๋งŒ ์—ฌ๋Ÿฌ ์•ฑ์—์„œ .NET Core ๋ฐ .NET Framework๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์˜๋ฆฌํ•œ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppDomains๋„ ๋‚ด ๋ฌธ์ œ์˜ ๊ฐ€์žฅ ์ž‘์€ ๋ถ€๋ถ„์ด์ง€๋งŒ ์‰ฝ๊ฒŒ ๊ต์ฒด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET MVC 5์—์„œ MVC Core๋กœ์˜ ๋„์•ฝ์€ ์žฌ์ž‘์„ฑ์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์‰ฌ์› ์ง€๋งŒ .NET Core๋กœ ์ด๋™ํ•˜๋ฉด VS๊ฐ€ ํ˜‘๋ ฅ์„ ์ค‘์ง€ํ•˜๊ณ  ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

WPF ๋‚ด์—์„œ ASP.NET Core๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์žฌ๋ฏธ์žˆ๋Š” ์ผ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  .NET Framework์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Windows CoreCLR ๋ฐฐํฌ๊ฐ€ ๋น„๊ณต๊ฐœ ์†Œ์Šค์ธ์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ ์กฐ์šฉํžˆ ์šธ๊ณ  ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ์‹คํ—˜ ๋ถ„๊ธฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋™์•ˆ ์‹ค๋ก€ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ •์„ฑ์„ ์›ํ•œ๋‹ค๋ฉด nginx์™€ JVM ์Šคํƒ์˜ ๋Œ€์•ˆ์œผ๋กœ system.web์„ ์„ ํƒํ•˜๋ผ๋Š” ๋‹น์‹ ์˜ ์ œ์•ˆ์€ ์•ฝ๊ฐ„ ์•ฝํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์˜ ๊ทน๋‹จ์ ์ธ ๋ ;)

๊ทธ๋Ÿฐ ๋‹ค์Œ system.web ๋˜๋Š” JVM/nginx๋กœ ๋‚ด๋ ค์˜ค๋ฉด ์„ ํƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, JVM์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฐจ๋‹จ๊ธฐ๊ฐ€ ์—†๊ณ  ์ข‹์€ interop ๋ฐ p/invoking์ด ์žˆ์œผ๋ฏ€๋กœ ASP.NET Core 2๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. :)

API๊ฐ€ "๊ฑฐ์˜ ๋™์ผ"ํ•˜๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋‘ 2๋ฐฐ๋กœ ์œ ์ง€ํ•˜์ง€๋งŒ "netstandard" ๋˜๋Š” "netcore"๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋‚ด๋ถ€๊ฐ€ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„, jit ๋ฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ASP.NET 1.x์™€ 2.x ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€๊ฐ€ ์•„๋‹Œ ๋…ธ์ถœ๋œ API ํ‘œ๋ฉด์—์„œ "์—ฌ๊ธฐ์„œ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค".

๋ฌธ์ œ์˜ ์ผ๋ถ€๋Š” ASP.NET์ด .NET Core์˜ ์ง„ํ™”๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ฃผ๋„ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ValueTask ์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ dotnet/corefx ์—์„œ API ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Task-like๋กœ ๋ฐœ์ „ํ–ˆ์œผ๋ฉฐ ํ˜„์žฌ C#7์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

API๊ฐ€ .NET Core์— ํฌํ•จ๋˜์ž๋งˆ์ž ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฐค์— ๊ฐ€์„œ API๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ). ๋˜๋Š” 6๊ฐœ์›” ๋™์•ˆ ์ค‘๋‹จํ•˜๋ ค๋Š” ๊ฒฝ์šฐ coreclr/corefx์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ.

๊ทธ๋Ÿฐ ๋‹ค์Œ ASP.NET์ด ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ 2๋…„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ์‹ค์šฉ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API๋Š” ์‚ฌ์šฉ์„ ํ†ตํ•ด ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์„ ํ†ตํ•ด ๋” ๋งŽ์€ ๋ฐœ๊ฒฌ์ด ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์— 2๋…„ ์ปดํŒŒ์ผ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.NET์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” HPC ์†Œํ”„ํŠธ์›จ์–ด ์ž‘์„ฑ์ž๋กœ์„œ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ž์ฒด ์ œ๋กœ ํ• ๋‹น ๊ตฌ๋ฌธ ๋ถ„์„ ๋“ฑ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Span ๋“ฑ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ „์ ์œผ๋กœ! .NET Core๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ค๋žซ๋™์•ˆ ์•„๋‹™๋‹ˆ๋‹ค.

HPC ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์›น ์š”์ฒญ์„ ์ง์ ‘ ์ค‘๋‹จํ•ฉ๋‹ˆ๊นŒ? ์ถ”์ธก์ปจ๋ฐ ์›น ์š”์ฒญ์— ์˜ํ•ด ๊ตฌ๋™๋˜๋Š” ๋Œ€๊ธฐ์—ด์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ด ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?

.NET Framework์— Span ๋“ฑ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค

@benaadams

๊ทธ๋Ÿฌ๋‚˜ ๋”ฐ๋ผ์žก์„ ๋•Œ์ฏค์ด๋ฉด ASP.NET์€ ์ฐจ๊ธฐ .NET Standard ๋ฒ„์ „์œผ๋กœ ๋„˜์–ด๊ฐ”์„ ๊ฒƒ์ด๋ฉฐ ASP.NET์šฉ .NET Framework์˜ ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์€ ๊ฒฐ์ฝ” ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ•ญ์ƒ ๋’ค์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฒ„์ „์ด 1๊ฐœ ์ด์ƒ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ(์ฆ‰, ์ตœ์‹  ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฃผ๋ณ€์— ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š”(ASP).NET Core ๋ฒ„์ „์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์Œ) ์ด๋Š” ์™„์ „ํžˆ ๊ดœ์ฐฎ๊ณ  ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Microsoft๋Š” .NET Framework ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ์ง€์›ํ•˜๋Š” CoreCLR์˜ Windows ์ „์šฉ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜๋Š” .NET Standard 2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŠธ; API ๊ฒฉ์ฐจ๋ฅผ ์ปค๋ฒ„ํ•˜๋Š” Windows์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š” .NET Core์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@benaadams ๋„ค, ๊ทธ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ๋น„๋ก PlatformNotSupportedException์„ ๋˜์ง€๋Š” ์–ด๋–ค ๊ฒƒ์—๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ

@qrli ๋ชจ๋“ˆ์‹์ด๋ผ๋ฉด ์ง€๊ธˆ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‚˜์ค‘์œผ๋กœ ๋‚จ๊ฒจ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ชจ๋“ˆ์‹"์ด ์•„๋‹Œ ํ•œ "PInvoke ๋ฐ COM์„ ํ†ตํ•ด ์ƒํ˜ธ ์šด์šฉ๋˜๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋œ ๋Œ€๊ทœ๋ชจ ๋ชจ๋†€๋ฆฌ์‹ System.Web ASP.NET IIS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ"์„ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š” ํ•œ ํฐ ์ง„ํ™ ๋ฉ์–ด๋ฆฌ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๊ณ  ์–ด๋–ค ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”์ง€์— ๋Œ€ํ•œ ์ตœ์ข… ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๊นŒ? Microsoft.Extensions.* ๋Š” ์•ˆ์ „ํ•˜๊ณ  Microsoft.AspNetCore.Razor.Runtime (๊ฐ€์ •)๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋ฏ€๋กœ Microsoft.AspNetCore.Html.Abstractions $๋„ netstandard ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. netstandard ์— ๋จธ๋ฌผ๊ณ  ์žˆ๋Š” Microsoft.AspNetCore.* ์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@bencyoung ๋‚ด๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” ์ „ํ™˜ ๊ณ„ํš์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ .NET Core 2.x(๋˜๋Š” ํ•ด๋‹น ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ์ „์ฒด ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ HTTP ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ API ๊ฒฝ๊ณ„.

@markrendle ๋ชจ๋“  ๊ฒƒ์ด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์— ์†ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์˜ˆ: ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•˜๋Š” ์ด์œ  ์ค‘ ์ƒ๋‹น ๋ถ€๋ถ„์€ ๋ฐฐํฌ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด 0.017ms์ด์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ƒ๋‹นํ•œ ๋„คํŠธ์›Œํฌ, ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™” ๋ฐ GC ๋น„์šฉ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์€ ๋ณดํŽธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๋ฉฐ ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์ข‹์€ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ๋‚˜์œ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@markrendle ๋‚ด ๋ฌธ์ œ๋Š” ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ ์„œ๋น„์Šค ์ธํ”„๋ผ ๋นŒ๋”ฉ ๋ธ”๋ก ์ค‘ ์ผ๋ถ€๊ฐ€ netstandard20 ๋˜๋Š” netstandardbanana ๋กœ๋“œ๋งต์— ์—†๋Š” API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์—๊ฒŒ .NET Core๋Š” ๊ทธ๋ฆฐํ•„๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ๊ทธ๋ฆฐํ•„๋“œ ์‹œ์Šคํ…œ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. System.DirectoryServices ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์˜ˆ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” WCF์ด๊ณ  ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” System.Data ๋ฐ SqlClient ํ•ญ๋ชฉ์ด๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ๋Š” System.Messaging ์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด .NET Core๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ œ๋กœ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ๊ฒƒ์ด ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@NickCraver ๋‚ด ๋ง์€ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ๊ฑฐ๋‚˜ ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ SO ํŽ˜์ด์ง€๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋นจ๋ฆฌ ๋ Œ๋”๋ง๋˜๋Š” ์ง„์งœ ์ด์œ ๋Š” ๋‹น์‹ ๊ณผ ๊ทธ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ›Œ๋ฅญํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ๋‹น์‹ ์˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ํฌํ•จ๋œ Google ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋งŒํผ ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋˜๋ฉฐ ํฌ๊ณ  ๋ณต์žกํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Amazon ํŽ˜์ด์ง€๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ผํ•œ ๊ฑฐ๋ž˜๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ASP.NET Core๊ฐ€ ๋™์ผํ•œ ์„ฑ๋Šฅ์œผ๋กœ ๊ตฌ์ถ•๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜๋ฅผ ํ–ฅํ•ด ๋‚˜์•„๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ๋‚™๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์™„์ „ํ•œ .NET์˜ ์ž‘์€ ์„ฌ์œผ๋กœ์˜ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ.

@jbogard ๋น„์Šทํ•˜์ง€๋งŒ .NET Core 2.0์ด ๋‚˜์˜ค๋ฉด ๋งค์šฐ ๋‹ค๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•œ์ˆจ์„ ์‰ฌ๋‹ค.

@jbogard

๋„ท์Šคํƒ ๋‹ค๋“œ๋ฐ”๋‚˜๋‚˜

์Šค๋ ˆ๋“œ์˜ ์ธ์šฉ๋ฌธ

๋‚˜์™€ ๋‚ด ํŒ€์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” ์ด ๊ฒฝ๋กœ๊ฐ€ ์˜๋„๋œ ๋ฏธ๋ž˜๋ผ๋Š” ํ‘œ์‹œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์ง€๋งŒ ์™„์ „ํ•œ .net ํ”„๋ ˆ์ž„์›Œํฌ(๊ตฌ์„ฑ ์š”์†Œ ๊ณต๊ธ‰์—…์ฒด dll, ์ง€๋ถˆ ์„œ๋น„์Šค SDK, HSM SDK)์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ž์ฒด ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ™‰ STINGS๋ฅผ ๋„์ž…ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด ์‚ฌ์ดํŠธ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์ด์ œ ๋” ๋งŽ์€ ๊ฐœ๋ฐœ ์ž‘์—… ๋ณต์žก์„ฑ์„ ๋„์ž…ํ•˜๊ฑฐ๋‚˜ MVC 5์— ์›น ์•ฑ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” kestrel์˜ ์†๋„์™€ ๋ฉ‹์ง„ ์ƒˆ API๋ฅผ ์œ„ํ•ด asp.net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ข…์†์„ฑ์„ ๊ฐ์•ˆํ•  ๋•Œ ์†์‰ฌ์šด ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๊ฐ€ ์—†๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ์˜ต์…˜์„ ๋” ์ •ํ™•ํ•˜๊ฒŒ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jabrown85์— ์ถ”๊ฐ€
ASP.NET Core๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ์ •์˜ ๋กค๋Ÿฌ์ฝ”์Šคํ„ฐ์˜€์Šต๋‹ˆ๋‹ค.
csproj๊ฐ€ ์ฐฉ๋ฅ™ํ•œ ํ›„ ๋งˆ์นจ๋‚ด "์ด์ œ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค"๋กœ ์ด๋™ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‹œ์ž‘ํ•˜๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐœํ‘œ ํ›„์—๋Š” ".NET Core๊ฐ€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ™•์‹คํžˆ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ MVC5๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?"์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ƒ์ž๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋‚ฎ์•˜๊ณ  ๊ธฐ๋ณธ MVC 5 ์•ฑ์˜ ๊ด€๋ฆฌ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋Š” ASP.NET Core๋กœ ์ž‘์„ฑ๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ•˜๋‚˜๋ฟ์ด์ง€๋งŒ ๊ธฐ๋ณธ ์•ฑ์ด NHibernate๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1.x์—์„œ ์˜์›ํžˆ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

@markrendle ์ปดํ“จํ„ฐ๋Š” ์•„๋‹ˆ์˜ค๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค

์ „์ฒด .NET -> netstandard์— ๋Œ€ํ•œ ๋กœ๋“œ๋งต์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ถ€๋ถ„ ์ค‘ ์ผ๋ถ€๋Š” ApiPort์—์„œ "์ง€์›๋˜์ง€ ์•Š์Œ"์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core 1.x์—์„œ ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ๋ถ„์„์„ ์‹คํ–‰ํ•˜์—ฌ ๋ฌด์—‡์ด ๋ˆ„๋ฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”์ธ ์•ฑ์ด NHibernate๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜์›ํžˆ 1.x์— ๊ณ ์ •๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. Hibernate๊ฐ€ ์ฃฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

@benaadams ๋†€๋ž๊ฒŒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. EF6์—๋Š” ์‹ค์ œ๋กœ ๋™๋“ฑํ•œ ๊ธฐ๋Šฅ์ด ์—†๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ EF6์ด์ง€๋งŒ NH ๋ฃจํŠธ๋กœ ๊ฐ€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@benaadams ๊ณต์‹์ ์œผ๋กœ ์•„๋‹ˆ์˜ค, ๊ฑฐ์˜ ์ฃฝ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ผ์‹œ ์ค‘์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉฐ์น ์— ํ•œ ๋ฒˆ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. ApiPort๋Š” .NET Standard์— ๋Œ€ํ•ด 72.26%์˜ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๋ณด๊ณ ํ•˜์ง€๋งŒ (์ ์–ด๋„ ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์—) ์ด์‹๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€์„ ์ฝ์œผ๋ฉด์„œ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ํ–ฅํ•˜๊ณ  ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์šฐ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋žซ๋™์•ˆ ASP.NET์€ ์•ˆ์ •์ ์ด๊ณ  ๊ฒฌ๊ณ ํ•œ ๊ธฐ์ˆ ์„ ์œ„ํ•œ ์ข‹์€ ์„ ํƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ๊นจ๋Š”" ๊ธฐ์ˆ ์ด ๋งŽ์ด ์žˆ์ง€๋งŒ ์ด๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฒ”์ฃผ์ž…๋‹ˆ๋‹ค.
Microsoft๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๊ธฐ๋Œ€์น˜๋ฅผ ๋งž์ถœ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ธฐ์—…์šฉ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๋น„๊ธฐ์—…์šฉ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  ์‚ฌ์šฉ ์ค‘์ธ Python 2.x ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ ๋ชจ๋‘ "์—”ํ„ฐํ”„๋ผ์ด์ฆˆ"๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ชจ๋“  ์ƒˆ ํ”„๋กœ์ ํŠธ๊ฐ€ Python 3์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(Python 3.0 ์ถœ์‹œ ํ›„ ๊ฑฐ์˜ 9๋…„!).

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ถœํ‡ด๊ทผ/์ ์‹ฌ ์‹œ๊ฐ„์— 300๊ฐœ ์ด์ƒ์˜ ๋Œ“๊ธ€์„ ๋ชจ๋‘ ์ฝ์—ˆ๊ณ  ... ์—ฌ์ „ํžˆ ์™„์ „ํžˆ "์ดํ•ดํ•˜์ง€" ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์–ป๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ „์ฒด .NET Framework๋Š” .NET Core 2์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ข…์†์„ฑ์€ netstandard2.0 netcoreapp2.0 ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.
  • DirectoryServices ๋˜๋Š” Drawing๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์›ํ•˜๋ฉด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ญ์ œํ•˜๊ณ  2.0์œผ๋กœ ์ ํ”„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚˜๋จธ์ง€... ๋ฐ”์œ ์ผ์ •๊ณผ ๋ชจ๋“  ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค.

@MaximRouiller

DirectoryServices ๋˜๋Š” Drawing๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์›ํ•˜๋ฉด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ญ์ œํ•˜๊ณ  2.0์œผ๋กœ ์ ํ”„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, .net Core๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์›ํ•˜๋ฉด AspNet Core 2.0+๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@MaximRouiller , ๊ทธ๋“ค์ด ๋ฐฉ๊ธˆ ํ•œ ๊ฒƒ์€ Asp.Net ํ•ต์‹ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์–ด ๋Œ€๋ถ€๋ถ„์€ ์•„๋‹ˆ์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์“ธ๋ชจ๊ฐ€ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ system.drawing ๋ฐ Directoryservices์™€ ๊ฐ™์€ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด netstandar๋กœ ํฌํŒ…๋  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์—ฌ์ „ํžˆ ์˜ค๋ž˜๋œ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ๋ˆ„๊ตฐ๊ฐ€ ์ด์‹ํ•˜์ง€ ์•Š๋Š” ํ•œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ถ€ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ๋ ˆ๊ฑฐ์‹œ์ด๊ณ  ์ด์‹๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฑฐ์˜ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ, .NET ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ •์‹ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ .net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ๋žŒ์€ ๋งํ•ด์„œ MVC 5๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ชฉ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. "๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?" ์‚ฌ๋žŒ๋“ค์ด ๋งˆ์Œ์†์œผ๋กœ ๋น„์šฉ/ํŽธ์ต์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐ ํ•„์š”ํ•œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.

์•„์ง ์ฝ์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชฉ๋ก ์„ ์ฝ๊ณ  ์–‘์ชฝ ๋ชจ๋‘์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ 2.x๊ฐ€ ์ „ํ™˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ณ (์‹ค์ œ๋กœ ์ด๋™์„ ๋ณด์ฆํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์— ์ •๋‹นํ•œ ์ด์ ์ด ์žˆ์Œ) 3.x๊ฐ€ ์Šน๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. 2์ผ ๋’ค์— ๋‚˜์™”์–ด๋„. ๋ชจ๋“  ๋ฉด์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์— ์ •๋ง ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@davidfowl ๋‹น์‹ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ‘œ์ค€ ์œ„์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ์ž์ฒด์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  .NET ๊ตฌํ˜„์—์„œ ์ฑ„ํƒํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
.NET Standard๋Š” ๊ฐ€์žฅ ๋Š๋ฆฐ ๊ตฌํ˜„ ์†๋„๋กœ ๋ฐœ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
.NET Standard๋Š” ๋‹ค๋ฅธ ์†๋„๋กœ ๋ฐœ์ „ํ•  ๊ฒƒ์ด๋ฉฐ .NET Framework๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์™œ ๊ทธ๋Ÿด๊นŒ์š”? .NET Standard vNext๋ฅผ ์ถœ์‹œํ•˜๊ณ  .NET์ด ๋‚˜์ค‘์—(๋ช‡ ๊ฐœ์›”์—์„œ 1๋…„ ํ›„) ๋”ฐ๋ผ์žก๋„๋ก ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ฆ‰, ์ตœ์ฒจ๋‹จ์— ์žˆ๊ณ  ์ตœ์‹  ASP.NET Core๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ .NET Core์—์„œ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— .NET์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์€ .NET์ด ๋”ฐ๋ผ์žก์œผ๋ฉด ๊ฒฐ๊ตญ ํ•ด๋‹น ๋ฒ„์ „์˜ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” .NET Standard ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. .NET Standard๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ตฌํ˜„๋งŒํผ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์—ฌ๊ธฐ์—์„œ๋Š” ํ‘œ์ค€์˜ ๊ณต์‹ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ‘œ์ค€๊ณผ ํ•จ๊ป˜ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๊ตฌํ˜„๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์„ ๋’ค์— ๋‚จ๊ฒจ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  .NET์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์‹  ๊ธฐ๋Šฅ์˜ ์ด์ ์„ ๋ˆ„๋ฆฌ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฌ์ง€๋งŒ ์˜๊ตฌ์ ์œผ๋กœ ๊ณ ์ •๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

@jdom ์€ .NET Framework๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์†๋„์™€ ์†๋„๊ฐ€ ๋Š๋ ค์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฐฐํฌ์ด๋ฉฐ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ๊ฐ์‚ฌ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ˆ˜์‹ญ์–ต ๋Œ€์˜ ๊ธฐ๊ณ„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ ˆ์ด์–ด๋ง๋„ ์™„์ „ํžˆ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์†Œํ•œ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

.NET Standard๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ตฌํ˜„๋งŒํผ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET Core์—์„œ .net ํ‘œ์ค€์— ๋Œ€ํ•œ ๋กœ์šฐ ์›Œํ„ฐ๋งˆํฌ๋ฅผ ๊ณ„์† ๋†’์ด๋ฉด ๋ชฉ์ ์ด ๋ฌดํšจํ™”๋˜๊ณ  ๋™์ผํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์ด๋Ÿฌํ•œ API๊ฐ€ .NET Framework์— ์ œ๊ณต๋  ๊ฒƒ์ด๋ผ๋Š” ์•ฝ์†์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์ฒ˜์ ธ ์žˆ๋‹ค๊ณ  ๋Š๋ผ์ง€ ์•Š์œผ์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET 4.7์€ ์—ฌ์ „ํžˆ โ€‹โ€‹.NET Standard 2.0๊ณผ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ PCL์—์„œ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ณ , ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ์™€ ์‚ฌ์šฉ์˜ ๊ณ ํ†ต์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ASP.NET์ด ์‚ฌ์šฉ์„ ํฌ๊ธฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

@davidfowl ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ PCL๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ฌ ๊ฒƒ์ด๋ฉฐ, ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ๊ฐ€ ๋˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Suchiman ๊ทธ๊ฒŒ ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? PCL์˜ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” NuGet์—์„œ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐ๋˜๊ณ  ํ‘œํ˜„๋˜๋Š” ๋ฐฉ์‹์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌํ˜„์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” API ์„ธํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด netstandard๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ์š”?

PCL์„ ์‚ฌ์šฉํ•˜๊ธฐ ๊ท€์ฐฎ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์€ ๋งค์šฐ ์ž‘์€ API ํ‘œ๋ฉด์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. .NET Standard 1.3-1.4๋Š” API ํ˜„๋ช…ํ•˜๊ฒŒ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

.NET Standard๋Š” ํ•ญ์ƒ ํญ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core ๋ฐ .NET Core๋Š” ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์„œ๋ฒ„ ์Šคํƒ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜๋ฏธ์˜ ์ˆจ๊ฒฐ์€ ๋” ๊ด‘๋ฒ”์œ„ํ•œ ํ”Œ๋žซํผ ์ง€์›(linux, osx, tizen, pi ๋“ฑ์—์„œ ์‹คํ–‰)์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@davidfowl

์šฐ๋ฆฌ๋Š” .NET Core์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ utf8๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ˜๋งŽ์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋”ฐ๋ผ์˜ค์„ธ์š”).

์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด/๋ฌธ์ž์—ด์˜ ์ €๋ ดํ•œ ์กฐ๊ฐ, ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ŠคํŒฌ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค๋ฒ„ํผ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด. String ๋ฐ Array๊ฐ€ 0 ํ• ๋‹น์ด ํ•„์š”ํ•œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๋Ÿฌํ•œ ์ƒˆ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ netstandard2.0 netcoreapp2.0 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋งž์Šต๋‹ˆ๊นŒ?

์ด์ „ 4.x ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ •๋ง ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์€ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ฝ 15๋…„ โ€‹โ€‹๋™์•ˆ 2002๋…„๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋งค์šฐ ์˜ค๋ž˜๋œ ํด๋ž˜์‹ ASP๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๊ณ ์ „์ ์ธ ASP์— ์กด์žฌํ•˜๋Š” ์˜ค๋ž˜๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! Microsoft๋Š” ๋น„์Šทํ•œ ๊ฒƒ์„ ๋‹ค์‹œ ๋ณด๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๊นŒ? ์˜ค๋ž˜๋œ 4.x ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฌด์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ผ์ด์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ๋Š”! ์ง€๊ธˆ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ .NET ์ฝ”์–ด๊ฐ€ ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด๊ณ  ์˜ค๋ž˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ net 4.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๋…„ ์•ˆ์— ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(ASP).NET Core ์ด๋ฉด์˜ ์•„์ด๋””์–ด๋Š” ์ •๋ง ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ .NET์ด ์ถœ์‹œ๋œ ์ดํ›„ ๊ฐ€์žฅ ์ž˜ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ํ˜ผ๋ž€์€ ์ด ๋ฉ‹์ง„ ๊ฐœ๋…์„ ๋ฌด๋””๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋˜ํ•œ Microsoft๊ฐ€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋…ผ์˜์กฐ์ฐจํ•˜์ง€ ์•Š๊ณ  ์Šค์Šค๋กœ ์ด๋Ÿฌํ•œ ๋Œ€๊ทœ๋ชจ ๋ณ€๊ฒฝ์„ ๊ฒฐ์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ์Šฌํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค! ์ด ํšŒ์‚ฌ๋Š” ์•„์ง ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์™„์ „ํžˆ ๋ฐฐ์šฐ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@davidfowl

.NET Standard๋Š” ํ•ญ์ƒ ํญ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

API ๋˜๋Š” ํ”Œ๋žซํผ์˜ ํญ?

.netcoreapp .netstandard ๋ฅผ ์ง„ํ™”์‹œํ‚ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— BCL ์กฐ์ • ๋Œ€์ƒ์ด .netcoreapp ์—๋งŒ ํ•ด๋‹นํ•ฉ๋‹ˆ๊นŒ?

$# .netcoreapp2.1 ์™€ ๋™์‹œ์— .netstandard2.1 ๋ฅผ ๋ฆด๋ฆฌ์Šคํ•ด๋„ .netcoreapp2.1 ๋ฅผ ๋จผ์ € ๋ฆด๋ฆฌ์Šคํ•˜๊ณ  $#์™€ ๋™์‹œ์— .netstandard2.1 ๋ฅผ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๊ฒƒ๊ณผ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค .net50 , ๋‹จ .netstandard2.1 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํŒจํ‚ค์ง€๋Š” .net50 ์—์„œ ์ฆ‰์‹œ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ง€๋งŒ .netcoreapp2.1 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

ASP.NET Core๋Š” .NET Core๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ƒ์œ„ ์ˆ˜์ค€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ ํ–ฅํ›„ .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  .NET Standard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ƒ์œ„ ์ˆ˜์ค€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ตฌํ˜„์ด ์•„๋‹Œ ์ฐธ์กฐ API ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

.NET Standard์˜ ๊ณต๊ฐœ ํฌ์ง€์…”๋‹์€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ œ์ณ๋‘๊ณ  ๊ตฌ์ถ•ํ•˜๊ธฐ ์‰ฌ์šด ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ๋Š” Microsoft์—์„œ ์ง์ ‘ ์ œ๊ณตํ•˜๋Š” 2๊ฐœ์˜ ๊ณต์‹ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

ASP.NET Core 2.0์˜ ๋ฒ”์œ„๋ฅผ .NET Standard 2.0๊ณผ ์ธ๋ผ์ธ์œผ๋กœ ์ถ•์†Œํ•œ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— .NET Standard 2.1์„ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ ์ ˆํ•œ ์ง€์› ์ผ์ •์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๋ชจ๋“  ๋”œ๋ ˆ๋งˆ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„๊นŒ์š”? Microsoft๋Š” .NET Standard์™€ ๋‘ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ชจ๋‘ ์†Œ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ์ฆ๊ฐ€์— ๋Œ€ํ•œ ์ด๋Ÿฌํ•œ ๋‘๋ ค์›€์€ ์™„์ „ํžˆ ๊ทผ๊ฑฐ๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค...

ASP.NET์—์„œ ASP.NET Core๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ASP.NET์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ  ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ Core์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‰ฌ์›Œ์ง€์ง€๋งŒ 100% ์ผ์น˜ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ณ ์ „์ ์ธ ASP๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์—๊ฒŒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

@davidfowl ์ €๋Š” ํŒ€ ์ „์ฒด์™€ ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘์˜ ๋ฐœ์ „์— ํฐ ์กด๊ฒฝ์„ ํ‘œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋ถ€๋”” ์ด๊ฒƒ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ผ์— ๋Œ€ํ•ด ์–•์žก์•„ ๋ณด๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ›์•„๋“ค์ด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๊ฐœ์ฒ™์ž์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ์—ฌ๋Ÿฌ๋ถ„์„ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ชจ๋ฒ”์œผ๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด๋Ÿฌํ•œ ์š”์  ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ ์ฆ‰๊ฐ์ ์ธ ๋ชฉํ‘œ ๋ณ€๊ฒฝ ๋ฌธ์ œ๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ „๋‹ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ช‡ ๋ฒˆ ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์—ฌ๊ธฐ์— ๋ฏธ์นœ ๊ฒƒ๋“ค์„ ๋˜์ง€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์•„๋ฌด โ€‹โ€‹์ƒ๊ด€์ด ์—†์œผ๋ฉฐ, ์ด ์‹œ์ ์—์„œ ๋ชจ๋‘ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด .NET Standard ๋Œ€์‹  .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” .NET Core์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ utf8๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ˜๋งŽ์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋”ฐ๋ผ์˜ค์„ธ์š”).

์—ฌ๊ธฐ์„œ ์ด ์ ์€ ํ™•์‹คํžˆ ๊ฒŒ์ž„ ์ฒด์ธ์ €๊ฐ€ ๋  ๊ฒƒ์ด์ง€๋งŒ IMO๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ํ•ญ๋ชฉ์ด๋ฉฐ ์–ด์จŒ๋“  netcoreapp20์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด/๋ฌธ์ž์—ด์˜ ์ €๋ ดํ•œ ์กฐ๊ฐ, ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ŠคํŒฌ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค๋ฒ„ํผ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด. String ๋ฐ Array๊ฐ€ 0 ํ• ๋‹น์ด ํ•„์š”ํ•œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ๋งค๋ฒˆ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜๋Š” String์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด Span์„ ์‚ฌ์šฉํ•˜๋Š” Int, UInt ๋“ฑ(TryParse)์— ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.๋ฐ ์ŠคํŒฌ.
  • ์ด๊ฒƒ์€ Span์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธ์ฝ”๋”ฉ ๋ฃจํ‹ด์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค..
  • ์™„์ถฉ๊ธฐ๋ฐ ์ŠคํŒฌ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ท ์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  Span์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ๋ฆฌ ๊ณ ์ •๋œ ๋ฒ„ํผ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํ‚น ์Šคํƒ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.๋˜๋Š” ๋ฒ„ํผ.

์ด ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ˜„์žฌ netstandard ์œ„์— ํŒจํ‚ค์ง€๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด netstandard20๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ง์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ MS๊ฐ€ ์•„๋‹Œ ์„ธ๊ณ„์˜ ๋‚˜๋จธ์ง€ ์‚ฌ๋žŒ๋“ค์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋‚˜ ์„ฑ๋Šฅ์ด ๋งž์ง€ ์•Š์„ ๋•Œ ํ•ญ์ƒ ๋งž์ถคํ˜• BCL๊ณผ ์œ ์‚ฌํ•œ impl์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Span API๊ฐ€ 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ (๋‹ค์‹œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ).

Kestrel์€ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„(ํ˜„์žฌ 2.1์„ ๋ชฉํ‘œ๋กœ ํ•จ)์— HTTP2๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ALPN์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด SSL ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation).
.NET Core์˜ Http ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ค‘ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์›น ์†Œ์ผ“์ด ์•„๋‹Œ ๋‹จ์ผ http ์š”์ฒญ์„ ํ†ตํ•ด ์‹œ๊ทธ๋„๋Ÿฌ์—์„œ http๋ฅผ ํ†ตํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ ๋์ ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๊นŒ๋‹ค๋กญ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, Kestrel์ด libuv๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๋Š” ๊ฒƒ๊ณผ ๋ณ„๋ฐ˜ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .Net Core์˜ CURL ๊ตฌํ˜„์€ ๋ชจ๋‘๊ฐ€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ netstandard ํ™•์žฅ ํŒจํ‚ค์ง€๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • HttpClient ๋ฐ System.Net.Http์—์„œ ํ—ค๋” ํŒŒ์„œ ๊ตฌํ˜„์„ ๋ถ„๊ธฐํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/aspnet/HttpAbstractions/tree/d1d9bceff56cb44a194ae36923ce687e5e353006/src/Microsoft.Net.Http.Headers). .NET Framework์™€ .NET Core๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. .NET Core์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์˜ ๋ณต์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ).

๋งž์Šต๋‹ˆ๋‹ค, ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ํ‹€๋ฆผ์—†์ด ์ด ๊ฒฝ์šฐ์— ์ด๊ฒƒ์„ ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๊ตฌํ˜„์— ๋งค๋‹ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ๋‹ต๋‹ตํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํ•˜๋Š” ๊ฒƒ๊ณผ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ์ฒ˜๋Ÿผ.

ASP.NET Core์™€ .NET Core๋Š” ๊ฒฝ๋Ÿ‰ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ์Ÿ์ ์ธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์„œ๋ฒ„ ์Šคํƒ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ASP.Net Core์—๋Š” ๊ทธ๋Ÿฐ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. .Net Core๋Š” ์ฒซ๋‚ ๋ถ€ํ„ฐ ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋Š” xplat ์„œ๋ฒ„ ์ธก .Net ํ”„๋ ˆ์ž„์›Œํฌ ํ•˜์œ„ ์ง‘ํ•ฉ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. .Net Core๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ASP.Net Core์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†” ์•ฑ, ๋ฐ์ดํ„ฐ ๋ถ„์„, DB ์„œ๋น„์Šค ๋“ฑ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .Net Core์˜ ๋ฐฉํ–ฅ์€ ํšจ๊ณผ์ ์œผ๋กœ "ASP.Net Core ํŒ€์ด ๊ฐ€์žฅ ์›ํ•˜๋Š” ๊ฒƒ"์ž…๋‹ˆ๊นŒ?

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ASP.NET์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๊ณ  ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ค์ง€๋งŒ Core์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿด๊นŒ์š”? ์•„์ง MS์—์„œ ์•„์ง ์ž‘์—… ์ค‘์ด๋ผ๊ณ  ํ™•์ธํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ ์ง๊ฐ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•Œ๊ฒ ์–ด. ํŒ€์ด ์ž์œ ๋กœ์›Œ์ง€๋ ค๋ฉด "์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ง€๋Š”" ์œ ํ˜•์˜ ์ˆœ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง์€ ๊ทธ๋Ÿฐ ์ˆœ๊ฐ„์ด ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค.

Oracle.Net ๋“œ๋ผ์ด๋ฒ„, NHibernate ๋ฐ RabbitMQ(๋ชจ๋‘ 4.6์— ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง 4.6 ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ASP.Net๊ณผ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์ฒด, ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ํ†ตํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์žฌ์ปดํŒŒ์ผ ์—†์ด ASP.Net Core 2์—์„œ ์ด ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ๋น ๋ฅธ ์š”์•ฝ
aspnetcore

@stefan2410 ์งง์€ ๋Œ€๋‹ต, ์•„๋‹ˆ์š”, ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. netstandar 2.0์šฉ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mattnischan

์ด ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ˜„์žฌ netstandard ์œ„์— ํŒจํ‚ค์ง€๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด netstandard20๋„ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ง์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ MS๊ฐ€ ์•„๋‹Œ ์„ธ๊ณ„์˜ ๋‚˜๋จธ์ง€ ์‚ฌ๋žŒ๋“ค์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋‚˜ ์„ฑ๋Šฅ์ด ๋งž์ง€ ์•Š์„ ๋•Œ ํ•ญ์ƒ ๋งž์ถคํ˜• BCL๊ณผ ์œ ์‚ฌํ•œ impl์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์ˆญ์ด ํŒจ์น˜ ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ œ์•ˆํ•˜์ง€ ์•Š๋Š” ํ•œ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Span API๊ฐ€ 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†๊ณ (๋‹ค์‹œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ).

Span์€ 2.0์— ๊ตฌํ˜„์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ ๊ณต๊ฐœ API๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ถ€ ๋ฒ„์ „์—์„œ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ๋กœ์šด ๋ฉ”์ด์ €์—์„œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ASP.NET Core 2.1์ด .NET Standard 2.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework ์ง€์›์ด ๋‹ค์‹œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์กฐ๊ธˆ ๋” ๊นŒ๋‹ค๋กญ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, Kestrel์ด libuv๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๋Š” ๊ฒƒ๊ณผ ๋ณ„๋ฐ˜ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .Net Core์˜ CURL ๊ตฌํ˜„์€ ๋ชจ๋‘๊ฐ€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ netstandard ํ™•์žฅ ํŒจํ‚ค์ง€๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์€ BCL์˜ ๋ชจ๋“  ํด๋ž˜์Šค ์ด๋ฆ„์„ .NET Standard ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

.Net Core๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ASP.Net Core์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†” ์•ฑ, ๋ฐ์ดํ„ฐ ๋ถ„์„, DB ์„œ๋น„์Šค ๋“ฑ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .Net Core์˜ ๋ฐฉํ–ฅ์€ ํšจ๊ณผ์ ์œผ๋กœ "ASP.Net Core ํŒ€์ด ๊ฐ€์žฅ ์›ํ•˜๋Š” ๊ฒƒ"์ž…๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, .NET Core๋Š” ์›๋ž˜ ํ•ต์‹ฌ์— ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์—†์—ˆ๋˜ ๋ฒ”์šฉ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ASP.NET Core๋Š” .NET Core ์œ„์— ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ˆ˜์ง์ ์ด์–ด์•ผ ํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ˜ผ๋ž€์˜ ์ผ๋ถ€๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿด๊นŒ์š”? ์•„์ง MS์—์„œ ์•„์ง ์ž‘์—… ์ค‘์ด๋ผ๊ณ  ํ™•์ธํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ ์ง๊ฐ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•Œ๊ฒ ์–ด. ํŒ€์ด ์ž์œ ๋กœ์›Œ์ง€๋ ค๋ฉด "์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ง€๋Š”" ์œ ํ˜•์˜ ์ˆœ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง์€ ๊ทธ๋Ÿฐ ์ˆœ๊ฐ„์ด ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค.

์˜ˆ, HTTP/2 ์ง€์›์ด ๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET ๋ฐ IIS์—์„œ ์ž‘์—…ํ•˜๋Š” ๋‹ค๋ฅธ ํŒ€ ์ด ์žˆ์œผ๋ฉฐ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ASP.NET Core๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ทœ๋ชจ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ „์—ผ๋ณ‘๊ณผ ๊ฐ™์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๊ฐ•ํ•œ ๊ฐ์ •์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, netstandard2.0 ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์›ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— .NET Standard๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ํ›Œ๋ฅญํ•˜๊ณ  ์„ฑ์ˆ™ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋‘๋ ค์›€์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ MVC 5/Web API 2 ์•ฑ์„ ASP.NET Core๋กœ ์ด์‹ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ .NET์œผ๋กœ์˜ ์ด์‹์„ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ด์œ ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ค€. ์‚ฌ์šฉ์ž ์ค‘ ๋ˆ„๊ตฌ๋„ ํ˜œํƒ์„ ๋ฐ›์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์™œ ์ž‘์—… ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ท€์ฐฎ๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‹ญ๊ณผ ๋‹ฌ๊ฑ€์˜ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉฐ ์ด๊ฒƒ์ด ์•ฝ๊ฐ„์˜ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ƒํƒœ๊ณ„ ์ „์ฒด์— ํ•ด๋ฅผ ๋ผ์น ๊นŒ ๋‘๋ ต์Šต๋‹ˆ๋‹ค. ๋จผ์ € ASP.NET Core ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ์œผ๋ฉด ์ข‹๊ฒ ์–ด.

ASP.NET Core 2.1์ด .NET Standard 2.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework ์ง€์›์ด ๋‹ค์‹œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, Net Framework๊ฐ€ .NET Standard 2.1์„ ์ง€์›ํ•˜๋Š” ์ฆ‰์‹œ ์ž๋™์œผ๋กœ ASP.NET Core 2.1์„ ์ง€์›ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. 1~2๋…„์ด ๊ฑธ๋ฆฌ๋”๋ผ๋„ ๋ง์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  .NET Standard ํ˜ธํ™˜ ํ”Œ๋žซํผ(Xamarin/Unity/...)์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

.NET Standard๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์ด _์‹ฌ์ง€์–ด_ ๋ฐํ˜€์งˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , .NET Core๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ๋“ค์ด __์ ˆ๋Œ€_ ์ผœ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋žœ ์ง€์—ฐ์ด ์žˆ๋”๋ผ๋„ full-fx๊ฐ€ netstandard๋ฅผ ๋”ฐ๋ผ์žก์„ ๊ณ„ํš์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
(๊ทธ๋ฆฌ๊ณ  NET Core๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์ด .NET Standard 2.1์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™œ .NET Standard๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?)

์ฃ„์†กํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์ˆญ์ด ํŒจ์น˜ ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ œ์•ˆํ•˜์ง€ ์•Š๋Š” ํ•œ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ›„์ž๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 1.x์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ๊ฐ‘์ž๊ธฐ ๋” ์ด์ƒ ์ง€์† ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

Span์€ 2.0์— ๊ตฌํ˜„์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ ๊ณต๊ฐœ API๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ถ€ ๋ฒ„์ „์—์„œ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ๋กœ์šด ๋ฉ”์ด์ €์—์„œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ASP.NET Core 2.1์ด .NET Standard 2.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework ์ง€์›์ด ๋‹ค์‹œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์™œ ๋–จ์–ด์กŒ์„๊นŒ์š”? Span์ด Framework์— _์ ˆ๋Œ€_ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

๋”ฐ๋ผ์„œ ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์€ BCL์˜ ๋ชจ๋“  ํด๋ž˜์Šค ์ด๋ฆ„์„ .NET Standard ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™€, ์•„๋‹ˆ. ๋‹ค๋ฅธ API๊ฐ€ ํฌํ•จ๋œ ์‚ฌ์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Microsoft.Net์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ System.Collections.Generic.Dictionary๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ๋ง๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.*

์˜ˆ, HTTP/2 ์ง€์›์ด ๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET ๋ฐ IIS์—์„œ ์ž‘์—…ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํŒ€์ด ์žˆ์œผ๋ฉฐ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ASP.NET Core๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ทœ๋ชจ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๊ณต์ • ํ•ด. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๋‹ค.

ํ›„์ž๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 1.x์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ๊ฐ‘์ž๊ธฐ ๋” ์ด์ƒ ์ง€์† ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ํ˜ผ๋ž€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฐ€๋Šฅํ•œ ํ•œ ์ ๊ฒŒ ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. API ์„ค๊ณ„ ๋ฐ ๋ฐฐํฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ธ์‹ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Microsoft๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งŽ์€ ํ”Œ๋žซํผ๊ณผ ์ผ์ •์„ ์ง€์›ํ•˜๋Š” ํ˜„์‹ค์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์ค‘๊ฐ„์— ๋ช‡ ๋ฒˆ์ด๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•  ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์„ ๊ฐ์‚ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜•์‹ ์ „๋‹ฌ์ด ๋ฉ”์„œ๋“œ ์ˆ˜์ค€์—์„œ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๊ฝค ๋งŽ์€ ๊ฒฝ์šฐ๋ฅผ ํ•ด๊ฒฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :(

์™œ ๋–จ์–ด์กŒ์„๊นŒ์š”? Span์ด Framework์— ์ ˆ๋Œ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์•„์ง ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž„๋ผ์ธ์ด ๋” ์ด์ƒ ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ASP.NET Core 2.0์—์„œ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์•„์ง ํƒ€์ž„๋ผ์ธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž„๋ผ์ธ์ด ๋” ์ด์ƒ ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ASP.NET Core 2.0์—์„œ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

AFAIK, Spans๋Š” .NET Desktop์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” netstandard1.x ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ์€ ์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„์ด๋ฏ€๋กœ CLR์— ๋ฐฑ์—…๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ์—†์ง€๋งŒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•˜๋‹ค).

ํŽธ์ง‘: System.Memory ํŒจํ‚ค์ง€์—๋Š” netstandard1.0 TFM์ด ์žˆ์œผ๋ฏ€๋กœ .NET 4.5์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

ํ›„์ž๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 1.x์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰๋œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ๊ฐ‘์ž๊ธฐ ๋” ์ด์ƒ ์ง€์† ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋กœ ์ธํ•ด ์˜ค๋Š˜ ํŠน์ • ๋ฐฉํ–ฅ์˜ ๊ธฐ๋Šฅ ์ž‘์—…์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์˜๋„์ ์ด๋ฉฐ .NET Framework๊ฐ€ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก .NET Standard ์™ธ๋ถ€์— ์žˆ๋Š” ํ•ญ๋ชฉ์„ ๋ณต์‚ฌํ•˜๊ณ  ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜์—ฌ ์ƒˆ๋กœ์šด API ์‚ฌ์šฉ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ „๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์•ž์œผ๋กœ ๋‹ค๋ฃจ๋ ค๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ(Microsoft)๊ฐ€ ์–‘์ชฝ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

์™œ ๋–จ์–ด์กŒ์„๊นŒ์š”? Span์ด Framework์— ์ ˆ๋Œ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

Span ์ž์ฒด์—๋Š” ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰๋˜๋Š” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ตฌํ˜„์ด .NET Framework์—์„œ ๊ฐ€๋Šฅํ• ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Span์„ ํ™œ์šฉํ•˜๋Š” .NET Framework์— ์ถ”๊ฐ€๋  API๋Š” Span ์ž์ฒด๋ณด๋‹ค ํ›จ์”ฌ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework์—์„œ ๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์–ธ์ œ์ž…๋‹ˆ๊นŒ?

์™€, ์•„๋‹ˆ. ๋‹ค๋ฅธ API๊ฐ€ ํฌํ•จ๋œ ์‚ฌ์ „์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Microsoft.Net์—์„œ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ System.Collections.Generic.Dictionary๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ๋ง๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.*

๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ๋‹น์‹ ์ด ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Microsoft.Extensions.Collections.Generic์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ด์ „ API ๋ฐ ํด๋ฆฌํ•„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(https://github.com/aspnet/DependencyInjection/blob/139d91e57dd31fcd5c6ddaf11ad1f771b5855807/src/Microsoft.Extensions.DependencyInjection/Internal/ConcurrentDiction). ์ด๊ฒƒ์€ ์ง€์† ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์œผ๋ฉฐ .NET Core ์‚ฌ์šฉ์„ ์ ๊ทน์ ์œผ๋กœ ํ”ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— .NET Core๊ฐ€ ์ด์ ์„ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„๊ฐ€ ์žˆ๋Š” @PinpointTownes ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐ์กด ์œ ํ˜•์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋•Œ ํด๋ž˜์Šค ์ˆ˜์ค€์˜ ํ˜•์‹ ์ „๋‹ฌ์ด ์ž‘๋™ํ•˜์—ฌ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@0x53A

๊ณต์ • ํ•ด. NuGet์˜ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ถ„๋ช…ํžˆ ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด์ „ .NET Framework ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” net20, net35, net40 ๋“ฑ์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ASP.NET Core๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋†’์€ ๋ฒ„์ „์˜ .NET Framework๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์‡ผ ์Šคํ† ํผ์ž…๋‹ˆ๋‹ค. ASP.NET MVC 5/Web Api 2์—์„œ Core๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ทจ์†Œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์•ˆ์ •์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„์ง ์ฝ”์–ด์šฉ์œผ๋กœ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. EF Core๊ฐ€ ๊ธฐ๋Šฅ ๋น„๊ต ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ EF6.x๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„๊ฐ€ ์žˆ๋Š” @PinpointTownes ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ธฐ์กด ์œ ํ˜•์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"ํ•„์š”"๋Š” ์•„๋งˆ๋„ ์•ฝ๊ฐ„ ๊ณผ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŒฌ์€ ์ฃผ๋กœ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ .NET Desktop์ด ์ŠคํŒฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ifdef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET Desktop์—์„œ ๊ธฐ์กด์˜ non-super-perfy ์˜ค๋ฒ„๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

@davidfowl ์ €๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๊ฐ€ ๊ฐ์ •์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. netstandard๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜์‹œ๋ฉด ๊ฒฐ๊ตญ 1.x์—์„œ 2.x๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ง€์—ฐ์ด ์žˆ๋”๋ผ๋„). ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ netfx๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(lib์˜ ๊ฒฝ์šฐ์™€ ๋‹ค๋ฆ„)์— ๊ทธ๋ฆฌ ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ์•ฑ์€ netfx -> netcore๋ฅผ ์ ˆ๋Œ€ ์ ํ”„ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ netcore๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ 1.x์—์„œ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์ ์—์„œ Asp.net ์ฝ”์–ด๊ฐ€ netfx์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด ๋” ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ๊ทธ๋“ค์€ ์ด๋ฏธ ์ด๊ฒƒ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” asp.net ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์— ํˆฌ์žํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ œ ํฐ ์งˆ๋ฌธ์€ ์‚ฌ์‹ค ๊ทธ๋ƒฅ

์˜ค๋žœ ์ง€์—ฐ์ด ์žˆ๋”๋ผ๋„ full-fx๊ฐ€ netstandard๋ฅผ ๋”ฐ๋ผ์žก์„ ๊ณ„ํš์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
(๊ทธ๋ฆฌ๊ณ  NET Core๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์ด .NET Standard 2.1์„ ๊ตฌํ˜„ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™œ .NET Standard๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?)


net20, net35 ๋“ฑ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ด€๋ จํ•˜์—ฌ ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์„ฑ์ž๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฒ„์ „์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ๋‹ค๋ฅธ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ํ”Œ๋žซํผ๋งŒ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  __์˜ˆ, ์ด์ „ ๋ฒ„์ „์˜ .NET Framework__์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…ํ™•ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ "๊ทธ๋ƒฅ" ์žฌ์ปดํŒŒ์ผํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋„ท์ฝ”์–ด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์•ฑ์˜ ์ˆ˜๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ํ์‡„ ์†Œ์Šค ํƒ€์‚ฌ ์ข…์†์„ฑ๋งŒ์œผ๋กœ๋„ ์ด๋ฅผ ์ฐจ๋‹จํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

Span ์ž์ฒด์—๋Š” ์–ด๋””์—์„œ๋‚˜ ์‹คํ–‰๋˜๋Š” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ตฌํ˜„์ด .NET Framework์—์„œ ๊ฐ€๋Šฅํ• ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Span์„ ํ™œ์šฉํ•˜๋Š” .NET Framework์— ์ถ”๊ฐ€๋  API๋Š” Span ์ž์ฒด๋ณด๋‹ค ํ›จ์”ฌ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework์—์„œ ๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์–ธ์ œ์ž…๋‹ˆ๊นŒ?

@davidfowl ๋‚˜๋Š” ์ด๊ฒƒ์ด ์•„๋งˆ๋„ ๋ฌธ์ œ์˜ ์ผ๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์†”์งํžˆ ์—ฌ๊ธฐ์—์„œ ์•ฝ๊ฐ„ ์•…๋งˆ์˜ ์˜นํ˜ธ์ž ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .Net Core ์ง์ „์— ์‹œ์ž‘๋œ ๋ฏธ๊ฐœ๋ฐœ ์•ฑ์œผ๋กœ ์ค‘๊ฐ„์— ๊ฐ‡ํ˜”๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๊ฒฝ๊ณ„๋ฅผ ๋„˜๋‚˜๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด Kestrel๊ณผ ๊ฐ™์€ ๋ฉ‹์ง„ ์ƒˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ .Net Core๊ฐ€ ์•ˆ์ •ํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜(๋„๊ตฌ ๋ณ€๊ฒฝ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋‹คํ–‰์ž…๋‹ˆ๋‹ค), _๋˜๋Š” _ ๋ฉ‹์ง„ ์ฝ”์–ด ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Framework๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด corefx๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ๋ฐœ์ „์˜ ์ „๋ถ€๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ๋Œ€๋ถ€๋ถ„์ด Framework vNext ๋˜๋Š” vNext+1์— ํฌํ•จ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ (30,000ํ”ผํŠธ ๋ณด๊ธฐ์—์„œ) ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์—์„œ Framework๊ฐ€ ๋ฏธ๋ž˜์˜ ํ”Œ๋žซํผ์ด ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๊ฑฐ๋ผ๋ฉด ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•„์š”. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ๋ฐฉ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— BCL ์œ ํ˜•์ด๋‚˜ ifdef ์ŠคํŒŒ๊ฒŒํ‹ฐ์— ๊ฐ€๊น์ง€๋งŒ ์™„์ „ํžˆ ๊ทธ๋ ‡์ง€๋Š” ์•Š์€ ์ปค์Šคํ…€ impl์„ ๋งŽ์ด ๊ฐ–๋Š” ๊ณ ํ†ต์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ๋งํ•  ๋•Œ ์ €๋ฅผ ๋ฏฟ์œผ์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ, ๋‚˜๋Š” ํ•ฉ๋ณ‘์ฆ์˜ ๋ฌด์ง€์—์„œ ์ผ์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์ ˆ์ถฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ์œผ๋กœ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. .net ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ .NET ์ „์ฒด๋กœ ๋ฐฑํฌํŒ…ํ•˜๋ฉด ๋ฌด์—‡์ด ๋‚จ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์ฝ์€ ๊ฒƒ์ฒ˜๋Ÿผ .NET ์ „์ฒด๋Š” ๋„ˆ๋ฌด ๋ถ€์„œ์ง€๊ธฐ ์‰ฝ๊ณ  ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ (๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์ด๋™) ์–ธ์ œ๋“ ์ง€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์–ผ๋งˆ๋‚˜ ์–ฝํ˜€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ์Œ). ๋งค์šฐ ์ž์ฃผ.

๋‘˜ ๋‹ค์ผ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. .NET ์ „์ฒด๋กœ ๋ฐฑํฌํŒ…ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ฑฐ๋‚˜(์˜ˆ: 6๊ฐœ์›”์—์„œ 1๋…„๋งˆ๋‹ค) ๋งค์šฐ ๋ณต์žกํ•˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ „์ž๋ผ๋ฉด ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ธˆ์„ ์ง€๋ถˆํ•˜๊ฒŒ ํ•˜๊ณ  ํ›„์ž๋ฅผ ํ•‘๊ณ„๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ํ›„์ž๋ผ๋ฉด ๋ฏธ๋ž˜ ์— ์ค‘์š”ํ•œ ๊ฒƒ์€ ์–ด์จŒ๋“  .netcore์˜ API์ด๋ฏ€๋กœ netstandard๋Š” ์˜ค๋ฅ˜๋ผ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๋ก ์ด ์•„๋‹™๋‹ˆ๊นŒ?

์ €๋Š” .NET์˜ ๋ฐฉํ–ฅ์ด ๋‚˜์•„๊ฐˆ ๋ฏธ๋ž˜์— ๋Œ€ํ•ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์šฐ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” .NET ์ „์ฒด ๋ฐ .NET ํ‘œ์ค€ 1.6์šฉ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ .NET ๋ฐฉํ–ฅ์˜ ์ถ”์ง„๋ ฅ(๋ช‡ ๋‹ฌ ์ „ .NET ํ•ต์‹ฌ ๋ฐœํ‘œ์—์„œ ๋งํ–ˆ๋“ฏ์ด .NET ์ „์ฒด๋กœ ๋ฐฑํฌํŠธ๋  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ)์ด ์‚ฌ๋ฌผ๊ณผ ์ƒํƒœ๊ณ„๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กฐ๊ฐํ™”๊ฐ€ ์ฃฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ์–ด๋–ค ๊ฒƒ๋„ _all_ .NET์˜ ๋ฏธ๋ž˜์™€ ์ƒํƒœ๊ณ„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ƒํƒœ๊ณ„๋ฅผ ์œ„ํ•ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ €๋ฅผ ์•ˆ์‹ฌ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ทธ๋ฃน๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ต์…˜์ด ๋ณต์žกํ•ด์ง€๊ณ  ์•ž์œผ๋กœ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฑฑ์ •ํ•˜์‹œ๋Š” ๋ถ„
  • ํ•œ ๊ฐ€์ง€ ์•ž๊ธธ์„ ๋‚ด๋‹ค๋ณด๊ณ  ์žˆ๋Š” Microsoft๋Š” ๋ฐ”๋กœ .net ํ•ต์‹ฌ ๋„๋กœ์ž…๋‹ˆ๋‹ค.

์ด ๋‘˜์€ ํ˜„์žฌ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Microsoft์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ผ๊ด€๋œ ์ด์•ผ๊ธฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‹ค์ œ ๊ฑฐ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์ƒํ™ฉ์ด ์‹ค์ œ๋กœ ์–ด๋–ค์ง€, ์ฆ‰ .net ์ „์ฒด์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๋ฐฑํฌํŒ…๊ณผ ํ•จ๊ป˜ .net ์ฝ”์–ด์—์„œ ๋ˆ„๋ฝ๋œ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋œ ์ž‘์—…์„ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (sqlserver ํ•ญ๋ชฉ, ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„ ๋“ฑ) ๋ฐ Microsoft๊ฐ€ ์ด ์ƒˆ๋กœ์šด ๋ฐฉํ–ฅ์„ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ๊ฒฌ๊ณ ํ•˜๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์œผ๋กœ ํŒ๋งคํ•˜์—ฌ ๊ธฐ์—…๊ณผ ๋Œ€๊ทœ๋ชจ ํŒ€์ด ๊ฑฑ์ • ์—†์ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•.

์ด ๋ชจ๋“  ๊ฒƒ์ด ์žฅ๊ธฐ์ ์œผ๋กœ ์ข‹์€ ์ผ์ด๋ผ๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€๋งŒ 2.0์—์„œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์ด๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ .NET Core๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ํ˜„์žฌ ๊ฐ€์žฅ ํฐ ๋ฐฉํ•ด ์š”์†Œ๋Š” ๊ฑฐ์˜ ๋…์ ์ ์ธ Microsoft ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค(์˜ˆ: Entity Framework Core๋Š” ์•„์ง ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ Azure Service Bus๋Š” ๋งค์šฐ ์ดˆ๊ธฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋งŒ ์žˆ์Œ).

Azure ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‹ค์Œ ์ฃผ/๋‹ฌ์— ์ค€๋น„๋˜๊ธฐ๋ฅผ ํฌ๋งํ•˜์ง€๋งŒ EF Core๊ฐ€ ์กฐ๋งŒ๊ฐ„ ์ถฉ๋ถ„ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

EF6์˜ ๋‚ด๋ถ€์— ๋Œ€ํ•ด ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด์ง€๋งŒ netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๋…ธ๋ ฅ์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์„๊นŒ์š”? ์ด๊ฒƒ์€ ๊ฑฐ๋Œ€ํ•œ ์ฐจ๋‹จ๊ธฐ๋ฅผ ์ œ๊ฑฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

"๊ทธ๋ƒฅ 1.x์— ๋จธ๋ฌด๋ฅด๋Š” ๊ฒƒ"์€ ์ข‹์€ ๋Œ€์•ˆ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”(๋˜๋Š” ๋‘˜ ๋‹ค ์ง€์›ํ•˜๋Š” ๋ฆฌ์†Œ์Šค/์ง€์‹์ด ์—†๋Š”) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 2.0

์ถ”์‹ : ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ .NET ์ƒํƒœ๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•ด์กŒ๋Š”์ง€ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋“  ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ด์•ผ ํ–ˆ๊ณ  ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทน๋‹จ์ ์ธ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ํ˜„์žฌ ์ธํ„ฐ๋„ท์—๋Š” ์˜ค๋ž˜๋œ ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋ชจ๋“  ๋‹ค๋ฅธ ์ œํ’ˆ ๋ฒ„์ „(.net core, sdk, .net standard, ...)์€ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. 20๋ถ„์˜ ์„ค๋ช… ์—†์ด .NET ํ‘œ์ค€ ํ…Œ์ด๋ธ”์„ ์ดํ•ดํ•˜๋Š” ์‚ฌ๋žŒ์„ ์•„์ง ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ž

.NET ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ •์‹ ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ .net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ๋žŒ์€ ๋ชจ๋‘ ๋งํ•ด์„œ MVC 5๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค. ๋‚˜๋Š” ๊ทธ ์ถ”๋ก ์„ ์ดํ•ดํ•˜๊ณ , ๋‚˜๋Š” ์ด๊ฒƒ์ด ์˜ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์‚ฌ์ „ ๊ฒฝ๊ณ  ์—†์ด ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋–จ์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” 10๋…„ ์ด์ƒ ๋œ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์—ฌ๋Ÿฌ MVC 3, 4, 5 ์•ฑ, ์ฝ˜์†” ์•ฑ, Windows ์„œ๋น„์Šค, ์ˆ˜์‹ญ๋งŒ ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์•ฑ ์ƒํƒœ๊ณ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๊ณ„๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€์— ๋น„ํ•ด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ •๋„๋กœ ๋‚˜์œ ์ƒํ™ฉ์— ์žˆ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์— ASP.Net Core 1.1์„ ์‚ฌ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์›น ์•ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ „์ฒด 4.6.2 ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ฑ์€ ๊ธฐ์กด ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” project.json์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ƒˆ๋กœ์šด .csproj๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋‹นํ™ฉ์Šค๋Ÿฌ์šด ์–‘์˜ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์†”๋ฃจ์…˜์—์„œ ์ด์ „ .csproj์™€ ์ƒˆ .csproj๋ฅผ ํ˜ผํ•ฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  VS15๋กœ ๋Œ์•„๊ฐ€์„œ ์ด์ „ .csproj ์œ ํ˜•์œผ๋กœ ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒด๊ณ„. ์ข…์†์„ฑ, ์ˆ˜๋งŽ์€ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ, ๋นŒ๋“œ ๋ฐ ๊ฒŒ์‹œ ๋ฌธ์ œ.. ๋ชฉ๋ก์€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๋ง‰๋‹ค๋ฅธ ๊ธธ์— ๋†’์ด ๋งค๋‹ฌ๋ฆฌ๊ณ  ๋ง๋ž์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐœ์›”์— ๊ฑธ์นœ ๊ฐœ๋ฐœ์„ ํฌ๊ธฐํ•˜๊ฑฐ๋‚˜ ๋จผ์ € ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ๋‹ค์Œ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐฉ๋ฒ•์„ ์ฐพ์€ ๋‹ค์Œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๋ฐฉํ–ฅ๊ณผ ํ•„์š”์„ฑ์— ๋™์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋” ์ผ์ฐ ์˜์‚ฌ ์†Œํ†ต์„ ํ–ˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„, ๋ฌผ๋ก  Azure Service Fabric ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET ์ฝ”์–ด์—์„œ๋„ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋˜ ๋‹ค๋ฅธ ์ฐจ๋‹จ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

Microsoft(ํŠนํžˆ Azure) ๋‚ด์—์„œ ์ ์ ˆํ•œ .NET ํ•ต์‹ฌ ์Šคํ† ๋ฆฌ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ „์ฒด .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@cwe1ss ์ด ๋ณ€๊ฒฝ์€ .NET ์ƒํƒœ๊ณ„์˜ ๋ณต์žก์„ฑ์„ ์–ด๋Š ์ •๋„ ์ค„์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ˜•์‹(ASP.NET Core + .NET Full ๋ฐ ASP.NET + .NET Core)์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๋Œ€์— ๋’ค๋–จ์–ด์ง„ ์ •๋ณด์— ์ „์ ์œผ๋กœ ๋™์˜ํ•˜์ง€๋งŒ ์ง€๊ธˆ Microsoft์ฒ˜๋Ÿผ ๊ณต๊ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@davidfowl

๋‹ค์–‘ํ•œ .NET ๋Ÿฐํƒ€์ž„ ๊ฐ„์˜ ์ฝ”๋“œ ๊ณต์œ  ์Šคํ† ๋ฆฌ๋Š” .NET Standard์ž…๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET Core ๋ฐ .NET Framework์—์„œ ๊ณต์œ ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.<

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” .net ํ‘œ์ค€๋„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ํ‘œ์ค€์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์˜ ์ค‘์š”์„ฑ์„ ์žŠ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.<<

๋ฌธ์ œ๋Š” ASP.NET Core๊ฐ€ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ์˜๋„๋œ ์ ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ทธ๋ž˜์„œ ASP.NET 4.x์—์„œ ๊ทธ๋ ‡๊ฒŒ ํฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ „ํ™˜์ด ์žˆ์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ์ƒ์œ„ ๋น„ํŠธ๋ผ๋ฉด .NET Framework์—์„œ ASP.NET 4.x๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ง€์›๋˜๋ฉฐ Windows๊ฐ€ ์‚ด์•„ ์žˆ๋Š” ๋™์•ˆ ๋ณด์•ˆ ํŒจ์น˜๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.<

๋ณด์•ˆ ํŒจ์น˜๋Š” ๋ฌธ์ œ์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์›น ํ‘œ์ค€์€ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ํ‘œ์ค€์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HTTPS v2์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์œ„์—์„œ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ ์š”์ ์€ ๋‚ด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. v4์ด๋“  v1์ด๋“  ๊ฐ„์— ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ด์ „ ๋ฒ„์ „์„ ๊ณ„์† ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•œ ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP .net Core๋Š” ํ•ญ์ƒ .net Core์™€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋‘์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋งˆ์ผ€ํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ 6๊ฐœ์›” ๋˜๋Š” 1๋…„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์ €๋ฅผ ๊ดด๋กญํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚˜๋Š” ๋ณดํ†ต 6๊ฐœ์›” ์ด์ƒ ๋’ค์ฒ˜์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‹œ๊ฐ„์„ ํˆฌ์žํ•œ ๋‹ค๋ฅธ ๋งŽ์€ Microsoft ๊ธฐ์ˆ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์กด ํˆฌ์ž๊ฐ€ ์™„์ „ํžˆ ํฌ๊ธฐ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํ…ŒํŒ

"๊ณต๊ฐœ ๊ฐœ๋ฐœ"์„ ์œ„ํ•œ @Rutix ์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ฐœํ‘œ๋‚˜ ์„ค๋ฌธ ์กฐ์‚ฌ ์—†์ด ๋†€๋ž๊ฒŒ๋„ ์กฐ์šฉํ•˜๊ฒŒ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ตญ ์ด ๋ฌธ์ œ๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์›์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

์กฐ์šฉํžˆ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ณผ๊ฑฐ์— ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋ฅผ ๋ฌผ๋ ธ๊ณ  ๊ทธ๋“ค์€ ๋ฐฐ์šฐ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ด ์™„์ „ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ•˜๊ณ  ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋ฏฟ์Œ๊ณผ ํˆฌ์ž๋ฅผ ํ•ด์น  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์—†๋‹ค๊ณ  ๋งํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋งˆ์ง€๋ง‰ ์‚ฌ๊ฑด์€ https://github.com/dotnet/roslyn/issues/17054 ์˜€์ง€๋งŒ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋ ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” .net ํ‘œ์ค€๋„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ํ‘œ์ค€์ด ์•„๋‹™๋‹ˆ๋‹ค.

@stefanolson ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .Net Standard 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์˜ค๋Š˜๋‚  ๋‹ค์–‘ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .Net Standard 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณธ 4.6.1์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@Suchiman ๊ฑฐ๊ธฐ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ์˜์‚ฌ ์†Œํ†ตํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํญํƒ„์„ ๋–จ์–ด ๋œจ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•„ ์•ฝ๊ฐ„ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋จผ์ € ๊ทธ๊ฒƒ์„ ๋ฐœํ‘œํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ ํ† ๋ก ์„ ํ–ˆ๋‹ค๋ฉด ์ด ๋ฐฉ๋ฒ•์„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” .net ํ‘œ์ค€๋„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ํ‘œ์ค€์ด ์•„๋‹™๋‹ˆ๋‹ค.

@stefanolson ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค . ๋‹ค๋ฅธ(๊ธฐ์กด) ๋ฒ„์ „์˜ .NET Framework๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์˜ .NET ํ‘œ์ค€์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/ ์ฐธ์กฐ

์ด ์Šค๋ ˆ๋“œ์— ์•ฝ๊ฐ„ ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ Windows์˜ NetFX์—์„œ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ASP.NET์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ REST API ํ˜ธ์ŠคํŒ…

์šฐ๋ฆฌ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ".NET API์—์„œ REST API๋กœ ๋ณ€ํ™˜๋œ" ์ข…๋ฅ˜์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” .NET API๋กœ ์ œ๊ณต๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ์ข…๋ฅ˜์˜ Windows ํ•ญ๋ชฉ์— ์ข…์†๋ฉ๋‹ˆ๋‹ค.

REST API๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ASP.NET Web API๋ฅผ ์„ ํƒํ•˜์—ฌ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค. Web API๊ฐ€ ASP.NET vNext/5/Core, __and__์—์„œ ํ†ตํ•ฉ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์ง€๋ฉด __ASP.NET Core๊ฐ€ NetFX__์—์„œ ์‹คํ–‰๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค. ASP.NET vNext/5/Core๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

.NET Core๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ผ๋ถ€)์„ Linux ๋ฐ macOS์— ์ด์‹ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ .NET Core์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” Windows ์ข…์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(ํฌํŒ…ํ•œ ์ข…์†์„ฑ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด CoreCompat.* NuGet ํŒจํ‚ค์ง€).

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์šฐ๋ฆฌ๋Š” ์ด์ œ ASP.NET Core 1.x์— ๊ณ ์ •๋˜์–ด ์žˆ์Œ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ œํ•œ๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ณ„์† ์ง€์›๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์—”? ASP.NET 4๋กœ ๋Œ์•„๊ฐ€์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

.NET Core์˜ ๋‹ค๋ฅธ ์˜์—ญ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์„ฑ๋Šฅ ์ž‘์—…์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์ธํ„ฐ๋„ท์— ๋…ธ์ถœ๋œ ๋Œ€์šฉ๋Ÿ‰ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜์ง€ ์•Š๊ณ  REST API๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๋Œ€ 10-20RPS?

๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์ง€์›

์‚ฌ์‹ค, NET 4.x์—์„œ์˜ Visual Studio 2017 ๊ฒฝํ—˜์€ ์—ฌ์ „ํžˆ โ€‹โ€‹.NET Core๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฐฝ์— ์ƒˆ ํ…Œ์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. . NetFX์—์„œ๋Š” ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋™์ผํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” NetFX ๋ฐ .NET Core ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์ด ์ด์ค‘ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” .NET Core ํ”„๋กœ์ ํŠธ(_ํŠนํžˆ_ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊ฑฐ)์— ๋Œ€ํ•œ Visual Studio์˜ ์„ฑ๋Šฅ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ถœ์‹œ ๋ฉฐ์น  ์ „์— ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ง ๊ธฐ์ˆ ์ ์ธ ์ด์œ ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ASP.NET Core v3์—์„œ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@mattnischan

@stefanolson ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .Net Standard 1.x๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์˜ค๋Š˜๋‚  ๋‹ค์–‘ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฒ„์ „์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .Net Standard 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณธ 4.6.1์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.<

asp.net ์ฝ”์–ด๊ฐ€ .net ํ‘œ์ค€์ด ์•„๋‹Œ .net ์ฝ”์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ? ๊ทธ๋ž˜์„œ ๋‚˜๋Š” .net ํ‘œ์ค€์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ์•„์ง ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. โ€“ ๊ทธ๊ฒƒ์ด ๋งŒ๋“ค์–ด์ง€์ž๋งˆ์ž ์‚ฌ์‹ค์ƒ ํ๊ธฐ๋œ๋‹ค๋ฉด ๋ง์ž…๋‹ˆ๋‹ค.

asp.net ์ฝ”์–ด์— .net ํ‘œ์ค€ 2.1์ด ํ•„์š”ํ–ˆ๋‹ค๋ฉด ํ˜„์žฌ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์—†์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์‹  ๋ฒ„์ „์˜ Asp.net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋Ÿฌํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํšจ๊ณผ๊ฐ€ ์žˆ๊ณ  ์˜๋ฏธ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  ๊ทธ๋“ค์€ ํ‘œ์ค€์„ ์“ธ๋ชจ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ํ‘œ์ค€์„ ํฌ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ƒํ™ฉ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด)

๊ทธ๋ž˜์„œ... ๋นŒ๋“œ 2017์ด ๋‚ด์ผ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํŒ€์ด ์ค€๋น„ํ•˜๋Š๋ผ ๋ฌด์ฒ™ ๋ฐ”๋นด๋˜ ๊ฒƒ ๊ฐ™์•„์š”. ์ผ๋ถ€ ๋ฐœํ‘œ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์—๊ฒŒ ์•ฝ๊ฐ„์˜ ์ˆจ์„ ์‰ด ์—ฌ์œ ๋ฅผ ์ฃผ๊ณ  ์ผ์ฃผ์ผ ํ›„์— ๋‹ค์‹œ ์†Œ์ง‘ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

https://build.microsoft.com/ (์ˆ˜์š”์ผ 8:00 PST, 15:00 GMT ๋ฐ ๋ชฉ ์œ ์‚ฌ?)

์šฐ๋ฆฌ๋Š” ๋” ๋งŽ์ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํ™ฉ์ด ๋” ๋ช…ํ™•ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ASP.NET ํŒ€์€ ์กฐ๊ธˆ ๋” ์ž˜ ๋Œ€์‘ํ•˜๊ณ  ๋ชจ๋‘์˜ ๊ด€์‹ฌ์‚ฌ์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. @davidfowl ์€ ์šฉ๊ฐํ•˜๊ฒŒ ํ•ด๋ƒˆ์ง€๋งŒ!

@stefanolson ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€์‹  ๊ทธ๋“ค์€ ํ‘œ์ค€์„ ์“ธ๋ชจ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ํ‘œ์ค€์„ ํฌ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ƒํ™ฉ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด)

.NET Standard์˜ ํ•ต์‹ฌ์€ ํ˜ธํ™˜์„ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๋Š” .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ .NET Framework, .NET Core ๋˜๋Š” .NET Standard๋ฅผ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์— ๊ด€๊ณ„์—†์ด ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Core์˜ ์š”์ ์€ .NET Framework๋ฅผ ๋‹ค์‹œ ์ƒ์ƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Core๋Š” ํ”Œ๋žซํผ ๊ฐ„, ๊ณ ์„ฑ๋Šฅ, ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด ๊ตฌํ˜„์„ utf8๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๊ทœ๋ชจ์ด๋ฉฐ .NET Framework์—์„œ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  ๋‚˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค.
.NET Core -> .NET Framework๋Š” ASP.NET MVC -> WebForms์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ ์ธก๋ฉด๋„ ๋‘ ๋ฒˆ์งธ๋กœ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ณต์›/๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๋“ฑ์˜ ์„ฑ๋Šฅ์€ ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค. "1.0์„ ์œ ์ง€"ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ง„ ์ตœ์‹  SDK๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 1.x SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ ๊นŒ์š”?

.NET Core ์Šคํ† ๋ฆฌ๋Š” ๊ธฐ๋ณต์ด ๊ฐ€๋“ํ•œ ๋ฉ‹์ง„ ๋‘˜๋Ÿฌ๋ณด๊ธฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์— ASP.NET Core ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์ด์ „์˜ ๋ชจ๋“  "์„ฑ๊ณต"(๋ฒ„์ „ ๊ด€๋ฆฌ, ์ด๋ฆ„ ์ง€์ •, project.json - .csproj ์ „ํ™˜) ๋•Œ๋ฌธ์— .netstandard 2.0์„ ๊ณ ๋Œ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฒซ ๋ฒˆ์งธ "์‹ค์ œ" ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET Core 1.1์ด ์—ฌ์ „ํžˆ ์ง€์›๋˜๊ณ  ํ–ฅํ›„ 10๋…„ ๋™์•ˆ ์šด์˜๋  ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์€ ๋งค์šฐ ์šฉ๊ฐํ•˜๊ฒŒ ____๊ทธ๊ฒƒ์„__ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜๊ณ  ASP.NET Core์˜ ์ดˆ๊ธฐ ํŒ๋งค ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ธก์—์„œ ์ฐจ๋‹จ๊ธฐ(๋””๋ ‰ํ† ๋ฆฌ ์„œ๋น„์Šค ์ œ์™ธ)๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด: ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ EF6์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ netstandardwhatever๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ณต์‹ Open XML SDK NuGet ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

Asp.Net Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋‹จ๊ณ„์˜ ์ผ๋ถ€๋กœ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ Core์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ netstandardXX ์„ ์ถ”์ง„ํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณต์‹ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Œ€๋กœ, ANC ์›น API๋ฅผ SPA(๊ทธ๋ฆฌ๊ณ  ๊ถ๊ทน์ ์œผ๋กœ WebForms ๋ ˆ๊ฑฐ์‹œ ์•ฑ์—์„œ)์— ๋…ธ์ถœํ•˜๊ณ  ํ˜ธ์ถœํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ–ˆ๋˜ WebForms/MVC ์•ฑ์ด ์žˆ์ง€๋งŒ ๋‹ค์Œ์œผ๋กœ ์ธํ•ด CoreCLR์—์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Sybase(ํ˜„์žฌ SAP) Ase ADO.NET ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ข…์†์„ฑ ์ด์ œ 9๋…„).

์ด ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ๋” ์ด์ƒ ๋‚ด ๊ฒฝ๋กœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํ™•์‹ ์€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฐ์Šคํฌํ†ฑ ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ณ„์† ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ASP.NET์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์‹œ๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  WebApi2๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•ž์œผ๋กœ 10-15๋…„ ๋™์•ˆ ์—ฌ๊ธฐ์—์„œ ์ง€์›๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š๊ณ  2.x์˜ ์ด์ ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ANC 1.x๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? (WebForms ์•ฑ์€ 1.1 ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฆด๋ฆฌ์Šค๋œ ์ดํ›„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋จ)?

@davidfowl

Span ์ž์ฒด์—๋Š” ์–ด๋””์„œ๋‚˜ ์‹คํ–‰๋˜๋Š” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ• ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
.NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ. Span์„ ํ™œ์šฉํ•˜๋Š” .NET Framework์— ์ถ”๊ฐ€๋  API๋Š” Span ์ž์ฒด๋ณด๋‹ค ํ›จ์”ฌ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET์—์„œ ๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์–ธ์ œ์ž…๋‹ˆ๊นŒ?
๋ผˆ๋Œ€?

๋ฌด์—‡์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค?

์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์›น ๊ฐœ๋ฐœ์ž๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ˆ˜๋…„ ๋™์•ˆ ๋” ๋‚˜์€ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ์ง€์›์„ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์šฐ๋ฆฌ๊ฐ€ SOL์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? .NET Framework ๋ฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ˆ˜๋งŽ์€ ๋น„ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด Span์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋” ์ด์ƒ ASP.NET๋งŒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” .NET Framework ๋ฐ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ Microsoft์˜ ์žฅ๊ธฐ์ ์ธ ๋…ธ๋ ฅ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

์•Œ๋‹ค์‹œํ”ผ, @davidfowl ๊ณผ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณ„์†ํ•ด์„œ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ์ด ํ† ๋ก ์— ๊ธฐ์—ฌํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋‹ต์žฅ์„ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ผ์ฐ๋ถ€ํ„ฐ ๋”ฐ๋ผ์žก์„ ๊ฒƒ์ด ๋งŽ์ง€๋งŒ ๋ชจ๋“  ์‚ฌ๋žŒ์ด .NET์„ ์‚ฌ์šฉํ•˜๊ณ /์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ํฌ๋งํ•˜๋Š” ์ธก๋ฉด์—์„œ ๊ฐ ๋Œ“๊ธ€์„ ํ†ตํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฒฐ๊ตญ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๋„์›€์œผ๋กœ ์–ด๋–ค ๊ธธ์„ ๊ณง๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋ชจ๋“  ๋ฉด์ด ๊ณ ๋ ค๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฐœํ‘œ๋ฅผ ๊ฐ„์ ˆํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด net coreapp 2.0์€ ASP.NET Core 2.0 ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ ˆ๊ฑฐ์‹œ NetFx ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: net461)์— ์ข…์†๋˜๋„๋ก ํ•˜๋Š” ํ˜ธํ™˜์„ฑ shim์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ๊ณ„ํš๋œ ์ด๋Ÿฌํ•œ compat shim์˜ ๊ธฐ๋Šฅ/์ œํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์–ด๋””์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@dgaspar ๊ทธ๊ฒƒ์€ ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. netcoreapp2.0 ๋Š” net461 ์—์„œ ๋Œ€๋ถ€๋ถ„ ์˜ API๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ net461 ์šฉ์œผ๋กœ ๋นŒ๋“œ๋˜๊ณ  netcoreapp2.0 ๊ฐ€ ์ง€์›ํ•˜๋Š” ํ•˜์œ„ ์ง‘ํ•ฉ ๋‚ด์— ์กด์žฌํ•˜๋Š” API๋งŒ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์–ด์จŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์™„์ „ํžˆ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉด ๋ˆ„๋ฝ๋œ ๋ฉ”์†Œ๋“œ ๋“ฑ์— ๋Œ€ํ•œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๊ฒ€์‚ฌ๋Š” ์ข‹์€ ๋ณด์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•  ์–‘๋‚ ์˜ ๊ฒ€์ด์ง€๋งŒ ์•„์ง ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ˜ธ์ถœํ•˜๋Š” API ์„ธํŠธ๋กœ โ€‹โ€‹๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@NickCraver ๊ธฐ์–ตํ•˜์‹œ๋Š” ๋ถ„...

"imports": [ "dnxcore50", "portable-net45+win8" ]

12์›”์— ์ž‘์„ฑํ•œ ๊ด€๋ จ ๋Œ“๊ธ€์ž…๋‹ˆ๋‹ค. 11๊ฐœ์˜ ์—„์ง€์†๊ฐ€๋ฝ์„ ์œ„๋กœ ์ด์›”:

์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” 15๋…„ ๋™์•ˆ C# ์•ฑ์„ ์ถœ์‹œํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ Microsoft์—์„œ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•จ์— ๋”ฐ๋ผ ์ด์ „์—๋Š” ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๋˜ ๋‚ด๋ถ€๋ฅผ ๊นŠ์ด ํŒŒ๊ณ ๋“œ๋Š” ๋ฐ ์ ์  ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ž˜๋ชปํ•˜๊ณ ์žˆ์–ด.

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌ์ฐฉํ•˜์ง€ ๋ชปํ•œ ์ž„์˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์œ ๋ฐœ ์˜ค๋ฅ˜๋กœ ๋Ÿฐํƒ€์ž„์— ๋†€๋ผ๊ณ  ์‹ถ๋‹ค๋ฉด Ruby๋กœ ์•ฑ์„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

node.js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  netfx ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mvc ์ฝ”๋“œ๋Š” ์ •๋ง ์‰ฌ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. node.js ๋˜๋Š” nancy์—์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋ช‡ ์ฃผ๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ๋ฅผ ์ด์‹ํ•˜๊ณ  ์ด์ „ ์ฝ”๋“œ๋งŒํผ ๊ฒฌ๊ณ ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ฆ๋ช…ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

RyuJit์„ ์˜ˆ๋กœ ๋“ค์ž๋ฉด ํ”„๋กœ๋•์…˜์œผ๋กœ ์ถœ์‹œ๋œ ํ›„์—๋„ ์ฃผ์š” ๋ฒ„๊ทธ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋ฉฐ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ 1๋…„์ด ๋” ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์• ์™„๋™๋ฌผ ๊ฐ€๊ฒŒ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋ฃจ์— ์ˆ˜๋ฐฑ๋งŒ ๋‹ฌ๋Ÿฌ๋ฅผ ๋ฒ„๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์‚ฐ์—…์šฉ ๋„๊ตฌ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

UI ํ”„๋ ˆ์ž„์›Œํฌ๋Š” winform์—์„œ web์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ/์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ด๊ณ  ์˜ค๋ž˜ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด ๋น›๋‚˜๋Š” UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑ/์žฌํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ํฌ๊ธฐํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ์š”, ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๋ฐ˜์ง์ด๋Š” ๊ฒƒ์ด 5๋…„ ์•ˆ์— ๋” ์œ ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€์ฒด๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๋น„์ฆˆ๋‹ˆ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋“œ๋Š” ๊ณ„์† ์‚ฌ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@qmfrederik

๋‚˜์ค‘์— ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ์ถœ์‹œ ๋ฉฐ์น  ์ „์— ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ง ๊ธฐ์ˆ ์ ์ธ ์ด์œ ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ASP.NET Core v3์—์„œ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์— HTTP2 ์ง€์›์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋„๊ตฌ ์ธก๋ฉด๋„ ๋‘ ๋ฒˆ์งธ๋กœ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ณต์›/๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๋“ฑ์˜ ์„ฑ๋Šฅ์€ ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค. "1.0์„ ์œ ์ง€"ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ง„ ์ตœ์‹  SDK๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 1.x SDK๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ ๊นŒ์š”?

๋„ค, ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@davidfowl

๋‹ค์Œ์œผ๋กœ HTTP2 ์ง€์›์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.<

๊ทธ๋ ‡๋‹ค๋ฉด asp.net core 2.0์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” HTTP2 ์ง€์›์€ 1.x์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์™„์ „ํ•œ .net ํ”„๋ ˆ์ž„์›Œํฌ์— ๋ฌถ์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๊ธฐ์ˆ ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๋Š” ์ข…๋ฅ˜์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ํ•„ํ„ฐ๊ฐ€ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ 6๊ฐœ์›”์—์„œ 1๋…„์ด ๊ฑธ๋ฆฌ๋”๋ผ๋„ ๊ถ๊ทน์ ์œผ๋กœ ๋„ˆ๋ฌด ๋’ค์ณ์ง€๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ์ฝ”๋“œ ๊ณต์œ  ๋ฐ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์ „์ฒด .net ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ๋ช…ํ™•ํžˆ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ํ•˜๋ฉด netfx ๋˜๋Š” C++/cli dll์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” dll์ด๋ฉฐ, ์ด dll์€ ์ผ๋ถ€ ๊ธฐ๋ณธ dll์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜์šฉ, COM์šฉ, asp.net์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ .net ์ฝ”์–ด์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ์žฅ๊ธฐ์ ์œผ๋กœ ๋„ท ์ฝ”์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ •๋ง๋กœ ์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋„๋ก ์ถ”์ง„ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์™€ ์ œ3์ž๊ฐ€ ๋ชจ๋‘ ๊ฑฐ๊ธฐ์— ๋„๋‹ฌํ•˜๋ ค๋ฉด ๋ช‡ ๋…„์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋„๋ฉ”์ธ ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ์ˆ  ์Šคํƒ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ์ฃผ๋ฅ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ํŒŒ์ด์ฌ 3 ์˜ˆ์ œ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋„๋ฉ”์ธ ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค์ž…๋‹ˆ๋‹ค.

@danielcrabtree

.NET Core์˜ ์š”์ ์€ .NET Framework๋ฅผ ๋‹ค์‹œ ์ƒ์ƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Core๋Š” ํ”Œ๋žซํผ ๊ฐ„, ๊ณ ์„ฑ๋Šฅ, ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.<

์ •๋ง ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  .net ์ฝ”์–ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .net ์ฝ”์–ด์— ๊ตฌ์ถ•๋œ WPF๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋””์—์„œ๋‚˜ .net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋‚ด ์ฝ”๋“œ๊ฐ€ WPF์™€ ASP.net ๊ฐ„์— ๊ณต์œ ๋˜๋ฏ€๋กœ ๊ณต์œ  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ์‹  ์›น ๊ธฐ์ˆ ๊ณผ ๋ณด์•ˆ ๊ธฐ์ˆ ์— ๋„ˆ๋ฌด ๋’ค์ฒ˜์ง€๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„(๋ชจ๋‘?)์€ 2.x ์ด์ƒ์—๋งŒ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์™€ .NET Core์˜ ๋‹ค๋ฅธ ๋ฌธ์„œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ํ”Œ๋žซํผ ๊ฐ„์œผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”Œ๋žซํผ์œผ๋กœ ์ด๋™ํ•˜๋Š” ์ฃผ์š” ํŒ๋งค ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜๋กœ ๊ด‘๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŠธ์œ„ํ„ฐ์˜ ์ด ๋Œ€ํ™”์—์„œ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://twitter.com/James_M_South/status/861595907782987776

๊ทธ๋ฆฌ๊ณ  ์œ„์˜ ๋Œ“๊ธ€; ๊ฐ•์กฐ ๋‚ด.

.NET Core 2์—์„œ ๋ˆ„๋ฝ๋œ ๋‚˜๋จธ์ง€ ํฐ ๊ฒฉ์ฐจ๋Š” System.DirectoryServices ๋ฐ System.Drawing์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฒˆ ์—ฌ๋ฆ„ ์— Windows์˜ .NET Core์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Windows ํ˜ธํ™˜ ํŒฉ ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ImageSharp ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ System.Drawing ์— ์˜ํ•ด ๋‚จ๊ฒจ์ง„ ๊ฒฉ์ฐจ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ์•„์ฃผ ์ดˆ๊ธฐ๋ถ€ํ„ฐ .NET Core๋กœ ๋งค์šฐ ์—ด์‹ฌํžˆ ์ผํ•ด ์™”์œผ๋ฉฐ ์ด์ œ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์•ฝ๊ฐ„ ๋ถˆ๋งŒ์„ ํ’ˆ๊ณ  ์งˆ๋ฌธํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ .NET Core๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ค์Œ์€ MS Docs ์˜ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

.NET Core๋Š” Microsoft ๋ฐ GitHub์˜ .NET ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ”์šฉ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Windows, macOS ๋ฐ Linux๋ฅผ ์ง€์›ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด๋ฉฐ ์žฅ์น˜, ํด๋ผ์šฐ๋“œ ๋ฐ ์ž„๋ฒ ๋””๋“œ/IoT ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์„ฑ๋ช…์ด ๋˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ฐ€ ์•„๋‹Œ๊ฐ€? ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋งŽ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฝ์€ ๋ชจ๋“  ์„ค๋ช…์€ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š”:

  1. ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ  ์ „๋ฐ˜์ ์ธ ์ดํ•ด๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋„๋ก ์ ์ ˆํ•˜๊ณ  ์ผ๊ด€๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋”˜๊ฐ€์— ์ ์–ด ๋‘์‹ญ์‹œ์˜ค.
  2. System.DirectoryServices ๋ฐ System.Drawing ์— ๋Œ€ํ•œ ์‹ค์ œ ๋กœ๋“œ๋งต์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ

ํŠนํžˆ System.Drawing ๋Š” ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์šฐ๋ ค์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ํ•ด๋‹น API๋ฅผ .NET Core๋กœ ์ด์‹ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์„œ๋ฒ„์—์„œ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ ์ตœ์‹  ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋งŽ์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ(๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ, ํ”ฝ์…€ ํ˜•์‹, ICC, EXIF, ์–‘์žํ™”, ์ƒ‰์ธํ™”๋œ Png ๋“ฑ)์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„๊ณผ ์–ผ๊ตด์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์— ์•ฝ๊ฐ„์˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋””๋ ‰ํ† ๋ฆฌ ์„œ๋น„์Šค
  • ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ(ํ•„์š”ํ•˜์ง€ ์•Š์Œ)
  • EF

์ด ์„ธ ๊ฐ€์ง€๋Š” ํฐ ํœด์‹์„ ์ทจํ•˜๊ธฐ ์ „์— ์†๋„๋ฅผ ๋‚ด์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ธ ๊ฐ€์ง€์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ, ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋“  ๊ฒƒ์€ ์˜ค๋กœ์ง€ EF6 ๋•Œ๋ฌธ์— net4x์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. EFCore... ์Œ... :trollface:

@stefanolson
๊ณต์œ  ์ฝ”๋“œ๋ฅผ .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ .NET Framework์˜ WPF ๋ฐ ASP.NET๊ณผ .NET Core ๋ฐ ๊ธฐํƒ€ .NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ASP.NET์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@JimBobSquarePants
Windows ํ˜ธํ™˜ ํŒฉ์ด .NET Core์˜ ์ผ๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .NET Core ์œ„์— ์žˆ๋Š” Windows ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Linux ์ „์šฉ ๊ธฐ๋Šฅ์„ ๋…ธ์ถœํ•˜๋Š” Linux ์ „์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Windows ํ˜ธํ™˜ ํŒฉ์€ ๊ธฐ์กด .NET Framework ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๋” ์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋ˆ„๊ตฐ๊ฐ€ .NET Core๋กœ ์ „ํ™˜ํ•œ ํ›„์—๋Š” ImageSharp์™€ ๊ฐ™์€ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@stefanolson
.NET Core์—์„œ WPF ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ Windows์—์„œ๋งŒ ์‹คํ–‰๋˜๋Š” Windows ์ „์šฉ WPF ํŒฉ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด GitHub ๋ฌธ์ œ๋Š” ๋…์ผ IT ๋‰ด์Šค ์‚ฌ์ดํŠธ์—์„œ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://www.golem.de/news/asp-net-core-2-0-microsoft-veraergert-net-entwickler-mit-support-entscheidung-1705-127712.html

@danielcrabtree ์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ˜ธํ™˜์„ฑ ํŒฉ์— ๋Œ€ํ•ด ์ฒ˜์Œ ๋“ค์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

System.Xaml์ด ์ด์‹๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@alexwiese ์ˆจ ์ฐธ์ง€ ๋งˆ์„ธ์š”.

System.Xaml์ด ์ด์‹๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์†ํ•ด; ๋‚ด๊ฐ€ ๋ฌผ๊ฑฐ์•ผ. ์›น์‚ฌ์ดํŠธ์—์„œ Xaml์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณ„์†ํ•ด; ๋‚ด๊ฐ€ ๋ฌผ๊ฑฐ์•ผ. ์›น์‚ฌ์ดํŠธ์—์„œ Xmal์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์—”์ง„์—๋„ ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋žซํผ ๊ฐ„ UI("๊ทธ๋ฆฐ ์Šคํฌ๋ฆฐ" ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Xamarin ์•ฑ ๋ฐ Angular SPA ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ํ™”๋ฉด ํ…œํ”Œ๋ฆฟ)์ž…๋‹ˆ๋‹ค.

์™€์šฐ, ์ข‹์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ๋“  XAML์˜ XML์„ HTML ๋ฐ Javascript๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ถฉ๋ถ„ํžˆ ๊ณตํ‰ํ•˜๋‹ค ๐Ÿ˜„

๋‹น์‹ ์ด ๋‹จ์ง€ ํŠธ๋กค๋งํ•˜๋Š” ๊ฒƒ์ธ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ๋˜‘๊ฐ™์ด ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” XAML์„ ํฌํŒ…ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ ๋Š” ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ์ž…๋‹ˆ๋‹ค.

์™€์šฐ, ์ข‹์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ๋“  XAML์˜ XML์„ HTML ๋ฐ Javascript๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ถฉ๋ถ„ํžˆ ๊ณตํ‰ํ•˜๋‹ค ๐Ÿ˜„

๋‹น์—ฐํžˆ ์•„๋‹ˆ์ง€; ๋จผ์ € JSON์œผ๋กœ ๋ณ€ํ™˜ ์ค‘์ž…๋‹ˆ๋‹ค ๐Ÿ˜‰

์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ธ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ๋‰ด์Šค ๊ธฐ์‚ฌ: https://www.infoq.com/news/2017/05/ASPNET-Core-2

@cwe1ss ์ž‘์„ฑ์ž๋Š” @Grauenwolf์ž…๋‹ˆ๋‹ค.

@alexwiese @yaakov-h ์ด์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฝค ํฅ๋ฏธ๋กญ๊ฒŒ ๋“ค๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ต์ˆ™ํ•œ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅธ ์ผ๋ จ์˜ ๋„์ „ ๊ณผ์ œ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋ณ€๊ฒฝ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ์ ํ”„๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋ฏธ๋ฆฌ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์œ„ํ—˜์ด ์ปค์ง‘๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด์„œ๋“  ๊ฐ€์•ผ ํ•  ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ™”ํ•˜๋ ค๋Š” ์š•๊ตฌ๋ฅผ ์ดํ•ดํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ๋’ค์— ๋‚จ๊ฒจ ๋‘˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ ํ”„๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๋™ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜๋Š” ํ˜„์žฌ๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„์ง€ํ•˜๊ฒŒ, ๋‹น์‹ ์€ ๊ทธ ์œ„ํ—˜์„ ๊ณผ์†Œ ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ฒฐ๊ตญ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š” ์›€์ง์ž„์ด์ง€๋งŒ ๋น ๋ฅด๋ฉด 2019๋…„ ๋ง์ด๋‚˜ 2020๋…„์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํ˜ผํ•ฉ์„ ์„ ํƒํ•œ ์‚ฌ๋žŒ๋“ค์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ๊ธฐ์ ์ธ ๋ชจ๋ธ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋‹ˆ์˜ค, ASP.NET Core 1.x๋Š” ๊ฑฐ๊ธฐ์— ๋Œ€ํ•œ ๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ฏธ์„ฑ์ˆ™ํ•œ ์ƒํƒœ๋Š” ์•ž์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๊ฐ€ ์šฉ์ดํ•œ ๊ณผ๋„๊ธฐ ๋‹จ๊ณ„๋กœ ๊ดœ์ฐฎ์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ ์‚ด๊ธฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ๊ณผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์˜ ๋งˆ์Œ๊ฐ€์ง์—๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉํ–ฅ์„ ์žฌ๊ณ ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

@davidfowl netcore์šฉ edge.js์™€ ๊ฐ™์€ ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? API ์†Œ๋น„์ž๊ฐ€ ํ”Œ๋žซํผ ๊ฒ€์‚ฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ํ•˜๊ณ  netfx์™€ netcore ๊ฐ„์˜ ๊ฐ•๋ ฅํ•œ ํ˜•์‹์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด ํ…œํ”Œ๋ฆฟ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๊นŒ?

ํ˜„์žฌ VS2017์— ๊ตฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

image

์™„์ „ํžˆ ์šฉ๋‚ฉํ•  ์ˆ˜ ์—†๋Š” ํ—›์†Œ๋ฆฌ, ์ด๊ฒƒ์€ ๋‹ค์‹œ ์ด๊ฒƒ์ด ์ „์„ฑ๊ธฐ์™€ ๋„๋ฆฌ ์ฑ„ํƒ๋  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ์žฅ๋‚œ๊ฐ ๊ธฐ์ˆ ์ž„์„ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ๋ผ์ด๋“œ์™€ ์ฝ”๋”ฉ ๊ฒฝํ—˜์„ ๊ฐ–๊ณ  ๊ณ„์‹  ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ํ•ญ๋ชฉ๊ณผ ํŠธ์œ„ํ„ฐ์—์„œ ๋น›๋‚  ์ˆ˜ ์žˆ๊ณ (๋งŒ์„ธ!), ๋งํฌ๋“œ์ธ ํ”„๋กœํ•„๊ณผ ์ด๋ ฅ์„œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ณ (๋งŒ์„ธ^2), ์—ฌ๋Ÿฌ๋ถ„ ์•ž์— ์žˆ๋Š” ๋ชจ๋“  ๋ฆด๋ฆฌ์Šค ํŒŒํ‹ฐ, ์†Œ๋…€, ์Œ๋ฃŒ ๋ฐ ๋ฌผ๊ฑด์€ ์œ ๋งํ•ด ๋ณด์ด์ง€๋งŒ .. ๋ˆ„๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ธฐ์—…์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ์ฑ„ํƒ๊ณผ ๊ฒฌ๊ณ ํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ๋˜๋Š” ์ผ๋ถ€ ์Šคํƒ€ํŠธ์—… ํžˆํ”ผ๋“ค๋งŒ?!?

"full Span"์— ๋Œ€ํ•œ ์˜๊ฒฌ์€ ์ž ์žฌ์ ์œผ๋กœ .NET Framework์— ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด ์‹ฌ๊ฐํ•˜๊ฒŒ ์šฐ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด Span์ด .NET Framework์— ์—†๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” API๋Š” ์ด๋ฅผ ๋ฏธ๋ž˜์˜ ๋„ทํ‘œ์ค€์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ ์„ฑ๋Šฅ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋…ธ์ถœํ•˜๋Š” ํ”Œ๋žซํผ ๊ฐ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌํ˜„์„ ์˜๊ตฌ์ ์œผ๋กœ ํšจ๊ณผ์ ์œผ๋กœ ๊ณ ์ˆ˜ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค...

ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์›ํ•˜๋ฉด netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ASP.NET Core๋Š” ๋ฌด์—‡์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  .NET Core๋กœ ์ „ํ™˜ํ•˜๋„๋ก ๊ถŒ์žฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ ์ฃผ์š” ๋ฒ„์ „์˜ JSON.NET ๋˜๋Š” ๋ฌด์—‡์ด๋“  netstandard๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ๋น ๋ฅธ ๊ตฌ๋ฌธ ๋ถ„์„๊ณผ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ฐธ๊ณ  Java๋Š” Netty(https://netty.io/)์™€ ์—ญํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณต์‚ฌ ์—†์ด ๋น ๋ฅธ IO๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ด ์งˆ๋ฌธ์— ๊ธฐ๊บผ์ด ์‘๋‹ตํ•ด ์ฃผ์‹  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌํ•˜๋‹ค๋Š” ๋ง์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค...

@shanselman ๋น ๋ฅธ ์ด๋™์€ ํŠนํžˆ ASP.Net ํŒ€๊ณผ ๊ฐ™์ด ํ˜ธํ™˜์„ฑ์— ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ๋ฌผ์„ ๋””์ž์ธํ•˜๋Š” ํŒ€์˜ ๊ฒฝ์šฐ ๊ณ ๊ท€ํ•œ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋ฌธ์ œ ์˜์—ญ์„ ์–ผ๋งˆ๋‚˜ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๊ฒƒ์„ ์ง€์›ํ•˜์ง€๋งŒ ...

๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜๋Š” ๋™์‹œ์— ๊ณ ๊ฐ๊ณผ "๋–จ์–ด์ง€๋Š” ๊ฒƒ"๋„ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๊ณ ๊ฐ(์ € ํฌํ•จ)์€ ๊ธฐ์กด ์•ฑ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ƒ๋‹นํ•œ ๋ ˆ๊ฑฐ์‹œ ์†Œํ”„ํŠธ์›จ์–ด์™€ ์‹œ๊ฐ„ ํˆฌ์ž๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์šฐ๋ฆฌ๋ฅผ ๊ทธ๋ƒฅ ๋†”๋‘๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋”ฐ๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ณณ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

.Net core๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๊ณ  ์ง€๊ธˆ๋ถ€ํ„ฐ ์ ์–ด๋„ ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ Full Framework๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ณ ๊ฐ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Full Framework์—์„œ ๋ฒ—์–ด๋‚˜๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด์ „ ๋ฒ„์ „์— ์ขŒ์ดˆ๋˜๊ณ  .Net ์„ธ๊ณ„์—์„œ ํฐ ๋ถ„์—ด์„ ์ผ์œผํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@JimBobSquarePants System.Drawing ๋ถ€๋ถ„์—์„œ ๋‘ ๋ฒˆ์งธ์ž…๋‹ˆ๋‹ค. System.Drawing ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ช‡ ๊ฐ€์ง€ ๋…ผ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์ผ๋ถ€ ์˜๊ฒฌ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Windows์— ๋จผ์ € "ํ˜ธํ™˜ ํŒฉ"์ด ์žˆ๊ณ  ๊ทธ ๋‹ค์Œ System.Drawing ์— ๋Œ€ํ•œ ๋ชจ๋“  OS-es๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€, Mono์˜ libgdiplus๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๋ณด๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ด๊ฒƒ์€ ์˜คํžˆ๋ ค ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  2. ์‚ฌ๋žŒ๋“ค์€ ๊ฒฐ์ •์— ๊ด€์—ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ๋ฌผ๋ก  ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์„ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํฐ ๋ณ€ํ™”์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ ์ •์‹ ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  3. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ฒฐ์ •์„ ๊ฒ€ํ† ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "๊ฑฐ๋Œ€ํ•œ ๊ณ„ํš"์€ ์—†์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์— .NET Core๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€ ํ”Œ๋žซํผ ๊ฐ„ ๋ฒ„์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ .NET Standard 2.0์„ ์‚ฌ์šฉํ•˜๋ฉด .NET Core 2๊ฐ€ ๋ฌผ๋ก  ํ•ฉ๋ฆฌ์ ์ธ ์ œํ•œ(UWP, WinForms ๋“ฑ ์—†์Œ) ๋‚ด์—์„œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋“œ๋กญ์ธ ๊ต์ฒด์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
  4. .NET Core 2๋Š” System.DirectoryServices์™€ ๊ฐ™์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋†“์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ, ์ด๊ฒƒ์€ ์ธ์ •๋˜์—ˆ์ง€๋งŒ .NET Core์— ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋” ๋ช…ํ™•ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ASP.NET Core 2๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์ตœ์‹  ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ์‹ค ์ด๊ฒƒ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ง€๋‚˜์น˜๊ฒŒ ์–ด๋ ต๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ASP.NET Core 2๊ฐ€ .NET Core 2์—์„œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๊ฝค ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์˜ ์ œํ’ˆ์œผ๋กœ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด ์ด๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ •๋ง๋กœ ๋ณด๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ฒƒ์€ .NET ํ”Œ๋žซํผ์˜ ๋น„์ „ ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ์ผ์ด ์ง„ํ–‰๋ ๊นŒ์š”? ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ๋งŒ ์ˆ˜์‹ ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์ˆ˜์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? .NET Core์— ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์–ธ์ œ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์„ ์„ค๋ช…ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์ด ์ง€๊ธˆ ๋Š๋ผ๊ณ  ์žˆ๋Š” ๋ถˆ์•ˆ์„ ์™„ํ™”ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl HTTP 2.0์— ๊ด€ํ•œ ๊ฒƒ๋งŒ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •๋ง HTTP 2.0์— ๊ด€ํ•œ ๊ฒƒ์ด๋ผ๋ฉด HTTP 2.0 ์ง€์›์„ ์ œ์™ธํ•˜๊ณ  ASP.NET Core 2.0 ๋Œ€์ƒ NetFX๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ •๋ง๋กœ ์›ํ•  ๊ฒฝ์šฐ NetFX์—์„œ HTTP 2.0์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”Œ๋Ÿฌ๊ทธํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

@cokkiy @popcatalin81 @xprzemekw ๊ฑด์„ค์ ์ธ ๋ง์ด ์•„๋‹ˆ๋ผ๋ฉด ๋Œ“๊ธ€์„ ์‚ผ๊ฐ€ํ•ด ์ฃผ์„ธ์š”. ์ด๋Ÿฐ ๋Œ“๊ธ€์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@davidfowl https://github.com/aspnet/Home/issues/2022#issuecomment -300141134์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ์ •๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ธฐํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜ˆ: asp.net core 3.0).

  • EF Core๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง EF 6.0์„ ๋Œ€์ฒดํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ์ƒ์‚ฐ ์ค€๋น„ ์—†์Œ System.Drawing ๊ต์ฒด
  • ์•„๋‹ˆ์š” System.DirectoryServices
  • office xml sdk ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์žˆ์—ˆ์ง€๋งŒ 2017-05-01 https://www.nuget.org/packages/DocumentFormat.OpenXml/ ํ˜„์žฌ netstandard์—์„œ ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
  • .net ์ฝ”์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” MS ๋ฒ”์œ„ ๋ฐ–์˜ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€(nhibernate, ๋‹ค์–‘ํ•œ db ์ œ๊ณต์ž, ikvm)

ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ๋žŒ๋“ค์€ .net ์ฝ”์–ด๋กœ ์ด๋™ํ•  ์˜๋„ ์—†์ด ๋ ˆ๊ฑฐ์‹œ ์ข…์†์„ฑ์ด ์žˆ๋Š” asp.net ์ฝ”์–ด๋กœ ์•ฑ์„ ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • netstandard๋ฅผ ๋’ค๋กœํ•˜๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์‹ญ์‹œ์˜ค.
  • ์ผ๋ถ€ ํƒ€์‚ฌ ํŒจํ‚ค์ง€๋Š” .net ์ฝ”์–ด๋กœ ์ด์‹๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค(์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด ์˜๊ฒฌ์ผ ์ˆ˜ ์žˆ์Œ)

๊ฑด์„ค์ ์ธ ์˜๊ฒฌ์˜ ์˜ˆ๋Š” ์ด ์„ธ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ณด๊ณ  ์‹ถ์€ ์ด์œ ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋Œ€์•ˆ ์†”๋ฃจ์…˜์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์˜/๋น„๋™์˜๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด "๋ฐ˜์‘" ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

@์ฟ ํ‚ค๋ชฌ์Šคํƒ€

์‚ฌ๋žŒ๋“ค์€ .net ์ฝ”์–ด๋กœ ์ด๋™ํ•  ์˜๋„ ์—†์ด ๋ ˆ๊ฑฐ์‹œ ์ข…์†์„ฑ์ด ์žˆ๋Š” asp.net ์ฝ”์–ด๋กœ ์•ฑ์„ ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค.

์™„์ „ํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ ASP.NET Core๊ฐ€ .net Core์™€ .net ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฐœํ‘œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ AspNet Core 1.x์— ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์€ ๊ณต์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์š”์•ฝ์€ ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค. ํ•œ๋‘ ๊ฐ€์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

1.) .NET Core๋กœ Windows ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(*NIX ํ”Œ๋žซํผ์˜ ๋ฐ๋ชฌ์€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ๋”ฐ๋ผ์„œ ServiceBase๋Š” ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๋ฉฐ ์ด๋Š” EF์™€ ํ•จ๊ป˜ ๋†’์€ ์šฐ์„  ์ˆœ์œ„์ž…๋‹ˆ๋‹ค.

2.) .NET Core๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑ ํ•˜๊ณ  ๊ธฐ์กด์˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ .NET ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์ฆ‰, Windows Forms/WPF ์•ฑ์˜ ๋ฌด๋ฃŒ ์„œ๋น„์Šค) ๋‚ด์—์„œ ์ถ”๊ฐ€ ๋กœ ํ˜ธ์ŠคํŒ…ํ•˜์—ฌ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ›„์ž๋Š” ํ•˜๋“œ ์ปท์„ ๋งŒ๋“ค๊ณ  ์‹ ๊ทœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ๋Š๋ฆฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์‹ค์ œ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์™„์ „ํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ ASP.NET Core๊ฐ€ .net Core์™€ .net ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฐœํ‘œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ œ AspNet Core 1.x์— ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์€ ๊ณต์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ์กด(์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ) .NET ํ”„๋กœ์ ํŠธ์—์„œ (ASP) .NET Core ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด .csproj ๋ฐ msbuild๋กœ์˜ ๋Œ€๊ทœ๋ชจ ๋ณ€๊ฒฝ์ด ์ฃผ๋กœ ๋ณ€๋ช…๋˜์—ˆ์Œ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํ›„์ž๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(์ ์–ด๋„ ๊ฐ€์žฅ ํฐ ASP.NET ๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ). ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹น์‹œ์—๋Š” ํ˜ธํ™˜์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ–ˆ์ง€๋งŒ(๋งŽ์€ ๊ณ ํ†ต์„ ์ผ์œผ์ผฐ์ง€๋งŒ) ์ง€๊ธˆ์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ด์œ (๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งŽ์€ ๊ณ ํ†ต์„ ์•ผ๊ธฐํ•จ)๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ฏธ์•ˆ ๋‚˜๋„ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์•„์•ผํ•ด. ๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ์˜ 500๊ฐœ์˜ ๋Œ“๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด Microsoft ์ง์›์œผ๋กœ ์ฐธ์—ฌํ•˜๋ฉด ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
1: ๋ฌธ์ œ ์Œ์†Œ๊ฑฐ
2: ๋‚ด ๊ฒฐ์ •์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๊ธฐ

@gingters xamarin, asp.net, uwp ๋ฐ ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ์ด ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์œ ํ˜•๋„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก csproj ๋ณ€๊ฒฝ์€ ์ฃผ๋กœ _.net_ ์ฝ”์–ด์šฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ asp.net core 2 ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค์‹œ compat shim์„ ํ†ตํ•ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

@qmfrederik

์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ •๋ง๋กœ ์›ํ•  ๊ฒฝ์šฐ NetFX์—์„œ HTTP 2.0์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”Œ๋Ÿฌ๊ทธํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋“ค์€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋“ค์€ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋“ค์ด ๊ธฐ์—…/๋Œ€๊ธฐ์—…์˜ ์‹ค์ œ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋‚˜ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋˜๋Š” ๋ฏธ๊ฐœ๋ฐœ ๋ถ„์•ผ ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ๋Œ€์ฒ˜ํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ ๊ณผ๊ฑฐ์˜ ๊ธฐ๋Œ€ ๊ด€๋ฆฌ๋Š” ํ”Œ๋žซํผ ๊ฐ„ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒœ์ฒœํžˆ ํ™•์žฅ/๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋™์‹œ์— ๊ธฐ์กด ์•ฑ์„ ์ฒœ์ฒœํžˆ ํ™•์žฅ/๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์™„์ „ํžˆ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์›€์ง์ž„์€ ์ด์ „์˜ ๊ธฐ๋Œ€ ๊ด€๋ฆฌ์™€ ์™„์ „ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@aL3891

xamarin, asp.net, uwp ๋ฐ ๊ธฐํƒ€ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋ ค๋ฉด

๋„ค. ์ •ํ™•ํžˆ. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” .NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” WPF/Windows Forms ์•ฑ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ .NET Core 2๋กœ ์ด๋™ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.0 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ๊นŒ์ง€ netcoreapp ๋ฅผ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์‹คํ–‰ ํŒŒ์ผ(csproj ์‹คํ–‰ ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ)์˜ ์ด๋ฆ„์œผ๋กœ ์ƒ๊ฐํ–ˆ์ง€๋งŒ ํ”Œ๋žซํผ์œผ๋กœ ๊ฐ„์ฃผํ•œ ์ ์€ ์—†์Šต๋‹ˆ๋‹ค . ์ด์ œ ์‹ค์ œ ํ”Œ๋žซํผ์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์™œ ์™œ, ์–ด๋–ป๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ ์ด ํ„ฐ๋ฌด๋‹ˆ์—†๋Š” ์„ ํƒ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

netcoreapp2.0 ์„ ๋ชฉํ‘œ๋กœ ์‚ผ์€ ์ด์œ ์™€ ๊ทผ๊ฑฐ๋ฅผ ์•Œ์ง€๋งŒ ์ €๋„ ์ด ์›€์ง์ž„์ด ๋„ˆ๋ฌด ์‹œ๊ธฐ์ƒ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—์ฝ”์‹œ์Šคํ…œ์€ ์ค€๋น„๊ฐ€ ๊ฑฐ์˜ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋งค์šฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ข…์†์„ฑ(๊ทธ๋ฆฐํ•„๋“œ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ข…์†์„ฑ ํฌํ•จ)์ด netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€์ƒ์ด ๋ ์ง€ ์—ฌ๋ถ€๋„ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. Azure์šฉ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์—ฌ netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์ง€ ์•Š๋Š” Microsoft ํŒจํ‚ค์ง€ ๋ฐ SDK๋Š” ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋ญ”๊ฐ€๋ฅผ ๋˜์ง€๊ธฐ ์œ„ํ•ด: Windows์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ .NET Core 2.0์„ ํด๋ฆฌํ•„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? ์ด๋ฏธ P/Invoke๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ API ํ‘œ๋ฉด์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ์™ธ๊ด€ ํŒจํ‚ค์ง€ ๋’ค์— ๋ฉ‹์ง€๊ฒŒ ํฌ์žฅ๋œ ์ผ์ข…์˜ NETFX/Invoke๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ, ๋‚˜๋Š” ์šฐ๋ฆฌ ์ค‘ ๋ˆ„๊ตฌ๋„ $#$ netstandard2.0 net461 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ด _์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ์ข…์†์„ฑ์ด ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜(API ๋ˆ„๋ฝ) ์ด๊ธฐ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. '(ํฌ๊ธฐ๋จ, ์›ํ•˜์ง€ ์•Š์Œ ๋“ฑ) ๋ณ€๊ฒฝ. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํŒจํ‚ค์ง€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‹œ๊ฐ„๊ณผ ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ๋œ ๊ณ„ํš์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์–ธ์ œ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•˜๋Š”์ง€, ์–ด์ฉŒ๋ฉด ๋„ทํ‘œ์ค€์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ๋„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@xoofx

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ(์ ์–ด๋„ 4.6.1 )๋Š” netstandard 2.0 ๋ฅผ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ(์ œ๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ์ €๋ฅผ ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”) ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ํฅ๋ฏธ๋กญ๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€๋Š” "๋น„์ „์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"์— ๋Œ€ํ•œ ์ „์ฒด ์งˆ๋ฌธ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. System.Drawing ๊ฐ€ ์ž์ฃผ ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค(์˜ˆ: System.Drawing.Color์™€ ๊ฐ™์€ ๊ตฌ์กฐ์ฒด์™€ ๋‹ฌ๋ฆฌ) System.Drawing์€ ์ ์–ด๋„ .net Framework 3.5 ์‹œ๋Œ€ ์ดํ›„๋กœ ๋ช‡ ๋…„ ๋™์•ˆ ASP.net์—์„œ ์ง€์›๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ:

System.Drawing ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์˜ ํด๋ž˜์Šค๋Š” Windows ๋˜๋Š” ASP.NET ์„œ๋น„์Šค ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์—์„œ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ์™€ ๊ฐ™์€ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋Œ€์•ˆ์€ Windows ์ด๋ฏธ์ง• ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฌผ๋ก  ๋งŽ์€ ๊ฒฝ์šฐ์— ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์€ ์–ด์จŒ๋“  ์‹ค์ œ๋กœ GDI+๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ง€์›๋˜์ง€ ์•Š๋Š” ํ–‰๋™์— ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ .net Core ๋ฐ ASP.net Core์— ๋Œ€ํ•œ ํ˜„์žฌ ๋น„์ „์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์•„์ด๋””์–ด๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ณ  ์˜ค๋ž˜๋œ cruft(์ผ๋ช… ".net - Good Parts")๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ System.Drawing์„ ๊ฐ€์ ธ์˜ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์•„๋‹ˆ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „์ฒด .net Framework๋ฅผ ๋‹ค์ค‘ ํ”Œ๋žซํผ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋” ๋‚˜์€ Mono๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์–ด๋Š ์ชฝ์ด๋“  ๋…ผ์Ÿํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” .net๊ณผ .net Core ํŒ€์ด ์•ฝ๊ฐ„์˜ ์˜ํ˜ผ ํƒ์ƒ‰์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์ „์ž๋กœ ์‹œ์ž‘ํ•ด์„œ ์ง€๊ธˆ์€ ํ›„์ž๋ผ๊ณ  ๋Š๋ผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” Windows์—์„œ .net Framework๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ €๋Š” ์—ฌ๊ธฐ์—์„œ ์ œ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ณ ์šฉ์ฃผ๋ฅผ ์œ„ํ•ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฃผ๋„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค). .net Framework๋Š” ์ •๋ง ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ Windows Server 2016์—์„œ ์ตœ์†Œ 2027๋…„๊นŒ์ง€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

.net Framework๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ํƒ€ํ˜‘์„ ๋™๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTTP/2 ์ง€์›์€ ๋‹ค๋ฅธ ์›น ์Šคํƒ๋ณด๋‹ค ํ›จ์”ฌ ๋Šฆ๊ฒŒ ๋„์ฐฉํ–ˆ๊ณ  ์ „์ฒด OS ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ Windows์—์„œ ASP.net์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP/2๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ 2012 R2. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํƒ€ํ˜‘์€ ํ˜„์ƒ ์œ ์ง€์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ๋ณด์ฆ์ด ์•ž์œผ๋กœ 10๋…„ ๋™์•ˆ ์ง€์›๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.net ๋กœ๋“œ๋งต์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ASP.net MVC 6, Web API 3, SignalR 3 ๋“ฑ์— ๋Œ€ํ•œ ๊ณ„ํš์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์„ธ๋Œ€์˜ Visual Basic 6/Classic ASP(.net)์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ์†๋„๋กœ ๊ตฌํ˜„๋˜๋Š” ์ข‹์€ ๊ฒƒ๋“ค์ด ๋งŽ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .net Core์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ASP.net Core์˜ ์ตœ์„ ์˜ ์ด์ต์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜์›ํžˆ ์ฒ˜์Œ์œผ๋กœ .net Core ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ƒ์‚ฐ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ , ํ˜์‹ ํ•˜๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ Node.js๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์„ฑ๊ณต์ ์ด์—ˆ๋˜ ์ผ์„ ํ•˜์‹ญ์‹œ์˜ค(๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค๋งŒ์˜ ์•ˆ์ •์„ฑ/ํ˜์‹  ๋“œ๋ผ๋งˆ๊ฐ€ ์žˆ์—ˆ์Œ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค, io.js ์ฐธ์กฐ).

์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ณ  ์žˆ๋Š” ํŒ€์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค์–‘ํ•œ ๊ด€์ ์„ ๊ฐ€์ง„ ๊ธด ์Šค๋ ˆ๋“œ์ด์ง€๋งŒ ์‹œ๋ฏผ ํ† ๋ก ์ž…๋‹ˆ๋‹ค. @davidfowl ์ด "๊ทธ๋ž˜์„œ, ์ด์‹ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?" ์ด ์Šค๋ ˆ๋“œ์—์„œ๋งŒ ์œ ์šฉํ•œ ๋‹ต๋ณ€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ .net Framework์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ˜„์žฌ์˜ ASP.net์ด ๊ธฐ๋ณธ์ ์œผ๋กœ "์™„๋ฃŒ"๋˜๊ณ  ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ด ASP.net Core์—์„œ ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๋Š” _๋Š๋‚Œ_์„ ๋Š๋ผ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์œ ํšจํ•œ ๋‘๋ ค์›€๊ณผ ์ขŒ์ ˆ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Visual Basic 6 ์‚ฌ์šฉ์ž๊ฐ€ "VB.net์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋…„ ํ›„์— ์ขŒ์ดˆ๋œ ์ž์‹ ์„ ์ฐพ์œผ์‹ญ์‹œ์˜ค"๋ผ๋Š” ๋ง์„ ๋“ค์—ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

.net Core์—์„œ ASP.net Core 2.0์„ ๋†€๋ผ์šด ์›น ์Šคํƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์˜ ์ข‹์€ ๋ถ€๋ถ„์ด ์—ฌ์ „ํžˆ ๊ธธ์„ ์ฐพ์„ ๊ฒƒ์ด๋ผ๋Š” ํ™•์‹ ์„ ๊ฐ–๊ฒŒ ๋˜๋ฉด ๊ทธ๋“ค์˜ Classic ASP.net ์Šคํƒ์œผ๋กœ.

์–ด์จŒ๋“  ๋‚ด ํšก์„ค์ˆ˜์„ค๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์ด ํ’€๊ธฐ์—๋Š” ๋งค์šฐ ์–ด๋ ค์šด ๋ฌธ์ œ์ด๊ณ  ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ถ€๋Ÿฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€(๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ ์žˆ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค)์ด ์›ํ•˜๋Š” ๊ฒƒ์€ ์ „์ฒด ์ƒํƒœ๊ณ„๊ฐ€ ์–ด๋””๋กœ ๊ฐ€๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๋ช…ํ™•์„ฑ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ(๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๋ฅผ ์ˆ˜์ •ํ•ด ์คŒ), ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” netstandard 2.0์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๊ณ  ๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์—†์„ ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”! ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. @davidfowl ์œ„์—์„œ HTTP2๋ฅผ ์–ธ๊ธ‰ํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ถ„๋ฆฌ๋œ System.Http2 ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด ์–ด๋–ป๊ฒŒ ์ „์ฒด .NET ํ”Œ๋žซํผ์„ ํฌํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ „์ฒด ์ถ”๋ก ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@gingters ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ .netstandard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ 46๊ณผ ์ฝ”์–ด ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. asp.net ์ฝ”์–ด _itself_๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌปํžˆ๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๊ฒŒ์‹œ:

๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ๊ฒฐ๊ตญ ๋„ท ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋„ทํ‘œ์ค€์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ทธ๋Ÿฐ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์…จ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. .NET Standard๋Š” ํ•ญ์ƒ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฐ ๋Ÿฐํƒ€์ž„์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋ช‡ ๋ฒˆ ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์—ฌ๊ธฐ์— ๋ฏธ์นœ ๊ฒƒ๋“ค์„ ๋˜์ง€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์•„๋ฌด โ€‹โ€‹์ƒ๊ด€์ด ์—†์œผ๋ฉฐ, ์ด ์‹œ์ ์—์„œ ๋ชจ๋‘ ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด .NET Standard ๋Œ€์‹  .NET Core๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” .NET Core์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ utf8๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ˜๋งŽ์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋”ฐ๋ผ์˜ค์„ธ์š”).
  • ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด/๋ฌธ์ž์—ด์˜ ์ €๋ ดํ•œ ์กฐ๊ฐ, ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Span<T> ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด Buffer<T> ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. String ๋ฐ Array๊ฐ€ 0 ํ• ๋‹น์ด ํ•„์š”ํ•œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ๋งค๋ฒˆ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜๋Š” String์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด Span<char> ๋ฐ Span<byte> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Int, UInt ๋“ฑ(TryParse)์— ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ Span<byte> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธ์ฝ”๋”ฉ ๋ฃจํ‹ด์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • Buffer<T> ๋ฐ Span<T> ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ท ์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ Span<T> ๋˜๋Š” Buffer<T> ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ๋ฆฌ ๊ณ ์ •๋œ ๋ฒ„ํผ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํ‚น ์Šคํƒ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • Kestrel์€ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„(ํ˜„์žฌ 2.1์„ ๋ชฉํ‘œ๋กœ ํ•จ)์— HTTP2๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ALPN์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด SSL ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation).
  • .NET Core์˜ Http ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ค‘ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์›น ์†Œ์ผ“์ด ์•„๋‹Œ ๋‹จ์ผ http ์š”์ฒญ์„ ํ†ตํ•ด ์‹œ๊ทธ๋„๋Ÿฌ์—์„œ http๋ฅผ ํ†ตํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ ๋์ ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HttpClient ๋ฐ System.Net.Http์—์„œ ํ—ค๋” ํŒŒ์„œ ๊ตฌํ˜„์„ ๋ถ„๊ธฐํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/aspnet/HttpAbstractions/tree/d1d9bceff56cb44a194ae36923ce687e5e353006/src/Microsoft.Net.Http.Headers). .NET Framework์™€ .NET Core๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. .NET Core์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์˜ ๋ณต์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ).
  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐํž ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋”ฉ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(https://github.com/dotnet/corefx/issues?q=is%3Aopen+is%3Aissue+ ์ €์ž%3Adavidfowl+label%3Aarea-System.Threading), ์ด๊ฒƒ๋“ค์€ ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ์ œ์ถœํ•œ ๊ฒƒ ์ค‘ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์—†๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋ถ„๊ธฐํ•˜์—ฌ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ASP.NET Core https://github.com/aspnet/Common/tree/dev/src/Microsoft.Extensions.Primitives ๋‚ด์— ์ž์ฒด BCL์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ .NET์˜ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌด์ž‘์œ„ ๋คํ”„์˜€์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”. ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํ† ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ์ž„๊ณ„๋Ÿ‰์— ๋„๋‹ฌํ–ˆ์œผ๋ฉฐ ๋™์ผํ•œ ์งˆ๋ฌธ ์ค‘ ์ผ๋ถ€๊ฐ€ ์š”์ฒญ๋˜๊ณ  ๋‹ค์‹œ ๋‹ต๋ณ€๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ ˆํ•˜๊ฒ ์–ด์š” ๐Ÿ‘‹ .

@aL3891

asp.net ์ฝ”์–ด ์ž์ฒด๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ASP.NET Core 2๋ฅผ Windows ์„œ๋น„์Šค๋กœ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค(.NET Core์—๋Š” ๋ชจ๋“  API๊ฐ€ ์—†๊ณ  TopShelf๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ ์ค‘์ž„). ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๊ฝค ๊ฐ•๋ ฅํ•œ ์ œํ•œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ธฐ์กด WPF/Windows Forms ์•ฑ ๋‚ด์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” .NET Core 2 ์„œ๋น„์Šค ํ™•์žฅ์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ ˆ๊ฑฐ์‹œ ์•ฑ๊ณผ์˜ ํ†ตํ•ฉ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค.

.NET ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” Span<T> ์˜ ๋น ๋ฅธ ๋ฒ„์ „์€ ์ •๋ง ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Microsoft๋Š” Roslyn์˜ ์†๋„๋ฅผ ์–ด๋–ป๊ฒŒ ๋†’์ผ๊นŒ์š”? ๊ทธ๋“ค์€ ๋น ๋ฅธ Span<T> ๋ฐ ๋™๋ฐ˜ ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์ง€๊ตฌ์ƒ์˜ ๋ชจ๋“  Visual Studio ์„ค์น˜์—์„œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ... ์ •์น˜? MS์˜ ํŠธ๋ฆฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ๋งŒํผ ์šฉ๊ฐํ•œ ๊ด€๋ฆฌ์ž๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— .NET ์ „์ฒด์— ๋” ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์—ฌ์•ผ ํ•œ๋‹ค๊ณ ์š”?

๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋Š˜ ๋‚˜์ค‘์— //build์—์„œ ํผ์งˆ ๋ฌด์ง€๊ฐœ์™€ ์ƒ‰์ƒ ๋งˆ์ผ€ํŒ… blabla ํšŒ๋‹ด์„ ๋ง์น˜๊ฒŒ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” MS๊ฐ€ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ ์ด๊ณ  ํ–‰์„ฑ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด ์—ฌ์ „ํžˆ ๋™๊ตด์— ์‚ด๊ณ  ์žˆ๋‹ค๋Š” ์žฅ๋ฐ‹๋น› ๊ทธ๋ฆผ์„ ๊ทธ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

@davidfowl ์—ฌ๊ธฐ์—์„œ ๋…ธ๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ํ†ต์ฐฐ๋ ฅ๊ณผ ๋‹ต๋ณ€์€ ๋ถ„๋ช…ํžˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ‘

@gingters ์‹œ๋‚˜๋ฆฌ์˜ค ์„ธํŠธ๋ฅผ ์ ˆ๋Œ€์ ์œผ๋กœ ์ œํ•œํ•˜์ง€๋งŒ ์ „์ฒด netstandard/csproj ๋…ธ๋ ฅ์ด ๊ทธ๋กœ ์ธํ•ด ๋‚ญ๋น„๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ์ด ๋‰ด์Šค๋ฅผ ์šฐ์—ฐํžˆ ์ ‘ํ–ˆ๋Š”๋ฐ ์กฐ๊ธˆ ๋ฌด์„ญ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” .NETStandard 2.0๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์ง€์›ํ•˜๋ฉด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ณ„์† ์‹คํ–‰ํ•˜๋ฉด์„œ ๊ฒฐ๊ตญ ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ASP.NET Core 2.0์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์š”์ ์„ ์™„์ „ํžˆ ๋†“์น˜๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ, ๊ทธ๊ฒƒ์€ ๋” ์ด์ƒ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ตœ์‹  ๋ฒ„์ „์˜ API ๋ถ„์„๊ธฐ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ์˜์กดํ•˜๋Š” .NET Standard 2.0์— ๋ˆ„๋ฝ๋œ API๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๊ณ ํ†ต์Šค๋Ÿฝ๋”๋ผ๋„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: System.Configuration).

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์•„์ง ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €๋Š” ๋Ÿฐํƒ€์ž„ ์ฝ”๋“œ ์ƒ์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  System.Reflection.Emit.ILGenerator, TypeBuilder ๋“ฑ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ๋“ค์„ ๊ทธ๋ƒฅ ์ œ๊ฑฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ œํ’ˆ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

API Analyzer๋กœ ๋” ํŒŒ๊ณ  ๋“ค์—ˆ๊ณ  ๊ทธ ์ค‘ ์ผ๋ถ€๊ฐ€ .NET Core 2.0 + Extensions์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ๋‹ค์Œ API๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
M:System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.Collections.Generic.IEnumerable{System.Reflection.Emit.CustomAttributeBuilder})
M:System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.String)
M:System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.String,System.Boolean,System.Collections.Generic.IEnumerable{System.Reflection.Emit.CustomAttributeBuilder})
M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String,System.Boolean)
M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String,System.String,System.Boolean)
M:System.Reflection.Emit.AssemblyBuilder.DefineVersionInfoResource
M:System.Reflection.Emit.AssemblyBuilder.Save(System.String)
M:System.Reflection.Emit.AssemblyBuilder.Save(System.String,System.Reflection.PortableExecutableKinds,System.Reflection.ImageFileMachine)
M:System.Reflection.Emit.ILGenerator.MarkSequencePoint(System.Diagnostics.SymbolStore.ISymbolDocumentWriter,System.Int32,System.Int32,System.Int32,System.Int32)
M:System.Reflection.Emit.LocalBuilder.SetLocalSymInfo(System.String)
M:System.Reflection.Emit.ModuleBuilder.DefineDocument(System.String,System.Guid,System.Guid,System.Guid)
M:System.Reflection.Emit.TypeBuilder.CreateType

https://apisof.net/catalog ์—์„œ ์•ฝ๊ฐ„ ๋‘˜๋Ÿฌ๋ณธ ๊ฒฐ๊ณผ API ๋ถ„์„๊ธฐ ์ถœ๋ ฅ๊ณผ ์ •๋ณด๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ„์„๊ธฐ๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•œ ์ผ๋ถ€ API๊ฐ€ ์—ฌ๊ธฐ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค(TypeBuilder.CreateType). ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ดœ์ฐฎ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ ์‹œ๋„ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ํ™•์‹คํžˆ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: AssemblyBuilder.Save(...)

๊ฒฐ๋ก : ASP.NET Core 2.0์„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ์Šคํƒ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ด์ „ ์ข…์†์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. .NET Standard 2.0๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค๋ฃจ๋Š” ์œ ์ผํ•œ API์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  Big Bang์„ ASP.NET Core 2.0์œผ๋กœ ์ด์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์ „์— ASP.NET Core 2.0์—์„œ ์ƒˆ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋น…๋ฑ… ๋‹ค์Œ์— ์ง„์งœ ๋น…๋ฑ…์ด ๋’ค๋”ฐ๋ฅด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ์ž์„ธํ•œ ๋‚ด์šฉ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ „์ ์œผ๋กœ .NET Core์— ๊ด€์‹ฌ์ด ์žˆ๊ณ  ์‹ค์ œ๋กœ .NET Full Framework์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ netstandard2.0 ์— ๋Œ€ํ•ด์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ API๋ฅผ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๊ฒฝ์„ ์ผ์Šต๋‹ˆ๋‹ค. 2.0 ๋ฒ„์ „์„ "์ ‘ํ•ฉ" ๋ฒ„์ „์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ๋žŒ๋“ค์ด .NET Full์—์„œ .NET Core๋กœ ์ฝ”๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค... ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์˜์›ํžˆ... ํ•˜์ง€๋งŒ netstandard2.0 ๊ฐ€ ๊ฒฐ๊ตญ ์ƒˆ PCL์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

๊ณตํ‰ํ•˜๊ฒŒ๋„ .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด์ œ ์€ํ‡ด ๊ณ„ํš์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค( System.Drawing ๋ณด๋ฅ˜? SkiaSharp ๊ฐ€ ๋” ์ข‹๊ณ  ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค). .NET Core 2.0์ด ์ง„ํ™”ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ์ž์‹ ์˜ ์ „์†๋ ฅ!

@davidfowl ์ฒ˜์Œ์—๋Š” API์™€ ๊ด€๋ จํ•˜์—ฌ Net Core๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ด ๋˜์–ด์•ผ ํ–ˆ์œผ๋ฉฐ Core์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  API ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‘˜ ๋‹ค์— ์ ์šฉ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ์–ด๋„ ์ดˆ๊ธฐ ์•ฝ์†์ด์—ˆ์Šต๋‹ˆ๋‹ค ...์ด ์ƒˆ๋กœ์šด (์•„๋ฌด๋„์—†๋Š”) ๋ฐฉํ–ฅ์œผ๋กœ ์ง€๊ธˆ์€ ์ƒํ™ฉ์ด ๋งค์šฐ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ง์”€ํ•˜์‹  ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ๊ฐ–๊ณ  ์‹ถ์ง€๋งŒ, ๊ทธ๊ฒƒ๋“ค์ด ํฌ๊ฒŒ ํ•„์š”ํ•œ Full Framework์—์„œ๋Š” ํ˜„์žฌ Span์ด ์žˆ๋Š” WPF ์•ฑ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๊ด€๋ จ API๋Š” ์‹ ์˜ ์„ ๋ฌผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • TryParse ๋ฃจํ‹ด๊ณผ ๋ฌธํ™”๋ฅผ ์ธ์‹ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์› ์•…๋ชฝ์ธ ์›์‹œ์ ์ธ ์ธ๋ฑ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ฐœ์ „์‹œํ‚ค๋ ค๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ์™œ ๊ธฐ์กด ๊ณ ๊ฐ๊ณผ ์ด๋Ÿฌํ•œ ๋ถ„ํ• ์„ ๋งŒ๋“ค๊ณ  ํ˜„์žฌ ์ฃฝ์–ด๊ฐ€๋Š” ํ”Œ๋žซํผ์— ์ขŒ์ดˆ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ?

@popcatalin81 (์ผ์ด ๋„ˆ๋ฌด ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ์ „์—, ๊ทธ๋Ÿฌ๋‚˜ ๋งจ์Šคํ”Œ๋ ˆ์ธ์ด ๋  ์œ„ํ—˜์ด ์žˆ์Œ) - Spanํ• ๋‹น ์—†์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ DateTime๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

@popcatalin81 with netstandard2.0 WPF ๋ฐ System.Drawing ๋„ .NET Core์—์„œ ์‹คํ–‰๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Windows ์ „์šฉ, ๋ถ„๋ช…ํžˆ ๋น„ Windows ํ”Œ๋žซํผ... ), afaik, ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” CLR ํŠน์ˆ˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค... netstandard2.0 ๋กœ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (.NET ๋ถ€๋ถ„๋งŒ, ๊ธฐ๋ณธ ๋ถ€๋ถ„์€ ๋™์ผ - wpf ๊ตฌ์„ฑ ์—”์ง„ ๋˜๋Š” System.Drawing์— ๋Œ€ํ•œ Win32 ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง์ ‘ ํ˜ธ์ถœ...)

๋‚˜๋Š” ์ „์ฒด "ํ•ต์‹ฌ" ์—ฌ์ •์„ ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ๋งŒํผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๋”ฐ๋ฅด์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋”ฐ๋ผ์„œ ๋‚˜์—๊ฒŒ ์ •๋ง ๋ˆˆ์— ๋„๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ASP.NET ํŒ€์ด ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค๋ณด๋‹ค ๋จผ์ € ๋Œ๊ฒฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ ์–ด๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋น„๋‚œ์„ ๋ฐ›๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ๊ตฐ๋ฆผํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ์€ ์ด๋ฏธ ์–ธ๊ธ‰๋œ ์ด์œ ๋กœ ๋‹ค์‹œ ์ž์œ ๋กœ์›Œ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ณต์ •ํ•œ ํ‰๊ฐ€์ž…๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ํ˜„์žฌ ์ง๋ฉดํ•˜๊ณ  ์žˆ๋Š” ๋งŽ์€ ์–ด๋ ค์›€์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ƒˆ๋กœ์šด ์ตœ์‹  ASP.NET/.NET์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋…๋ฆฝ ์‹คํ–‰ํ˜•์ด์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ ์ „์ฒด์—์„œ ๋‚ด๊ฐ€ ๋ณด๊ณ  ์žˆ๋Š” ์ฃผ์š” ๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š์€ ์•ฝ์†๊ณผ ๊ฐ€์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ๋‹นํ•œ ํˆฌ์ž๋ฅผ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋งŽ์€ ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ธฐ์ง€๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‚˜?

@davidfowl @DamianEdwards @shanselman

net462 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ช‡ ๊ฐ€์ง€ ASP.NET Core 1.x ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์•„๋ž˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. netstandard2.0 ์ž‘์—… ์ง„ํ–‰ ์ค‘์ธ API ์ฐธ์กฐ์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

1. ADFS ํ†ตํ•ฉ:

โ€ข System.IdentityModel.Protocols.WSTrust
โ€ข System.IdentityModel.Tokens
โ€ข ์‹œ์Šคํ…œ.์„œ๋น„์Šค ๋ชจ๋ธ
โ€ข ์‹œ์Šคํ…œ.์„œ๋น„์Šค ๋ชจ๋ธ.๋ณด์•ˆ

2. Atom / RSS ํ”ผ๋“œ ์ƒ์„ฑ:

โ€ข System.ServiceModel.์‹ ๋””์ผ€์ด์…˜

์•ž์œผ๋กœ netcoreapp2.0 ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ์กด ์•ฑ์„ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฒฝ์šฐ์— ๋‚ด๊ฐ€ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์˜ ์กฐ์น˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด NuGet ํŒจํ‚ค์ง€๋ฅผ ๋†“์ณค์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋ฅผ ์ „์ฒด ์Šคํƒ์œผ๋กœ ๋ชฐ์•„๋„ฃ๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ๋Š”๋ฐ, ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ ๋Œ€๋ถ€๋ถ„์ด Microsoft ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. CRM Dynamics SDK, Azure SDK, XLST ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ง€์›, ํ—ค๋“œ๋ฆฌ์Šค ADAL ๋กœ๊ทธ์ธ(์ „์ฒด ์Šคํƒ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋“ฑ...

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ .Net Core๋ฅผ ์กฐ๊ธฐ์— ์ฑ„ํƒํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์šฉ๊ฐํ•˜๊ฑฐ๋‚˜ ์–ด๋ฆฌ์„์€ ์ด๋ฏธ ์ž‘์€ ๊ฐœ๋ฐœ์ž ๊ธฐ๋ฐ˜์„ ๋” ๋ถ„๋ฆฌํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

@davidfowl

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์— HTTP2 ์ง€์›์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ์ ์„ ๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์ดํ•ดํ•œ๋‹ค. HTTP/2์˜ ๊ฒฝ์šฐ ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ๋Š” TLS์— ๋Œ€ํ•œ ALPN ์ง€์›์ด๋ฏ€๋กœ ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CoreFx ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ด€๋ จ ์š”์ฒญ์— ๋Œ€ํ•œ ์˜๊ฒฌ์— ๋”ฐ๋ฅด๋ฉด .NET Core 2.0์—์„œ๋Š” ์ œ๋•Œ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— (2.2? 3.0?) HTTP/2 ๊ด€์ ์—์„œ ASP.NET Core๊ฐ€ corefx 2.0 ๋˜๋Š” .netstandard 2.0์— ์˜์กดํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์‹œ ์ฆ๊ฐ€ํ•  ๋•Œ๋งŒ.

๊ฒŒ๋‹ค๊ฐ€ HTTP/2 ๋ฌธ์ œ๋Š” ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฃผ๋กœ ์›น์„œ๋ฒ„(Kestrel)์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. "์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ณด๊ธฐ ํ‰ํ•˜๋‹ค"๋Š” ์ด์œ  ์™ธ์— .NET ํ‘œ์ค€์— ๋Œ€ํ•œ HTTP/2 ์ง€์› ๋ฐ ํ–ฅํ›„ .NET Core ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์› ์—†์ด ์›น ์„œ๋ฒ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š” ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@davidfowl ์ด ์ „์ฒด ํ† ๋ก ์—์„œ ์‹ค์ œ๋กœ ๋‹ค๋ฃจ์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์  ๋ฐฐ๊ฒฝ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ท€ํ•˜์˜ ์ถ”๋ก ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ SignalR๊ณผ ๊ฐ™์€ ํ˜„์žฌ ๋ˆ„๋ฝ๋œ ๋ฌธ์ œ์ ์ด ํ–ฅํ›„ 1.x ์ง€์›๊ณผ ํ•จ๊ป˜ ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ 1.x(์ž ์žฌ์ ์œผ๋กœ ์ง€์› ๊ธฐ๊ฐ„์ด ์—ฐ์žฅ๋  ์ˆ˜ ์žˆ์Œ)๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ์‹คํ˜„ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋…ผ์˜๋œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ๋Œ€๋ถ€๋ถ„์— ๋Œ€ํ•ด.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๋Š” ๊ธฐ์ˆ ์ ์ธ ์„ฑ๊ฒฉ์ด ์•„๋‹ˆ๋ผ ์‹ฌ๋ฆฌ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ผ๋ถ€๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด ASP.NET Core์˜ ์ฑ„ํƒ์€ ์•„์ง ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ณด๋‚ด๋ ค๋Š” ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ณง 2.x ๋ฒ„์ „์„ ์ถœ์‹œํ•˜๊ณ  ์ฆ‰์‹œ ๋ฒ„์ „ 3.x์— ๋Œ€ํ•œ ์ „๋žต์  ๊ณ„ํš์„ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ผ๋ฐ˜ ๊ณต๊ฐœ(์ผ๋ฐ˜์ ์œผ๋กœ ์ข‹์€ ์ผ์ž„)์ž…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด 2.x๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์—†๊ณ  1.x๋ฅผ ์ง€์›ํ•˜์—ฌ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ์ˆ  ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋”๋ผ๋„ ์‚ฌ๋žŒ๋“ค์˜ ๋จธ๋ฆฌ์—๋Š” ๊ธฐ์กด ๋ฒ„์ „ 3์— ๋Œ€ํ•œ ์ž‘์—…์ด ์ด๋ฏธ ์žˆ์„ ๋•Œ "๋ฒ„์ „ 1"์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ์ฆ‰๊ฐ์ ์ด๊ณ  ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๋ฆฌ์  ์žฅ์• ๋ฌผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ˆ˜์š”์™€ ์••๋ ฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ํ•ญ๋ชฉ์„ .NET Core๋กœ ์ด์‹ํ•˜์ง€ ์•Š๋Š” ๋‹ญ/๊ณ„๋ž€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์‹ค์ œ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์žฌ์ ์œผ๋กœ ์˜ค๋žซ๋™์•ˆ ์ฑ„ํƒ๋ฅ ์„ ํ›จ์”ฌ ๋” ๋Šฆ์ถ”์‹ญ์‹œ์˜ค.

์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ถ„๋ช…ํžˆ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด ์›€์ง์ž„์ด ์–ด๋Š ์‹œ์ ์— ์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ์‚ญ๊ฐ์ด ๊ทธ๋ ‡๊ฒŒ ๋นจ๋ฆฌ ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ง€๋‚œ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” 2.x(.NET Core, .NET Standard ๋“ฑ)๊ฐ€ ์ƒํ™ฉ์„ ์•ˆ์ •ํ™”ํ•˜๊ณ  ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋งŽ์€ ๋Œ€ํ™”, ์ธํ„ฐ๋ทฐ ๋ฐ ๊ฒŒ์‹œ๋ฌผ์„ ๋“ฃ๊ณ  ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด "2.x"๋Š” "์„ฑ์ˆ™ํ•œ"์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ์žฅ์ด ์–ผ๋งˆ๋‚˜ ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ง์ž…๋‹ˆ๋‹ค. 2.x์— โ€‹โ€‹๋Œ€ํ•œ ํฅ๋ถ„์„ ์กฐ์„ฑํ•˜๊ณ  ์ด์ œ 1.x์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์ œ๊ฑฐํ•œ ๋ฐฉ์‹์€ ๊ฐ€์žฅ ๋ถˆํ–‰ํ•œ ์กฐ์น˜์˜€์Šต๋‹ˆ๋‹ค. ํ‘œ๋ฉด์ ์œผ๋กœ๋Š” ์—ฌ๊ธฐ์—์„œ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธ์‹์„ ๋˜๋Œ๋ฆฌ๊ณ  1.x๊ฐ€ ASP.NET Core๋กœ์˜ ํ™•์‹คํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋Œ€์ƒ์ด๋ผ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์‹ ๋ขฐ์™€ ํ™•์‹ ์„ ๋‹ค์‹œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ๊ฐœ์ธ์ ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ .NET Framework๋ฅผ ์ง€์›ํ•˜๋Š” ๋งˆ์ง€๋ง‰ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋กœ 2.0์„ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ํ•ด๋‹น ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๋ฐ 1๋…„ ์ด์ƒ์ด ๊ฑธ๋ฆฌ๋Š” ๋Œ€์‹  3.x๋กœ ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์—ผ๋‘์— ๋‘๊ณ  ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ธฐ์ˆ ์  ๊ธฐ๋Šฅ์— 3.x๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  2.0์ด ์ถœ์‹œ๋˜๋Š” ์ฆ‰์‹œ 3.x ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ ํ†ตํ•ด ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ˜œํƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1.x์— ๋Œ€ํ•œ ์›๋ž˜ ์ง€์› ๊ณ„ํš์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ 2.x์—์„œ .NET ์ง€์›์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ์ง€์›์€ ์ง€๋‚œ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋จธ๋ฆฟ์†์— "์„ฑ์ˆ™ํ•œ" ๋ฒ„์ „์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์ œ 3.x๊ฐ€ ํ•ด๋‹น ์ง€์›์„ ์ค‘๋‹จํ•  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค๊ณผ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์„ ๊ณ„ํšํ•  ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ž์‹  ์žˆ๊ฒŒ "์ตœ์‹  ๋ฐ ์ตœ๊ณ "๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋งŒํผ ๋น ๋ฅด๊ฒŒ ASP.NET Core๋ฅผ ๋ฐœ์ „์‹œ์ผœ ์†๋„๋ฅผ ๋Šฆ์ถœ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๋งค์šฐ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ).

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๊ทธ ์ œ์•ˆ์€ ๋‹ค๋ฅธ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ธ์ˆ ์„ ์ ์šฉํ–ˆ์„ ๋ฟ ํ˜„์žฌ ๊ท€ํ•˜๊ฐ€ ํ•˜๋ ค๋Š” ๊ฒƒ๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ตœ๊ทผ์— ์ ์šฉ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋‹ค์‹œ ์ „์†๋ ฅ์œผ๋กœ ์ „์ง„ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ์ˆ ์ ์œผ๋กœ ์•ฝ๊ฐ„์˜ ํ›„ํ‡ด์ผ ๋ฟ์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ์‹ฌ๋ฆฌ์  ๋ฌธ์ œ๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ํ”ผํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

/cc @DamianEdwards @shanselman

๋นŒ๋“œ ์‹œ Microsoft Shrink๋ฅผ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. (๋ฏธ์•ˆ, ์ €ํ•ญํ•  ์ˆ˜ ์—†์—ˆ์–ด)
WHY์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ถ€๋ถ„์—์„œ @MisterGoodcat ์— ๋™์˜ํ•˜์ง€๋งŒ ๊ฐ์ •์  ๊ฒฐํ•จ/์š”๊ตฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Microsoft๊ฐ€ ์ •๋ง๋กœ ํ•„์š”ํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐœ๋ฐœ์ž ๋ฐ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— ์ค‘์ ์„ ๋‘๋Š” ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•œ ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ Microsoft๊ฐ€ ์ž์ฒด ์ข…์†์„ฑ ํ˜•ํƒœ๋กœ๋งŒ ์ฐจ๋‹จ๊ธฐ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ทผ์‹œ์•ˆ์ ์ž…๋‹ˆ๋‹ค. DirectoryServices์™€ Drawing์ด ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ฐจ๋‹จ๊ธฐ๋ผ๋Š” ์‚ฌ์‹ค์€ ๋†€๋ž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋น„์‹ค์šฉ์ ์ด๊ฑฐ๋‚˜ ์—„์ฒญ๋‚˜๊ฒŒ ๋น„์‹ผ ๋‚ด๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ, ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ COM Interop์˜ ๋ชจ๋“  ๊ธด ๊ผฌ๋ฆฌ์˜ ์–ด๋จธ๋‹ˆ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค( ํŠนํžˆ ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ํ˜•ํƒœ๋กœ) ํƒ€๊ธฐ ์œ„ํ•ด ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

Microsoft๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด BCL ๋˜๋Š” ํ™•์žฅ๋œ .NET Framework(WCF ๋“ฑ)์˜ ์ž์ฒด ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ฃผ์žฅ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋™์ผํ•œ ์งˆ๋ฌธ์ด ์ „์ฒด ํ”Œ๋žซํผ์„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ • ๋‹จ๊ณ„์—์„œ .NET Framework๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•  ๊ณ„ํš์ด๋ผ๋ฉด ์ด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์— ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค๋ฉด ๋‹น์‹œ์— ๊ทธ ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ? ์™œ ์šฐ๋ฆฌ์™€ ์ด์•ผ๊ธฐํ•˜๊ณ  ์ƒ๋‹ดํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ ์ ˆํ•œ ๋ถ„์„์„ ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์ด ์Šค๋ ˆ๋“œ์—์„œ MVP, ๊ฐ€์žฅ ์—ด๋ ฌํ•œ ์ง€์ง€์ž ๋ฐ ๊ฐ€์žฅ ํ™œ๋™์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์— ๋ˆˆ์ด ๋ฉ€์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณผ ๋•Œ Microsoft๊ฐ€ ๊ณ ๊ฐ์— ๋Œ€ํ•ด ์กฐ๊ธˆ์ด๋ผ๋„ ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค. .

๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ "๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๋‹ค๋Š” ์ฃผ์žฅ๋„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋ฌดํ•œํ•œ ๋Šฅ๋ ฅ์ด ์—†๋Š” ๊ฐœ์ธ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ฐ•์ฒ  ๊ฐ™์€ ๋‹จ์ผ์ฒด์—์„œ ์—„์ฒญ๋‚œ ๋…ธ๋ ฅ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜์‚ฌ ์†Œํ†ต, ์ •์ง, ์กด๊ฒฝ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œํ’ˆ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ๊ณ ๊ฐ์—๊ฒŒ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฌ๋Š” ๋Œ€์‹  ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์„ ์œ„ํ•ด ๊ธฐ์‚ฌ๋ฅผ ์“ฐ๊ณ , ๋‹น์‹ ์˜ ํ”Œ๋žซํผ์„ ์„ ํƒํ•˜๊ณ , ๋‹น์‹ ์ด ์˜ณ์€ ์ผ์„ ํ•  ๋•Œ ๊ทธ๊ฒƒ์„ ํผ๋œจ๋ฆฌ๊ณ (์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌด๋ณด์ˆ˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ํšŒ์›์ธ Ben Adams๊ฐ€ ์ง€์šธ ์ˆ˜ ์—†๋Š” ๊ธฐ์—ฌ๋ฅผ ํ•œ ์ „์ฒด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋Œ€ํ•ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด) ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—…์„ ์‹œ์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ํ™•์„ฑ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฐ˜์‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Bartmax core, asp.net core, asp.net core non-core, netstandardbanana, .net, system.web์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ํ•„์ˆ˜ 2์‹œ๊ฐ„ ๊ณผ์ •์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. asp.net 5(6์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค).
๊ทธ๋ฆฌ๊ณ  ๋กœ๋“œ๋งต๊ณผ ์˜๋„๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜์„ธ์š”.

์•„์ง ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋†“์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธธ์„ ๋”ฐ๋ผ ์–ด๋”˜๊ฐ€์— ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ ๋๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™„๋ฒฝํ•œ ์„ธ๊ณ„์—์„œ asp.net ์ฝ”์–ด๋Š” ์ฝ”์–ด์—์„œ ๋” ๋น ๋ฅด๊ณ  .net์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๋…์  ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ๋“ค์€ ๋„ท์Šคํƒ ๋‹ค๋“œ(netstandard)๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ์ ์–ด๋„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ํฌ๋กœ์Šค ์ปดํŒŒ์ผ(cross compile)๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด asp.net ๋ถ€๋ถ„ ๋Œ€์‹  ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋ถ€๋ถ„๋งŒ ๋‹ค๋ฅผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์€ ํ•ต์‹ฌ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ƒ์ ์ธ asp.net ๊ฐœ๋ฐœ์ž ์ƒ์ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ณด์ง€ ์•Š๊ณ  ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋ฐ ์ž์‹ ๊ฐ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฝค ๋งŽ์€ C++/CLI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ์ด ์ž ์žฌ์ ์ธ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋”์ฐํ•œ ์˜ต์…˜์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

1) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ณด์•ˆ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™œ์šฉํ•  ๊ธฐํšŒ ์—†์ด ํ˜„์žฌ์˜ ์•ˆ์ •์ ์ธ asp.net ์ฝ”์–ด ๋ฒ„์ „์„ ์˜์›ํžˆ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.

2) ์–ด๋–ค ๊ณ ๊ฐ๋„ ๋‹จ ํ•œ ํ‘ผ๋„ ์ง€๋ถˆํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋ชจ๋“  C++/CLI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐ ์—„์ฒญ๋‚œ ์‹œ๊ฐ„(๊ทธ๋ฆฌ๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ๋ˆ)์„ ํˆฌ์žํ•˜์‹ญ์‹œ์˜ค.

3) asp.net ์ฝ”์–ด๋ฅผ ์™„์ „ํžˆ ํฌ๊ธฐ

๋‚˜๋Š” ์ด ๋ณ€ํ™”๊ฐ€ ๋ฏธ๋ž˜์— ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ณ  ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๊ธฐ๊ฐ„์ด๋‹ค. ์ด ์ •๋„ ๊ทœ๋ชจ์˜ ๊ฒƒ์€ ๋ฒ„์ „ 3.x ๋˜๋Š” 4.x์˜ ๋‹ค๊ฐ€์˜ค๋Š” ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ 1๋…„ ์ „์— ๋กœ๋“œ๋งต ๋ชฉํ‘œ๋กœ ๋ฐœํ‘œํ•˜๊ณ  ๋‹ค์Œ ๋ฒ„์ „์—์„œ ๋ฒ„๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค....

@davidfowl netcore์šฉ edge.js์™€ ๊ฐ™์€ ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? API ์†Œ๋น„์ž๊ฐ€ ํ”Œ๋žซํผ ๊ฒ€์‚ฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ํ•˜๊ณ  netfx์™€ netcore ๊ฐ„์˜ ๊ฐ•๋ ฅํ•œ ํ˜•์‹์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

1) netfx ์ฝ”๋“œ๊ฐ€ netcore์—์„œ ์‹คํ–‰๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ถ”์ธกํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. netfx ๋Ÿฐํƒ€์ž„, in-process๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
2) ์ฝ”์–ด๋ฅผ ์–ต์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
3) ์ƒˆ๋กœ์šด Core API๊ฐ€ ๋Œ€์ค‘ํ™”๋˜์–ด ๊ฐœ๋ฐœ์ž๋“ค์ด netfx ๊ณต๊ฐ„์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฒ„์ „์˜ netstandard์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๋‹ค๋ฆฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ค‘ ํ”Œ๋žซํผ ASP.NET Core๋ฅผ ์ œ์•ˆํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๋ฐ ๋ฒ”์œ„ ๊ธฐ๋Šฅ ์—†์ด ์ด์ „ .NET์—์„œ ์‹คํ–‰๋˜๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” .NET Core 2์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€... ๊ธ€์Ž„์š”. ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ˆ˜์ค€์—์„œ ๋ชจ๋“  ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • UTF8๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด(_BOBTRUES_)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ”์ดํŠธ ๋ธ”๋ก์„ ๊ฐ€์ ธ์™€์„œ ํ•ด์„ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ˜•์‹์˜ ๊ฐœ์ฒด๋กœ ์ฝ”๋“œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™€ ๋‹ค์‹œ _BOBTRUES_๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์ •๋ง๋กœ ํ•„์š”ํ•œ ๊ฒƒ์€ _BOBTRUES_๋ฅผ ์ดํ•ดํ•˜๋Š” ์ €์ˆ˜์ค€ ๊ธฐ๋ณธ ์š”์†Œ๋ผ๋Š” ๊ฒƒ์ด ๋ง์ด ๋ฉ๋‹ˆ๊นŒ?

๊ทธ๋ฆฌ๊ณ  ์ž‘์„ฑ ์ค‘์ธ ์ฝ”๋“œ์˜ ๋Œ€๋ถ€๋ถ„์ด _BOBTRUES_์— ์ข…์†๋˜์–ด ์žˆ์ง€๋งŒ _BOBTRUES_๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๋Š” ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„๋„ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๋‘ ๋ฒˆ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉฐ ๋ชจ๋‘ ์ปดํŒŒ์ผ๋Ÿฌ ์ง€์‹œ๋ฌธ์ด๋‚˜ ๋ณต์žกํ•œ ๋นŒ๋“œ ํŒŒ์ผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค. . ๊ทธ๋ฆฌ๊ณ  ์ „์ฒด .NET์ด _BOBTRUES_๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ๋งŒ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ _๊ต‰์žฅํžˆ_ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋Š” ๋™์‹œ์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ค‘๋ณต์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Mono, UWP, Xamarin, Unity3D ๋ฐ _BOBTRUES_ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” NETStandard๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ, ๋Œ€๋ถ€๋ถ„์€ ์ฒ˜์Œ๋ถ€ํ„ฐ _BOBTRUES_์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ด ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‘ ๋ฒˆ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š”

  • System.Drawing, System.DirectoryServices ๋“ฑ, ๋˜๋Š”
  • 1.x์— ํ•„์š”ํ•œ API๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— NETStandard 2.0์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘์ด๊ฑฐ๋‚˜
  • NETStandard๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์‹œ๊ฐ„์ด๋‚˜ ์ธ์„ผํ‹ฐ๋ธŒ๊ฐ€ ์—†๋Š” ์‚ฌ๋žŒ๋“ค์ด ์œ ์ง€ ๊ด€๋ฆฌ
  • ๋ฒ„๋ ค์ง„, ๋˜๋Š”
  • ์œ„์˜ ์—…์ŠคํŠธ๋ฆผ ํŒจํ‚ค์ง€์— ์˜์กด

System.* ๋น„ํŠธ๋Š” ์ œ์ณ๋‘๊ณ  ๋‹ค๋ฅธ ๋งŽ์€ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ASP.NET Core ์‚ฌ์šฉ์ž๊ฐ€ ์ „์ฒด .NET์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฉด NETStandard๋กœ์˜ ํฌํŠธ๋ฅผ ๋ฏธ๋ฃจ๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๊ธฐ๊ฐ€ ์ข€ ๋” ์‰ฌ์›Œ์งˆ๊นŒ์š”? _"์˜ˆ, ์šฐ๋ฆฌ๋Š” ASP.NET Core๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์ „์ฒด .NET์—์„œ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค..."_ Linux ์ปจํ…Œ์ด๋„ˆ์—์„œ .NET Core ์•ฑ์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ Mac์—์„œ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๊ทธ๋งŒํผ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. , ๊ทธ๋ฆฌ๊ณ  "์ง€๊ธˆ์€ ๋ฒ„์ „ X๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ" ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. NHibernate๋„ ์—†๊ณ  OData๋„ ์—†๊ณ  EF6๋„ ์—†๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด Microsoft ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€ ํŒ€์ด ํŒจํ‚ค์ง€๋ฅผ NETStandard 2.0์œผ๋กœ ์ ์ ˆํ•˜๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ Windows ์„œ๋ฒ„์—์„œ ์™„์ „ํžˆ ์‹คํ–‰๋˜๋Š” ๊ฐœ๋ฐœ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ _๋ชจ๋“ _ ASP.NET ๊ฐœ๋ฐœ์ž*๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ”์ง€๋ผ๋ฉด .NET์ด๋ฉด _์ข‹์€ ์ผ_์ž…๋‹ˆ๋‹ค.

*.NET Core 2.0์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 2.0์€ _์†Œ๋น„_ํ•˜๊ธฐ ์œ„ํ•ด NETStandard ํŒจํ‚ค์ง€๋ฅผ _๊ฒŒ์‹œ_ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@JamesNK ๊ฐ€ ํŒŒ์„œ๋งŒ ์ž‘์„ฑํ•˜๋„๋ก ์ง€์‹œํ•œ ์˜๊ฒฌ์€ ํŠนํžˆ ์ž์‹ ์˜ ํŒŒ์„œ๋ฅผ ์‚ญ์ œํ–ˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ์ •๋ง ๊ณ ๊ธ‰์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ํ”Œ๋žซํผ์„ ๋ฐœ์ „์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ž์‹  ์˜ ์‹œ๊ฐ„์— ์ผ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ „์ฒด ์Šคํƒ์€ ๋Š๋ฆฌ๊ฒŒ ์ด๋™ํ•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์•Œ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์ด ์•„์ง ๋งŽ์ด ์žˆ์œผ๋ฏ€๋กœ ์†”์งํžˆ .Net ์ฝ”์–ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ์šฐ๋ ค๋˜๋Š” ๊ฒฝ์šฐ Xamarin์„ ๊ตฌ์ž…ํ–ˆ์œผ๋ฉฐ ๊ฑฐ์˜ โ€‹โ€‹๋ชจ๋“  ๊ฒƒ์—์„œ .Net์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งํ•  ์‹œ๊ณ„๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋กœ๋“œ๋งต?

์šฐ๋ฆฌ๋Š” ํ• ์•„๋ฒ„์ง€์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๊ณ  ๊ทธ๋“ค์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๋ฐค์ƒˆ ๋ฌด์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค! .
Asp.net Core๊ฐ€ ์˜ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? KฤฑlฤฑรงdaroฤŸlu๋Š” ๋ฆฌ๋”์‹ญ ์ž์งˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด Microsoft ๋‚ด์™ธ๋ถ€์˜ ํŒ€์ด ํŒจํ‚ค์ง€๋ฅผ NETStandard 2.0์œผ๋กœ ์ ์ ˆํ•˜๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ Windows ์„œ๋ฒ„์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฐœ๋ฐœ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ASP.NET ๊ฐœ๋ฐœ์ž*๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ”์ง€๋ผ๋ฉด .NET, ๊ทธ๋ ‡๋‹ค๋ฉด ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค.

@markrendle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ ASP.NET Core ๋…ผ๋ฆฌ๋ฅผ ๋”ฐ๋ž๋‹ค๋ฉด netstandard๊ฐ€ ์•„๋‹Œ netcoreapp์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์„๊นŒ์š”? ๊ฒฐ๊ตญ ๊ทธ๋“ค์€ ์ƒˆ๋กœ์šด API์˜ ์ด์ ๋„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์™œ netstandard๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ASP.NET์€ ๊ฒฐ๊ตญ ๋˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ๋Š” ์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ ํšŒ์‚ฌ์—๋Š” .NET Core์—์„œ ์ ˆ๋Œ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋งŽ์€ ์ˆ˜์˜ ๋‚ด๋ถ€ ๋ฐ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๋Š” ๋Œ€๊ทœ๋ชจ SaaS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ์˜ ๊ณ„ํš์€ ํ•ญ์ƒ ์ „์ฒด .NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core๋กœ ์ด๋™ํ•œ ๋‹ค์Œ ์ฒœ์ฒœํžˆ, 5๋…„ ์ด์ƒ์— ๊ฑธ์ณ ์ด๋Ÿฌํ•œ ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋Œ€์ฒดํ’ˆ์„ ์ฐพ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด (๋น„)๋ฐœํ‘œ๋Š” ์ด๋Ÿฌํ•œ ๊ณ„ํš์„ ์™„์ „ํžˆ ํ˜ผ๋ž€์— ๋น ๋œจ๋ ธ์Šต๋‹ˆ๋‹ค.

ASP.NET Core๊ฐ€ .NET Desktop ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํŽธ์ง‘ . ์„ค๋ช…์„œ ํŽ˜์ด์ง€์—๋Š” ASP.NET Core๊ฐ€ ์ „์ฒด .NET Framework์—์„œ ์‹คํ–‰๋œ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ง€์›์„ ๋ถ„๋ช…ํžˆ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์ด๋ฏธ ์ด๊ฒƒ์„ ์ œ์•ˆํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ASP.NET Core๋Š” ์˜คํ”ˆ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ASP.NET Core๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core: ๊ธฐ์กด ๋นŒ๋“œ์ธ .NET Core(netcoreapp2.0)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
"ASP.NET Core Standard" : .NET Standard(netstandard1.* ๋ฐ net4*)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ .NET Desktop Framework ๋ฐ ๊ธฐํƒ€ ํ‘œ์ค€ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค.

Core ๋นŒ๋“œ๋Š” .NET Core์— ์—ฐ๊ฒฐ๋˜์ง€๋งŒ Core Standard ๋นŒ๋“œ๋Š” netstandard1.* ๋ฐ net4*, ๊ทธ๋ฆฌ๊ณ  ์ดํ›„ .NET standard 2.0+์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋” ๋Š๋ฆฌ๊ฒŒ ์›€์ง์ด์ง€๋งŒ ๋” ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. .NET Core๋Š” ์‹ ๊ทœ ๋ฐ ์‹ ์ƒ ๊ธฐ์—…์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๊ณ  Standard๋Š” ๋ธŒ๋ผ์šดํ•„๋“œ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ ๊ธฐ์—…์— ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft ํŒ€์ด ์„ ํƒํ•œ ๊ฒฝ๋กœ๋Š” ๊ธฐ๋ณธ ์˜ต์…˜์œผ๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฉฐ Core๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค. ํ•œํŽธ, netstandard์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ชฉํ‘œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธํ™˜์„ฑ์˜ ๊ด€์ ์—์„œ ์‹ค์ œ๋กœ Microsoft์—์„œ๋„ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ "ASP.NET Core Standard"๊ฐ€ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์–ป์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๋ถ„๊ธฐ๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ํ‘œ์ค€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ง€์›๋˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํ™•์‹ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‘œ์ค€ ๋ถ„๊ธฐ๋Š” Github์—์„œ ๋ฌด๊ธฐํ•œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž์› ๋ด‰์‚ฌ์ž๋Š” ์ˆ˜์ • ๋ฐ ์—…๋ฐ์ดํŠธ๋ฅผ Core ๋ถ„๊ธฐ์—์„œ ํ‘œ์ค€ ๋ถ„๊ธฐ๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋žซ๋™์•ˆ ASP.NET Core์—์„œ .NET Desktop ํ”„๋ ˆ์ž„์›Œํฌ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋นŒ๋“œ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ํฐ ์žฅ์• ๋ฌผ์ด ์•„๋‹ˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋งŽ์€ .NET ํ”„๋กœ์ ํŠธ๋Š” ์ผ๋ถ€ ์กฐ๊ฑด๋ถ€ ์ปดํŒŒ์ผ ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ protobuf-net๊ณผ ๊ฐ™์€ ๋‹ค์ค‘ ๋Œ€์ƒ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Active Directory ๋ฐ System.Drawing์ด ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž๋Š” ASP.NET Core Standard๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ .NET Core๋กœ ์‰ฝ๊ฒŒ ์ด์‹ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๊ณ  ํ–ฅํ›„ ์ง€์› ๋ถ€์กฑ์˜ ์œ„ํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ํŒ€์ด ๊ทธ๋Ÿฐ ์ง€์ ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ASP.NET๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET Framework์—์„œ .NET Core๋กœ์˜ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ ๋•Œ๋ฌธ์— ์–ด๋Š ์‹œ์ ์—์„œ๋“  ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์ž„์‹œ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์œ ์—ฐํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์ „ํ™˜์„ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ถ”๊ฐ€ ๋…ธ๋ ฅ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ „์ฒด์— ์ œ๊ณตํ•  ํ›จ์”ฌ ๋” ํฐ ์ฑ„ํƒ ๋ฐ ๋” ๋‚˜์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ๋น„๊ตํ•  ๋•Œ ์ž‘์€ ํˆฌ์ž๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ฒœ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋” ๋งŽ๋‹ค๋Š” ๊ฒƒ์€ ๋‘ ๊ฐœ์˜ ๋ชฉํ‘œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ž‘์—…์„ ์ƒ์‡„ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์— ๋” ๋งŽ์€ ๊ธฐ์—ฌ๋ฅผ ํ•˜๋Š” ๋ฐ ํ™•์‹คํžˆ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@๋ฒค์ฒญ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ ASP.NET Core ๋…ผ๋ฆฌ๋ฅผ ๋”ฐ๋ž๋‹ค๋ฉด netstandard๊ฐ€ ์•„๋‹Œ netcoreapp์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š์„๊นŒ์š”? ๊ฒฐ๊ตญ ๊ทธ๋“ค์€ ์ƒˆ๋กœ์šด API์˜ ์ด์ ๋„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์™œ netstandard๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ASP.NET์€ ๊ฒฐ๊ตญ ๋˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„์š”, ๋งŒ์•ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ _BOBTRUES_์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ ์š”์†Œ์™€ ํ”„๋ ˆ์ž„์›Œํฌ ์ˆ˜์ค€ ์ง€์›์œผ๋กœ ์—„์ฒญ๋‚œ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. , btw). ๊ทธ๋Ÿฌ๋‚˜ ํŒจํ‚ค์ง€์˜ ์ฝ”๋“œ๊ฐ€ _BOBTRUES_ ๋˜๋Š” ๊ทธ ์ค‘ ์–ด๋Š ๊ฒƒ์—๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด netstandard20 netcoreapp20 ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ํŠนํžˆ ์ •์‹ ์„ ์ฐจ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

@markrendle ๊ทธ๋ ‡๋‹ค๋ฉด Newtonsoft.JSON์ด ๋‹ค์Œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  1๋…„ ๊ธฐ๊ฐ„์˜ ๊ธฐ์กด ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๊นŒ? ๊ตฌ๋ฌธ ๋ถ„์„, IO ๋ฐ ๊ณ ์„ฑ๋Šฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard ๋ฐ .NET Framework์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์— ๋งŒ์กฑํ•˜์‹ญ๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ:

  1. asp.net ์ฝ”์–ด 2.x๋ฅผ .net์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์ฝ”์–ด ์ „์šฉ ํ•ญ๋ชฉ์„ ๋ฒ„์ „ 3.x๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค(2.0์˜ ์‚ฌ์šฉ์ž ๋Œ€๋ฉด ๊ธฐ๋Šฅ์„ 1.x๋กœ ๋ฐฑํฌํŠธํ•˜๊ณ  2.0์ด๋ผ๊ณ  ํ•จ).
  2. ์ฒ˜์Œ๋ถ€ํ„ฐ asp.net core 2.x๊ฐ€ .net์—์„œ ์ž‘๋™ํ•˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์ด ๋  ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ๋ถ„๋ช…ํžˆ ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธด ์ˆ˜๋ช…์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.
  3. lib๊ฐ€ netstandard2.x์—์„œ ๋” ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ํ˜„์žฌ ์ถ”์ธก ์ž‘์—…์€ ์‚ฌ๋žŒ๋“ค์„ ๋†€๋ผ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.x/core ์ง€์›์„ ๋ฐ›๋„๋ก ๋•๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. (Windows ์ „์šฉ์ผ์ง€๋ผ๋„)
  5. Microsoft์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์šฐ๋ฆฌ๋Š” ์†๋„/๊ธฐ๋Šฅ/๋“ฑ์„ ์›ํ•˜์ง€๋งŒ ๋งŽ์€ ๊ฒฝ์šฐ์—๋„ ์•ˆ์ •์„ฑ/๋ ˆ๊ฑฐ์‹œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์€ ์ค‘๊ฐ„ ์ง€์ ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@vectorix : ๊ทธ๋žฌ์Šต๋‹ˆ๋‹ค. ASP.NET Core ๋ฌธ์„œ์˜ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€์ธ ASP.NET Core ์†Œ๊ฐœ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„

...
ASP.NET Core ์•ฑ์€ .NET Core ๋˜๋Š” .NET Framework ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ ์€ .NET Core์™€ .NET Framework ์ค‘์—์„œ ์„ ํƒ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
...

.NET Framework(์ „์ฒด)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์  ์žฅ, ๊ทธ ๋น„๊ต ํŽ˜์ด์ง€๋Š” ์‹ฌ์ง€์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

.NET Framework๋Š” ๋งŽ์€ ๊ธฐ์กด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ณ„์†ํ•ด์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ ํƒ์ด ๋  ๊ฒƒ์ด๋ฏ€๋กœ ๋ชจ๋“  ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด .NET Core๋กœ ๋Œ€์ฒด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ BOBTRUES๋Š” x๊ฐ€ ์ •์˜๋  โ€‹โ€‹ํ•„์š”์กฐ์ฐจ ์—†๋Š” netstandard x์— ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด netstandard๊ฐ€ ์ด๋ฏธ ์ฃฝ์—ˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค...

5์ผ ํ›„ BUILD ์ด๋ฒคํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Microsoft๊ฐ€ ๋ฐœํ‘œ๋ฅผ ํ•˜๊ณ  ๋น„์ „๊ณผ ๋กœ๋“œ๋งต์„ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋‹ค๋ ค ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@CMircea : ์ง€์ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ฐธ์œผ๋กœ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€์˜ ๋ฌธ์ž์™€ ์ •์‹ ์„ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ด์„œ๋Š” .NET Desktop Framework์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Azure์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” .NET462๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ASP.NET Core 1.1 ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๋Œ€๊ทœ๋ชจ ์ž‘์—…์„ ๋ฐฉ๊ธˆ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. MS Access db๋ฅผ ์—…๋กœ๋“œํ•˜์—ฌ ์‚ฌ์ดํŠธ์— ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ ๊ณ ์นจ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  Azure SQL๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€(๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ํž˜๋“  ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค) ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์šด์ด ์ข‹๋‹ค๋ฉด ์ด ์†”๋ฃจ์…˜์ด 1, 2, 3๋…„ ๋™์•ˆ๋งŒ ์ง€์›๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ณ ๊ฐ์—๊ฒŒ ๋งํ•ด์•ผ ํ•˜๋Š” ์ž…์žฅ์— ์žˆ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ €๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๋…ธ๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค!

Access db๋ฅผ ์ฝ๊ธฐ ์œ„ํ•œ ๋” ๋‚˜์€ ์˜ต์…˜์ด ์žˆ๊ฑฐ๋‚˜ ๋กœ๋“œ๋งต ์–ด๋”˜๊ฐ€์— ์žˆ๋‹ค๋ฉด ์ €๋Š” ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์€ ์šฐ๋ ค๋ฉ๋‹ˆ๋‹ค.

@bencyoung ํฐ ์ฐจ์ด์ ์€ JSON.NET์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹ˆ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ASP.NET Core๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋ธ์ธ ๋ฐ˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ์˜๋„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์งˆ๋ฌธ์€ .NET Standard์™€ ํ˜ธํ™˜๋˜๋Š” ASP.NET Core์˜ ๋ ˆ์ด์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋ฉฐ, ๋„ท์ฝ”์–ด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? .NET Standard์— ๋Œ€ํ•ด ์ž‘์„ฑํ•œ ์ƒˆ ์ฝ”๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ASP.NET Core ๊ณ„์ธตํ™” ์ธก๋ฉด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์žˆ์ง€๋งŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž๊ฐ€ netstandard ๋Œ€์‹  netcore๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋งŽ์€ ์ž ์žฌ์  ํ”„๋กœ์ ํŠธ์—์„œ ํ˜ธํ™˜์„ฑ์ด ์ €ํ•˜๋  ์œ„ํ—˜์ด ์žˆ๋Š” ๋ฐ˜๋ฉด ASP.NET Core๋Š” (ํ˜„์žฌ) ํŠน์ • ๋Ÿฐํƒ€์ž„์—์„œ ์‹คํ–‰๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์†์ƒ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

@Antaris ASP.NET์€ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Kestrel์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์›ํ•˜๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ASP.NET Core๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@benchyoung ๊ณต์ •ํ•œ ์š”์ , ๋‚ด ๋ถ€๋ถ„์—์„œ ๋‚˜์œ ํ‘œํ˜„.

๋‚ด๊ฐ€ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€(๋งํ•˜๋Š” _right_ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ASP.NET Core(์Šคํƒ์œผ๋กœ)๋ฅผ ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ JSON.NET๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core์˜ ์›€์ง์ด๋Š” ๋ถ€๋ถ„์„ ์ƒ๊ฐํ•˜๋ฉด Razor์™€ ๊ฐ™์€ ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹.NET Standard์— ๋Œ€ํ•ด ๋นŒ๋“œ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋ธ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง์ด ๋ผ?

์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”. ์ €๋Š” ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ netfx์™€์˜ ํ–ฅํ›„ ํ˜ธํ™˜์„ฑ์— ๋”ฐ๋ผ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ฉ/์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋Œ€์‹  ๋ช‡ ๊ฐ€์ง€ ๋ฏธ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ๋‚˜๋Š” ํ˜ธํ™˜์„ฑ ํ–ฅ์ƒ(netfx์˜ ASP.NET Core 2+)์— ๋Œ€ํ•œ ์ธ์ˆ˜ ์ฃผ์œ„์— ๋งŽ์€ ๊ฐ€์ค‘์น˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@Antaris ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” Windows ์„œ๋น„์Šค ๋‚ด์—์„œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด WCF ์„œ๋น„์Šค์™€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ REST API๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค....

์™€์šฐ, Microsoft์˜ ๋”์ฐํ•œ ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. ๋จผ์ € .NET Core๊ฐ€ ์ƒˆ๋กœ์šด .NET์ด ๋  ๊ฒƒ์ด๋ฉฐ Microsoft๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์ด์ „ API๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ASP.NET Core ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ Microsoft๋ฅผ ์‹ ๋ขฐํ–ˆ๋˜ ์‚ฌ๋žŒ๋“ค์„ ๋’ค์— ๋‚จ๊ฒจ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งค์ผ .NET์— ๋Œ€ํ•œ ๋ฏฟ์Œ์„ ์žƒ์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Golang์€ ์™„๋ฒฝํ•˜์ง€ ์•Š์ง€๋งŒ ๋‚˜๋‚ ์ด ๋” ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...๋ˆ„๊ตฐ๊ฐ€ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด... ์ ์  ๋” ๋งŽ์€ ๊ด€์‹ฌ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Microsoft๊ฐ€ Java ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ฌด๋Šฅ๋ ฅ์„ ๋‹จ๊ธฐ๊ฐ„์— ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ .NET Core๋Š” ์™„์ „ํ•œ ์‹ค๋ง์ด์—ˆ๊ณ  ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ 2๋…„ ๋™์•ˆ ๊ฑฐ์˜ ๋ฌผ์„ ๋ฐŸ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋Œ€๊ฐ€๋กœ ํฌ๋กœ์Šค ํ”Œ๋žซํผ(Windows Nano์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ .NET์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ด€์‹ฌ์„ ๊ฐ€์ง)๊ณผ ์—„์ฒญ๋‚œ ๋ณต์žก์„ฑ(๋ง๋„ ์•ˆ๋˜๋Š” ๋”์ฐํ•œ ๋„๊ตฌ, F# ์ง€์›(VS) ์ง€์› ์—†์Œ, .NET Standard ๋น™๊ณ )์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์—ฌ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์—„์ง€ ์†๊ฐ€๋ฝ์ด ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ชจํ‹ฐ์ฝ˜์œผ๋กœ ์˜๋ฏธ ์žˆ๋Š” ๋Œ€ํ™”๋ฅผ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ;) ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ”Œ๋žซํผ ๊ฐ„ ์ง€์›์€ ๋‚ด๊ฐ€ ASP.NET Core๋กœ ์ „ํ™˜ํ•œ ์ฃผ๋œ ์ด์œ ์ด๋ฉฐ, ์ € ํ˜ผ์ž๋งŒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ASP.NET Core์˜ ์œ ์ผํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋ ˆ์ž„์›Œํฌ์— ๋งค์šฐ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์‹ ๊ตฌ์กฐ์™€ ๊ฐ™์ด ์ˆ˜๋…„์— ๊ฑธ์ณ ์„ฑ์žฅํ•œ ๊ฒƒ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. Buildin DI๋„ ์ƒˆ๋กญ์Šต๋‹ˆ๋‹ค.

ASP.NET ์ฝ”์–ด์™€ ํ•จ๊ป˜ ์ด์ „ 4.x ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์€ ๋‚˜์—๊ฒŒ ์ข‹์€ ์ ˆ์ถฉ์•ˆ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜์™€ ๊ฐ™์€ OS/Linux ํŒฌ์€ ๊ฐ•์ œ๋กœ ์ฐฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Windows๊ฐ€ ์ •๋ง๋กœ ํ•„์š”ํ•œ ํšŒ์‚ฌ(์˜ˆ: AD ์ธ์ฆ)๋Š” Windows๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ์™œ ์ด ์ข‹์€ ์ค‘๋„๋ฅผ ๊นจ๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ํŠนํžˆ ์ง€๊ธˆ์€ ์ด์ „ 4.x ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋งŽ์€ ์ค‘์š”ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์•„์ง ASP.NET Core๋กœ ์ด์‹๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

@DMWOO7 .NET Core์™€ ASP.NET Core๋ฅผ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

.NET Core์™€ ASP.NET Core๋ฅผ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์•„์ด๋Ÿฌ๋‹ˆ. ๐Ÿ˜†

@MartinJohns ๋” ๋ช…ํ™•ํ•˜๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@๋ฒค์ฒญ

๋”ฐ๋ผ์„œ Newtonsoft.JSON์ด ๋‹ค์Œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  1๋…„ ๊ธฐ๊ฐ„์˜ ๊ธฐ์กด ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋ถ„์„, IO ๋ฐ ๊ณ ์„ฑ๋Šฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard ๋ฐ .NET Framework์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์— ๋งŒ์กฑํ•˜์‹ญ๋‹ˆ๊นŒ?

๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ Linux ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•  ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์ € ์ž์‹ ๊ณผ ์ € ์ž์‹ ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์™ธ์—๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ.

์ง„์ง€ํ•˜๊ฒŒ, ๋‚˜๋Š” JSON.NET์ด netstandard ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋” ์ตœ์ ํ™”๋œ for -์›น ๊ฐœ๋ฐœ netcore API.

.NET์˜ Python 3์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ์ „์— Core๊ฐ€ ๋ฐœํ‘œ๋œ ์ดํ›„๋กœ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core ๋Œ€์ƒ netcoreapp2.0์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. .NET Core๋Š” ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์‹œ์ž‘๊ณผ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. Windows์šฉ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  API๋ฅผ ๋Œ์–ด๋‹ค ๋†“๋Š” ๊ฒƒ์€ ๊ธฐ์ฐจ ์‚ฌ๊ณ ๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Python 3์˜ ๋น„์œ ๋Š” ํ›Œ๋ฅญํ•˜๊ณ  Python 3๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ข‹์•„, ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„ ๋‚˜๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ฒฌํ•ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‚˜๋Š” ์‚ด๊ธฐ ์œ„ํ•ด ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์•„์ง ๊ณต๋ถ€ ์ค‘). ๋•Œ๋•Œ๋กœ ๋‚˜๋Š” ๋‚˜ ์ž์‹ ์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํšŒ์‚ฌ/์กฐ์ง์„ ์œ„ํ•ด ๋” ์ž‘๊ฑฐ๋‚˜ ๋” ํฐ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํšŒ์ „ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋” ์‚ฌ๋žŒ๋“ค์ด ์™€์„œ ๊ธฐ์ˆ ์ ์ธ ์กฐ์–ธ์„ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ASP.NET์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ "์›น ์–‘์‹ ์Šคํƒ"์„ ๋ฌด์‹œํ•˜๊ณ  HTML์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Razor Pages๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”.
  • ๋‚ด๊ฐ€ ๋งŒ๋“  ์›น๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์€ ํ•ญ์ƒ IIS์—์„œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›์€ ๋‚˜์—๊ฒŒ ๊ด€์‹ฌ์ด ์—†์ง€๋งŒ ๊ธฐ๋ถ„์ด ์ข‹์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ๋„ˆ๋ฌด ์ž‘์•„์„œ ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Microsoft๋ฅผ ๋”ฐ๋ฅด๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ .NET Core๊ฐ€ .NET Framework๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ๊ฒฐ๊ตญ .NET Framework๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌ ์ „์šฉ ๋ชจ๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ˆ„๋ฝ๋œ API๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๋™์•ˆ ์ „์ฒด .NET Framework์™€ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•  ์˜๋„๊ฐ€ ์—†์—ˆ์Œ์ด ๋งค์šฐ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core๊ฐ€ .NET Framework์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ†ตํ•ด ์ €๋Š” ๊ฐœ๋ฐœ์˜ ์„ ๋‘์— ์„œ์„œ ์—…๊ณ„์˜ ๊ด€๋ จ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ชจ๋“  ๋ฉ‹์ง„ ์ƒˆ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๋ฉด์„œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ „์ฒด ๊ธฐ๋Šฅ(๋ฐ OS). ASP.NET Core์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ๋” ํฐ ์›น ํŽ˜์ด์ง€๋„ ์‹œ์ž‘ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ €๋Š” .NET Framework์˜ ASP.NET Core์—์„œ ๋ชจ๋“  ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์„ ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ๋” ์ด์ƒ์€ ์•ˆ ๋  ๊ฒƒ ๊ฐ™์•„์š”.

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(ํŠน์ • ์ˆœ์„œ ์—†์ด):

  • 1.x๊ฐ€ ์•„๋‹Œ ASP.NET Core 2.x์ธ ์ด์œ 
    ํ™•์‹คํžˆ Razor Pages. ๊ทธ๊ฒŒ ์ œ๊ฐ€ ์ฃผ๋กœ ์ผํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์•ˆ์ •์„ฑ๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด "์„ฑ์ˆ™๋„"๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๊ฒƒ์ด์ง€๋งŒ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐฑํฌํŠธ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ˆ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํˆด๋ง์ด ๋ถ„ํ• ๋˜๋ฉด ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
    ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ 3.x๋กœ ์—ฐ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ํŠธ๋ฆญ์„ ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ASP.NET์ด ์•„๋‹Œ ASP.NET Core๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
    ๊ธ€์Ž„์š”, ์ด ์ฃผ์ œ์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ ๊ทธ๊ฒƒ์€ ๊ณต์ •ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์™„์ „ํ•œ .NET Framework๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ASP.NET Core๋Š” ์ •์˜์— ๋”ฐ๋ผ ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ์Šคํƒ, ํƒœ๊ทธ ๋„์šฐ๋ฏธ, ํ†ตํ•ฉ API ๋ฐ MVC, ์ตœ์‹  ๊ธฐ๋Šฅ. ์ „์ฒด .NET Framework๊ฐ€ ์—†์œผ๋ฉด ๊ทธ๋‹ค์ง€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ASP.NET์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ์†”๋ฃจ์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋˜๋Š” ํ˜ธํ™˜์„ฑ?
    100% ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž์—ด์„ UTF-8(๋ฐ 4๋ฐ”์ดํŠธ ๋ฌธ์ž!)๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง์€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ๊บผ๋‚ด๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

  • ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” .NET Framework์˜ ๊ธฐ๋Šฅ
    ๋‚ด๊ฐ€ ๊ฑฑ์ •ํ•˜๋Š” ํฐ ๊ฒƒ๋“ค:

  • _์‹œ์Šคํ…œ.์œˆ๋„์šฐ.๋ฏธ๋””์–ด.์ด๋ฏธ์ง•_. ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค ~~System.Drawing~. ๊ทธ๊ฒƒ์€ .NET Core์˜ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธด ์Šค๋ ˆ๋“œ์ด๋ฏ€๋กœ @JimBobSquarePants ๋ฐ @mstum ์„ ์ธ์šฉํ•ฉ๋‹ˆ๋‹ค.
    > System.Drawing์€ ํŠนํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์šฐ๋ ค์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ํ•ด๋‹น API๋ฅผ .NET Core๋กœ ์ด์‹ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์„œ๋ฒ„์—์„œ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ ์ตœ์‹  ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋งŽ์€ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ(๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ, ํ”ฝ์…€ ํ˜•์‹, ICC, EXIF, ์–‘์žํ™”, ์ƒ‰์ธํ™”๋œ Png ๋“ฑ)์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

System.Drawing ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์˜ ํด๋ž˜์Šค๋Š” Windows ๋˜๋Š” ASP.NET ์„œ๋น„์Šค ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์—์„œ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ์™€ ๊ฐ™์€ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋Œ€์•ˆ์€ Windows ์ด๋ฏธ์ง• ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‚ด ๋ชจ๋“  ์›น ์ด๋ฏธ์ง• ์ž‘์—…์€ WIC๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ๋™์•ˆ ๊ถŒ์žฅ๋œ ๊ธฐ์ˆ ์„ ์ด์‹ํ•˜์ง€ ์•Š๊ณ  ์ง€์›๋˜์ง€ ์•Š์€ ์ด์‹ ๊ธฐ์ˆ ์€ ์•ฝ๊ฐ„ ์‹ค๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„์˜ ๊ณ ๊ฐ์ด ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ์ด๋ผ๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ).

  1. _System.Windows.Xps_ ๋ฐ _System.Windows.Markup_. XPS์—์„œ ๋ชจ๋“  ๋ฌธ์„œ(์ธ๋ณด์ด์Šค์—์„œ ๋ฐฐ์†ก ๋ผ๋ฒจ๊นŒ์ง€)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. XAML๋กœ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋””์ž์ธ ํƒ€์ž„ ์ง€์›์„ ๋ฐ›๊ณ  ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ, ํ…์ŠคํŠธ ์Šคํƒ์„ ํฌํ•จํ•˜๋Š” XAML ๋ ˆ์ด์•„์›ƒ, ํŽ˜์ด์ง€ ๋งค๊น€, ํ…œํ”Œ๋ฆฟ ๋ฐ ์ƒ์„ฑ ์ค‘ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•œ ์Šคํƒ€์ผ ์ง€์ • ๋“ฑ - ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค.
  2. _System.Reflection_ ์–ด์…ˆ๋ธ”๋ฆฌ ๊ฒ€์‚ฌ, ๋ฌธ์„œ ์ƒ์„ฑ ๋“ฑ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐญ ์ฑ„์šฐ๊ธฐ์šฉ.
    ์–ธ๊ธ‰๋œ ๊ธฐํƒ€ ์‚ฌํ•ญ:
  3. _WCF_ ๋ฐ _ServiceModel_, ์ •๋ถ€์™€์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ด๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  4. _DirectoryServices.Protocols_ ๋ฐ NTLM ์ธ์ฆ
  5. SQL์˜ ๊ณต๊ฐ„ ์œ ํ˜•
  6. ์•”ํ˜ธํ™”
    ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ๋“ค: ์ด๋ฉ”์ผ, ZIP ๋ณด๊ด€.

๊ฒฐ๊ตญ ์ด๊ฒƒ์€ ์ „์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์™„์ „ํ•œ .NET Framework๊ฐ€ ์—†๋Š” ASP.NET Core๋Š” ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์„ ์ œํ•œํ•˜๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•  ์„ค๋“๋ ฅ ์žˆ๋Š” ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ƒํ™ฉ์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ๋‚ด ์ƒํ™œ์ด ๊ทธ๊ฒƒ์— ๋‹ฌ๋ ค ์žˆ๋Š”์ง€ ์žฌํ‰๊ฐ€ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ํ”Œ๋žซํผ์— ์žˆ๋“  ์—†๋“  ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ธฐ ์žˆ๋Š” ์ด๋ฆ„๊ณผ ๋Œ€๊ธฐ์—… ๊ณ ๊ฐ์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Azure์—์„œ ์ข…๋ฃŒ๋˜๊ณ  ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ๊ณผ ํ•จ๊ป˜ ํ”Œ๋ ˆ์ดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ณ€ํ™”๊ฐ€ ์ƒ์กด๊ณผ ๊ฒฝ์Ÿ๋ ฅ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต์ •ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ .NET Framework ๋ฐฐ๊ฒฝ ์ง€์‹์ด ์—†๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ „ํ™˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์ด ๋‘ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ์ •์€ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ณ  ์–ด์ฉŒ๋ฉด ๋ถˆ๊ณตํ‰ํ•˜๊ธฐ๋„ ํ–ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ ์ค‘์ธ ์ตœ์‹  ๊ธฐ์ˆ ๋กœ ์ž‘์—…ํ•  ๋•Œ ํ•ญ์ƒ ์œ„ํ—˜์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํ˜„์žฌ .NET Framework์™€ ํ•จ๊ป˜ .csproj์—์„œ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ทธ๋Ÿด ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์‹ . ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ์ด "์ „ํ˜€ ์ „๋‹ฌ๋˜์ง€ ์•Š์€" ๊ฐญ ์ฑ„์šฐ๊ธฐ ์—ญํ• ์ด ์ด์ „์— ์ง€์ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” msbuild ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ .NET Framework๊ฐ€ ๋ช‡ ๋‹ฌ ์•ˆ์— ๊ณ„ํš์—์„œ ๋ฒ—์–ด๋‚ฌ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์„ ๊ฐ–์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ๋‚ด๊ฐ€ ๋งํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค). ํฐ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ๊ณ , ์•ˆ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋Šฆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ํƒ€๊ฒŸ ์ฒญ์ค‘์ด ์ผ๊ด€์ ์ด๋ผ๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์ด๊ฒƒ์€ ์ „์ ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๋ถˆํ™•์‹ค์„ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋Œ€๊ธฐ์—…์€ ๋ถˆํ™•์‹ค์„ฑ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. Microsoft๋Š” ํ˜ธํ™˜์„ฑ์˜ ์™•์ด์—ˆ์Šต๋‹ˆ๋‹ค(์ข‹๋“  ๋‚˜์˜๋“ , ๋‚ด ๋ถ€๋ฆ„์ด ์•„๋‹˜). ๊ทธ๋Ÿฐ ๋‹ค์Œ .NET Core๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค...ํ˜ธํ™˜์„ฑ์ด ๊นจ์ง€๊ณ ...์ข‹์€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ API๋ฅผ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. .. ์ด์ œ ์ด ASP.NET Core 2.0 ์ค‘๋‹จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๊ธฐ์—…์€ ์ง€๋ฃจํ•˜๊ณ  ์•ˆ์ •์ ์ธ ๊ธฐ์ˆ  ์Šคํƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์‹ ์ƒ ๊ธฐ์—…์€ ๊ด€์‹ฌ์„ ๋œ ๊ฐ–๊ณ  Microsoft๊ฐ€ ์–ด๋–ค ๊ทธ๋ฃน์„ ๊ธฐ์˜๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@GiorgioG ๊ธฐ์กด ์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ธฐ์—…์ด ASP.NET Core๋กœ ์ „ํ™˜ํ•˜๋ ค๋Š” ์ด์œ ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒจ์…˜์ด๋‚˜ ๋ญ”๊ฐ€ ๋” ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

@miloush ์ €๋Š” ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ .NET Standard/ASP.NET Core๋กœ ์ฒœ์ฒœํžˆ ์ „ํ™˜ํ•˜์ง€๋งŒ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ๋‚˜์ค‘์— .NET Core์™€ ํ˜ธํ™˜๋˜๋„๋ก ๋ฐฐ์น˜ํ•˜๋ฏ€๋กœ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ „ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜๋ฉด ๊ฑฐ๋Œ€ํ•œ, ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๋ณ€ํ™˜์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๊ธฐ์—…์€ .NET Standard๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฉ‹์ง„ ๋ณด์กฐ์ œ๋ฅผ ์™„์ „ํžˆ ๋งˆ์…”์•ผ ํ•˜๊ฑฐ๋‚˜ ์ „ํ˜€ ๋งˆ์‹œ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@miloush - ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core 1.1๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core 2.0์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์งˆ ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ ๋ฐฐ์— ํƒ„ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ๊ฝค ๋”์ฐํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

@miloush .Net ์ฝ”์–ด๊ฐ€ ๋” ์ƒ์‚ฐ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—(์—ฌ๊ธฐ์„œ ๋ชจ๋“  ๊ธฐ์ˆ  ๋ฐœ์ „์„ ์—ด๊ฑฐํ•˜๊ณ  ์‹ถ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์•„์‹œ๋‹ค์‹œํ”ผ, API/MVC ์ปจํŠธ๋กค๋Ÿฌ, ํƒœ๊ทธ ๋„์šฐ๋ฏธ, ํ˜„์ง€ํ™” ์ง€์›์„ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค) ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ถˆ์—ฐ์†์„ฑ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์€ ์ฆ๋ถ„์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น…๋ฑ… ์—…๊ทธ๋ ˆ์ด๋“œ์ž…๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜๋”๋ผ๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ์ˆ˜ ์—†์—ˆ๋˜ ์Šคํƒ€ํŠธ์—…์—๊ฒŒ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์œ ์‚ฐ์ด ์—†์œผ๋ฉฐ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@popcatalin81 - ์ด ๋ชจ๋“  ์š”์ ์€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋„ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ํ•˜๋‚˜์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ํ•˜๋‚˜์™€ ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ์†๋„์ž…๋‹ˆ๋‹ค. ์ €๋Š” MS๊ฐ€ ๋งˆ์ดํฌ๋กœ- ๋ฒค์น˜๋งˆํฌ ์ฐจํŠธ์—์„œ ์ข‹์•„๋ณด์ด๋˜ ์„œ๋น„์Šค ํ”„๋ ˆ์ž„์›Œํฌ์— ์ง‘์ฐฉ์ด ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค์Œ์„ ์‹œ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

"3๊ฐœ์˜ ๋Ÿฐํƒ€์ž„, ํ•˜๋‚˜์˜ ํ‘œ์ค€โ€ฆ .NET Standard: Visual Studio 2017์˜ ๋ชจ๋“  ๊ฒƒ"

Build https://channel9.msdn.com/ ์—์„œ 45๋ถ„ ๋™์•ˆ ๋‘ ๋ช…์˜ Scott๊ณผ ํ•จ๊ป˜ ์–ธ๊ธ‰ํ•  ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@adrianlmm ๊ด€๋ จ์ด ์žˆ์ง€๋งŒ ์—„๋ฐ€ํžˆ ๊ด€๋ จ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค koolaid๋ฅผ ์•„์ง ๋งˆ์‹œ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ์—„์ฒญ๋‚œ ๋ณต์žก์„ฑ(๋นŒ๋“œ/๋ฐฐํฌ/์šด์˜/๋ฌธ์ œ ํ•ด๊ฒฐ ๋“ฑ)์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํšŒ์‚ฌ๋Š” ์ด๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํšŒ์‚ฌ์—์„œ ์ถ”๊ฐ€๋œ ์šด์˜ ๋ณต์žก์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?). ์ €๋Š” ๋ชจ๋‘ ์ œํ•œ๋œ ์ปจํ…์ŠคํŠธ๋ฅผ ์ง€์ง€ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด 50๊ฐœ์˜ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋น„๋‚œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค(์ž‘์€ ๊ฒƒ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค). ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ํ™•์‹คํžˆ ์ƒ๋Œ€๋ฐฉ์„ ๋ณ€ํ˜ธํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ASP.NET Core๊ฐ€ .NET Framework๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•œ๋‹ค๋ฉด ์ •๋ง ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

RTM๊ณผ ์ƒˆ๋กœ์šด ํˆด์ฒด์ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์€ ์ง€ 6๊ฐœ์›”์ด ์ง€๋‚œ ์ง€๊ธˆ, ๋ณ€ํ™”์™€ ๋ถˆํ™•์‹ค์„ฑ์ด ๋ฌธ์ œ์ธ ๋Œ€๊ธฐ์—…์ด ์–ด๋–ป๊ฒŒ ๊ทธ ์ƒํ™ฉ์— ๋น ์ง€๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@miloush ์šฐ๋ฆฌ๋Š” 1๋…„ ๋„˜๊ฒŒ ".NET Core๊ฐ€ ์•ˆ์ •ํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." ์–ด๋–ค ์‹œ์ ์—์„œ ์‚ฌ๋žŒ๋“ค์€ ์‹ค์ œ๋กœ ์‹œ์ž‘ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ;)

@milush ๊ทธ๋“ค์€ ASP.NET Core์˜ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ .NET ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณต์‹์ ์œผ๋กœ๋Š” .NET๊ณผ .NET Core ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ๊ฐ‘์ž๊ธฐ ๋งค์šฐ ๋‚˜์œ ์ƒํ™ฉ์— ๋†“์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ASP.NET Core ๋ฒ„์ „ 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†๊ณ  ๋ฒ„์ „ 1.x์—์„œ ๋ฉˆ์ถ”๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ 1.x์— ๋Œ€ํ•œ ์ง€์›์ด ๊ณ ๊ฐˆ๋˜๊ณ  1.x์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋„ ๋‚˜์˜ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@GiorgioG , ์ง€๊ธˆ๊นŒ์ง€ ์ƒˆ ํ”„๋กœ์ ํŠธ์— .Net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ Full Framework์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ Asp.Net ์ฝ”์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ™œ์„ฑ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

Net Core๋ฅผ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์‹ค ์•„์ง ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค! ๊ทธ๊ฒŒ ๋ฌธ์ œ์•ผ. ํ—›๋œ ์ƒ๊ฐ์€ ์ ‘์–ด๋‘๊ณ  ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด์•ผ์ง€...

@MartinJohns ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜‘๊ฐ™์€ ์ƒํ™ฉ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ ๊ทธ๊ฒƒ์ด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šฐ๋ฆฌ์˜ ๋‹ค๊ฐ€์˜ค๋Š” ํ”„๋กœ์ ํŠธ์— ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  pact-net-core ๊ฐ€ ๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

ASP.NET Core ๋ฐ MVC๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ASP.NET Core MVC์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” .NET์˜ ๋ฒ ํŠธ๋‚จ์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋‹ดํ•œ ์›€์ง์ž„ Microsoft, ์„ฑ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ๋ด…์‹œ๋‹ค.

ASP.NET Core ๋ฐ MVC๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ASP.NET Core MVC์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ
@shanselman ์ด๊ฒƒ์„ ๊ฒฐ์ •ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์„ ๋งํ•˜๋Š” ๊ณต๊ฐœ ๋ฐœํ‘œ/๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

.NET Framework์˜ ASP.NET Core 1.1์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ์ด๋ฅด๋ €๋‹ค๊ณ  ํ•ด์„œ ๊ธฐ์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „ ASP.NET์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

Scott์€ ์ง€๊ธˆ Build์™€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด ์—ฐ์„ค ์ค‘์ด๋‚˜ ์งํ›„์— ์†Œ์‹์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ƒ์ค‘๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://channel9.msdn.com/?wt.mc_id=build_hp

๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค @NickCraver

ํ‹ฐํ”ผ์ปฌ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ.
๊ฑฐ์˜ 3-40๋…„ ํ›„์— ๊ทธ๋“ค์€ ๊ดœ์ฐฎ์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ฑฐ์˜ 20๋…„ - ์ˆ˜๋ช…์ด ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์—†์Œ > ๋ฏธ๋ž˜ ํฌ๋ง์ด ์žˆ๋Š” 1๋…„.
๊ทธ๊ฑฐ์•ผ!.
์—„์ง€์†๊ฐ€๋ฝ์„ ์น˜์ผœ์„ธ์›Œ๋„ ์‚ฌ์‹ค์€ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ: ์œ„์˜ 500๊ฐœ ์ด์ƒ์˜ ๋Œ“๊ธ€ ์ค‘ _๋ชจ๋‘_๋Š” ์ฝ์—ˆ์ง€๋งŒ ๋งŽ์ด ์ฝ์ง€๋Š” โ€‹โ€‹์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ €๋ฅผ ์งœ์ฆ๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ MS๊ฐ€ ๊ณ„์† ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๊ณ  "๋ฌด์—‡์ด ๋‹น์‹ ์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌป๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์  ์žฅ, ๋ง์ƒ ๊ทธ๋งŒ! ๐Ÿ˜ก .NET Core๋Š” .NET fx๋ฅผ ๋Œ€์ฒดํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์ด ์•„๋‹ˆ๋ผ 1๋…„ ํ›„์—!

๋‹ค์Œ์€ ์ € (.NET fx์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core 1.1 ํ”„๋กœ์ ํŠธ)๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์„  ์—†์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋ˆ๊ณผ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์—์„œ ์ •๋ง ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • ๋งŽ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค... ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์„ ์€ ์—†์ง€๋งŒ ์‹ค์ œ ํšŒ๊ท€ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • COM API๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ซ์–ดํ•˜์ง€๋งŒ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. @shanselman ์€ .NET fx์—์„œ out of proc ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  "๊ณ ํ†ต์˜ ์„ธ๊ณ„์— ์žˆ๋Š” ๊ฒƒ"์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • EF ๋Š” ๋‚ด๊ฐ€ ์—ฌ์ „ํžˆ fx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ์ด์œ ์ž…๋‹ˆ๋‹ค. MS๋Š” ์ž์‹ ์˜ ์ž๋ฃŒ๋ฅผ ์ง์ ‘ ํ™•์ธํ•œ ๋‹ค์Œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. EF Core๋Š” EF 6์„ ๋Œ€์ฒดํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Oracle DB ๊ณต๊ธ‰์ž๋Š” Core๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ƒ๊ฐ€์ƒ: Oracle Advanced Queues์— ๋Œ€ํ•œ ์ง€์›์ด ์—†๋Š” ๋“ฑ ๋งŽ์€ ์ œํ•œ์ด ์žˆ๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• ๊ณต๊ธ‰์ž๋งŒ Core๋กœ ์ด์‹ํ•  ๊ณ„ํš์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜์—ˆ๊ณ  ์ผ๋ถ€๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(์•„์ง ๋˜๋Š” ์•ž์œผ๋กœ๋„?).

@davidfowl
๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ .NET fx๊ฐ€ ์„œ์„œํžˆ ๊ตฌ์‹์œผ๋กœ ๋ณ€ํ•ด๊ฐ€๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์„ ์ค๋‹ˆ๋‹ค... fx์—์„œ HTTP/2๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ณ„ํš์ž…๋‹ˆ๊นŒ?
์ฃ„์†กํ•˜์ง€๋งŒ ๋งŽ์€ ์ž‘์—…์„ .NET fx๋กœ ์ด์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ”Œ๋žซํผ์€ ์ฃฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. WPF ์•ฑ์—์„œ HTTP/2๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?
๊ฐœ์„  ์‚ฌํ•ญ์ด .NET Core์— ๋” ๋นจ๋ฆฌ ์ „๋‹ฌ๋˜๋Š”์ง€ ๋˜๋Š” ์ผ๋ถ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฐœ์„  ์‚ฌํ•ญ์ด Core ์ „์šฉ์ธ์ง€๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ .NET Core๋Š” ๊ณง .NET fx๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  .NET fx์—์„œ ์›น ์•ฑ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ MS ์ง€์นจ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ(.NET Core์—์„œ๋Š” ๋ถ„๋ช…ํžˆ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—)?

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐˆ๋งํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ(๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค), ์ฃฝ์€ ํ”Œ๋žซํผ์ด ์•„๋‹Œ ์‚ด์•„์žˆ๋Š” ํ”Œ๋žซํผ์— ์žˆ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋Š๋ฆฌ๋”๋ผ๋„ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  ํ•„์š”ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ.

๋˜ํ•œ Microsoft๋Š” ๋‹ค์Œ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

ASP.NET Core 2.0์ด .NET fx 5.0์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์ด๋Š” ์ œ ์‹œ๊ฐ„์— ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ์ž…๋‹ˆ๋‹ค.
.NET 5.0์„ ์ถœ์‹œํ•˜๋Š” ์‹œ๊ธฐ๋Š” ASP.NET Core 2.0๋ณด๋‹ค ํ›จ์”ฌ ๋Šฆ์€ ๊ฒฝ์šฐ์—๋„ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ .NET 4.6์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๋„ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. _๋‚˜์—๊ฒŒ๋Š” ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ์™€ ๋ฏธ๋ž˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค._

ASP.NET Core 2.0์ด .NET Core _only_์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์— ๊ฐ‡ํžŒ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ, ๋‚˜๋Š” fx์—์„œ core๋กœ ๋‹ค์Œ _years_์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ์œ„๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@Kukkimonsuta ๋Š” ์œ„์˜ ์ตœ๊ณ ์˜ ์š”์•ฝ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” Core-on-netfx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฐ์ • ์š”์ธ์€ netstandard compat์œผ๋กœ ์ง„ํ–‰๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ OSS ๋„๊ตฌ ์„ธํŠธ์™€ ํ•จ๊ป˜ EF Core v EF6์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ† ๋ก ์—์„œ ํ•œ ๊ฐ€์ง€ ๋ถˆ์•ˆํ•œ ์ ์€ @davidfowl ๊ณผ ๊ทธ์˜ ์‘๋‹ต์ž๊ฐ€ ์„œ๋กœ "๊ณผ๊ฑฐ ์ด์•ผ๊ธฐ"ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ—๋–ก์ด๊ณ  ์šธ์Œ์— ๋Œ€ํ•œ ๊ทธ์˜ ์‘๋‹ต์€ "์•Œ์•˜์ง€๋งŒ ์ •๋ง๋กœ ํ•„์š”ํ•œ API๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋Œ€ํ™”์˜ ์ดˆ์ ์„ ๋‹ค์‹œ ๋งž์ถ”๋ ค๋Š” ์นญ์ฐฌํ•  ๋งŒํ•œ ์‹œ๋„์ด์ง€๋งŒ, ๊ทธ๋Š” (๋ฌด์˜์‹์ ์œผ๋กœ) ์ค‘์š”ํ•œ ๋ฌธ์ œ๋ฅผ ์ˆจ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์˜ (๋ฐ @shanselman ์˜) ๋‹ค๋ฅธ ์‘๋‹ต์€ ์ด๊ฒƒ์ด ASP.NET Core๊ฐ€ "๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š”" ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ์นญ์ฐฌํ•  ๋งŒํ•œ ๋ชฉํ‘œ์ด์ง€๋งŒ, ๋˜ ๋‹ค์‹œ ํ•ต์‹ฌ ๋ฌธ์ œ๋ฅผ ์€ํํ•ฉ๋‹ˆ๋‹ค. (๋‘ ๊ฐ€์ง€ ์ˆจ๊ฒจ์ง„ ๋ฌธ์ œ ๋ชจ๋‘ ์ผ๋ฐ˜์ ์œผ๋กœ OSS์˜ ํ•ต์‹ฌ "์€ํ๋œ ๋ฌธ์ œ"์ธ ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.)

@MisterGoodcat ์ด ๊ฒฉ์ฐจ๋ฅผ ์ขํžˆ๋ ค๋Š” ์‹œ๋„์—์„œ ์ฃผ์žฅํ•  ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์‹ฌ๋ฆฌ์ /๊ฐ์ •์  ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. @GiorgioG ๋Š” "๋ถˆํ™•์‹ค์„ฑ"์ด "๋Œ€๊ธฐ์—…"์ด ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋ฉด์„œ ๋ชฉํ‘œ์— ๋” ๊ทผ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ๋น„์šฉ ์ž…๋‹ˆ๋‹ค. ๋ถˆํ™•์‹ค์„ฑ์œผ๋กœ ์ธํ•œ ๋น„์šฉ๊ณผ ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ. ์ด๋Š” "๋Œ€๊ธฐ์—…"๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ธˆ์ „์ ์ธ ์ธก๋ฉด์—์„œ๊ฐ€ ์•„๋‹ˆ๋ผ(์„ ๋ถˆ) ์‹œ๊ฐ„, ์ŠคํŠธ๋ ˆ์Šค, ๋”ฐ๋ผ์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์‹ ์†ํ•˜๊ณ  ์ž์‹  ์žˆ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ(์˜ˆ)์ด ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

" ์–ด๋–ค ๋ˆ„๋ฝ๋œ API๊ฐ€ ์ •๋ง๋กœ ํ•„์š”ํ•œ๊ฐ€์š”? "์— ๋Œ€ํ•œ ๋„์ „๊ณผ์ œ ์‘๋‹ต์„ ๋‹ค์‹œ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ์ƒ๋‹นํ•œ ํ”„๋กœ์ ํŠธ ๋„๊ตฌ ์ฒด์ธ์„ ํ†ตํ•ด ๊ทธ ์งˆ๋ฌธ์„ ์ถ”์ ํ•˜๊ณ  ์•„๋งˆ๋„ ์ œ3์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋˜๋Œ์•„๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๊ฒƒ๋งŒ ์œผ๋กœ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋น„์šฉ์„ ๊ณ ๋ คํ•˜๊ธฐ ์ „์— ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค.

" ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๊ธฐ "๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋ชจ๋“  "์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ" ๋•Œ๋งˆ๋‹ค ๊ฐœ๋ฐœ์ž๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ ์ง์—…๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ํ•™์Šต/์‚ฌ์šฉ ์ฐจ์ด๋ฟ ์•„๋‹ˆ๋ผ ํ•™์Šต ๊ณก์„ ๊ณผ ์ƒˆ๋กœ์šด ์ธ์žฌ๋ฅผ ์ฐพ๊ณ  ํ›ˆ๋ จํ•˜๋Š” ๋น„์šฉ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์˜ค๋ž˜๋˜๊ณ  ์ด์‹ํ•  ์ˆ˜ ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์˜ "์—ฃ์ง€ ์ผ€์ด์Šค"๊ฐ€ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ผ๋ถ€์˜ ํƒœ๋„์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ˆ„๊ตฌ๋‚˜ ๊ฐ‡ํžˆ๊ณ  ์‹ถ์€ ๊ณณ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ดํ•ด ๊ด€๊ณ„์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ์˜ ์ผ์ •์— ๋”ฐ๋ผ ์งŠ์–ด์ ธ์•ผ ํ•˜๋Š” ๋น„์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค .

์ด์ œ ์ด๋Ÿฌํ•œ ๋น„์šฉ์ด ์‚ฌ์†Œํ•˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ์ด ์ž‘์—… ๋ผ์ธ์—์„œ ๋น„์šฉ์„ ์•Œ๊ณ  ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค, .NET Core๋กœ์˜ ์ด๋™์ด๋ผ๋Š” ์ธก๋ฉด์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ฐ•์ œ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์˜ณ์€ ์ผ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ:

  • ์ด๋ฅผ ์ถ”์ง„ํ•˜๋ฉด ์ ๊ทน์ ์œผ๋กœ ์›€์ง์ด๊ณ  ๊ธฐ์ˆ ์  ๋ถ€์ฑ„(์ด๋™ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ)๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ์ธก๋ฉด์—์„œ ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์ด ํ•จ๊ป˜ ์ผํ–ˆ๋˜ "์ƒ๊ฐ ์ผ์ •"(๋•Œ๋กœ๋Š” ๋ช‡ ๋…„ ๋™์•ˆ)์ด ๋ฌด๋„ˆ์กŒ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฒƒ์ด ์ถ”์ง„๋˜๋Š” ๋ฐฉ์‹("์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ์ž์‹ ์˜ ์ด์ต์„ ์œ„ํ•ด ์ด ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.")์€ ๋ฏธ๋ž˜์˜ ์•ˆ์ •์„ฑ์— ์ข‹์ง€ ์•Š์€ ์ง•์กฐ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์— ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์–ด๋–ค ๊ฒฐ์ •์ด ๋‚ด๋ ค์งˆ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@shanselman ์ด ์˜คํ”ˆ ์†Œ์Šค ASP.NET ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ €๋Š” Vegas์˜ ๊ธฐ์กฐ ์—ฐ์„ค์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ MS๋Š” OSS ์ชฝ์œผ๋กœ๋งŒ ๋‚˜์•„๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ํ•ญ์ƒ ์งˆ๋ฌธ๊ณผ ํ•จ๊ป˜ ์™”์Šต๋‹ˆ๋‹ค. OSS์˜ ์žฅ์ ๊ณผ ํ•จ๊ป˜ "๋‚˜์œ ๊ฒƒ"๋„ Microsoft ์œค๋ฆฌ์— ์Šค๋ฉฐ๋“ค๊นŒ์š”? ๋‹ค์‹œ ๋งํ•ด์„œ, ์šฐ๋ฆฌ๊ฐ€ ์–ป๋Š” ๊ฒƒ๊ณผ ๊ตํ™˜ํ•˜์—ฌ ์žƒ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ์ œ์ณ๋‘๊ณ : ์ด ์›€์ง์ž„์ด ๋ชจ๋“  ๋„๊ตฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹ค์ œ๋กœ netfx ์—์„œ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” "๋ฐ”์ง€ ํ‚ฅ"์ด ๋  ๊ฒƒ์ด๋ผ๋Š” @markrendle ์˜ ์•„์ด๋””์–ด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ํƒ€์ž„๋ผ์ธ์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „ M.0์ด ์ผ๋ฐ˜์ ์œผ๋กœ .NET Core์— ASP.NET Core๋ฅผ ํก์ˆ˜ํ•˜๋Š” N๋…„ ๋ฒ„์ „ ์ฃผ๊ธฐ์— ๋Œ€ํ•œ ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด "๊ณ ์ •"์œผ๋กœ ์ถฉ๋ถ„ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” (๋งํ•˜์ž๋ฉด) ๋‚ด๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ๋„๊ตฌ์˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์— ๋Œ€ํ•ด ๊ทธ๊ฒƒ์„ ํœ˜๋‘๋ฅด๋Š” ์ตœ์ดˆ์˜ ์‚ฌ๋žŒ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ด ๋ฐœํ‘œ์™€ ํ•จ๊ป˜(๊ทธ๋ฆฌ๊ณ  ๋ถ€์ •์ ์ธ ๋ฐ˜์‘์— ๋Œ€ํ•œ ๋ฐ˜์‘์„ ๋ณด๊ธฐ ์œ„ํ•ด ์ˆจ์„ ๋“ค์ด์‰ฐ ํ›„) ํŠนํžˆ ASP.NET(MVC ๋˜๋Š” Core)์— ์ค‘์ ์„ ๋‘” ๋„๊ตฌ๋Š” ์ด์ œ netstandard ์— ๋Œ€ํ•œ ๊ฑฑ์ •์„ ์—†์• ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. compatํ•˜๊ณ  .NET Core๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜์—ฌ .NET ํ™˜๊ฒฝ์„ ๋”์šฑ ์„ธ๋ถ„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ .NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://www.microsoft.com/net/core/preview

Asp.net ์ฝ”์–ด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์˜ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์ฝ์–ด๋ณด๋ฉด Full .Net ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๋น„ํŠธ ๋‹จ์œ„๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚ด ๋‘๋ ค์›€ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

MS Build ํ† ํฌ์˜ ๊ฑฐ์˜ ์ง์ ‘์ ์ธ ์ธ์šฉ๋ฌธ: "NuGet์˜ ๋ชจ๋“  ๊ฒƒ ์ค‘ 70%๋Š” .NET Standard 2 API์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  WinForms ๋ฐ WPF์™€ ๊ฐ™์€ ๊ฒƒ์ด ์•„๋‹Œ ์œ ์ผํ•œ ๊ฒƒ์€ ๋ชจ๋“  ํ”Œ๋žซํผ์— ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. . ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ์ปดํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค."

์ด๊ฒƒ์€ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@PabloAlarcon ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์ฐพ๊ณ  ์žˆ๋Š” ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค:

https://github.com/aspnet/Mvc/commit/1c5e4176069ea20671e1738ac599e544633f47ce

ํ”Œ๋žซํผ ๋Œ€์ƒ์œผ๋กœ net46 ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

-    <TargetFrameworks>net46;netstandard1.6</TargetFrameworks>
+    <TargetFramework>netcoreapp2.0</TargetFramework>

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ด ๋ณ€๊ฒฝ์„ ์›ํ–ˆ๋˜ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

-    <TargetFrameworks>net46;netstandard1.6</TargetFrameworks>
+    <TargetFramework>netstandard2.0</TargetFramework>

์˜ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐฉ๊ธˆ ๊ฒŒ์‹œ๋œ Preview 1์˜ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0.0-preview1.md

@PabloAlarcon ๋‚ด ์ƒ๊ฐ์— ์—ฌ๊ธฐ์—์„œ ๋” ํฐ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์˜์‚ฌ ์†Œํ†ต์˜ ์™„์ „ํ•œ ๋ถ€์กฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Build์˜ ์—ฐ์‚ฌ์กฐ์ฐจ๋„ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ •๋ณด/ํ†ต๊ณ„๋ฅผ ์ธ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋ชจ๋‘ ๋Œ€๋ถ€๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ netstandard2.0 ์™€ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๊ณณ์—์„œ(๊ฒฐ๊ตญ) ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ์ด ๋ณ€๊ฒฝ์€ ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ MVC ๋ฐฉํ–ฅ์œผ๋กœ ์ˆจ์‰ฌ๋Š” ๊ฒฝ์šฐ .NET Core ๋Ÿฐํƒ€์ž„ ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ASP.NET Core 2 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ .NET Core 2 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฆด๋ฆฌ์Šค ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ https://github.com/aspnet/home/releases/2.0.0-preview1 ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ์•Œ๋ ค์ง„ ๋ฌธ์ œ์™€ ์ฃผ์š” ๋ณ€๊ฒฝ ๋ชฉ๋ก์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๊ฑฐ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์—†๋Š” github ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ๋‚˜์œ, ๋‚˜๋Š” ๋‘ ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋‘ ์ฝ์—ˆ์ง€๋งŒ .net ํ•ต์‹ฌ ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋™์ผํ•œ, ์•„๋ฌด ์–ธ๊ธ‰๋„ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@marcrocny ๋‹น์‹ ์€ ๋‚ด๊ฐ€ "๋ฌด์Šจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ?"๋ผ๊ณ  ์ƒ๊ฐํ•œ ์ด์œ ๋ฅผ ํ›จ์”ฌ ๋” ์ž˜ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์งˆ๋ฌธ์€ ๋‚ด๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ค์ œ ๋ฌธ์ œ์—์„œ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ƒˆ๋กญ๊ณ  ๋ฐ˜์ง์ด๋Š” ํ”„๋ก ํ† ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๊ฐ„ ๋‚ด์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ณ  ์•ˆ์ •์ ์ด๊ณ  ๋” ์ค‘์š”ํ•˜๊ฒŒ๋Š” ์ž ์‹œ ๋™์•ˆ ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

10๋‹ฌ๋Ÿฌ๋Š” HTTP2๊ฐ€ ์™„์ „ํ•œ .Net์œผ๋กœ ์˜ค์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

ASP.Net Core์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ํฌํฌ๊ฐ€ ํ•„์š”ํ•œ ๋•Œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ASP.NET Core๋กœ ์ „ํ™˜ํ•œ ์ด์œ ์— ๋”ฐ๋ผ ์ „์ฒด .NET Framework ๋ฐ NancyFX ๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ถ€ ์˜ต์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@dbus0 ๋ฌธ์ œ๋Š” Microsoft ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์‹ ์„ฑํ•œ ์ถ•๋ณต๋ฐ›์€ ๋•…์„ ๋– ๋‚˜๋ฉด ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ์ž‘์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—์ฝ”์‹œ์Šคํ…œ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ASP.NET๊ณผ ๋น„๊ต)

์›น์šฉ ASP.NET์„ ๋ฒ„๋ฆฌ๋ ค๋Š” ๊ฒฝ์šฐ .NET์ด ์•„๋‹Œ ๊ธฐ์ˆ  ์Šคํƒ IMO๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ aspnet core 2.0์—์„œ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ๋ถ„, ๋‹น์‹ ์€ ํ•œ๋•Œ ์•„๋ฆ„๋‹ค์› ๋˜ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฃฝ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET์„ ๊ด€๋ฆฌํ•˜๋Š” linuxesque ๋ฐฉ์‹์€ ๋ชจ๋“  ๊ฒƒ์„ ๊ฑฐ๋Œ€ํ•œ ํ•ดํ‚น์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MS-dev์˜ ๋ชจ๋“  ๊ฒƒ์ด ์•„๋งˆ์ถ”์–ด์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์—ฐ๊ฒฐ์ด ๋Š์–ด์ ธ ๋ชจ๋“  ํŒ€/์ œํ’ˆ์ด ๋‹จ๋…์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฒ ํƒ€์˜ ๋ชจ๋“  ๊ฒƒ, InProgress์˜ ๋ชจ๋“  ๊ฒƒ, ํฐ ๊ฑฐ์ธ์ด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณด์ž, ๋†๋‹ด์„ ํ•˜๊ณ , ์•„์ง ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ธฐ๋กœ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค..., ๊ทธ๊ฒŒ ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์š”? ์™œ์š” ? ๋“ฑ๋“ฑ. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋Ÿฐ ๊ฒƒ์„ ์›ํ–ˆ๋‹ค๋ฉด PHP์™€ Linux์— ํˆฌ์žํ•˜์—ฌ ํŒจํ‚ค์ง€ Z๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ X๊ฐ€ ์ปค๋„ Y์™€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”์ง€ ํ† ๋ก ํ•˜๋Š” ์žฌ๋ฏธ๋ฅผ ๋Š๊ผˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฌ๋ฏธ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํŒ€์ด "๋” ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ธฐ", "๊ธฐํšŒ ํƒ์ƒ‰ํ•˜๊ธฐ" ๋“ฑ๊ณผ ๊ฐ™์€ ๋งˆ์ผ€ํŒ… ๋งŒํŠธ๋ผ ๋’ค์— ์ˆจ๋Š” ๊ฒƒ์ด ์‹ซ์Šต๋‹ˆ๋‹ค. ๊ฐ€์งœ ๊ธฐ์ˆ ์  ์ด์œ  ๋’ค์— ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ๋งŒ ์ˆจ๊ธฐ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„ ๊ณณ๊ณณ์—์„œ "์ด๊ฒƒ์€ ์˜คํ”ˆ ์†Œ์Šค์ž…๋‹ˆ๋‹ค - ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜์„ธ์š”"๋ผ๋Š” ๋‹ต๋ณ€์„ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐ”๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ๋งŽ์€ MS ๊ธฐ์ˆ , ํŠนํžˆ ๊ทธ๊ฒƒ์ด ์–ด๋””๋กœ ๊ฐ€๊ณ  ์žˆ๊ณ  ๊ทธ ์ด์œ ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋Š” .NET Core๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ๋งค์šฐ ํ™”๊ฐ€ ๋‚ฌ์ง€๋งŒ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „์˜ ๊ด‘๊ธฐ ๋ฐ .NET Core์˜ ๋ชจ๋“  ์ˆ˜์ค€ ๋ฐ ๊ฐœ๋ฐœ ์ƒํƒœ(ASP.NET Core๊ฐ€ RC์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๊นŒ? ์•„ ์ œ๋ฐœ...)์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊นจ๋Š” ๊ฒƒ์ด์ง€๋งŒ ์‚ฌ์‹ค์€ ๊ฐœ๋ฐœ์ž์ด์ž ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ์šฉ์ž๋Š” Core 1.0์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด Core 1.1์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๋์—†๋Š” ํ† ๋ก ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ํšŒ์‚ฌ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Core์— ํˆฌ์žํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๊ฑฐ๋‚˜ ๊ฒฐ์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. 2.0์—๋งŒ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ... ๋ฌด์—‡? ๋†๋‹ดํ•˜๋Š”๊ฑฐ์•ผ?

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋Šฆ์€ ์‹œ๊ฐ„์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋‚˜ ๊ธฐ๋Šฅ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‚ด๊ฐ€ ๋ณธ ์ตœ์•…์˜ ํ–‰๋™์œผ๋กœ ์ผ์„ ๋‹จ๋ฝ์‹œํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด XYZ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง€์‹œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด๋ฅธ ๊ณ„ํš์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์–ด๋–ค ์ด์œ ๋กœ๋“  ๋ถˆ์šด์ž…๋‹ˆ๋‹ค. v8.0 ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  v8.0์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ v1.0์„ "์ง€์›"ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์šฐ๋ฆฌ์˜ ์ง€์›์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ถ์ด ํž˜๋“ค๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๊ณ  ๋งํ•  ๋•Œ ๋“ฑ์„ ๋‘๋“œ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ง€๋‚œ 2๋…„ ๋™์•ˆ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ MS ๊ธฐ์ˆ ์„ ๋–จ์–ด๋œจ๋ ธ๋Š”์ง€ ๋ฏฟ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 1998๋…„ ์ดํ›„๋กœ Microsoft ๋งค์žฅ์ด ๋œ ์ดํ›„๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์  ์žฅ, ์šฐ๋ฆฌ ์ง€์—ญ์—์„œ๋Š” ".NET ์ œํ’ˆ" ๋˜๋Š” "Windows ์ œํ’ˆ"์ผ ๋•Œ ํ•ญ์ƒ ๊ณ ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Windows -> ์ „ํ™”) ํ•˜์ง€๋งŒ ์˜ค๋Š˜๋‚  ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ ์„ ์„ ํƒํ•ด์•ผ ํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•ด์„œ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ œ์ •์‹ ์ธ์ง€ ํ•ญ์ƒ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ™•์‹คํžˆ, ์ด ๊ธ€์„ ์ฝ๊ณ  ๋‚˜๋ฉด .NET Core์— ๋Œ€ํ•œ ๋ชจ๋“  ํˆฌ์ž๋Š” ์ตœ์†Œํ•œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ๋•Œ๊นŒ์ง€ ์ค‘๋‹จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Core 1.1์ด 2.0๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ์—๊ฒŒ ์™œ ์ด๊ฒƒ์ €๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์˜์ง€๋‚˜ ์‹œ๊ฐ„์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜์ง€๋งŒ "OLD"๊ฐ€ 3๊ฐœ์›” ์ „์— ๋ฆด๋ฆฌ์Šค๋œ ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ "์ด์ „" ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ์œ ์ง€ ๊ด€๋ฆฌ(MAYBE)๋˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์ œ๊ณต๋˜์ง€ ์•Š๋Š” "์ด์ „" ๋ฒ„์ „ ๋•Œ๋ฌธ์— ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์šฐ๋ฆฌ๋กœ ํ•˜์—ฌ๊ธˆ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ์žฌ๊ณ ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์žฌ๊ณ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ Windows๋ฅผ ์žฌ๊ณ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Windows๋ฅผ ์žฌ๊ณ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ Microsoft๊ฐ€ ํ•„์š”ํ•œ์ง€ ์žฌ๊ณ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. vNext์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ  vCurrent์™€ ๋น„๊ตํ•˜์—ฌ vNext์™€ ํ˜ธํ™˜๋˜๊ธฐ ์œ„ํ•ด ๋ฒ ํƒ€ ๋˜๋Š” ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด GitHub ๋˜๋Š” ์ผ๋ถ€ ๋ชจํ˜ธํ•œ ํฌ๋Ÿผ์„ ๋’ค์ง€๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ํ˜„ ๋‹จ๊ณ„์—์„œ ์˜๋ฏธ๊ฐ€ ์—†์ง€๋งŒ ์ตœ์ข…์ ์ด์ง€ ์•Š์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์œ„ํ—˜์ด๋ฉฐ ๋ช‡ ๋‹ฌ ํ›„์— ๋‹ค์‹œ ์ด ๊ด‘๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ "๋ฏผ์ฒฉํ•œ" ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋งŽ์€ ์ž์œ  ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ์•„์ด๋“ค์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•ญ์ƒ ๋‚ด๊ฐ€ ๊ฒŒ์ด์ธ ๋ฅผ ๊ทธ๋ฆฌ์›Œํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ ๋ฐœ๋จธ๋„ ๊ทธ๋ฆฌ์›Œํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž˜ํ–ˆ์–ด, ์–˜๋“ค์•„.

์ œ ์ƒ๊ฐ์—๋Š” .NET Core๋กœ ์™„์ „ํžˆ ์ „ํ™˜ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฆ…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋งŽ์€ ํƒ€์‚ฌ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ˜„์žฌ .NET Core๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NServiceBus๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ASP .NET Core 3๊นŒ์ง€ .NET Framework๋ฅผ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค...

๊ณต์‹(๊ด€๋ จ) ๋ฐœํ‘œ
https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/

1ํ˜ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

์ด ASP.NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์€ .NET Core 2.0 SDK๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด .NET Core, Mono ๋ฐ .NET Framework์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก .NET Standard 2.0์— ASP.NET Core 2.0์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒ€์ด ๋นŒ๋“œ ์ „์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋™์•ˆ ASP.NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ .NET Standard 2.0 ์™ธ๋ถ€์— ์žˆ๋Š” API๋ฅผ ํ™œ์šฉํ•˜์—ฌ .NET Framework์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” .NET Framework์—์„œ ASP.NET Core 1.x ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ASP.NET Core 2 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 1์ด .NET Core๋งŒ ์ง€์›ํ•˜๋„๋ก ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ๋ฐฑํŽ˜๋‹ฌ๋ง.

.NET Framework๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ๊ณผ "์ •๋‹นํ™”"๋Š” ๋‹จ์ง€ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์„œ๋„ ๋งˆ์Œ์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœํ‘œ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉ...

@benaadams

์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด .NET Core, Mono ๋ฐ .NET Framework์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก .NET Standard 2.0์— ASP.NET Core 2.0์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ Eastasia์™€ ์ „์Ÿ์„ ํ•ด์™”๋‹ค"

์œ„์•ˆ์ด ๋˜์ง€๋งŒ ์œ„์˜ ๊ณต์‹ ASP.NET Core ํšŒ์›์˜ ์ผ๋ถ€ ๋Œ“๊ธ€์€ _๋งค์šฐ_ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

.NET ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ด€๋ จํ•˜์—ฌ ASP.NET Core์˜ ์ค‘๊ธฐ์  ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๊ณต์‹ ์„ฑ๋ช…์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

MS๋Š” netstandard์™€ ํ˜ธํ™˜๋˜๋Š” ASP.NET Core๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
ASP.NET Core 2.0 ๋ฆด๋ฆฌ์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ(4.7์ผ ํ•„์š”๋Š” ์—†์Œ).

์—ฌ๊ธฐ์—์„œ ๋จธ๋ฆฌ์•„ํ”ˆ ์ƒํ™ฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์‹ญ์‹œ์˜ค. ๋ฌด์Šจ ์ผ ์ด์•ผ ? :์ƒ๊ฐ:

๋ฉ‹์ง„ ๋ฐฑํŽ˜๋‹ฌ๋ง.

.NET Framework๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ๊ณผ "์ •๋‹นํ™”"๋Š” ๋‹จ์ง€ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๊นŒ?

์ด๋ด, ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฐ์‹œ๊ธฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋“ค์€ ASP.NET Core๊ฐ€ ๋ฌด์—‡์ด์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋น„์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ณ  ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์œผ๋ฉฐ ํ”ผ๋“œ๋ฐฑ์„ ๊ฒฝ์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ASP.NET ํŒ€ ๐Ÿ‘

@davidfowl

.NET Framework์—์„œ ๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์–ธ์ œ์ž…๋‹ˆ๊นŒ?

.Net Framework 4.6์—์„œ๋Š” ๋‘˜ ๋‹ค. ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด .Net Framework 4.7 ๋’ค์— ์žˆ๊ณ  2๋…„์ด ์ฑ„ ๋˜์ง€ ์•Š์€ ๋งˆ์ด๋„ˆ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด๊ณผ ๋ฐฐ์—ด์ด .Net Framework์—์„œ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@JamesNK

๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๊ณ , ํ”ผ๋“œ๋ฐฑ์„ ๊ฒฝ์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฒƒ์ด์—ˆ๋‹ค? ํ”ผ๋“œ๋ฐฑ ์ค‘ ์ ์–ด๋„ ์ผ๋ถ€๋Š” ๋ถˆ์ถฉ๋ถ„ํ•œ ์˜์‚ฌ์†Œํ†ต์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” MS์˜ ์‚ฌ๋žŒ๋“ค์ด ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ•œ ๊ฐ€์ง€๋ฅผ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ๋” ์ตœ๊ทผ์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋‚˜ ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ ์–ด๋„ MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์— ๋‚˜ํƒ€๋‚˜์„œ ASP.NET 2.0์— ๋Œ€ํ•œ ๋งˆ์Œ์„ ๋ฐ”๊ฟจ๊ณ  .Net Framework๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ฐจ๊ธฐ ๋ฒ„์ „์„ ์œ„ํ•œ ํ…Œ์ด๋ธ”์— ์•„์ง ๋‚จ์•„ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ธธ ๊ธฐ๋Œ€ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋” ๋งŽ์ด (๋˜๋Š” ์‹ค์ œ ์ƒํ™ฉ์ด ๋ฌด์—‡์ด๋“ ) ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ ์–ด๋„ MS์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์— ๋‚˜ํƒ€๋‚˜์„œ ASP.NET 2.0์— ๋Œ€ํ•œ ๋งˆ์Œ์„ ๋ฐ”๊ฟจ๊ณ  .Net Framework๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ฐจ๊ธฐ ๋ฒ„์ „์„ ์œ„ํ•œ ํ…Œ์ด๋ธ”์— ์•„์ง ๋‚จ์•„ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ธธ ๊ธฐ๋Œ€ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋” ๋งŽ์ด (๋˜๋Š” ์‹ค์ œ ์ƒํ™ฉ์ด ๋ฌด์—‡์ด๋“ ) ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์˜ ๋ฐฉ์–ด์—์„œ(๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ „ํ˜€ ์ž˜ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค), ์ „์ฒด ํŒ€์€ ๊ฑฐ์˜ ๋นŒ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ณง ์—ฌ๊ธฐ์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋“ฃ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉฐ์น  ๋งŒ์— ์ด ๊ฒฐ์ •์œผ๋กœ ์ธํ•ด ์•„๋ฌด๋„ ์‚ถ์ด ๋ฐ”๋€Œ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ด, ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฐ์‹œ๊ธฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ €๋Š” ์˜ค๋Š˜๊ณผ ์–ด์ œ ํŒ€๊ณผ ์œ ์‚ฌ ์œ„๊ธฐ ๋ชจ๋“œ์—์„œ ์ด๊ฒƒ์ด ํ–ฅํ›„ 12๊ฐœ์›” ๋™์•ˆ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฏธ์น  ์˜ํ–ฅ๊ณผ ๊ธฐ์ˆ  ์ „๋žต์˜ ๋ณ€ํ™”์— โ€‹โ€‹๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์ง€๋งŒ "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!"๋ผ๋Š” ๋ง๋งŒ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ณ€ํ™”๋ฅผ ํ™˜์˜ํ•˜๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ท€๋ฅผ ๊ธฐ์šธ์ธ ๊ฒƒ์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฑฐ์‹œ๊ธฐ๊ฐ€ ๋˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— _ํ™”๊ฐ€ ๋‚ฌ_์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” .NET Core์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฌธ์ž์—ด์„ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ utf8๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ˜๋งŽ์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋”ฐ๋ผ์˜ค์„ธ์š”).
์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด/๋ฌธ์ž์—ด์˜ ์ €๋ ดํ•œ ์กฐ๊ฐ, ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ŠคํŒฌ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค๋ฒ„ํผ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด. String ๋ฐ Array๊ฐ€ 0 ํ• ๋‹น์ด ํ•„์š”ํ•œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋งค๋ฒˆ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š” ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜๋Š” String์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
์ด๋กœ ์ธํ•ด Span์„ ์‚ฌ์šฉํ•˜๋Š” Int, UInt ๋“ฑ(TryParse)์— ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.๋ฐ ์ŠคํŒฌ.
์ด๊ฒƒ์€ Span์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธ์ฝ”๋”ฉ ๋ฃจํ‹ด์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค..
์™„์ถฉ๊ธฐ๋ฐ ์ŠคํŒฌ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ท ์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  Span์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ๋ฆฌ ๊ณ ์ •๋œ ๋ฒ„ํผ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํ‚น ์Šคํƒ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.๋˜๋Š” ๋ฒ„ํผ.
Kestrel์€ 2.x ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„(ํ˜„์žฌ 2.1์„ ๋ชฉํ‘œ๋กœ ํ•จ)์— HTTP2๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ALPN์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด SSL ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation).
.NET Core์˜ Http ํด๋ผ์ด์–ธํŠธ๋Š” ์ด์ค‘ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ์›น ์†Œ์ผ“์ด ์•„๋‹Œ ๋‹จ์ผ http ์š”์ฒญ์„ ํ†ตํ•ด ์‹œ๊ทธ๋„๋Ÿฌ์—์„œ http๋ฅผ ํ†ตํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ ๋์ ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
HttpClient ๋ฐ System.Net.Http์—์„œ ํ—ค๋” ํŒŒ์„œ ๊ตฌํ˜„์„ ๋ถ„๊ธฐํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค(https://github.com/aspnet/HttpAbstractions/tree/d1d9bceff56cb44a194ae36923ce687e5e353006/src/Microsoft.Net.Http.Headers). .NET Framework์™€ .NET Core๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. .NET Core์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์˜ ๋ณต์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ).
์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐํž ์ƒˆ๋กœ์šด API๊ฐ€ ํ•„์š”ํ•œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋”ฉ ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(https://github.com/dotnet/corefx/issues?q=is%3Aopen+is%3Aissue+ ์ €์ž%3Adavidfowl+label%3Aarea-System.Threading), ์ด๊ฒƒ๋“ค์€ ์ œ๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ์ œ์ถœํ•œ ๊ฒƒ ์ค‘ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

RIP ํ˜„๋Œ€ ํ”Œ๋žซํผ. asp.net ํ•ต์‹ฌ ํŒ€์ด ์œ„์—์„œ ์†”๋ฃจ์…˜์„ ๋ฐ›์€ ๊ฒฝ์šฐ.

์ €๋Š” ์˜ค๋Š˜๊ณผ ์–ด์ œ ํŒ€๊ณผ ์œ ์‚ฌ ์œ„๊ธฐ ๋ชจ๋“œ์—์„œ ์ด๊ฒƒ์ด ํ–ฅํ›„ 12๊ฐœ์›” ๋™์•ˆ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฏธ์น  ์˜ํ–ฅ๊ณผ ๊ธฐ์ˆ  ์ „๋žต์˜ ๋ณ€ํ™”์— โ€‹โ€‹๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์ง€๋งŒ "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!"๋ผ๋Š” ๋ง๋งŒ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ณ€ํ™”๋ฅผ ํ™˜์˜ํ•˜๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ๊ท€๋ฅผ ๊ธฐ์šธ์ธ ๊ฒƒ์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฑฐ์‹œ๊ธฐ๊ฐ€ ๋˜๋ ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜์‚ฌ ์†Œํ†ต์— ํ™”๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ง์„ ๋“ฃ๊ณ  (๊ฒ‰๋ณด๊ธฐ์—) ์ง„๋กœ๋ฅผ ๋ฐ”๊พผ ๊ฒƒ์— ๋Œ€ํ•ด ํ™”๊ฐ€ ๋‚˜์…จ์Šต๋‹ˆ๊นŒ? ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ์ผ์— ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ Microsoft์˜ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ์‹!

์ด๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ utf8 ๋ฌธ์ž์—ด์„ ๋†“์น˜๊ณ  @davidfowl ์ด ์–ธ๊ธ‰ํ•œ ๋‹ค๋ฅธ ์žฅ์ (.NET Core์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ)์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

"ASP.NET Core 2.0์— ๋Œ€ํ•œ .NET ๋ฐ์Šคํฌํ†ฑ ์ง€์› ์—†์Œ" ๊ณ„ํš์ด ๋งˆ์นจ๋‚ด ์ทจ์†Œ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ œ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์„ ๋‚ด์–ด ์ด ์Šค๋ ˆ๋“œ์— ์ฐธ์—ฌํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ์ด๋Š” Microsoft ์ฑ…์ž„์ž๋“ค์ด ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒ์˜ํ•˜๊ฑฐ๋‚˜ ์ผ๋ฐฉ์ ์ธ ๊ฒฐ์ •์ด ์ „์ฒด ์ƒํƒœ๊ณ„์— ๋ฏธ์น˜๋Š” ์‹ค์ œ ์˜ํ–ฅ์„ ์ธก์ •ํ•˜์ง€ ์•Š๊ณ ๋Š” ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์ด๋Ÿฌํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ์šฉํžˆ ์ฑ„ํƒํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์ž์˜ ์˜๊ฒฌ์€ ๋‹ค๋ฅด์ง€๋งŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ๋ณ€ํ™”์— ๋Œ€ํ•ด ์ง„์ง€ํ•œ ํ† ๋ก ์„ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์—„์ฒญ๋‚œ - ๊ทธ๋ฆฌ๊ณ  ์ „๋ก€ ์—†๋Š” - ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค(150๋ช…์˜ ์ฐธ๊ฐ€์ž์™€ 600๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€, woot!)

์ด๋ ‡๊ฒŒ ํ›Œ๋ฅญํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ทธ ์ผ๋ถ€๊ฐ€ ๋œ ๊ฒƒ์„ ๋งค์šฐ ์ž๋ž‘์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.call_me_hand:

@davidfowl @DamianEdwards @shanselman ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ œ ์‚ถ์„ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋ฉฐ, ์šฐ๋ฆฌ๋Š” ๋” ๋งŽ์€ ๊ฒƒ์ฒ˜๋Ÿผ ์ง€๊ธˆ ๋ถˆํ™•์‹ค์„ฑ ์—†์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณ„ํš์„ ์ถ”์ง„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ASP.NET ํŒ€์— ์ด์ƒ์ ์ด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์ง„์‹ฌ์œผ๋กœ ์ด๊ฒƒ์ด ํ”Œ๋žซํผ์˜ ์„ฑ์žฅ์„ ์œ„ํ•œ ํ˜„์‹œ์ ์—์„œ ์ตœ์„ ์˜ ์กฐ์น˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ์Šค๋ ˆ๋“œ๋Š” ์ƒ์‚ฐ์ ์ด์ง€ ์•Š์€ ๋Œ“๊ธ€์ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋†€๋ผ์šธ ์ •๋„๋กœ ์ž˜ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ, ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋Œ“๊ธ€์ด ์žˆ๋Š” ๋ฌธ์ œ์— ์ž ์‹œ ํ›„์— ์œ ์šฉํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค( @davidfowl , ๋‹น์‹ ์€ ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค).

ํ”Œ๋žซํผ์ด ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋’ค์— ๋‚จ๊ฒจ๋‘๋Š” ํ›จ์”ฌ ์‰ฌ์šด ์˜ต์…˜์ด ๋˜๊ธฐ๋ฅผ ํฌ๋งํ•  ๋•Œ 3.0๊ณผ ํ•จ๊ป˜ ์ด ํ† ๋ก ์„ ํ•˜๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์„ ์„ ๋‹คํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฐ๊ณผ๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ํ•ต์‹ฌ์œผ๋กœ ์˜ฎ๊ธธ ๊ณ„ํš๊ณผ ํ•จ๊ป˜ ์กฐ๋งŒ๊ฐ„ ๋กœ๋“œ๋งต์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ด์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค. :)

๋˜ํ•œ ๋‚ด ์ƒ๊ฐ์„ ๋‚จ๊ธฐ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค... ASP.NET ํŒ€์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์‹ ์†ํ•˜๊ฒŒ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์„ ๋ณด๋‹ˆ ์ •๋ง ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์€ .NET ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ถ๊ทน์ ์œผ๋กœ ๋ชจ๋‘์˜ ๋ฒˆ์˜ํ•˜๋Š” .NET ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ „๋žต์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ฑ„ํƒ์ด ๊ธฐ์กด .NET ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ๋‚˜์˜ฌ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” .NET Core ์ž์ฒด์˜ ์ฑ„ํƒ์€ ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ASP.NET์˜ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ๋ชจ๋ธ๋กœ ๊ณ„์† ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์‹ค์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด ์ž˜๋ชป์ด ์—†์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณต๊ฐœ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OSS์˜ ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ํ”ผ๋“œ๋ฐฑ์„ ์กฐ๊ธฐ์— ์–ป์„ ์ˆ˜ ์žˆ์–ด ํ”„๋กœ์ ํŠธ์˜ ๋ฏธ๋ž˜์™€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ตœ์ƒ์˜ ๊ณผ์ •์— ๋Œ€ํ•ด ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ASP.NET ํŒ€์ด ์—ฌ๊ธฐ์—์„œ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”์‹œ์ง•์ด ํ”„๋กœ์ ํŠธ์˜ ๋ฐฉํ–ฅ, ๋น„์ „ ๋ฐ ๋กœ๋“œ๋งต ๋ชจ๋‘์— ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€, ์–ผ๋ฆฌ ์–ด๋‹ตํ„ฐ์™€ ๊ฐ€์žฅ ์ถฉ์„ฑ์Šค๋Ÿฌ์šด ์ดํ•ด ๊ด€๊ณ„์ž์˜ ์ „๋žต์  ๊ฒฐ์ •์„ ์œ„ํ•œ ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ธฐ๋ณธ ์ œ์•ˆ์„ ์ œ์•ˆํ•  ๋•Œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ฐธ์—ฌ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๊ธฐ์กด ๋ฐ ๋ฏธ๋ž˜ ํˆฌ์ž์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด๊ฐ€ Github์—์„œ ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœํ•œ 9๋…„ ์ค‘ ์ด ์Šค๋ ˆ๋“œ๋Š” ๋‚ด๊ฐ€ ์ฐธ์—ฌํ•œ ๊ฒƒ ์ค‘ ๊ฐ€์žฅ ํ™œ๋™์ ์ธ ์Šค๋ ˆ๋“œ์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ๋Œ“๊ธ€์€ ์‚ฌ๋ ค ๊นŠ๊ณ  ์ •์ค‘ํ•˜๊ฒŒ ๋‚จ์„ ์ˆ˜ ์žˆ์–ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์—ฌ์ „ํžˆ .NET์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” .NET์˜ ๋ฏธ๋ž˜์— ์ข‹์€ ์ง•์กฐ์ž…๋‹ˆ๋‹ค. NET์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ASP .NET Core๋ฅผ ์ฑ„ํƒํ•˜๊ณ  MS๋ฅผ ๋”ฐ๋ผ .NET Standard ๋ฐ .NET Core๊ฐ€ ํ™œ์„ฑํ™”ํ•  ํฅ๋ฏธ์ง„์ง„ํ•˜๊ณ  ๋‹ค๋ฉด์ ์ธ ๋ฏธ๋ž˜๋กœ ๋‚˜์•„๊ฐ€๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์•ž์œผ๋กœ์˜ ํฅ๋ฏธ์ง„์ง„ํ•œ ์‹œ๊ฐ„๋“ค!

Microsoft๋ฅผ ๋“ค์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@davidfowl @DamianEdwards @shanselman ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

ํ™€๋ฆฌ ์†Œ! ๋‚ด๊ฐ€ ๋†“์นœ ๋œจ๊ฑฐ์šด ํ˜ผ๋ž€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒฐ๊ตญ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ป๋“  ๊ฐ„์— ๋‹ท๋„ท ์ƒํƒœ๊ณ„๊ฐ€ ์•ฝํ™”๋˜์ง€ ์•Š๊ณ  ๊ฐ•ํ™”๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค. ํ˜์‹ ์„ ์‹œ๋„ํ•˜๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ ๊ณผ๊ฑฐ๋ฅผ ์ฐจ๋‹จํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ, ๋‹ค์Œ Python 2 ๋Œ€ 3์ด ๋˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋Š” ๋ชจ๋‘ ๋„ˆ๋ฌด ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ๊ฐœ์ธ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฐ›์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž ์ง€์›์„ ๋ณผ ์ˆ˜ ์žˆ์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ œํ’ˆ์ด ์ œํ’ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์˜ˆ์™€ ํ•จ๊ป˜ ์ œํ’ˆ์— ํฐ ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ•๋ ฅํ•œ์ง€ ํ™•์ธ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋Œ๋ณด๊ณ  ์œ ์ง€ํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ชจ๋‘ ์ž˜ํ–ˆ์–ด!
.NET์˜ OSS๋ฅผ ์œ„ํ•œ ํฌ์†Œ์‹!!

@davidfowl @DamianEdwards @shanselman ํ”ผ๋“œ๋ฐฑ์„ ๋“ค์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์„ ๋œ ํ”Œ๋žซํผ ์ด์‹์„ฑ์„ ์œ„ํ•ด .NET Standard๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์กฐ์ง ๋‚ด์—์„œ ํ† ๋ก ์„ ์‹œ์ž‘ํ•ด์ฃผ์…”์„œ ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ ํฌ๋ง์€ WinForms ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ASP.NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ .NET Standard 2.0์œผ๋กœ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ์‹ค์ œ๋กœ .NET Core์—์„œ ASP.NET Core ์ œํ’ˆ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์—.

๋ฒ„์ „ 3.0์—์„œ ๋‹ค์‹œ ๋งŒ๋‚˜์š”?

๊ธ์ •์  ์ธ ๋ฉ”๋ชจ : ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์ œ ์‚ถ์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  .Net์—์„œ ๋ฐฐ์šฐ๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ์—๋„ˆ์ง€๋ฅผ ํˆฌ์žํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ •๋‹นํ™”๋ฅผ ์ •๋‹นํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๋‚˜๋Š” ์™„์ „ํ•œ netFx์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์œ ์ผํ•œ ์‹ค์ˆ˜๋Š” ASP.NET Core๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ „์ฒด netFx๋ฅผ ์ง€์›ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ASP.Net Core๋Š” ์ „์ฒด netFx๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .Net Core์šฉ์œผ๋กœ ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ASP.Net Core๋Š” ํŠน์ • ๋ฒ„์ „์˜ .Net Standard๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” .Net Core ์œ„์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ „์ฒด netFx์™€ ๊ด€๋ จ์ด ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ASP.Net Core ์•ฑ์€ .Net Core๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ/OS์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ํ”Œ๋žซํผ๋ณ„ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Windows ๊ด€๋ จ ๊ธฐ๋Šฅ์ด ์ •๋ง๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Windows๋ฅผ ์ง€์›ํ•˜๋Š” ๋‹ค์ค‘ ๋Œ€์ƒ ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€์‹  ASP.Net์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํŒ€์ด ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์ด ์‹ค์ˆ˜๋ฅผ ๋ฐ”๋กœ์žก์•˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํžˆ๋„ ๋„ˆํฌ๋“ค์€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ทธ๋“ค์„ ๋ง‰์•˜๋‹ค.

BTW, ์•„๋งˆ๋„ "ASP.Net Core"๋ฅผ ".Net Core์šฉ ASP"๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  "ASP.Net"์„ ".Net Framework์šฉ ASP"๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ดํ•ด๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ๋ถ„์ด ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์ผ์ข…์˜ "ASP.Net Standard" ๋˜๋Š” "ASP for .Net Standard"์ž…๋‹ˆ๋‹ค.

@davidfowl @DamianEdwards @shanselman ๋˜ํ•œ ๊ฒฐ์ •์— ๋Œ€ํ•ด ๊ฐ์‚ฌ๋ฅผ ํ‘œํ•˜๊ธฐ ์œ„ํ•ด ์ œ ๋ชฉ์†Œ๋ฆฌ์— ๋™์ฐธํ–ˆ์Šต๋‹ˆ๋‹ค.

.NET Framework๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์ง€ ์•Š๋Š” ํ•œ ์ ˆ๋Œ€ ๊ทธ ์ด์ƒ์œผ๋กœ ๋‚˜์•„๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋“ฑ๋กํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ง„์ •ํ•œ ์˜คํ”ˆ ์†Œ์Šค์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค

์ข‹์€ ์†Œ์‹! :) ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์‹ ๋ขฐ๊ฐ€ ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•ต์‹ฌ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ Microsoft๊ฐ€ ์ด์ œ ์•Œ์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋จธ์ง€ ์•Š์•„ ๋‹ค์‹œ๋Š” ์ด๋Ÿฌํ•œ ์‹ค์ˆ˜๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ ๋ฒŒ์จ ์ถ•ํ•˜ํ•˜๋Š”์ง€ ์†”์งํžˆ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์ด ๋ฌธ์ œ์—์„œ Fowler์™€ Edward์˜ ์ง„์ˆ ๊ณผ ๋ชจ์ˆœ๋˜๋ฉฐ, ๊ทธ๋“ค์€ ์•„์ง ๊ทธ๋“ค์˜ ์ง„์ˆ ์„ ์ฒ ํšŒํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ธ Jeffrey๊ฐ€ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ˜ธ์—์„œ๋Š” .NET ์ง€์› ์ค‘๋‹จ์ด ์˜๋„์ ์ธ ๊ฒฐ์ •์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๊ทธ๋“ค์€ ์ง€์› ๋ถ€์กฑ์ด "๋ฐœ๊ฒฌ"๋˜์—ˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ฐฑ์Šฌ๋ž˜์‹œ ์ดํ›„์— ๊ณ„ํš์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋Š” ์–ธ๊ธ‰์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์•„์ง๊นŒ์ง€๋Š” ๋ช…ํ™•์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ํŒ€์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›์— ์˜ํ•ด ๋ชจ์ˆœ๋˜๋Š” ์ง„์ˆ .

@DamianEdwards @davidfowl : ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ช…ํ™•ํžˆ ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@PinpointTownes : ์ƒ๊ฐ๋งŒํผ ๋ช…ํ™•ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@MartinJohns์™€ ํ•จ๊ป˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ASP.NET Core๊ฐ€ @davidfowl์ด ์–ธ๊ธ‰ํ•œ .NET Core์˜ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜๋Š” ๊ฐœ๋ฐœ๋กœ๋ถ€ํ„ฐ ์ด์ต์„ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

์ €๋„ ํšŒ์˜์ ์ธ ์ž…์žฅ์ž…๋‹ˆ๋‹ค. ์ฐจ๋Ÿ‰์€ ์ˆœ๊ฐ„์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ฃผํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋’ค๋กœ ์ ๋ ธ์ง€๋งŒ, ์šด์ „์ž๊ฐ€ ์ƒํ™ฉ์„ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์ฆ๊ฑฐ๋Š” ๊ทธ ์–ด๋Š ๋•Œ๋ณด๋‹ค ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ผ, ๋ณด๋„ ์ž๋ฃŒ/๋ธ”๋กœ๊ทธ์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ผ, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๊ณ  ์ถ”๋ก ํ•ด์•ผ ํ•˜๋Š” ์ผ ์‚ฌ์ด์˜ ๋ถˆ์ผ์น˜๋Š” ๋”์ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๊ณ ๊ฐ์˜ ๋•…์—์„œ ์šฐ๋ฆฌ๋Š” ํ–ฅํ›„ X๋…„ ๋™์•ˆ ์šฐ๋ฆฌ ์‚ฌ์—…์—์„œ MS๋ฅผ ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ์‹ ๋ขฐ๋ฅผ ์–ป์œผ๋ ค๋Š” ์‹œ๋„์— ๋Œ€ํ•ด ์ถฉ๊ฒฉ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์—ญ์‚ฌ๋ฅผ ๋ณด์‹ญ์‹œ์˜ค:

  • ๋น„๋ฐ€๋ฆฌ์— ๋‚ด๋ฆฐ ๋‚˜์œ ๊ฒฐ์ • (๋‚˜์œ)
  • ์ •๋‹นํ™”ํ•˜๋ ค๋Š” ๋‹ค์†Œ ๋ถˆ์พŒํ•œ ์‹œ๋„(๋‹ค์†Œ ์ข‹์Œ, ๋‹ค์†Œ ๋‚˜์จ)
  • ์ž˜๋ชป๋œ ๊ฒฐ์ •์˜ ๋ฐ˜์ „(์ข‹์€)
  • ์ฒ˜์Œ ์„ธ ๋‹จ๊ณ„๋ฅผ ๊ฐ„๊ณผํ•˜๋ ค๊ณ  ์‹œ๋„(๋”์ฐ)

Build๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ํ™”๋ คํ•œ wankfest์ธ ๊ฒƒ์€ ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ์–ด์ œ ๋‘ Scotts์˜ ์‡ผ์—์„œ ํ–ˆ๋˜ ํ˜„๋ช…ํ•œ ์ผ์€ ํŒŒ์›Œํฌ์ธํŠธ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์ค‘๊ฐ„์— ํ”Œ๋ผ์Šคํ‹ฑ ์˜์ž์— 6๋ช…์˜ ์ˆ˜์„ .NET ์‚ฌ๋žŒ๋“ค์„ ์•‰ํžˆ๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ž…์žฅ์„ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด์„œ ๋‚จ์ž๋‹ต๊ฒŒ ๋˜ฅ์„ ์‹ธ๋Š”๋‹ค.

๋Œ€์‹  ๊ทธ๋“ค์€ ๋ฐฉ์„ ๋Œ์•„๋‹ค๋‹ˆ๋Š” ์ฝ”๋ผ๋ฆฌ๋ฅผ ์™„์ „ํžˆ ๋ฌด์‹œํ–ˆ๊ณ  ์ด์ œ ์ฒ˜์Œ์—๋Š” ์•„๋ฌด ์ผ๋„ ์—†์—ˆ๋˜ ์ฒ™ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๊ฒฐ์ •๊ณผ ๋ฐ˜์ „์€ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ถ€๋ถ„์ด๋ฉฐ OSS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—… ์€ํ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

.NET์€ MS๊ฐ€ Azure๋ฅผ ํŒ๋งคํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ด๋ฉฐ, ์ด๋Š” ๋‹จ์ง€ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ํฐ ์žฅ๊ธฐ์  ์‹ ๋ขฐ๊ฐ€ ํ•„์š”ํ•œ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ ์‹ ๋ขฐ ๊ตฌ์ถ•์€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์—์„œ @MartinJohns ๋ฅผ ๋‘ ๋ฒˆ์งธ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•˜๋Š˜์ด ๋ฌด๋„ˆ์งˆ ๊ฒƒ์ด๋ฏ€๋กœ netstandard2.0์„ ๋Œ€์ƒ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌผ๋ก  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•  ์ด์œ ๋Š” ์—†์ง€๋งŒ @davidfowl ๋ฐ @DamianEdwards ์— ๋”ฐ๋ฅด๋ฉด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋“ค์€ ์ด์ œ ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€, ์ง€๊ธˆ ๊ฒฐ์ •๋œ ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€? //build์™€ ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์•„๋ฌด๋„ ์ด ์Šค๋ ˆ๋“œ์— ์™€์„œ ์•ฝ๊ฐ„์˜ ์„ค๋ช…์„ ํ•  ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ธ๋ ฅ์ด ๋ถ€์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์ข‹์•„ํ•˜๋Š” Microsoft ์ง์›์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐฑ์ฑ„๋„์„ ํ†ตํ•ด ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ •๋ง๋กœ ๊ทธ๋ ‡์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์–ด์ œ 2๋ช…์˜ Scotts ์‡ผ์—์„œ ํ–ˆ๋˜ ํ˜„๋ช…ํ•œ ํ–‰๋™์€ ํŒŒ์›Œํฌ์ธํŠธ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  6๋ช…์˜ .NET ์„ ๋ฐฐ๋“ค์„ ๋ฌด๋Œ€ ํ•œ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ํ”Œ๋ผ์Šคํ‹ฑ ์˜์ž์— ์•‰ํžˆ๊ณ  ๊ทธ๋“ค์˜ ์ž…์žฅ์„ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด์„œ ๋‚จ์ž๋‹ค์šด ํƒœ๋„๋ฅผ ์ทจํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@willdean Build ๊ธฐ์กฐ์—ฐ์„ค์ด๋‚˜ Scottยฒ์˜ ์„ธ์…˜์„ ๋ณด๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์€ ์• ์ดˆ์— ์ด๋Ÿฐ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋‹จ์„œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ด ์‚ฌ๊ณ ๋ฅผ ๋น› ์†์œผ๋กœ ๋Œ์–ด๋“ค์ด๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹ญ๋งŒ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹จ์ง€ ์‹ค์ˆ˜์˜€๊ณ  ์–ด์จŒ๋“  ๊ฒฐ์ •์„ ๋‹ค์‹œ ๋‚ด๋ฆฌ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ์ด ์Šค๋ ˆ๋“œ๋งŒํผ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.

Build :smile ํ›„ ํŒ€์— ์•ฝ๊ฐ„์˜ ์—ฌ์œ ๋ฅผ ์ฃผ๊ณ  ์ข‹์€ ์„ค๋ช…/์‚ฌํ›„ ํ‰๊ฐ€๋ฅผ ๊ธฐ๋Œ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Build ๊ธฐ์กฐ ์—ฐ์„ค์ด๋‚˜ Scottยฒ์˜ ์„ธ์…˜์„ ๋ณธ ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์€ ์• ์ดˆ์— ์ด๋Ÿฐ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋‹จ์„œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ •๋‹นํ•œ ์ง€์ ์ž…๋‹ˆ๋‹ค.

@FransBouma netstandard2.0 ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋ฆฌํ•„, ํฌ๋กœ์Šค ์ปดํŒŒ์ผ ๋ฐ ์ถ”๊ฐ€ ์ฝ”๋“œ ์ธก๋ฉด์—์„œ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ http2์™€ ๊ฐ™์€ ํŠน์ • ์ƒˆ ๊ธฐ๋Šฅ์ด ๋ฐฐ์น˜๋  ๋•Œ๊นŒ์ง€ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์งˆ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋งŽ์€ ์ถ”๊ฐ€ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ „์ฒด ํ•ต์‹ฌ ์ƒํƒœ๊ณ„๋Š” ํ˜์‹ ๊ณผ ๋ ˆ๊ฑฐ์‹œ ์ง€์› ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์ด๋ฃจ๋Š” ํ–‰์œ„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ์ฝ”์–ด์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ์„ ํฌํ•จํ•  ๋งŒํผ ์ถฉ๋ถ„ํ•œ ๋ ˆ๊ฑฐ์‹œ ์ง€์›์ด ํ•„์š”ํ•˜์ง€๋งŒ ์ฝ”์–ด๋ฅผ ๋งค๋ ฅ์ ์ธ ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถฉ๋ถ„ํ•œ ํ˜์‹ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ข‹์€ ์‚ฌํ›„ ์กฐ์‚ฌ๋ฅผ ํฌ๋งํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๋ฉด ์ด๊ฒƒ์ด ๋ฌธ์ œ์ธ์ง€ ๋ชฐ๋ž๋˜ 99%๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@hallatore "๋ชจ๋‘๊ฐ€ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋งŽ์€ ์ถ”๊ฐ€ ์ž‘์—…์ž…๋‹ˆ๋‹ค."
๋‚˜๋Š” ๋‹น์‹ ์„ ๋Š๋‚€๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋‚ด์ผ๋ถ€ํ„ฐ ์นœํ™˜๊ฒฝ ํ™œ๋™์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์•„๋ฌด๋„ "๋‚˜"์—๊ฒŒ ๊ทธ๋Ÿฐ ์„ ํƒ๊ถŒ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ์™œ๋ƒํ•˜๋ฉด ํ˜„์‹ค์€ ...

ASP.Net์€ 17๋…„ ๋™์•ˆ ๊ตฌ์ถ•๋œ CMS, ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๊ตฌ์„ฑ ์š”์†Œ, ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํฌํ•จ๋œ "์ƒํƒœ๊ณ„"๋ผ๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ƒํƒœ๊ณ„์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ณต์„ ๋–จ์–ด๋œจ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์„ ๋ชจ๋‘ ๋’ค์— ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„ ์ •๋ง๋กœ ๋ฉ‹์ง„ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ... ๋‹น์‹ ์€ "๊ทธ๋ƒฅ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"... ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์ด ํ•  ์ˆ˜์žˆ๋Š” ์ตœ์•…์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค ์ง€์› ์ปค๋ฎค๋‹ˆํ‹ฐ.

๋ฐœ์ „์„ ํ™œ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ”Œ๋žซํผ๋ณ„ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์ด ํ”Œ๋žซํผ ์ฐจ์ด๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ์ƒํƒœ๊ณ„์˜ ๋Œ€๋ถ€๋ถ„์˜ "ํ•„์š”"๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์€ ํ˜„๋ช…ํ•œ ์„ ํƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@ํ• ๋ผํ† ๋ ˆ

๊ทธ๋“ค์€ netstandard2.0์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํด๋ฆฌํ•„, ํฌ๋กœ์Šค ์ปดํŒŒ์ผ ๋ฐ ์ถ”๊ฐ€ ์ฝ”๋“œ ์ธก๋ฉด์—์„œ ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ http2์™€ ๊ฐ™์€ ํŠน์ • ์ƒˆ ๊ธฐ๋Šฅ์ด ๋ฐฐ์น˜๋  ๋•Œ๊นŒ์ง€ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์งˆ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ. ์ฝ”๋“œ, C#์„ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด .net full์—์„œ ๋ถ„๋ช…ํžˆ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์˜ ๋ชฉ๋ก์„ ์ฝ์—ˆ์„ ๋•Œ ์ง„์ง€ํ•˜๊ฒŒ ์›ƒ์–ด์•ผ ํ–ˆ๊ณ  ๊ทธ๊ฒƒ ๋•Œ๋ฌธ์— .net full๋กœ ํœด์‹์„ ์ทจํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ •์น˜์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์™ธ๋ถ€์ธ์€ .NET ์ „์ฒด์—์„œ ๋งค์šฐ ๋น ๋ฅธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ณ  ์ด๋Ÿฌํ•œ API๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ณ  ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋™์ผํ•œ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹จ์ง€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†”์งํžˆ ๋งํ•ด์„œ ๋‚˜๋Š” ๋„ˆ๋ฌด ๋Š™์—ˆ๊ณ  ๋” ์ด์ƒ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๊ธฐ์—๋Š” Microsoft ๋น„๋ˆ„๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์ •์น˜๋ฅผ Redmond์— ์œ ์ง€ํ•˜๊ณ  ์‚ฌ์šฉ์ž(์šฐ๋ฆฌ!)๊ฐ€ ์ด๋กœ ์ธํ•ด ๊ณ ํ†ต์„ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ข‹์€ ์‚ฌํ›„ ์กฐ์‚ฌ๋ฅผ ํฌ๋งํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๋ฉด ์ด๊ฒƒ์ด ๋ฌธ์ œ์ธ์ง€ ๋ชฐ๋ž๋˜ 99%๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ์ง€๊ธˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์™„๋ฒฝํ•œ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

@FransBouma

Core์—๋Š” asp.net core ๋ฐ kestrel์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋กœ ์ธํ•ด ๋งŒ๋“ค์–ด์ง„ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ C#์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@davidfowl ์ด ๋งํ–ˆ๋“ฏ์ด. ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํด๋ฆฌํ•„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ํด๋ฆฌํ•„์กฐ์ฐจ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ๋“ค์ด ๋ฌผ๊ฑด์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฝ”์–ด๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…์€ ๋ฐฉ๋Œ€ํ•˜๊ณ  ํ›จ์”ฌ ๋” ๊ธด ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ท ํ˜• ์กฐ์ • ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋•Œ๋ฌธ์— ์ฝ”์–ด๋ฅผ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ฝ”์–ด๊ฐ€ asp.net์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋น ๋ฅธ ์†๋„๋กœ ํ˜์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์™œ ๊ทธ๋“ค์ด ํ•ต์‹ฌ๋งŒ์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ–ˆ๋Š”์ง€ ์ž˜ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™„์ „ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์ˆœ์ „ํžˆ ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ๋Š” ๊ทธ๋“ค์ด ์ง€๊ธˆ ์„ค๋ช…ํ•ด์•ผ ํ•˜๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒํƒœ๊ณ„์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ฝ”์–ด๋งŒ์„ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ(๋ถ„๋ช…ํžˆ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด), ๊ทธ์— ๋Œ€ํ•œ ๋Œ€๊ฐ€๋Š” ๋” ๋ณต์žกํ•œ asp.net ์ฝ”์–ด ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค.

@hallatore ํ˜ธํ™˜์„ฑ์„ ๊นจ๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฏธ๋ฆฌ ์•Œ๋ฆฌ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ๋“  ํˆฌ์žํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋Š ์ •๋„ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ–๋Š” ๋Œ€๊ฐ€์ด๋ฉฐ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์„ฑ๊ฐ€์‹  ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ๋งŽ์€ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋งŽ์€ ์ž‘์—…์ธ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€. ๋น„์šฉ์ด ๋†’์„์ˆ˜๋ก ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ๋” ๋ณต์žกํ•ด์ง€๋Š” ๋“ฑ์ž…๋‹ˆ๋‹ค. ์ด ๋น„์šฉ์„ ์—†์• ๊ณ  ๋‹จ์ผ ํ”Œ๋žซํผ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๋Š” ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋‹ต๋ณ€์€ ํ˜„์žฌ๋กœ์„œ๋Š” ์ƒํƒœ๊ณ„๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์ค‘๊ฐ„ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋Š” ์ฑ…์ž„ ์žˆ๋Š” ์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@ํ• ๋ผํ† ๋ ˆ

Core์—๋Š” asp.net core ๋ฐ kestrel์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋กœ ์ธํ•ด ๋งŒ๋“ค์–ด์ง„ ๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ C#์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž, ๊ทธ๋Ÿผ ์ด์‹ํ•˜์„ธ์š”. ๋‘˜ ๋‹ค ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์™œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ : ๊ทธ๋“ค์€ ๋‹จ์ˆœํžˆ netstandard2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ํฌํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ .net ์ฝ”์–ด์—์„œ ๋” ๋น ๋ฅธ ๊ตฌํ˜„์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” shim์„ ๋งŒ๋“ค๊ณ  .net ์ „์ฒด์—์„œ ๋” ๋Š๋ฆฐ ๊ตฌํ˜„์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: nuget์˜ lib ์‚ฌ์šฉ).

ORM์˜ ๋ฐ์ดํ„ฐ ๋ฆฌ๋”๋กœ๋ถ€ํ„ฐ ์ดˆ๊ณ ์† ํ”„๋กœ์ ์…˜์„ ์–ป๊ธฐ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„์— IL์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๋‚˜๋ฅผ ๋Œ€์‹ ํ•ด ํ•ด๊ฒฐํ•ด์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” 'ํ•  ์ˆ˜ ์—†๋‹ค!'๊ณ  ํ—ˆ๊ณต์— ์†์„ ๋˜์ง€์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํƒญ์„ ์„ ํƒํ•˜์ง€ ์•Š์„ ๋•Œ ๋‹จ์ˆœํžˆ ํŒŒ๊ณ  ๋“ค์–ด ์ž‘๋™ํ•˜๋„๋ก ํ•ด์•ผ ํ•˜๋Š” ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค๋„ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํด๋ฆฌํ•„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ํด๋ฆฌํ•„์กฐ์ฐจ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ๋“ค์ด ๋ฌผ๊ฑด์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฝ”์–ด๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…์€ ๋ฐฉ๋Œ€ํ•˜๊ณ  ํ›จ์”ฌ ๋” ๊ธด ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•˜์ง€๋งŒ 'ํด๋ฆฌํ•„'ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์˜ˆ, ๊ทธ๋“ค์€ .NET ์ „์ฒด๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์„ฑ๋Šฅ์€ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์Ÿ๊ณผ ๊ฐ™์€ ์„ฑ๋Šฅ์„ ๋‚ด๋ ค๋ฉด ํž˜๋“  ์„ ํƒ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž, ํ•ด๊ฒฐํ•˜์„ธ์š”. ์–ด๋Š ํ•œ ๊ตฌ์„์ด ์•„๋‹ˆ๋ผ ํ•ต์‹ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. Java์—์„œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ  ์„ฑ๋Šฅ์ด ๋†€๋ž๊ณ  ํ•ต์‹ฌ API๋ฅผ ๊นจ๊ฑฐ๋‚˜ ๋‘ ๋ฒˆ์งธ ํ”Œ๋žซํผ์„ ๋งŒ๋“ค์ง€ ์•Š์Œ์œผ๋กœ์จ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋ฐฑ์—”๋“œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ, ๊ทธ๊ฒƒ์€ ๋งŽ์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ๋ฅผ ๋“ค์–ด ORM์„ ๋‹จ์‹ํ•˜๋Š” ๊ฒƒ์ด ํ•˜๋ฃป๋ฐค ์‚ฌ์ด์— ์™„๋ฃŒ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? :) ์•„๋‹ˆ๋ฉด ์›น ์„œ๋น„์Šค๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋Œ€๊ธฐ์—…์˜ ์ค‘์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ, ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋ฐฉ์— ์žˆ๋Š” ์ง„์งœ ์ฝ”๋ผ๋ฆฌ๋Š” .NET์œผ๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๊ณ  ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ๋‚˜์€: ๊ด€๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž… ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊นจ์ง€์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž…ํ•˜์‹ญ์‹œ์˜ค. Win32๋ฅผ ๋ณด๋ฉด ํš๊ธฐ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž…ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๊ฑด์€ ๋‹จ์ˆœํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์ƒํ™ฉ์ด ์„ฑ์žฅํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ž˜๋ผ๋‚ด๊ณ  ์‹ถ์–ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ทธ๋ฃน์ด ๋‚ ์ด ๊ฐˆ์ˆ˜๋ก ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ํ•œ๋•Œ ์ค‘์š”ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ์ด๋ฅผ ๋‚จ๊ธธ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค/ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๊นจ๋œจ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž˜๋ผ๋‚ด๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ท ํ˜• ์กฐ์ • ์ž‘์—…์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ๋•Œ๋ฌธ์— ์ฝ”์–ด๋ฅผ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ฝ”์–ด๊ฐ€ asp.net์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋น ๋ฅธ ์†๋„๋กœ ํ˜์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋ช‡ ๋ฒˆ์ด๋‚˜ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ๊ฐ™์€ ์†๋„๋กœ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ˜์‹ ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” .net full์—์„œ ์ž์ฒด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ˜์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ์ง€์›์— ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€๋งŒ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ, ๋‹ค์Œ 10๋…„ ๋™์•ˆ ์ž์ „๊ฑฐ๋ฅผ ํƒˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ์ถ”ํ•œ์ง€, ๋˜๋Š” ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ๋น ๋ฅธ ํ•ญ๋ชฉ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ตœ๊ทผ์— win32์—์„œ C++/x64 ์–ด์…ˆ๋ธ”๋Ÿฌ์— ๋Œ€ํ•ด ๊ณตํ‰ํ•˜๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ด ๊ฑฐ๊ธฐ์—์„œ ๋ฌธ์ž์—ด์„ ์žฌ์ •์˜ํ•œ ํšŸ์ˆ˜๊ฐ€ ๋ช‡ ๋ฒˆ์ด๊ณ  ๋ถ„๋ช…ํžˆ ์•„๋ฌด๋„ ๋ˆˆ์„ ๋–ผ์ง€ ๋ชปํ•œ๋‹ค๋ฉด .net์—์„œ ์šฐ๋ฆฌ๋Š” ์™„์ „ํžˆ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ๋ง์€, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ž์—ด ์œ ํ˜•(char ๋ฐ string์˜ ๋ฐฐ์—ด)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ๊ทธ๋“ค์ด ํ•ต์‹ฌ๋งŒ์„ ์ง€์›ํ•˜๊ธฐ๋ฅผ ์›ํ–ˆ๋Š”์ง€ ์ž˜ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™„์ „ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์ˆœ์ „ํžˆ ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ๋Š” ๊ทธ๋“ค์ด ์ง€๊ธˆ ์„ค๋ช…ํ•ด์•ผ ํ•˜๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒํƒœ๊ณ„์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ฝ”์–ด๋งŒ์„ ์œ„ํ•œ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ(๋ถ„๋ช…ํžˆ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด), ๊ทธ์— ๋Œ€ํ•œ ๋Œ€๊ฐ€๋Š” ๋” ๋ณต์žกํ•œ asp.net ์ฝ”์–ด ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค.

๋ฏฟ๊ฑฐ๋‚˜ ๋ง๊ฑฐ๋‚˜, ๋‚˜๋„ ๊ทธ๋“ค์ด .NET ์ „์ฒด์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ์ด์œ ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋ง์€, ๋‚ด ๋Ÿฐํƒ€์ž„/API๊ฐ€ 14๋…„ ๋œ ๊ณณ์—์„œ, ๋‚˜๋„ ์–ด์ œ ๊ทธ๊ฒƒ์˜ ์ผ๋ถ€์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ๋‚ด ๊ณ ๊ฐ์ด ๊ทธ๋กœ ์ธํ•ด ์ƒ์ฒ˜๋ฅผ ์ž…์„ ๊ฒƒ์ด๊ณ  ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค๊ณผ ๋‚˜์—๊ฒŒ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ/๋Ÿฐํƒ€์ž„/API๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค ์ดํ›„์—๋Š” ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋Š” ๊ธธ์— ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API๋Š” ๊ทธ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์†์ƒ๋˜๋„๋ก ์ œ๊ฑฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. Angular 1.x->2.x, python 2.x->3.x, ์˜ˆ์ œ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

netstandard ํŒจํ‚ค์ง€์—์„œ BCL ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. System.String ๋ฐ System.Int32๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ BCL์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋Š” ์ด์ „ ๋ฒ„์ „์— ๋Œ€ํ•œ ํ˜„์žฌ ์œ„์น˜ ์—…๋ฐ์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ์†๋„๋กœ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ˜์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ ํฌํ•จ). ํŠน์ง•). .NET Core์—์„œ ๋” ๋น ๋ฅด๊ฒŒ ํ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” .NET Core์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฒ„์ „์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ชจ๋‘ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๊ณ  ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ๋Ÿฐํƒ€์ž„ ๋ณต์‚ฌ๋ณธ์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์š”์ ์ž…๋‹ˆ๋‹ค. ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ๋“ค์€ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ ์‹ค์ˆ˜๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ASP.NET Core์—์„œ ์ „์ฒด .NET์„ ์ง€์›ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊นจ๋—ํ•œ ํœด์‹์„ ์ทจํ–ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ ์‹ค์ˆ˜๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ASP.NET Core์—์„œ ์ „์ฒด .NET์„ ์ง€์›ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, ๊ทธ๋“ค์€ ์ด๊ฒƒ์„ ์›๊ฒฉ์œผ๋กœ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด 2.0 ํˆด๋ง๊ณผ compat shim์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ IMO, ์ด๊ฒƒ์ด ๊ทธ๋“ค์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์—ฐ์€ ์‚ฌ๋žŒ๋“ค์ด ์ „ํ™˜์„ ์ง€์—ฐ์‹œํ‚ค๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ซ์–ดํ•˜๋Š”์ง€ Microsoft์— ๊ณ ํ•จ์„ ์ง€๋ฅด๋Š” ๊ฒƒ์„ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์ด๋Ÿฐ ์ผ์„ ํ•  ๋•Œ๋งˆ๋‹ค ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งํ•  ๋งˆ์Œ์„ ์žƒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, ์ด ์Šค๋ ˆ๋“œ์˜ ๋Œ€๋ถ€๋ถ„์€ .NET ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•ด ์ €๋ฅผ ๋งค์šฐ ์Šฌํ”„๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

netstandard ํŒจํ‚ค์ง€์—์„œ BCL ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. System.String ๋ฐ System.Int32๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ BCL์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ œ๊ฐ€ ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋Ÿฐ ๊ด€์ ์—์„œ ๋‚ด ๊ฒŒ์‹œ๋ฌผ์„ ์ž˜๋ชป ํ•ด์„ํ•˜๋Š” ๊ฒƒ์„ ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ œ๊ฐ€ ์˜๋„ํ•œ ๋ฐ”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์ฃผ์ œ๊ฐ€ ๋˜๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด ORM ๋‚ด์—์„œ๋„ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ORM์— ๋Œ€ํ•ด ์—„์ฒญ๋‚œ ์˜ค๋ฒ„ํ—ค๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ธฐ๋ณธ ๋ฌธ์ž์—ด ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋Š ์ •๋„ ๋„์›€์ด ๋˜์ง€๋งŒ ๋ชจ๋“  ๋ณต์‚ฌ์—์„œ ๋ณด๊ธฐ ํ‰ํ•ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณต์‚ฌ๋ฅผ ํฌ๊ฒŒ ์™„ํ™”ํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ ํ”ผํ•˜๋Š” ํŠน์ • ํด๋ž˜์Šค๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์ž์—ด ์œ ํ˜•์œผ๋กœ ์ถฉ๋ถ„ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ๋ฌธ์ž์—ด ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  API์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž์‹ ์ด ๊ฐ€์žฅ ํ•„์š”๋กœ ํ•˜๋Š” ๊ณณ, ์ฆ‰ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•œ ํ•ซํŒจ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ _ํ›จ์”ฌ_ ์ด์ƒ์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ, ์ด๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ถ„๋ช…ํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์ƒ์€ ์ง€์ €๋ถ„ํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ’€์–ด์ฃผ๋Š” ๊ฒƒ๋“ค์€ ์˜์›ํžˆ ๊ฑฐ๊ธฐ์— ๋จธ๋ฌผ๋Ÿฌ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋‚˜์˜จ ๊ฒƒ์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ _๊ทธ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค_. ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋Ÿฌํ•œ ์œ ํ˜•๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์ƒˆ ์œ ํ˜•๊ณผ ์ƒˆ ์ฝ”๋“œ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ˆ˜๋…„ ๋™์•ˆ ๋ชจ๋“  ์ฃผ์š” OS API์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ์—‰๋šฑํ•œ ๋ถ€๋ถ„์ด ๋ณด๊ธฐ์— ์ข‹์ง€๋Š” ์•Š์ง€๋งŒ ๊ต์ฐฉ ์ƒํƒœ์— ๋จธ๋ฌด๋ฅด๋Š” ๋Œ€์‹  ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ž…์ฆ๋œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ์— ๋จธ๋ฌด๋ฅด๋Š” ๋Œ€์‹  ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋˜ ๋‹ค๋ฅธ ์ž…์ฆ๋œ ๋ฐฉ๋ฒ•์€ ์ฆ์˜คํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์–ด์จŒ๋“  ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹ซ์–ดํ•˜๊ณ  ๊นจ๋œจ๋ฆด ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฐธ์กฐ, Angular 2+ ๋ฐ Python 3, ๋‘˜ ๋‹ค ์ž˜ ์ž‘๋™ํ•จ).

@NickCraver 3.0์ด๋“  2.2์ด๋“  23.5์ด๋“  ๊ฐ„์— ๊ทธ๋“ค์ด ๋งˆ์นจ๋‚ด ์ด ํœด์‹์„ ์ทจํ•  ๋•Œ๋งˆ๋‹ค ๋•…์ฝฉ ๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ์˜ค๋Š˜๋‚ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งŽ์€ ์šธ๋ถ€์ง–์Œ๊ณผ ์ฐข๊น€์ด ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  100๋‹ฌ๋Ÿฌ๋ฅผ ๊ฑธ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ต์ฐฉ ์ƒํƒœ์— ๋จธ๋ฌด๋ฅด๋Š” ๋Œ€์‹  ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋˜ ๋‹ค๋ฅธ ์ž…์ฆ๋œ ๋ฐฉ๋ฒ•์€ ์ฆ์˜คํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์–ด์จŒ๋“  ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹ซ์–ดํ•˜๊ณ  ๊นจ๋œจ๋ฆด ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฐธ์กฐ, Angular 2+ ๋ฐ Python 3, ๋‘˜ ๋‹ค ์ž˜ ์ž‘๋™ํ•จ).

ํ™•์‹ ํ•˜๋Š”. ๋‘˜ ๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 'OS API' ๋ฐฉ๋ฒ•์€ ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ์ˆ˜๋…„์— ๊ฑธ์ณ ๋ง‰๋‹ค๋ฅธ ๊ณจ๋ชฉ์ด ๋งŽ์€ ๋Œ€๊ทœ๋ชจ API๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. 'Angular/python' ๋ฐฉ๋ฒ•์€ ์‚ฌ๋žŒ๋“ค์˜ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๋ฅผ ๊นจ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค(๊ฐ๋„์˜ ์„ธ๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ํŒŒํŽธํ™”๋˜์—ˆ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค). ASP.NET ์ฝ”์–ด์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ ์–ด๋–ค ๊ฒฝ๋กœ๊ฐ€ ๋” ๋‚˜์€์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ๋Š” ๋ฌผ๋ก  Python ๊ฒฝ๋กœ๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์•ˆ์ •์„ฑ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ iMHO๋ฅผ ์ฃฝ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Angular ์„ธ๊ณ„์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ "์˜ค, ๊ทธ๋ž˜, ๊ทธ๊ฒŒ _ํ›จ์”ฌ_ ๋” ๋‚˜์•„์กŒ์–ด" ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. Python์€ ํ˜„์žฌ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๋Š” ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ Python 3์ด ์ด๋ฅผ ์ฃผ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ ์‹ค์ˆ˜๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ASP.NET Core์—์„œ ์ „์ฒด .NET์„ ์ง€์›ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊นจ๋—ํ•œ ํœด์‹์„ ์ทจํ–ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๊ทธ ์•„์ด๋””์–ด์—๋Š” ์•ฝ๊ฐ„์˜ ๋น„์šฉ ์ ˆ๊ฐ์ด ์žˆ์ง€๋งŒ MS๊ฐ€ ์™„์ „ํžˆ ์ง€๋ฐฐ์ ์ธ ์œ„์น˜๋ฅผ ๊ตฌ์ถ•ํ•œ ๋ฐฉ์‹๊ณผ ์™„์ „ํžˆ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค.

  • Windows๋Š” DOS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 32๋น„ํŠธ Windows๋Š” 16๋น„ํŠธ Windows ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ DOS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 64๋น„ํŠธ Windows๋Š” 32๋น„ํŠธ ๋ฐ 64๋น„ํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • .NET ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ถœ์‹œ ๋‹น์‹œ ๋ชจ๋“  ๊ด€๋ จ ์šด์˜ ์ฒด์ œ์—์„œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋งค์šฐ ์–ด๋ ค์šด ๊ธฐ์ˆ ์  ๋ฌธ์ œ์ด์ž ๋ง‰๋Œ€ํ•œ ๋น„์šฉ์ด ๋“œ๋Š” ํƒ€ํ˜‘์ด์—ˆ์ง€๋งŒ, ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ „์ฒด ์„ธ๋Œ€์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ MS๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ๋Œ€๋žต์ ์œผ๋กœ ๊ทธ๋“ค์˜ ํŽธ์ž„์„ ํ™•์‹ ์‹œ์ผœ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ Win32/Win16 interop ์ด์•ผ๊ธฐ๋‚˜ Win3 -> Win95 -> WinNT์—์„œ DOS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ๋˜๋Œ์•„๋ณด๊ณ  ์–ด๋ฅธ๋“ค์ด ์–ผ๋งˆ ์ „์— ๊ฑด๋ฌผ์„ ๋– ๋‚ฌ๋Š”์ง€ ๊ถ๊ธˆํ•ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

@๋งˆํฌ๋ Œ๋“ค

Angular ์„ธ๊ณ„์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด "์˜ค, ๊ทธ๋ž˜, ๊ทธ๊ฒŒ ํ›จ์”ฌ ๋‚ซ์ง€"ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ Angular๋ฅผ .NET ๋Ÿฐํƒ€์ž„๊ณผ ๋น„๊ตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ฆ‰์‹œ .NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์‹ค์ ์œผ๋กœ ๊ทธ๋“ค์€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์œ„ํ—˜์ด ๋„ˆ๋ฌด ๋†’๊ฑฐ๋‚˜ ๋น„์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค.

@๋งˆํฌ๋ Œ๋“ค

Angular ์„ธ๊ณ„์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด "์˜ค, ๊ทธ๋ž˜, ๊ทธ๊ฒŒ ํ›จ์”ฌ ๋‚ซ์ง€"ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. Python์€ ํ˜„์žฌ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๋Š” ์–ธ์–ด ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ Python 3์ด ์ด๋ฅผ ์ฃผ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Python 3์ด ๋‚˜์˜จ ์ง€ 9๋…„์ด ์ง€๋‚ฌ๊ณ  ๋งˆ์นจ๋‚ด ์ƒˆ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ Python์ด ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฌธ์„œํ™”ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ตœ์‹  OSX๋ฅผ ์‹คํ–‰ํ•˜๋Š” Mac์€ Python 2.7.12์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‚ด NAS๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

Angular๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— Angular2๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ทธ๋งˆํ•œ ๋ฐ๋ชจ ์•ฑ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ข‹์Šต๋‹ˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” 2-3๋…„ ๋œ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ Angular 1์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์‹ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ์†Œ์š”๋˜๋ฉฐ ๊ธฐ์—…์€ ์ •๋‹น์„ฑ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

@๋ธŒ๋ž˜๋“œ์œŒ์Šจ

์†”์งํžˆ ๋งํ•ด์„œ, ์ด ์Šค๋ ˆ๋“œ์˜ ๋Œ€๋ถ€๋ถ„์€ .NET ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•ด ์ €๋ฅผ ๋งค์šฐ ์Šฌํ”„๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ์šฐ๋ฆฌ๋ฅผ ์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค๊ฒŒ ํ•œ ๊ทธ๋“ค์˜ ์‹ค์ˆ˜์— ๋Œ€ํ•ด ์—ฌ๊ธฐ ์žˆ๋Š” Microsoft์˜ ๋ฐœ์„ ๋น„๋‚œํ•˜์ง€ ์•Š์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? .NET Core๋Š” ์™„์ „ํžˆ ์ค‘๋‹จ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ".NET Core"๋กœ ์ง€์ •ํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์€... .NET์˜ Core๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. .NET์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ง€๋‚œ 15๋…„ ๋™์•ˆ .NET Full Framework์˜€์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๊นจ๋—ํ•œ ํœด์‹์„ ์›ํ–ˆ๋‹ค๋ฉด, ๋‹ค์‹œ ๋Œ์•„๊ฐ€์„œ ๋ชจ๋“  ์ด์ „ API๋ฅผ ๋‹ค์‹œ ๋„์ž…ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ด์ „ ์„ธ๊ณ„์™€ ์ƒˆ ์„ธ๊ณ„ ์‚ฌ์ด์—์„œ ์„ ํƒํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด์— ์ถฉ์‹คํ•œ ์ƒˆ๋กœ์šด ์ด๋ฆ„์„ ์„ ํƒํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ง€๊ธˆ ๋ฐฑ ํŽ˜๋‹ฌ์„ ๋ฐŸ๊ณ  ์žˆ๋Š” ๊ฒฐ์ •์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ƒํ™ฉ ์ค‘ ํ•˜๋‚˜์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋‚จ๊ฒผ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET MVC๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core 1.X๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ํ›„์—๋Š” .NET Core๋กœ ์ด๋™ํ•  ๋•Œ๊นŒ์ง€ SOL์ž…๋‹ˆ๋‹ค.
  2. ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core 1.X๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ASP.NET Core 2.0์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด .NET Core๋กœ ์ด์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. .NET Core์˜ ASP.NET Core์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft๊ฐ€ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ASP.NET Core 2.0์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ƒํ™ฉ 1 ๋ฐ 2์˜ ์‚ฌ๋žŒ๋“ค์€ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ASP.NET Core 2.0์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ช…ํ™•ํ•˜๊ณ  ํ˜„์‹ค์ ์ธ ๊ฒฝ๋กœ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒํ™ฉ 1์˜ ์‚ฌ๋žŒ๋“ค์€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํ™ฉ 2์˜ ์‚ฌ๋žŒ๋“ค์€ ์ •๋‹นํ•˜๊ฒŒ ํ™”๋ฅผ ๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ 2๋Š” ์†Œ๊ทœ๋ชจ ๊ทธ๋ฃน์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ํ•œ ์‚ฌ๋žŒ์ด ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ Microsoft์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์—…/์‚ฌ๋žŒ์˜ ์ƒ๊ณ„๋Š” ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด Microsoft์— ์˜์กดํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋‹ค์Œ ๋ฒˆ์— ๊ทธ๋“ค์ด ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์žฅ๋‹ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. Microsoft ์Šคํƒ ์‚ฌ์šฉ์„ ๊ณ ๋ ค ์ค‘์ธ ์ƒ์ ์—์„œ ์ƒ๋Œ€๋ฐฉ์€ ์ด๊ฒƒ์„ ๊ฒฝ๊ณ ์˜ ์ด์•ผ๊ธฐ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ .NET Core์˜ Microsoft์˜ ๋”์ฐํ•œ ๋ฉ”์‹œ์ง•/๋งˆ์ผ€ํŒ…/๋„ค์ด๋ฐ์— ๋‘ก๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ธฐ์˜๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ „ํˆฌ์˜ ์ ˆ๋ฐ˜์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์˜ฌ๋ฐ”๋ฅธ ๊ธฐ๋Œ€์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@MartinJohns ์ด์ „ ๋Œ“๊ธ€์— ๋‹ต๊ธ€์„ ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

@markrendle ์™œ ์›ƒ์–ด? ์„ค๋ช… ํ•ด์ฃผ์„ธ์š”. "API๊ฐ€ ๊ฑฐ์˜ ๊ฐ™๋‹ค"๋ฉด ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๊ทผ๋ณธ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ .Net Core์—์„œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ข‹์•„์š” ์—ฌ๋Ÿฌ๋ถ„ - Internet Explorer๋ฅผ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. Microsoft๋Š” _๋งˆ์นจ๋‚ด_ ๊ทธ๊ฒƒ์„ ์—†์• ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋“ค์€ ๊ต์ฒด ๋ธŒ๋ผ์šฐ์ €์ธ Edge๊ฐ€ ์—ฌ์ „ํžˆ ์‹œ์žฅ์—์„œ ํƒœ์–ด๋‚  ๋•Œ๊นŒ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ธ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ํฌ๋กฌ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ ์‚ฌ๋žŒ๋“ค์ด IE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์•ฑ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๊ฐ€ ์—†๊ณ  ์—ฌ์ „ํžˆ Microsoft๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ๋„ˆ๋ฌด ์ฒœ์ฒœํžˆ ๋ฝ‘๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ASP.NET Core๋Š” ์ง€๋‚œ 15๋…„ ์ •๋„ ๋™์•ˆ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋ฐฐ์šด ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ .NET์„ ๋Œ€์ฒดํ•˜๋ ค๋Š” Microsoft์˜ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ASP.NET Core ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ .NET Windows ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ IE 9์™€ ๋งค์šฐ ํก์‚ฌํ•ฉ๋‹ˆ๋‹ค. .Net 4.x์— ๋Œ€ํ•œ ์ง€์›์„ ํ•ด๋‹น OS์˜ ์ง€์› ์ˆ˜๋ช…๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@glennsills IE์™€ Edge ๊ฐ„์˜ ํ‰ํ–‰์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Edge์—์„œ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— IE๋Š” ์—ฌ์ „ํžˆ Windows์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Edge๊ฐ€ ๋‚ด ์ž‘์—…์˜ VPN์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ด์„œ ํ™”๋‚œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค...๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €์ž…๋‹ˆ๋‹ค. ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ActiveX๋ฅผ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์„ ์ž…๊ฒฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ;)

@glennsills ์–ด๋–ค ์‹ค์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๊นŒ?

@markrendle "Angular ์„ธ๊ณ„์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด "์˜ค, ์˜ˆ, ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค."

๋‹น์‹ ์€ ์ด์™€ ๊ฐ™์€ ๋‚˜์œ ์˜ˆ๋ฅผ ์„ ํƒํ•จ์œผ๋กœ์จ ๋‹น์‹ ์˜ ์ฃผ์žฅ์„ ์ •๋ง๋กœ ํ•ด๋กญ๊ฒŒ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ „ํ™˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ๋ฆฌ๋“œ๊ฐ€ ์†์‹ค๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‹น์‹œ ํฐ ์ฐจ์ด๋กœ ๊ฐ€์ง).
python 3๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹จํŽธํ™”๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ชจ๋“  ์ถ”์ง„๋ ฅ์„ ์ฃฝ์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ์—ฌ๊ธฐ์„œ ๋ญ”๊ฐ€๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
.Net Remoting์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์ „ Asp ์›น ์–‘์‹ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ Asp .Net ํ•ต์‹ฌ MVC ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€ํ™˜ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ณ„ํš์€ ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๊ทธ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ œ๊ฑฐํ•  ๊ธฐํšŒ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ .Net Remoting์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์†Œ๋ฆฌ์— ๋”ฐ๋ฅด๋ฉด Asp .Net Core 2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ Net Core 1.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@wbuck ์–ด์ œ ํ˜„์žฌ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ๋นŒ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ASP.NET Core 2.0์˜ ๋‹จ์ผ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์—๋งŒ ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ 2.0-preview-2์—์„œ ์ด ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ๋กœ์„œ๋Š” 1.1์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 2.0-preview-1์€ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์žฅ๊ธฐ์  ๋ฏธ๋ž˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ˆ„๊ฐ€ ์•Œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฒฐ๊ตญ์—๋Š” ์‚ญ์ œ๋  ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„์€ ๋ˆ„๊ตฌ๋‚˜ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@popcatalin81 ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ COM ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. Windows์—์„œ๋งŒ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ '์‹ค์ˆ˜'๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์ง€๋งŒ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ๋˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. AspNET๊ณผ IIS์˜ ๊ฒฐํ•ฉ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๋‹น์‹œ์—๋Š” ๊ดœ์ฐฎ์•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์Šคํƒ์ด ๋งค์šฐ ๋ณต์žกํ•ด์กŒ์œผ๋ฉฐ(Windows์—์„œ๋„) ๋‹ค๋ฅธ ์›น ์„œ๋ฒ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ข…์†์„ฑ ์ฃผ์ž…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์ œ๋กœ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹œ๊ฐ„์˜ ํ๋ฆ„๊ณผ ์‚ฌ๋žŒ๋“ค์ด ์ผ์„ ํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ์˜ˆ์ธ '์‹ค์ˆ˜'๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@GiorgioG - ๋„ค, ๊ทธ๊ฒŒ ์ œ ์š”์ ์ž…๋‹ˆ๋‹ค. Windows 10์—์„œ๋Š” IE์™€ Edge ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ _์„ ํƒ_ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Edge์—์„œ IE ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ด๋Š” ์˜๋„์ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. IE์™€ Edge ๊ธฐ๋Šฅ์„ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋™์‹œ์— ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ํ™”์ดํŠธ ํ•ซ ์—‰๋ง์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ IE์— ๋Œ€ํ•œ ํ–ฅํ›„ ์ง€์›์€ ๋ฒ„๊ทธ ์ˆ˜์ •์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ 10๋…„ ์ „์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด Edge๋Š” ์ง€๊ธˆ๋ณด๋‹ค Chrome์— ํ›จ์”ฌ ๋” ๊ฒฝ์Ÿ๋ ฅ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Microsoft๋Š” ๊ฝค ์˜ค๋žซ๋™์•ˆ .NET Classic์„ ๊ณ„์† ์ง€์›ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋ฒ„๊ทธ ์ˆ˜์ • ๋ชจ๋“œ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. Asp.Net Core๋Š” ํ”Œ๋žซํผ ๊ฐ„ ๊ฐœ๋ฐœ ์šฉ์ด์„ฑ๊ณผ ์„ฑ๋Šฅ์— ์ค‘์ ์„ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ทจ์†Œ์— ๋Œ€ํ•œ ๊ณต์‹ ๋ฐœํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@pantonis

์ด์— ๋Œ€ํ•œ ๊ณต์‹ ๋ฐœํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ ์—†์–ด. ๋‹ค๋ฅธ ํŒ€์›๋“ค์˜ ์ƒ๋ฐ˜๋œ ์ง„์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. @DamianEdwards ์™€ @davidfowl ์€ ์ด๋ฒˆ ํ˜ธ์—์„œ ์ง€์› ์ค‘๋‹จ์„ ๊ณ ์˜์ ์œผ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๋ฐํ˜”์Šต๋‹ˆ๋‹ค. Jeffrey๋Š” ASP.NET ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— .NET์— ๋Œ€ํ•œ ์ง€์›์ด ๊ณ„์†๋  ๊ฒƒ์ด๋ผ๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ์„œ๋กœ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

์ด๋ฒˆ์—๋Š” ๋ฌธ์ œ ์Šค๋ ˆ๋“œ์— ๋›ฐ์–ด ๋“ค์ง€ ์•Š์•˜์ง€๋งŒ ๋ฉ”์‹œ์ง€์™€ ๋ฐฉํ–ฅ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์— ๋งค์šฐ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” BUILD ์ „์— ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ์ดˆ๊ธฐ ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. .NET Standard 2.0์„ ์‹คํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ์˜์‚ฌ๋ฅผ ๋ฐํžˆ๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์•ˆ์‹ฌ์ด ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋น„์ƒ์‚ฐ์ ์ธ ์˜๊ฒฌ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ๊ณผ ์šฐ๋ฆฌ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ .NET ํŒ€์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@MartinJohns ์˜ค ์ด๋Ÿฐ.. ๊ทธ๋ž˜์„œ ๋ˆ„๊ฐ€ ๋งž๋‚˜์š”?

@wbuck

๋ฏธ๋ž˜์— .NET Remoting์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์•ฝ์†ํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ƒ์ง•ํ•ฉ๋‹ˆ๋‹ค. Remoting์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ๊ณผ๊ฑฐ์— ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—(Microsoft์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์ด ์ข‹์€ ์•„์ด๋””์–ด๋ผ๊ณ  ๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต์ •ํ•˜๊ฒŒ ๋งํ•ด์„œ) ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. WEB API๋ฅผ ํ†ตํ•ด ASP.NET Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๊ณ  ์•„์ฃผ ์˜ค๋ž˜๋œ .NET @@frameworks์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋™๋ฃŒ๊ฐ€ '์ƒˆ๋กœ์šด ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์ค‘๋‹จํ•ด์•ผ ํ•œ๋‹ค'๊ณ  ๋งํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. .NET Remoting์„ ์ง€์›ํ•˜๋Š” ASP.NET ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๊ทธ ์ผ์ž…๋‹ˆ๋‹ค.

@pantonis ์†”์งํžˆ, ์•„๋ฌด ์ƒ๊ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด ํ˜ธ์— ์žˆ๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ๋‚˜์ค‘์— ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ˜ธ์— ์–ธ๊ธ‰๋œ ๊ฒฐ์ •์„ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ์ฆ‰์‹œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ํ˜ธ์™€ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ์ง„์ˆ ์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์œผ๋กœ ๋ฏฟ๊ณ  ์žˆ์œผ๋ฉฐ ์•„์ง๊นŒ์ง€ ๋ช…ํ™•ํ•œ ์ž…์žฅ์„ ๋‚ด๋†“์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@pantonis ๊ฐ€์žฅ ์ตœ๊ทผ์€ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ๊ณต์‹ ๋ฐœํ‘œ์ž…๋‹ˆ๋‹ค.

https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/

1ํ˜ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

์ด ASP.NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์€ .NET Core 2.0 SDK๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด .NET Core, Mono ๋ฐ .NET Framework์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก .NET Standard 2.0์— ASP.NET Core 2.0์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒ€์ด ๋นŒ๋“œ ์ „์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋™์•ˆ ASP.NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ .NET Standard 2.0 ์™ธ๋ถ€์— ์žˆ๋Š” API๋ฅผ ํ™œ์šฉํ•˜์—ฌ .NET Framework์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

์ด ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” .NET Framework์—์„œ ASP.NET Core 1.x ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ASP.NET Core 2 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 1์ด .NET Core๋งŒ ์ง€์›ํ•˜๋„๋ก ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.

@benaadams ๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ์ง„์ˆ ์€ ์—ฌ๊ธฐ์— ์ž‘์„ฑ๋œ ์ง„์ˆ ๊ณผ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๊ทธ๋“ค์€ "๋ฐœ๊ฒฌ"๋˜์—ˆ๊ณ  "๋ฏธ๋ฆฌ๋ณด๊ธฐ 1 ์ง€์›"์„ ์ œํ•œํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ˜ธ์—์„œ ๊ทธ๋“ค์€ ๋‚ด๋‚ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ์—ฌ๊ธฐ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ ํ† ๋ก ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ ์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ์žˆ๋Š” ์ง„์ˆ ์— ๋Œ€ํ•œ ๊ณต์‹ ์Šน์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์—ฌ๊ธฐ์—์„œ ์ด๋ฃจ์–ด์ง„ ํ† ๋ก ์„ ์ธ์ •ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์„œ๋กœ์˜ ์ง„์ˆ ์„ ์•Œ๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํŠน์ • ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ๋ง์ด๋‚˜ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋จน๊ฒŒ ํ•˜๋ ค๊ณ  ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์„ ํƒํ•œ ๋ฐฉํ–ฅ์ด ์šฐ๋ฆฌ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๊ณ  ํ”ผ๋“œ๋ฐฑ์— ๋ฐ˜์‘ํ•˜๋Š” ์ข‹์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Microsoft๊ฐ€ ํ˜ผ๋ž€์„ ํ•ด์†Œํ•˜๋Š” ์„ฑ๋ช…์„ ๋ฐœํ‘œํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. MS, ํ•  ์ˆ˜ ์žˆ์–ด!!!

@pantonis @MartinJohns

MS์— ์†Œ์†๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ณต์‹์ ์œผ๋กœ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์–ด์ œ์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์•ž์œผ๋กœ์˜ ๊ณ„ํš์ด๋ฉฐ asp.net ์ฝ”์–ด์—์„œ ์ž‘์—…ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์— ๋งค์šฐ ๋งŽ์ด ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

tl;dr: ์ด๊ฒƒ์€ ์•ž์œผ๋กœ์˜ ๊ณ„ํš์ž…๋‹ˆ๋‹ค: https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/

@pantonis ๊ณต์‹ ๋ฐœํ‘œ๋Š” ๊ณต์‹ ์ž…์žฅ์ž…๋‹ˆ๋‹ค.

์„ฑ๋ช…?

@PinpointTownes : ์ƒ๊ฐ๋งŒํผ ๋ช…ํ™•ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ ๐Ÿ˜„

@pantonis ๋Š” ์œ„์˜ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

https://github.com/aspnet/Home/issues/2022#issuecomment -300774201

Microsoft๊ฐ€ ํ˜ผ๋ž€์„ ํ•ด์†Œํ•˜๋Š” ์„ฑ๋ช…์„ ๋ฐœํ‘œํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. MS, ํ•  ์ˆ˜ ์žˆ์–ด!!!

๊ทธ๋“ค์—๊ฒŒ ๊ณตํ‰ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ๊ทธ๋“ค์€ ์ด๋ฒˆ ์ฃผ์— ์—ฌ๊ธฐ์—์„œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ธฐ์—๋Š” ์ด๋ฒˆ ์ฃผ์— ๊ฐ•์š”๋œ ์ดˆ -ํฅ๋ถ„ ์ƒํƒœ์—์„œ ์ด๋ฆฌ์ €๋ฆฌ ๋›ฐ์–ด๋‹ค๋‹ˆ๋Š๋ผ ๋„ˆ๋ฌด ๋ฐ”์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ์ œ๊ณต๋œ .NET Core์— ๋Œ€ํ•œ ๋ชจ๋“  ์„ค๋ช…์ด ์„ธ์ƒ์˜ ์ดํ•ด ์ˆ˜์ค€์„ ๋‚ฎ์ถ”๋Š” ์—ญํ• ์„ ํ–ˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ๋ƒฅ ๊ฑฐ์ง“๋ง์„ ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์œผ์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด...

๋ณด๋‹ค ์ตœ๊ทผ์˜ ๊ณต์‹ ๋ฐœํ‘œ๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์˜ ๋‚ด์šฉ๊ณผ ๋ชจ์ˆœ๋˜๋Š” ๊ฒฝ์šฐ ๊ณต์‹ ๋ฐœํ‘œ๊ฐ€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์ด์ „์— ๋งํ•œ ๊ฒƒ๋ณด๋‹ค ์šฐ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ > GitHub ๋Œ“๊ธ€

์–ด๋””์—๋„ ๊ธฐ๋ก๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ €์—๊ฒŒ๋Š” ์ด ๊ทœ์น™์ด ์˜ค๋žซ๋™์•ˆ ์œ ํšจํ–ˆ์Šต๋‹ˆ๋‹ค.

@MaximRouiller

๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ @benaadams ๋Š” ์•„๋งˆ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ช‡ ์‹œ๊ฐ„ ์ „์— @davidfowl๊ณผ๋„ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค. ๋ฐœํ‘œ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์ด ๋ฐœํ‘œ: https://blogs.msdn.microsoft.com/webdev/2017/05/10/aspnet-2-preview-1/

@hallator ์–ด๋–ค ๋ฐœํ‘œ? Jeffrey ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ASP.NET ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—์„œ?

๊ทธ๋ƒฅ ๋†”๋‘ฌ

์ง„์ˆ ์€ .NET Framework๊ฐ€ ASP.NET 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 1์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๊ทธ ์ดํ›„์— ๊ทธ๊ฒƒ์„ ์ง€์›ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ํ•˜๋Š˜์€ ๋” ์ด์ƒ ๋ฌด๋„ˆ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ดํ›„์— ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ๋ถˆํ‰ํ•˜๋Š” ๊ฒƒ; ๊ทธ๋“ค์ด ๋œ ์ฐธ์—ฌํ•˜๊ณ , ์•„์ด๋””์–ด๋ฅผ ๋” ์ ๊ฒŒ ๊ณต์œ ํ•˜๊ณ , ์ดˆ๊ธฐ ๋‹จ๊ณ„์˜ ์‚ฌ๋žŒ๋“ค์„ ๋œ ์ฐธ์—ฌ์‹œ์ผœ ํ›จ์”ฌ ๋‚˜์ค‘ ๋‹จ๊ณ„์—์„œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋” ์ž„์ƒ์ ์œผ๋กœ ๋ถ„์„๋œ ๋ฐ˜์‘์œผ๋กœ; ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์šธ ๋•Œ.

๋‹น์‹ ์ด ๋ณด๊ธฐ์— ์ž˜๋ชป๋œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋›ฐ์–ด๋“ ๋‹ค๋ฉด; ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ๋“ค์€ ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ๋งˆ์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฒฐ์ •์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋ฅผ ๋ฌธ์ง€๋ฅด๋ฉด ๋ฏธ๋ž˜์˜ ๊ด€๊ณ„์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? ์ •๋ง ๋นจ๋ฆฌ ๊ณ ์žฅ์ด ๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ์ƒˆ๋กญ๊ณ  ๋” ์—ด๋ฆฐ MS; ๊ฐœ๋ฐœ์ž ๋ฐ ๊ณ ๊ฐ๊ณผ ์ง์ ‘ ์†Œํ†ตํ•˜๋Š” ๊ฒƒ์€ ํฅ๋ฏธ์ง„์ง„ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ํ–‰๋™์ด ๊ทธ๊ฒƒ์„ ํ์‡„ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ๋จผ์ € ํ™๋ณด ์Šน์ธ์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค๊ณ  ํ•ด๋„ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฑด ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ข€ ๋” ์ „๋ฌธ์ ์ด ๋˜์–ด ๋” ๋‚˜์€ ์ƒํƒœ๊ณ„๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ํ•จ๊ป˜ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

@benaadams ๋ช…ํ™•ํ•œ ์˜์‚ฌ ์†Œํ†ต์„ ์›ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ถˆ๋งŒ์„ ํ˜ผ๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์–ธ์ปจ๋Œ€ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋ชฐ์•„๋‚ด๋ ค๋Š” ์‹œ๋„๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋“ค์ด ๋” ์ฐธ์—ฌํ•˜๊ณ  ํ˜ผ๋ž€์„ ์—†์• ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋“ค์ด ์šฐ๋ฆฌ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งˆ์Œ์„ ๋ฐ”๊ฟจ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์—๋Š” ์ด์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†์œผ๋ฏ€๋กœ ์ˆœ์ „ํžˆ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ œ๋Œ€๋กœ ๋ฐœํ‘œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋˜๋Œ๋ ค์ง„ ๊ฒฐ์ •์€ ์ œ๋Œ€๋กœ ๋ฐœํ‘œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ ์€ ์ฐธ์—ฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๋” ๋งŽ์€ ์ฐธ์—ฌ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

@MartinJohns ๊ณต๊ฐœ ๋ฐœํ‘œ์—์„œ ๋‹น์‹ ์€ NOW์™€ IS์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์–ด๋–ป๊ฒŒ ๊ทธ ์ง€์ ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์‹ค์€ ์ •ํ™•ํžˆ @benaadams ๊ฐ€ ๋งํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

^์—ฌ๊ธฐ์— ๋ ›์ž‡๊ณ  GIF ์‚ฝ์ž…^

@benaadams๊ฐ€ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋‚ด์—(์ฆ‰, //๋นŒ๋“œ ํ›„) ์ข€ ๋” ๊ธฐ์ˆ ์ ์ธ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋˜๋Š” ๊ฒƒ์ด ์ข‹์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. @davidfowl ์ด .net full์—์„œ ํ•˜๊ธฐ ์–ด๋ ค์› ๋˜/์–ด๋ ค์› ๋˜ ํ•ญ๋ชฉ ๋ชฉ๋ก์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ์™€ ๊ทธ ์ด์œ  ๊นจ๋—ํ•œ ํœด์‹์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์™€ ๋น„๊ณต์‹์ ์ธ ๊ฐœ๋ฐœ์ž ๋Œ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. IMHO๋Š” aspnetcore 2.0์—์„œ ํ˜„์žฌ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ˜„์žฌ ์ด ๊ธฐ๊ฐ„์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—ฐ๊ธฐํ•ด์•ผ โ€‹โ€‹ํ•˜๋Š” ๋ฏธ๋ž˜ ๊ณ„ํš์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๊ธฐ์— ์ˆจ์–ด โ€‹โ€‹์žˆ๋Š”/์˜ค์ง ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ (๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๋ก ์„ ๋„์ถœํ•œ...) ์‚ฌ๋žŒ๋“ค๊ณผ ์—ฌ์ „ํžˆ ์˜์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์‹ ๋ขฐ๋ฅผ ํšŒ๋ณตํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฉฐ์น  ๋™์•ˆ ๋งค์šฐ ๊ธธ๊ณ  ์ข‹์€ ํ† ๋ก ์„ ์ง„ํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์นจ๋ฌต๊ณผ ์ด ํ† ๋ก ์— ๋Œ€ํ•œ ์–ธ๊ธ‰ ์—†์ด ๋ธ”๋กœ๊ทธ์˜ ๋ฐœํ‘œ์—์„œ ์ง€์ ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด ์Šค๋ ˆ๋“œ์—์„œ '๊ณต์‹' ๋ฐœํ‘œ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. .

๋ฐœํ‘œ๊ฐ€ ๋งž๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋ฌผ๋ก  ์ข‹์€ ์†Œ์‹์ด๋ผ๋Š” ์‚ฌ์‹ค์€ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด ๋ฏธ์•ˆํ•˜์ง€๋งŒ ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋ช…ํ™•ํžˆํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค

image

์œ„์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ASP.NET Core์˜ ๋ฏธ๋ž˜๊ฐ€ ์†๋„ ์ €ํ•˜๋กœ ์ธํ•ด ์‹ค์ œ๋กœ .NET Standard ๊ณ„์ธต์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ASP.NET Core๊ฐ€ .NET Core์— ๋ฐฐ์น˜๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์˜ ๋ฏธ๋ž˜ ๋ฒ„์ „์ด ๋ฌด์—‡์ด๋“  2.0 ๋˜๋Š” 3.0 ๋“ฑ์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:-
.NET ์ฝ”์–ด -> ASP.NET
์•„๋‹ˆ๋ฉด ์—ฌ์ „ํžˆ .NET Standard -> .NET Core -> ASP.NET Core์ž…๋‹ˆ๊นŒ?

@lilpug ๊ทธ๊ฒƒ์€ ์ƒํ™ฉ์„ ์•…ํ™”์‹œํ‚ค๋Š” ์„ค๋ช…์— ๋Œ€ํ•œ ๋‚ด (์ธ๊ธฐ์—†๋Š” ;-) ์š”์ ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ผ์ข…์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ".NET ํ‘œ์ค€"์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ASP.NET Core๋Š” .NET Framework์˜ ํ”ผ์–ด์ธ ์ƒ์ž ์•ˆ์— ์žˆ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž˜๋ชป๋˜์—ˆ์œผ๋ฉฐ ๋ฌด์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @willdean ๋” ์ ์ ˆํ•œ ๋” ๋‚˜์€ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•˜์ง€๋งŒ ์†”์งํžˆ ๋งํ•ด์„œ .NET Standard๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒ์†๋œ ์œ„์น˜๋ฅผ ๋” ๋งŽ์ด ๊ฐ€๋ฆฌํ‚ค๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ์ ์ ˆํ•œ ๋” ๋‚˜์€ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ํ‘œํ˜„์„ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์ ์–ด๋„ ๋‚ด๊ฐ€ ๋ณธ ๋ชจ๋“  ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ์ž‘์„ฑ์ž์˜ ๋Šฅ๋ ฅ์„ ๋ฌด์‹œํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @shanselman (์ปค๋ฎค๋‹ˆ์ผ€์ดํ„ฐ ์œ ๋Šฅํ•œ )์ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ธฐ์‚ฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ์—๋„ ๊ณต์†ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ์—๋Š” "์šฉ์–ดํ•™์  ์ •ํ™•์„ฑ"์ด ์ž”๋œฉ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋งŽ์€ ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์— ".net ํ‘œ์ค€"์„ ๋„ฃ์œผ๋ ค๋Š” ๋ชจ๋“  ์‹œ๋„๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ API ์‚ฌ์–‘์ด๊ณ  ๊ทธ ์กด์žฌ๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ง๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ASP.NET ํŒ€์€ Angular๊ฐ€ ์•„๋‹Œ ASP.NET์„ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ Microsoft๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋งํ•˜๋Š” ๋ถ€๋‹ด์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹์ ์œผ๋กœ๋Š” ์‚ฌ์‹ค์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋น„๊ณต์‹์ ์œผ๋กœ ์˜ณ๊ณ  ASP.NET ํŒ€์ด ํ•˜๋Š” ์ผ(๋˜๋Š” ํ•˜์ง€ ์•Š๋Š” ์ผ)์ด ์ „์ฒด์— ์ถฉ๊ฒฉํŒŒ๋ฅผ ๋ณด๋‚ธ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์ƒํƒœ๊ณ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  Microsoft์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ์˜ˆ๋Š” AD์— ๋Œ€ํ•œ ์ง€์›์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ์ข‹์€ ์ ์€ AD๊ฐ€ ์ธํ„ฐ๋„ท ์ด์ „ ์‹œ๋Œ€์˜ ์œ ๋ฌผ์ธ ๊ฒƒ์ด ํ™•์‹คํ•˜๊ณ  ์กฐ๋งŒ๊ฐ„ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Microsoft/DNF๊ฐ€ AD๋ฅผ ๊ณต์‹ ASP.NET Core ํ”„๋ ˆ์ž„์›Œํฌ(์—ฌ๋ฆ„ ์ „์— ์ถ”๊ฐ€๋  ๊ฒƒ์ด๋ผ๋Š” ๋ง‰์—ฐํ•œ ์•ฝ์† ์ œ์™ธ...), ๋ฉ”์‹œ์ง€๋Š” ๊ธฐ์ˆ ์ด Microsoft ์ž์ฒด์—์„œ ์ œ์™ธ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ Microsoft ์ œํ’ˆ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด AD๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  Microsoft๋Š” AD ์ง€์›์ด ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋™์•ˆ AD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ€์ƒํ™” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์–ผ๋งˆ๋‚˜ ํ™•์‹ ํ•ฉ๋‹ˆ๊นŒ? ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ์ž˜๋ชป๋œ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ์ธํ”„๋ผ์— AD ์ถ”๊ฐ€๋ฅผ ์ค‘์ง€ํ•˜์‹ญ์‹œ์˜ค. Microsoft์—์„œ ๊ฐœ๋ฐœ์ด ๋‹จ์ ˆ๋œ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์„ ๋•Œ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฐ”๋กœ ์ด๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ASP.NET ํŒ€์€ ์ด ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์–ธ๊ธ‰ํ•  ๋•Œ ์œ„๊ธฐ ์ „ ๊ธด๊ธ‰ ํšŒ์˜๋ฅผ ์—ด๊ณ  ๋ฏธ์นœ ๋“ฏ์ด ์ •๋ณด๋ฅผ ์ฐพ๊ณ  ์ž์‹ ์ด ์ž˜๋ชป๋œ ์„ ํƒ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ASP.NET์€ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ˆœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•ต์‹ฌ ๊ธฐ์ˆ (๋ง์žฅ๋‚œ ์˜๋„)์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ๋ถ„์€ ์•ˆ์ •์„ฑ์„ ์›ํ•˜๊ณ  ํ•ต์‹ฌ ๊ธฐ์ˆ ๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์„ ๋„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์–ด๋ฆฌ์„์€ ์˜ˆ: ์ธ๊ธฐ ์žˆ๋Š” IdentityServer4๋Š” ASP.NET Core 1.1๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ ๋ˆ„๊ตฌ๋“ ์ง€ Core 1.0 ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฒ„์ „์ด... ๋ญ... 4๊ฐœ์›”์ผ ๋•Œ ์ด์ „ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๊นŒ? ์ ˆ๋Œ€. ๊ฐœ๋ฐœ์ž๋ฅผ ๋ถ„์—ด์‹œํ‚ค๊ณ  ์ค‘๊ธฐ์ ์œผ๋กœ ๋‹จ์ˆœํžˆ ์‚ฌ๋žŒ๋“ค์„ ๊ฐ•์ œ๋กœ ์ „ํ™˜์‹œํ‚ค๋Š” ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๊ท€ํ•˜์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ์ด ์—ญ์ถ”์ ์€ ์•„๋ฌด ๊ฒƒ๋„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์‹ฑ .NET์ด ์ตœ์•…์˜ ์„ ํƒ์ด์—ˆ๊ณ  ๋Œ€๋ถ€๋ถ„ Microsoft์˜ ์ดํƒˆ์„ ์•”์‹œํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋‚˜๋ณด๋‹ค ๋จผ์ € ๋งํ–ˆ๋“ฏ์ด .NET์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Azure๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทธ ๋ณ€ํ™”๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(๋˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ํ•™์ƒ์˜ ๋จธ๋ฆฌ ์ƒ‰๊น”์— ๋Œ€ํ•ด ํ† ๋ก ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ˜์˜คํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ). ๊ทธ๋“ค์€ ์ˆ˜๋ฝํ–ˆ์ง€๋งŒ ์†”์งํžˆ Microsoft๋Š” ์ด ์„ ํƒ์— ๋ฌด๊ฒŒ๋ฅผ ๋‘์ง€ ์•Š๊ณ  ๋ณ€ํ™”๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ. ์šฐ๋ฆฌ๋Š” ์™„์ „ํ•œ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ทธ๊ฒƒ์ด ์ •์น˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐœ์–ธ๊ณผ ์˜๊ฒฌ์€ ๋ชจ๋“  ๊ธฐ์ˆ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์ ์ธ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๊ฐ€ UTF8 ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ณ„๋ฅผ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅด์ณ์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ์†”์งํžˆ...

ASP.NET ํŒ€์— ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์€ ์ „์ฒด ์ƒํƒœ๊ณ„์™€ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง€๋Š” "์ˆ˜ํผํŒ€"์— ๋งก๊ธฐ์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด GitHub์—์„œ ์–ด๋–ป๊ฒŒ ๋…ผ์˜๋  ์ˆ˜ ์žˆ๋Š”์ง€์กฐ์ฐจ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

@willdean ok "๋‹ค์ด์–ด๊ทธ๋žจ์ด ์•„๋‹Œ" ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :),

์˜ˆ๋ฅผ ๋“ค์–ด .NET Standard 2.0์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋ฉด ASP.NET Core(.NET Core)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค(ํ–ฅํ›„ ํ˜„๋ช…ํ•จ). ๊ทธ๋ ‡๋‹ค๋ฉด "NET Standard -> .NET Core -> ASP.NET Core"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. " ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ .NET Core๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  NET Standard์˜ ๊ธฐ๋ฐ˜์„ ํ™œ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@lilpug ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Standard์ธ ๊ฒฝ์šฐ ์œ„ ๋ ˆ์ด์–ด์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ๊ฐ™์ด .NET Framework, .NET Core, Xamarin, Mono, Unity ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.NET Standard๋Š” ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋„๋‹ฌ ๋ฒ”์œ„๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด์ƒ์ ์œผ๋กœ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ฒ„์ „์ด ๋‚ฎ์„์ˆ˜๋ก ๋„๋‹ฌ ๋ฒ”์œ„๊ฐ€ ์ปค์ง).

์œ„์˜ ๋ ˆ์ด์–ด๋Š” ์•ฑ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. exe/์‹คํ–‰ ํŒŒ์ผ์ด ๋ฌด์—‡์ธ์ง€. ๊ทธ๊ฒƒ๋“ค์€ ์ตœ์ข… ์ข…์ ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ .NET Framework exe๊ฐ€ ์žˆ์œผ๋ฉฐ Windows์—์„œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Xamarin ์‹คํ–‰ ํŒŒ์ผ iOS, Android, OSX์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(๊ฐ๊ฐ์— ๋Œ€ํ•ด 3๊ฐœ์˜ ๋‹ค๋ฅธ ์‹คํ–‰ ํŒŒ์ผ์ด ํ•„์š”ํ•จ).

.NET Core exe๋Š” ์™„์ „ํžˆ ์ด์‹ ๊ฐ€๋Šฅํ•˜๊ณ  dotnet ์‹คํ–‰๊ธฐ donet my.dll ๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ํ”Œ๋žซํผ Windows, Linux, MacOS, Tizen์šฉ์œผ๋กœ ํŠน๋ณ„ํžˆ ๋Œ€์ƒ์ด ์ง€์ •๋œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ํ”Œ๋žซํผ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ฝ”๋“œ์—์„œ ๋ชจ๋“  ํŠน์ • ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋Œ€์ƒ ์‹คํ–‰ ํŒŒ์ผ(์ž์ฒด ํฌํ•จ)์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด.

์˜ˆ๋ฅผ ๋“ค์–ด .NET Standard 2.0์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋ฉด ASP.NET Core(.NET Core)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

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

@benaadams ํ›จ์”ฌ ๋” ์ดํ•ด๊ฐ€๋˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ž˜์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ASP.NET Core์—์„œ .NET ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์ด๋“  ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์ด๋“  .NET Standard์—์„œ "๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ" ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ํ–ฅํ›„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. .NET Framework 4.6+๊ฐ€ ์•„๋‹ˆ๋ผ ASP.NET Core๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ ๊ณ„์ธต๊ณผ ๋” ์ž˜ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค๋ฉด ๋ฏธ๋ž˜์— ๋” ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํšŒ๋‹ด์€ ๋‚ด์ผ์ด๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://channel9.msdn.com/Events/Build/2017/C9L18

@lilpug

์ข‹์•„ "๋‹ค์ด์–ด๊ทธ๋žจ์ด ์•„๋‹Œ"๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :),

์˜ˆ๋ฅผ ๋“ค์–ด, .NET Standard 2.0์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋ฉด ์ด๊ฒƒ์ด ASP.NET Core(.NET Core)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด "NET Standard -> .NET Core -> ASP.NET Core"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด๋Š” .NET Core๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  NET Standard์˜ ๊ธฐ๋ฐ˜์„ ํ™œ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋กœ .NET ํ‘œ์ค€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด ํด๋ž˜์Šค๋Š” .NET ์ฝ”์–ด์™€ .NET ์ „์ฒด์˜ 2๊ฐ€์ง€ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌํ˜„๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: xamarin ๋ฐ UWP). ์ด๊ฒƒ์€ ๋ฌผ๋ฆฌ์  ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์€์œ ์ž…๋‹ˆ๋‹ค. ์ด์ œ _์ธํ„ฐํŽ˜์ด์Šค_๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์— .net ์ฝ”์–ด์˜ ํด๋ž˜์Šค์ด๋“  .net ์ „์ฒด์˜ ํด๋ž˜์Šค์ด๋“  ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ netstandard2.0์—์„œ๋Š” .net core, .net full, xamarin, uwp์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ตฌํ˜„ ๋˜๋Š” API ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ •์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ netstandard2.0๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•ด๋‹น ํ‘œ์ค€ API ์ •์˜์— ์žˆ๋Š” API ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ตฌํ˜„๋œ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ASP.NET core 2.0์ด netstandard2.0๊ณผ ํ˜ธํ™˜๋œ๋‹ค๋Š” ๊ฒƒ์€ netstandard2.0์˜ API๋งŒ ํ™œ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ASP.NET core 2.0์€ netstandard2.0์ด ๊ตฌํ˜„ ๋œ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

(ํŽธ์ง‘) drats, @benaadams ๊ฐ€ ์ €๋ฅผ ์ด๊ฒผ์Šต๋‹ˆ๋‹ค.

.NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  .NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ @lilpug ๋Š” ๋ชจ๋‘ ๋ฌธ์ œ๊ฐ€ ์—†๊ณ  ๋ฏธ๋ž˜์— ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ธฐ๋œ ์šฐ๋ ค๋Š” ํ˜„์žฌ .NET Standard์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์— ์˜ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” .NET Core 2.0์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ASP.NET Core ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ .NET Core 2.0 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค(.NET Standard ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ).

ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ œ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” ์ฒซ ๋ฒˆ์งธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ผ์ฐ ๋Œ€๋ถ€๋ถ„์˜ ASP.NET Core 2.0 ํŒจํ‚ค์ง€๋Š” netstandard1.* ๋ฐ net4* ๋Œ€์‹  netcoreapp2.0์„ ๋Œ€์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

.NET Full Framework๋ฟ ์•„๋‹ˆ๋ผ .NET Standard์˜ ๊ธฐ๋ณธ ๊ณ„์ธต๋„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๊ฑฑ์ •์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘

์‚ฌํ›„์— ๋Œ€ํ•ด ๋‚ด๊ฐ€ ์ง„์ง€ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€์ด ๋นŒ๋“œ ์ „์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋™์•ˆ ASP.NET Core 2.0 ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ€ .NET Standard 2.0 ์™ธ๋ถ€์— ์žˆ๋Š” API๋ฅผ ํ™œ์šฉํ•˜์—ฌ .NET Framework์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

Kestrel๊ณผ ๊ฐ™์ด netstandard1.3 ๋ฐ net46 ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๊ฒฝ์šฐ(๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋„ ์œ ์‚ฌํ•œ ํƒ€๊ฒŸ์„ ๊ฐ€์ง). ".NET Standard 2.0 ์™ธ๋ถ€์˜ API ํ™œ์šฉ"์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

AFAIK, netstandard2.0 ๋Š” netstandard1.3 _and_ net46 ์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ด๋ฏ€๋กœ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰์„ ๋ฐฉํ•ดํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์–ด๋–ป๊ฒŒ ๋๋‚  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์‹ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .NET ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ. ๊ทธ ํ”„๋กœ์ ํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์ปดํŒŒ์ผ๋ ๊นŒ์š”? ์ข‹์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ API๊ฐ€ ์žˆ๋Š” ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ฐธ์กฐํ•˜๋ ค๋ฉด ๋ชจ๋“  ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ bait-n-switching ๋ฐ ์ฐธ์กฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๋“ฑ์— ๋Œ€ํ•ด ๋ญ”๊ฐ€๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ๋Œ“๊ธ€์ด ์ด๊ฒƒ์ด ๊ฒฐ์ฝ” ์ผ์ด ์•„๋‹Œ ์ฒ™ํ•˜๋Š” ๋ฐฉ๋ฒ•์ผ ๋ฟ์ž…๋‹ˆ๊นŒ? ๐Ÿ˜•

๋˜ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ง์ „์— ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ์„œ๋‘๋ฅผ ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋˜ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? .NET Framework๋Š” ํ…Œ์ŠคํŠธ ๋งคํŠธ๋ฆญ์Šค์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๊นŒ?

@adrianlmm ๊ณ ๋งˆ์›Œ ์นœ๊ตฌ.

์ด๊ฒƒ์€ ๋” ๋งŽ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•˜๋Š” ์ง€์› ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ์ด๋ฒคํŠธ ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ์ด ์ด ๊ธด ์Šค๋ ˆ๋“œ๋ฅผ ๋ชจ๋‘ ์ฝ์„ ํ•„์š”๊ฐ€ ์—†๋„๋ก ์—ฌ๊ธฐ์— ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”. ๋Œ€์‹  ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@khellang

@benaadams ๊ฐ€ ์•Œ๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฐ€ ์ฝ”์–ด ์™ธ๋ถ€์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜๋Š” ์ผ๋ถ€ pull ์š”์ฒญ(์•„๋งˆ๋„ ์ด๋ฏธ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?)์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

@khellang ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ PR๊ณผ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์˜ ์„ค๋ช…์ด ์™„์ „ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค์ด ์‹ค์ œ๋กœ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋œ ๋Œ€๋กœ๋ผ๋ฉด(์ตœ์ข… ์‹คํ˜„, ์ž„์‹œ ๋ณ€๊ฒฝ) #if NET46 ์ฝ”๋“œ ๋กœ๋“œ๊ฐ€ ์ด ๋ณ€๊ฒฝ์˜ ์ผ๋ถ€๋กœ ์ œ๊ฑฐ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๋ณ€๊ฒฝ์˜ ์ผ๋ถ€๋กœ #if NET46 ์ฝ”๋“œ ๋กœ๋“œ๊ฐ€ ์ œ๊ฑฐ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@willdean ๋„ค, ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์•”์‹œ์  ์ •์˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์ฝ”๋“œ(์ปดํŒŒ์ผ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ) ยฏ\_(ใƒ„)_/ยฏ

๊ทธ ๋™์•ˆ ๊ณต์‹์ ์ธ ๊ณต์‹์„ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด @migueldeicaza ๋Š” .Net Standard 2(๋”ฐ๋ผ์„œ NetFx)์˜ ASP.NET Core 2๊ฐ€ ๊ณต์‹ ๊ณ„ํš์ž„์„ ๋“ฑ๋ก์„ ํ†ตํ•ด ํ™•์ธํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://www.theregister.co .uk/2017/05/11/microsoft_backtracks_we_are_going_to_support_net_framework_with_aspnet_core_20/

.NET Framework์™€์˜ ํ˜ธํ™˜์„ฑ ์œ ์ง€์™€ ๊ด€๋ จ๋œ ์ ˆ์ถฉ์•ˆ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๋Ÿฌ๋ฉด ASP.NET Core๊ฐ€ ์ง€์—ฐ๋˜๊ฑฐ๋‚˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๊นŒ?

de Icaza๋Š” ์กฐ๊ฑด๋ถ€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "ํ˜์‹ ํ•˜๊ณ  ์„ฑ๊ณผ๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋‹ต์ž…๋‹ˆ๋‹ค. ๊ณตํ†ต ๋ถ„๋ชจ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉด์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์˜ ์ŠคํŽ™ํŠธ๋Ÿผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.โ€ ์ด๋Š” PC์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์˜ค๋ž˜๋œ ํ•˜๋“œ์›จ์–ด์—์„œ ๊ณ„์† ์‹คํ–‰๋˜๋ฉด์„œ๋„ ์ตœ์‹  CPU ๋˜๋Š” GPU ํ˜์‹ ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. "CPU์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด์ „ ์ฝ”๋“œ๋กœ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค."

์ด์ „ ๋Œ“๊ธ€์„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์žƒ์–ด๋ฒ„๋ฆฐ ๊ฒƒ ๊ฐ™์•„์„œ Angular 2๋ฅผ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋Š” ์ด์ „ ๋Œ“๊ธ€์ด Angular 2๋ฅผ ์–ธ๊ธ‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ํ›Œ๋ฅญํ•œ ๋น„์œ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰, Angular ํŒ€์ด AngularJS๋ฅผ ๋นŒ๋“œํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ์„ ES2016 ๋ฐ TypeScript์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์— ์ ์šฉํ•˜๊ณ  ๊ธฐ์กด์˜ ๋Š๋ฆฐ ํ’๋ถ€ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ชจ๋ฐ”์ผ ๊ฒฝํ—˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋” ๋‚˜์€ _new_๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํˆฌ๋ฐ•ํ•˜๊ณ  CPU ์ง‘์•ฝ์ ์ธ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์„ฑ๊ณตํ–ˆ๊ณ  Angular๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

์™„์ „ํ•œ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ทธ ์œ„์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ, ๊ณ ์„ฑ๋Šฅ, ๋น„์šฉ์— ๋ฏผ๊ฐํ•œ ๋ถ„์‚ฐ ์„œ๋น„์Šค ์„ธ๊ณ„์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด .NET Core๊ฐ€ ๊ตฌ์ถ•๋œ ์„ธ๊ณ„์ด๋ฉฐ ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” TechEmpower Round 14 ์—์„œ 10์œ„์—์„œ 15์œ„๋กœ ํ•˜๋ฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค์ด ๋“ฑ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์ „๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ค‘์š”ํ•˜๋ฉฐ ๊ฒฝ์Ÿ๋ ฅ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์—ฌ๋Ÿฌ๋ถ„, ์ด๋ฒˆ ์ง‘ํ–‰์œ ์˜ˆ๋ฅผ ํ˜„๋ช…ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. .NET Core 2.0, NetStandard2 ๋ฐ ๊ธฐ์กด .NET ํŒจํ‚ค์ง€์™€์˜ ํ–ฅ์ƒ๋œ ํ˜ธํ™˜์„ฑ(๋” ๋งŽ์€ ์‹ค์ œ netstandard ํŒจํ‚ค์ง€ ๋ฆด๋ฆฌ์Šค)์ด ์ „์ฒด .NET์—์„œ Core๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ์‹ ์ด ๋‹น์‹ ์—๊ฒŒ ASP.NET 4.7์— ๋จธ๋ฌผ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@tbprince

์ด ์Šค๋ ˆ๋“œ๊ฐ€ UTF8 ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ณ„๋ฅผ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅด์ณ์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ์†”์งํžˆ...

ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ๊ฒŒ์‹œ๋ฌผ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํŠนํžˆ ์œ„์˜ ๋ผ์ธ์€ IMHO๊ฐ€ ๋งค์šฐ ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@willdean Asp.Net Core๊ฐ€ ๋ชฉํ‘œ๋กœ ์‚ผ์„ ๋•Œ ๋ฌผ๊ฑด์ด ์ ์ ˆํ•œ netstandard2x ํ”Œ๋žซํผ์— ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@FransBouma

์•ฝ๊ฐ„ ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ›์•„๋“ค์ธ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ์ง„์ง€ํ–ˆ๋‹ค.

@stefanolson @alexwiese @yaakov-h XAML Standard 1.0์€ Build https://github.com/microsoft/xaml-standard ์—์„œ ๋ฐฉ๊ธˆ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@markrendle ์€ Mark๋ฅผ ์‚ฌ๋ž‘ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ํฐ ๊ทธ๋ฆผ์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TechEmpower ๋ฒค์น˜๋งˆํฌ๋Š” ํฐ ํ‹€์—์„œ ๋ณด๋ฉด ์‚ฌ์†Œํ•˜๊ณ  ํ•˜๋ฃจ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์„ NETFX ์ฝ”๋“œ๋ฅผ ์„ฑ๋Šฅ ์ตœ์ ํ™”ํ•˜๋Š” ์ž‘์—…์œผ๋กœ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ์œผ๋กœ์„œ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ASP.NET Core ํŒ€์€ ๋‹ค๋ฅธ ๊ฒฝ์Ÿ ๊ธฐ์ˆ ๊ณผ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋น„๊ตํ•˜๋Š” ์ˆ˜๋‹จ์œผ๋กœ ์ด๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Node.JS์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ .NET Core๋กœ ์ˆœ ์‹ ๊ทœ ์ธ๋ ฅ์„ ๋Œ์–ด๋“ค์ด๋Š” ๋ฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฑ…์ž„์ด ์žˆ๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ IIS์™€ Windows์—์„œ ์‹คํ–‰๋˜๋Š” ๋ˆ„์  ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋กœ ์ˆ˜์ฒœ์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ์ฐฝ์ถœํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋ฐฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ข‹์€ ๊ธฐ๋Šฅ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ .NET์€ ์ด๋ฏธ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ด๋“  ๊ฐ„์— ์ €๋Š” ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(ํ•˜๋ฃจ์— ์ˆ˜์–ต ๊ฑด์˜ ์š”์ฒญ)์„ ์‹คํ–‰ํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ Docker๋‚˜ Linux๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—๋Š” ๋‚ด๊ฐ€ ์˜์‹ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ํฐ ๊ทœ๋ชจ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์„ฑ๋Šฅ(ํŽธ์ง‘: ๋” ๋‚˜์€ ๋ฐฐํฌ ํ™˜๊ฒฝ) ์ธก๋ฉด์—์„œ .NET Core๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์˜ค๋Š˜๋‚  ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ทธ ๊ทœ๋ชจ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜๋ฃจ์— ์ˆ˜์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ์›€์ง์ด๋Š” ๊ธˆ์œต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ™˜์ž์—๊ฒŒ ์น˜๋ฃŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜๋ฃŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์—๋„ˆ์ง€ ์ƒ์‚ฐ ๋ฐ ์†Œ๋น„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค, ์šด์†ก ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ์•ˆ์ „ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ตฌ์ถ•ํ•˜๋Š” ASP.NET / NETFX ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์„ธ์ƒ์€ ๊ทธ๋“ค์˜ "๋ ˆ๊ฑฐ์‹œ" ์ฝ”๋“œ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ๋ฐœ์ž๋“ค์€ ASP.NET ํŒ€์ด ์ฒ˜์Œ์— ๊ณ ์šฉ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ MSDN ๋ผ์ด์„ ์Šค, ๋Œ€๊ทœ๋ชจ Azure ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ„์•ฝ, ๋Œ€๊ทœ๋ชจ Office ๊ตฌ๋… ๋ฐ ์ƒ์„ฑ, ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์— ์ž๊ธˆ์„ ์ง€์›ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ SQL Server ๋ฐฐํฌ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

์ด ์‚ฌ๋žŒ๋“ค์ด ์Šค๋ ˆ๋“œ์—์„œ ๋งํ•˜๋Š” ๊ฒƒ์€ "์–ด๋–ค ์‹์œผ๋กœ๋“ , ๋ชจ์–‘์ด๋‚˜ ํ˜•ํƒœ๋กœ๋‚˜ ์ž‘์€ ์ด์ต์„ ์œ„ํ•ด ์ด ์ •๋„์˜ ๋ณ€ํ™”๋ฅผ ๊ฒฝ์˜์ง„์—๊ฒŒ ํŒ๋งคํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค."์ž…๋‹ˆ๋‹ค. ์ดˆ๋‹น ์š”์ฒญ ์ฒ˜๋ฆฌ๋Ÿ‰์ด 10๋ฐฐ ํ–ฅ์ƒ๋˜๋Š” ๊ฒƒ์€ ๋น„์ฆˆ๋‹ˆ์Šค ํ™œ๋™์˜ ์ค‘๋‹จ๊ณผ ๋น„๊ตํ•  ๋•Œ ์ข‹์€ ์ ˆ์ถฉ์•ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํŠนํžˆ ๋‘ ๊ธฐ์ˆ ์˜ ๊ฒฉ์ฐจ๊ฐ€ ์˜ค๋Š˜๋‚ ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๊ฐ‘์ž๊ธฐ ํ”Œ๋žซํผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. @NickCraver ๋Š” ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ SO์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ์ œ์ ์ธ ํ”Œ๋žซํผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ์ง€์†์ ์ธ ๊ด€์‹ฌ๊ณผ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ๋ฐœ์ž๋“ค์€ Luddites๋‚˜ ๋ฐ”๋ณด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ธ‰์—ฌ๋ฅผ ์ง€๋ถˆํ•˜๋Š” ๊ธฐ์—…์˜ ํ˜„์‹ค์— ์ œ์•ฝ์„ ๋ฐ›๊ณ  ์žˆ์œผ๋ฉฐ, ์ž์‹ ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ฐ์€ ํ•ด๋‹น ๊ธฐ์—…๊ณผ ๊ณ ๊ฐ์„ ์œ„ํ•œ ์—„์ฒญ๋‚œ ์ด์  ์—†์ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ”Œ๋žซํผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐœ์›” ๋˜๋Š” ๋ช‡ ๋…„์„ ์‰ฌ๋Š” ๊ฒƒ์„ ์šฉ๋‚ฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” .NET์˜ ๊ณผ๊ฑฐ์— ์˜ํ•ด ์ œ์•ฝ์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ฏธ๊ฐœ๋ฐœ ๋ฏธ๋ž˜๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ๊ณผ ๊ทธ๊ฒƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ์ง€๊ธˆ ๋‹น์žฅ์€ ๊ฒฝ์ œ์ ์œผ๋กœ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๋‘ ์ง„์˜ ์‚ฌ์ด์— ๋ถ„๋ช…ํžˆ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž ๊ทธ๋ฃน์€ ์ด๋ฏธ ๋…ผ์Ÿ์—์„œ ์Šน๋ฆฌํ–ˆ์œผ๋ฉฐ .NET ํ”Œ๋žซํผ์˜ ๊ฐ€์žฅ ํฐ ์†Œ๋น„์ž๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์‚ฌ์šฉ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋น ๋ฅด๊ฒŒ ์ฑ„ํƒํ•  ์—ฌ์œ ๊ฐ€ ์žˆ๋Š” ๋…๋ฆฝ ์šด์˜์ž๋Š” ์šฐ๋ฆฌ์™€ ๊ฐ™์€ ๋ฐฐ์— ๊ฐ‡ํžˆ๊ฒŒ ๋  ๊ฒƒ์ด์ง€๋งŒ Visual Studio, Code, MSFT์˜ ๋›ฐ์–ด๋‚œ OSS ๋„๊ตฌ ๋“ฑ์˜ ๋ฌด๋ฃŒ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋Œ€๊ฐ€๋กœ ์ง€๋ถˆํ•˜๋Š” ๋Œ€๊ฐ€์ž…๋‹ˆ๋‹ค. ์•Œ.

๊ธฐ์—…/NETFX ์‚ฌ์šฉ์ž๊ฐ€ ๋” ๋‚˜์€ ๋ฒค์น˜๋งˆํฌ์˜ ์ด๋ฆ„์œผ๋กœ ์ผ์ข…์˜ ๊ธฐ์ˆ ์  ์ˆœ์ˆ˜์„ฑ์— ๊ตด๋ณตํ•˜๋Š” ๊ฒƒ์€ ์‹คํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•œ ์š”๊ตฌ์ž…๋‹ˆ๋‹ค. MSFT๊ฐ€ ์šฉ๊ฐํ•œ ์ผ ์„ ํ•˜๊ณ  NETFX๋ฅผ NET Core์™€ ๋ณ‘๋ ฌ๋กœ ๋” ์ข‹๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค . ๊ณ ๊ฐ์ด ์ด ์Šค๋ ˆ๋“œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

.NET์€ ํฐ ํ…ํŠธ์ด๋ฉฐ ์ €๋Š” Microsoft๊ฐ€ .NET Core ๋ฐ .NET Standard๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•˜๋Š” ๋…ธ๋ ฅ์— ๊ฐํƒ„ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ฐฌ์‚ฌ๋ฅผ ๋ฐ›๊ณ  ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 15๋…„ ์ด์ƒ NETFX(๋ฐ ํ•ด๋‹น ์‚ฌ์šฉ์ž)๋ฅผ ์ฑ„ํƒํ•œ ํ›„ ์„œ๋‘๋ฅด์ง€ ์•Š๊ณ  ๋ฒ„๋ ค์•ผ ํ•˜๊ณ  ์žŠํ˜€์ ธ์•ผ ํ•˜๋Š” ์ผ์ข…์˜ ๋ถˆํŽธํ•œ ์œ ์‚ฐ์œผ๋กœ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ปํ•ด์•ผ ์–ด์กฐ์ž…๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ๋‘ ํ”Œ๋žซํผ์ด ๊ฐˆ๋ผ์ง€๋Š” ๊ฒƒ์ด ์šด๋ช…์ด๋ผ๋ฉด ํ•ด๋‹น ๊ฐœ๋ฐœ์ž์™€ ํ˜‘๋ ฅํ•˜์—ฌ ๊นจ๋—ํ•˜๊ณ  ์ ์ง„์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ASP.NET Core / .NET Core๊ฐ€ .NET๊ณผ์˜ ๊ด€๊ณ„ ์—†์ด ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ธŒ๋žœ๋“œํ™”๋˜๋ฉด ๊ฐ€์žฅ ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ๋™์•ˆ Microsoft๋ฅผ ์ง€์›ํ•˜๊ณ  ๊ทธ๋“ค์—๊ฒŒ๋„ ์ฑ…์ž„์„ ๋ฌผ๋ฆฝ์‹œ๋‹ค.

@๋งˆํฌ๋ Œ๋“ค

์™„์ „ํ•œ .NET ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ทธ ์œ„์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ, ๊ณ ์„ฑ๋Šฅ, ๋น„์šฉ์— ๋ฏผ๊ฐํ•œ ๋ถ„์‚ฐ ์„œ๋น„์Šค ์„ธ๊ณ„์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด .NET Core๊ฐ€ ๊ตฌ์ถ•๋œ ์„ธ๊ณ„์ด๋ฉฐ ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๋Š” TechEmpower Round 14์—์„œ 10์œ„์—์„œ 15์œ„๋กœ ํ•˜๋ฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๊ฐœ์›” ๋™์•ˆ ์ƒˆ๋กœ์šด ๊ฒƒ๋“ค์ด ๋“ฑ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์ „๋ถ€๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ค‘์š”ํ•˜๋ฉฐ ๊ฒฝ์Ÿ๋ ฅ์„ ๊ฐ–์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์—ฌ๋Ÿฌ๋ถ„, ์ด๋ฒˆ ์ง‘ํ–‰์œ ์˜ˆ๋ฅผ ํ˜„๋ช…ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. .NET Core 2.0, NetStandard2 ๋ฐ ๊ธฐ์กด .NET ํŒจํ‚ค์ง€์™€์˜ ํ–ฅ์ƒ๋œ ํ˜ธํ™˜์„ฑ(๋” ๋งŽ์€ ์‹ค์ œ netstandard ํŒจํ‚ค์ง€ ๋ฆด๋ฆฌ์Šค)์ด ์ „์ฒด .NET์—์„œ Core๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜๋ฐฑ๋งŒ ์ค„์˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ์‹ ์ด ๋‹น์‹ ์—๊ฒŒ ASP.NET 4.7์— ๋จธ๋ฌผ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘”๊ฐํ•˜๊ฒŒ ํ–‰๋™ํ•˜์ง€ ๋ง๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋ฏธ๋ž˜์˜ ๋…ธ๋ ฅ์„ ์–ด๋””์— ๋ฐ”์ณ์•ผ ํ•˜๋Š”์ง€ ์ง€์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„, ๋…ธ๋ ฅ, ํ—Œ์‹  ๋ฐ ์ƒ๊ณ„๊ฐ€ ๊ฑธ๋ ค ์žˆ๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์ž์‹ ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ท€ํ•˜๋ณด๋‹ค ๋” ์ž˜ ์•Œ๊ณ  ์–ด๋””๋ฅผ ๋ฐ”์ณ์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋กœ๋“œ๋งต์ด ๋ช…ํ™•ํ•ด์ง€๋ฉด ๊ฐœ๋ณ„ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET ํŒ€์˜ ๊ณต์‹ ๋Œ€๋ณ€์ธ์€ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ณต์‹ ๋ฐœํ‘œ์™€ ์•ฝ์†์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํ”Œ๋žซํผ์˜ ๋ฏธ๋ž˜ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๋” ๋ช…ํ™•ํ•œ ๊ทธ๋ฆผ์„ ์–ป์€ ํ›„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์Šค์Šค๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋Ÿผ.

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

์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์˜ ๊ธธ์€ ASP.NET ํŒ€์ด ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ ๋ชจ๋“  ๊ณ„ํš์„ ๋ฐ›์•„๋“ค์ด๊ณ  ํ”Œ๋žซํผ์„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ ์ž์‹ ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ๋‚ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด Active Directory์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•ด ๋งŽ์€ ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Active Directory ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ .NET Core ์†”๋ฃจ์…˜์ด ํ˜„์žฌ ์žˆ๊ฑฐ๋‚˜ ์•ž์œผ๋กœ๋„ ์žˆ์„ ๊ฒƒ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@twilliamsgsnetx Active Directory๊ฐ€ ์˜ต๋‹ˆ๋‹ค. ์ƒ์œ„ 100๊ฐœ ๋Œ“๊ธ€์—๋Š” ์ข‹์€ ๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@hallator ๋„ค, ๋ฐฉ๊ธˆ Scott์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ผ... ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ œํ’ˆ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ—ค.

๊ฐ์‚ฌ ํ•ด์š”! :+1:

@hallatore ์ตœ๊ทผ ์ถœ์‹œ๋œ Preview์—์„œ Active Directory ์ง€์›์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์•„์ง ์—ฌ๋ฆ„ ์ค‘์œผ๋กœ ์˜ˆ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? AD ํ†ตํ•ฉ์ด ํ•„์š”ํ•œ ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ Core๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@adam3039 , .NET Framework ์œ„์— ์•‰์•„ ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ Core 1.x์—์„œ AD๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. System.DirectoryServices๋Š” ๋‚˜์ค‘์— ๋‹ค์Œ .NET Core 2.x ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์—์„œ ์ œ๊ณต๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@snickler ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! .NET Framework ์œ„์— ์ƒˆ Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ Azure AD ์ธ์ฆ ์˜ต์…˜๋งŒ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋” ์กฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ฒค์น˜๋งˆํฌ์˜ ์š”์ ์€ ์›์‹œ ์†๋„๊ฐ€ ์•„๋‹ˆ๋ผ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ์ œ๊ณต๊ณผ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋œ ํ›จ์”ฌ ์ ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ์™€ ๋™๋“ฑํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ ํ•˜๋“œ์›จ์–ด ์„ค์ • ๋˜๋Š” ํด๋ผ์šฐ๋“œ ์•ฝ์ •์˜ 10๋ถ„์˜ 1๋กœ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ .NET Core๋Š” ์ตœ์‹  ํŒจํ„ด๊ณผ ์‚ฌ๋ก€๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ , ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•˜๊ณ  ํ˜์‹ ํ•˜๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์œ„ํ•œ ๋” ๋งŽ์€ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ชจ๋†€๋ฆฌ์‹ ๋ฉ์–ด๋ฆฌ๋กœ ๊ฒฌ๊ณ ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์„œ๋น„์Šค ์ง€ํ–ฅ ๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ์˜ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„ํš๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๊ถŒ์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•๋ ฅํžˆ ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํŒŒ์ผ์ด๋‚˜ ์ฝ”๋“œ ์ค„์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ ํ”„๋กœ์ ํŠธ์— ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ COBOL์—์„œ 4GL ๋˜๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ„์— ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ๋งŽ์€ COBOL์ด ์„ธ์ƒ์„ ์šด์˜ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์‹ค์ œ๋กœ ์™„์ „ํ•œ Windows ASP.NET ๋ฐ IIS์— ๊ฐ‡ํžŒ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ‰๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๊ณ„์†ํ•ด์„œ ์•ž์œผ๋กœ ๋‚˜์˜ฌ ๋ฉ‹์ง„ C# ํ•ญ๋ชฉ์„ ๋ชจ๋‘ ์–ป๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ .NET Core์— ๋“ค์–ด๊ฐ€๋Š” ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๊ฒฐ๊ตญ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ์ง€ ์กฐ๊ธˆ ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mythz ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•œ ๊ฒƒ์ด ์ •ํ™•ํžˆ ๋‹น์‹ ์ด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

@๋งˆํฌ๋ Œ๋“ค

๋ฒค์น˜๋งˆํฌ์˜ ์š”์ ์€ ์›์‹œ ์†๋„๊ฐ€ ์•„๋‹ˆ๋ผ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ์ œ๊ณต๊ณผ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋œ ํ›จ์”ฌ ์ ์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ์™€ ๋™๋“ฑํ•œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ ํ•˜๋“œ์›จ์–ด ์„ค์ • ๋˜๋Š” ํด๋ผ์šฐ๋“œ ์•ฝ์ •์˜ 10๋ถ„์˜ 1๋กœ ์‹œ์Šคํ…œ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ .NET Core๋Š” ์ตœ์‹  ํŒจํ„ด๊ณผ ์‚ฌ๋ก€๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ , ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•˜๊ณ  ํ˜์‹ ํ•˜๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์œ„ํ•œ ๋” ๋งŽ์€ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด .NET Core๊ฐ€ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๊ณ  ์ด๋ฏธ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์„ฑ๋Šฅ์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋น ๋ฅธ C๋ณด๋‹ค .NET Core 4.2๋ฐฐ ๋” ๋น ๋ฅธ 10๋ฐฐ ๋” ๋‚˜์€ ์‚ฌ์šฉ๋ฅ  ์ˆ˜์น˜๋ฅผ ์–ด๋””์—์„œ ๋Œ์–ด์˜ค๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ตœ์ƒ์œ„ ์ˆซ์ž๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์€ ์‹ค์ œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฆ‰์‹œ ์ด๋Ÿฌํ•œ ์ˆซ์ž๊ฐ€ ์ฃผ๋ณ€ํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ณ  .NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋Š” ์กฐ์ง์— ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ ์ˆ˜์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธํ™˜์„ฑ ๋“ฑ

๊ฐ€์žฅ ๊ฐ€์น˜ ์žˆ๋Š” ์ธํ„ฐ๋„ท ์ž์‚ฐ์€ ๊ฐ€์žฅ ๋น ๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋™์  ์–ธ์–ด๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ’๋ถ€ํ•˜๊ณ  ํ™œ๊ธฐ์ฐจ๊ณ  ์ƒ์‚ฐ์ ์ด๋ฉฐ ์•ˆ์ •์ ์ธ ์ƒํƒœ๊ณ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์—๊ฒŒ ํ™•์žฅ์„ฑ์€ ์›์‹œ ์„ฑ๋Šฅ๋ณด๋‹ค ๋” ์ค‘์š”ํ•˜๋ฉฐ, ์›์‹œ ์„ฑ๋Šฅ๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ์šฐ์ˆ˜ํ•œ ์บ์‹ฑ ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋Š๋ฆฐ ํ”„๋ ˆ์ž„์›Œํฌ๋„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ชจ๋†€๋ฆฌ์‹ ๋ฉ์–ด๋ฆฌ๋กœ ๊ฒฌ๊ณ ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ์„œ๋น„์Šค ์ง€ํ–ฅ ๋˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ์˜ ์ ์ ˆํ•˜๊ฒŒ ๊ณ„ํš๋œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๊ถŒ์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•๋ ฅํžˆ ๋ฏฟ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „์—๋Š” ๋ฌด์—‡๋ณด๋‹ค๋„ ์ตœ๋Œ€ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์ค‘์š”ํ–ˆ์œผ๋ฉฐ ์ด์ œ๋Š” ์ž‘์—… ์‹œ์Šคํ…œ์„ ๋ฆฌํŒฉํ„ฐ๋งํ•˜์—ฌ ๋” ๋งŽ์€ ๋„คํŠธ์›Œํฌ ํ™‰์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์„ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์š”์ • ๋จผ์ง€ ๊ธฐ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค. @NickCraver ๋Š” ์ด๋ฏธ ์ด๊ฒƒ์ด StackOverflow์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์œผ๋ฉฐ Basecamp ๋ฐ ๊ธฐํƒ€ ๋งŽ์€ ์ €๋ช…ํ•œ ์—…๊ณ„ ๋ฆฌ๋”์—๊ฒŒ๋„ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋†€๋ฆฌ์‹์„ ๋จผ์ € ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๋” ์ ์€ ์ ˆ์ถฉ์•ˆ์œผ๋กœ ๋” ๋งŽ์€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ž‘์—… ์‹œ์Šคํ…œ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ณ ๊ฐ ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ทผ๋ณธ์ ์ธ ์ฃ„์ด๋ฏ€๋กœ ๋ฏธ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์—์„œ ๋” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@mythz ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•œ ๊ฒƒ์ด ์ •ํ™•ํžˆ ๋‹น์‹ ์ด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ .NET Standard 2.0 ๋ฐ .NET Core 2.0์€ https://channel9.msdn.com ์—์„œ 11:54:00 ๋ถ€ํ„ฐ ๋ผ์ด๋ธŒ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋””์˜ค์— ๋Œ€ํ•œ ์ง์ ‘ ๋งํฌ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์šฐ๋ ค๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ์™„ํ™”๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šค์ฝง ํ—Œํ„ฐ:

๊ณ„ํš์€ ASP.NET Core 2.0์ด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 2์—์„œ .NET Framework์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Github๋Š” .NET์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ(.NET ๋ธ”๋กœ๊ทธ ๋˜๋Š” ASP.NET ๋ธ”๋กœ๊ทธ)๋Š” ํŒ€์ด ์‹ค์ œ๋กœ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—…์— ๋Œ€ํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ณณ์ด๋ฉฐ, ์—ฌ๊ธฐ์„œ ๋„๊ตฌ๋ฅผ ์ด๋™ํ•  ๊ณณ์ž…๋‹ˆ๋‹ค. ๋“ฑ๋“ฑ.

WinForms, WPF๋Š” Windows ๊ธฐ๋Šฅ์ด๋ฉฐ .NET Core๋Š” .NET์˜ ๊ต์ฐจ ํ”Œ๋žซํผ ํŠน์ง•์ด๋ฏ€๋กœ Windows ์ „์šฉ ism์„ .NET Core๋กœ ์ด๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ณ ๊ฐ์—๊ฒŒ ๋งํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ . NET Framework๋Š” ์•„๋ฌด๋ฐ๋„ ๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” .NET Framework๋ฅผ ์˜์›ํžˆ ์ง€์›ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๋ชจ๋“  ์ด์ „ ์ฝ”๋“œ๋ฅผ .NET Core๋กœ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•๋ฐ•๊ฐ์„ ๋Š๋ผ์‹ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. .NET Core๋กœ ์ด๋™ํ•˜๋Š” ์ด์œ ๋Š” ํ”Œ๋žซํผ ๊ฐ„์„ ์›ํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ๋‚˜๋ž€ํžˆ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

.NET Core๋Š” Windows์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๊ณ  ๋ณ‘๋ ฌ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— .NET Framework๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชฉํ‘œ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด .NET Framework์—์„œ .NET์œผ๋กœ ์•ฑ์„ ์™„์ „ํžˆ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Core, WinForms, WPF ๋˜๋Š” WCF๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ .NET Framework์—์„œ ์‹คํ–‰ํ•˜๊ธฐ์— ์ข‹์€ ์›Œํฌ๋กœ๋“œ์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์˜์›ํžˆ ์ง€์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ  ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์›ํ•˜๊ฑฐ๋‚˜ ์ „์ฒด๋ฅผ ๋‚˜๋ž€ํžˆ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์œ„์˜ ์ฑ„๋„ 9 ์ŠคํŠธ๋ฆผ์—์„œ ์ด์— ๋Œ€ํ•ด ๋‹ต๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ASP.NET Core 2.0์€ netstandard2.0 ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  netstandard2.0 ํ˜ธํ™˜ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ASP.NET Core 2.0์€ .NET Framework์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ MS ๊ฐœ๋ฐœ์ž๊ฐ€ ์œ„์˜ ์ง„์ˆ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฝค ํ™•์‹คํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋‘ ํ›Œ๋ฅญํ•œ ํ† ๋ก ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‚ด 2์„ผํŠธ๋Š” ASP.NET Core๊ฐ€ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ .NET Core์˜ ์‚ฌ์šฉ์„ ์ด‰์ง„ํ•˜๋Š” Microsoft์˜ ๊ฐ€์žฅ ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด .NET Standard๋ฅผ ๋งŒ๋“ค๊ณ  .NET์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์— ๊ฑธ์ณ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— asp.net ์ฝ”์–ด์—์„œ NETSTANDARD2.0์„ ๋Œ€์ƒ์œผ๋กœ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋ฉ‹์ง„๊ฐ€์š”? ํฌํ•จ๋œ ์›น ์„œ๋ฒ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Xamarin ์•ฑ ๋˜๋Š” WPF ์•ฑ ๋‚ด์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ASP.NET Core๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ (ํ˜ธ์ŠคํŒ…, ์„œ๋ฒ„ ๋“ฑ) ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ๋ณด๊ณ  ์žˆ๋Š” ๊ทธ๋ฆผ์€ .NET Core๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .NET์˜ ๋‹ค๋ฅธ ํŠน์ง•์„ ์ง€์›ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ASP.NET Core์˜ ํ–ฅํ›„ ์š”๊ตฌ API ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์›ํ•˜๊ณ  ASP๋ฅผ ๋ฌถ๊ธฐ ์œ„ํ•ด ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์œผ๋กœ ๊ณ„์† ์ด๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. .NET Core์™€ .NET Core.

๋‚˜๋Š” ๊ทธ๋“ค์ด .NET Core์—์„œ ASP.NET Core๋ฅผ ๊ณ„์† ์„ฑ์žฅ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์›ํ•˜๋Š” ์ดˆ๊ณ ๊ธ‰ API๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ๋ชจ๋ฅด์ง€๋งŒ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ ์€ ASP.NET Core๋Š” ๋˜ ๋‹ค๋ฅธ LIBRARY์ผ ๋ฟ์ด๋ฉฐ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „์ฒด .NET Framework๋Š” ์•„์ง ์™„์„ฑ๋„๊ฐ€ ๋†’์œผ๋ฉฐ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ธฐ์—… ๊ณ ๊ฐ(์ € ํฌํ•จ)์ด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ .NET Framework์—์„œ ASP.NET Core๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

์ฐธ๊ณ ๋กœ .NET Standard 2.0 ๋ฐ .NET Core 2.0์€ https://channel9.msdn.com ์—์„œ ๋ผ์ด๋ธŒ๋กœ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค... ๋ชจ๋“  ์šฐ๋ ค๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ์™„ํ™”๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ด์ „ ๋ฐˆ์„ ๋นŒ๋ฆฌ๋ ค๋ฉด "์•ž์œผ๋กœ, ์˜ค์„ธ์•„๋‹ˆ์•„!"

@๋งˆํฌ๋ Œ๋“ค

๊ทธ๋ฆฌ๊ณ  ์ตœ์•…์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์‹ค์ œ๋กœ ์™„์ „ํ•œ Windows ASP.NET ๋ฐ IIS์— ๊ฐ‡ํžŒ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ‰๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋‚˜์˜ฌ ๋ฉ‹์ง„ C# ํ•ญ๋ชฉ์„ ๋ชจ๋‘ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ .NET Core์— ๋“ค์–ด๊ฐ€๋Š” ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์€ ๊ฒฐ๊ตญ์—๋Š” ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆด ๋ฟ์ž…๋‹ˆ๋‹ค.<

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ด ์Šค๋ ˆ๋“œ์˜ ์š”์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์žก๋Š” ๋ฐ 6๊ฐœ์›”์—์„œ 1๋…„์ด ๊ฑธ๋ฆฌ๋”๋ผ๋„ asp.net ์ฝ”์–ด๊ฐ€ .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์€ ๋งค์šฐ ๋งŒ์กฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋ฐ›์€ ์ธ์ƒ์€ asp ํŒ€์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•˜๊ณ  .net ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋˜๋Œ์•„์˜ค์ง€ ์•Š๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ฐ์—๊ฒŒ ์ฑ…์ž„์ด ์žˆ๋Š” ์šฐ๋ฆฌ๋ฅผ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฏธ๋ž˜ ๊ณ„ํš์— ๋Œ€ํ•œ ๋ช…ํ™•์„ฑ์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@mythz ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฐ€์žฅ ์ข‹์€ ๊ธธ์€ ASP.NET ํŒ€์ด ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ ๋ชจ๋“  ๊ณ„ํš์„ ๋ฐ›์•„๋“ค์ด๊ณ  ํ”Œ๋žซํผ์„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์šฐ๋ฆฌ ์ž์‹ ์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@stefanolson ๋‹น์‹ ์€ ๋‚˜๋ฅผ ์˜คํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ๋“  .NET Core์—์„œ ์‹คํ–‰๋˜๋Š” ASP.NET Core๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ (์˜ˆ: C++/CLI ํ•ญ๋ชฉ)์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ Classic ASP๋ฅผ ์œ ์ง€ํ•˜์„ธ์š”. .NET MVC/WebAPI ๋˜๋Š” WebForms.

(์ฐธ๊ณ ๋กœ ์ €๋Š” ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋งˆ์นจ๋‚ด WebForms kerfuffle์—์„œ ์ด๋™ํ–ˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์‚ฌ๋žŒ๋“ค์€ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.)

@markrendle ๊ทธ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ์–ธ๊ธ‰ ๋œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@markrendle WebForms to MVC๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ƒ์„  ์ฃผ์ „์ž์˜€์Šต๋‹ˆ๋‹ค. UI ๋ ˆ์ด์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ์ƒ์„ฑ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋…ผ์˜๋˜๋Š” ๊ฒƒ์€ ๋‚ด UI ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด ๋ชจ๋“  ์ฝ”๋“œ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์™„์ „ํžˆ ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ UI ์ฝ”๋“œ๋Š” ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@stefanolson ์–ด์ฉŒ๋ฉด ๋‹น์‹ ๊ณผ ๋‹น์‹ ์˜ ์ฝ”๋“œ์—๊ฒŒ WebForms์—์„œ MVC๋กœ์˜ ์ „ํ™˜์€ ์‰ฌ์› ์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์™„์ „ํ•œ .NET์—์„œ Core๋กœ ์ง€๊ธˆ์ฒ˜๋Ÿผ ๊ทน๋ณตํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ œ ์š”์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ASP.NET Core๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

WebForms -> MVC5 ์ „ํ™˜ ์ค‘๊ฐ„์— @stefanolson @markrendle , ์ด๊ฒƒ์€ MVC/MVC2์—์„œ๋Š” ๊ทน๋ณตํ•  ์ˆ˜ ์—†์—ˆ๊ณ  MVC5์—์„œ๋Š” ๋œํ–ˆ์Šต๋‹ˆ๋‹ค. ASP .NET Core 3 ์ด์ƒ์ด ๋” ์‰ฌ์šด ์ „ํ™˜์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋น„์Šทํ•œ ์ƒํ™ฉ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ WebForms Coolaid HARD๋ฅผ ๋งˆ์‹  ์‚ฌ๋žŒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „ํ™˜ ์ค‘์— ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ViewState ๊ณค๊ฒฝ์— ๋น ์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์›๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ -> ํ•ต์‹ฌ ์ „ํ™˜์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ „ํ™˜์„ ์œ„ํ•œ ์•ˆ์ •์ ์ด๊ณ  ๋ช…ํ™•ํ•˜๋ฉฐ ๋ฌธ์„œํ™”๋œ ๊ณ„ํš์„ ๊ฐ–๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ž˜์— .NET Standard์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์ด์‹ ๊ฐ€๋Šฅํ•˜๊ณ  ๋…ธ๋ ฅ์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ๊ตฌ๋ณ„์ด ์žˆ๋‹ค๋ฉด ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๋ถˆํ™•์‹ค์„ฑ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. NET Standard๋กœ ์ด๋™ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋ชฉํ‘œ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ข‹์ง€ ์•Š์€ ์ผ์ด๋ฉฐ, ์ด๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ด€์— ๋ชป์ด ๋ฐ•ํž ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๊ฑฐ๋‚˜ ~Python 2.x~ .NET Framework 4.x์— ์˜ค๋žซ๋™์•ˆ ๊ฐ‡ํžˆ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ณ€ํ™”์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜ฌ๋ฐ”๋ฅธ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์€
ํž˜๋“  ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ HttpContext.Current๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ๊ฒฝ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค... ์•„์ง...
์ง€๊ธˆ๋„ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•ฑ์€ ๋‹ค์Œ ์ดํ›„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ปจํ…์ŠคํŠธ ๊ฐ’์— ๋”ฐ๋ผ ์ˆ˜๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

WebForms ์ฟจ์—์ด๋“œ์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ, ์—…๋ฐ์ดํŠธ ํŒจ๋„,
๋“ฑ ... ์—ฌ์ „ํžˆ ASMX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ jQuery๋กœ AJAX๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ํž˜๋“ค์—ˆ์ง€๋งŒ
๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ํ•˜๋Š” "์˜ฌ๋ฐ”๋ฅธ" ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์•ฑ์—์„œ ์Šค์™€ํ•‘ํ•˜๋Š” ๊ฒƒ์€
MVC๊ฐ€ ๋‚˜์˜ค๋ฉด ๋” ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

๋˜‘๊ฐ™์€ ์ผ์ด ์ง€๊ธˆ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์ด ๋ฐ”๋€Œ๊ณ  ์žˆ์œผ๋ฉฐ
"์ข‹์€ ๊ด€ํ–‰"์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฒƒ๋„ ์ง„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์— ์ž‘์„ฑ๋œ ๋ชจ๋“  ์ฝ”๋“œ๋Š”
์ด์ „ ๋ฐฉ์‹(๊ณก๋ฌผ์— ๋Œ€ํ•œ)์€ ์ด์ „์— ์™„์ „ํžˆ ์žฌ๊ณ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€ ๋‹ค.

๋ฌด์—‡์ธ์ง€ ์•„๋Š” ๊ฒƒ ์™ธ์— ์‰ฌ์šด ์ „ํ™˜ ๊ณ„ํš์€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
"๊ณก๋ฌผ ๋ฐ˜๋Œ€"์™€ ๊ทธ๊ฒƒ์„ ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•. ์ด์‹๋˜์ง€ ์•Š์€ API๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  ๊ฑฐ๊ธฐ. ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

2017๋…„ 5์›” 12์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 3:29 Aren Blondahl [email protected]
์ผ๋‹ค:

@stefanolson https://github.com/stefanolson @markrendle
WebForms -> MVC5 ์ค‘๊ฐ„์— https://github.com/markrendle
์ง€๊ธˆ ์ „ํ™˜ํ•˜๋Š” ๋™์•ˆ ์ด๊ฒƒ์€ MVC/MVC2๋กœ ๊ทน๋ณตํ•  ์ˆ˜ ์—†์—ˆ๊ณ  MVC5์—์„œ๋Š” ๋œํ–ˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ASP .NET Core 3 ๋˜๋Š” ๊ทธ ์ด์ƒ์ด ๋  ์ˆ˜ ์žˆ๋Š” ์œ ์‚ฌํ•œ ์ƒํ™ฉ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋” ์‰ฌ์šด ์ „ํ™˜.

๊ทธ๋Ÿฌ๋‚˜ WebForms coolaid HARD๋ฅผ ๋งˆ์‹  ์‚ฌ๋žŒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.
์ „ํ™˜ ์ค‘. ์šฐ๋ฆฌ๋Š” HARD๋กœ ๋‚ด๋ ค๊ฐ€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์›๋ฐ›์•˜๋‹ค
ViewState ๊ณค๊ฒฝ. Framework -> Core์— ๋ฌด์—‡์ด ์ค‘์š”ํ•  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ „ํ™˜์€ ์ „ํ™˜์— ๋Œ€ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ๋ช…ํ™•ํ•˜๋ฉฐ ๋ฌธ์„œํ™”๋œ ๊ณ„ํš์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๋ถˆํ™•์‹ค์„ฑ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
.NET์— ์ž‘์„ฑ๋œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฏธ๋ž˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๊ตฌ๋ณ„
ํ‘œ์ค€์€ ์ด์‹ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‚ญ๋น„๋˜์ง€ ์•Š๋Š” ๋…ธ๋ ฅ์€ ์˜ค๋ž˜๋œ ํ”„๋กœ์ ํŠธ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
.NET Standard์—์„œ ์ƒˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ „ํ™˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ 
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋ชฉํ‘œ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ข‹์ง€ ์•Š๊ณ  ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ํ”„๋กœ์ ํŠธ์˜ ๊ด€์— ๋ชป์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Python์— ๊ฐ‡ํžˆ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
2.x .NET Framework 4.x ์˜ค๋žœ ์‹œ๊ฐ„.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aspnet/Home/issues/2022#issuecomment-301165679 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAMx6CoEdzs_Ys5a8W7Ri7lwfBqcIGUdks5r5LMIgaJpZM4NReOn
.

์™€, ์ด ์Šค๋ ˆ๋“œ๋Š” ๋กค๋Ÿฌ์ฝ”์Šคํ„ฐ ์—ฌํ–‰์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ github์˜ .net ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ท€๋ฅผ ๊ธฐ์šธ์ด๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ์•ˆ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  2. ์ €๋Š” ์ด ํ† ๋ก ์ด ์—ด์ •์ ์ด์—ˆ์ง€๋งŒ ๊ฑฐ์˜ ์™„์ „ํžˆ ์ „๋ฌธ์ ์ด๋ผ๋Š” ์‚ฌ์‹ค์— ๋†€๋ž๊ณ  ๊ธฐ์ฉ๋‹ˆ๋‹ค.
  3. ๋‚˜๋Š” ๋งˆ์นจ๋‚ด .net ํ‘œ์ค€์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๊ณจ๋˜˜ํžˆ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(!!)

ํŽธ์ง‘: ์‹ค์ œ๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ˜ธ์–ธ์žฅ๋‹ด์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํฌ์ŠคํŠธ ๋๊นŒ์ง€ ์ฝ์–ด๋ณด๋‹ˆ ๋ชจ๋“  ๊ณ ๋ฏผ์ด ์˜์ƒ์œผ๋กœ ํ’€๋ ธ์Šต๋‹ˆ๋‹ค.

@poter134 ์—ํœด . ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๊นŒ? ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธธ์ง€๋งŒ ์—ฌ์ „ํžˆ... ๋ชจ๋“  ๊ฒƒ์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‚ฌ๊ณ ์˜€๋‹ค. ASP.NET Core์˜ ๋‹ค์Œ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ(๋ฐ ์ตœ์ข… ๋ฒ„์ „)๋Š” ๋‹ค์‹œ .NET Framework๋ฅผ ์˜๋ฏธํ•˜๋Š” .NET Standard๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@PinpointTownes ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๊ฒฐ๋ก ์ด ๋‚˜์™”๋‹ค๋Š” ์•Œ๋ฆผ(์ƒ๋‹จ)์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ• ๊นŒ์š”?

๊ณต๋™ ์ž‘์—…์ž์—๊ฒŒ ์ž ๊ธˆ ๋ฐ ์ œํ•œ์„ ์ œ์•ˆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋งํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๊ณผ - ๋ฐฉ๊ธˆ ๋น„๋””์˜ค์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ์œ„๋กœ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ ๋งจ ์œ„์˜ ์š”์•ฝ์€ 75%๋ฅผ ์ฝ๊ณ  ์ ˆ๋งํ•˜๋Š” ๋‚˜์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  https://channel9.msdn.com/Events/Build/2017/C9L18 ์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๋นŒ๋“œ ๋น„๋””์˜ค์— ๋งํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@PinpointTownes ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๊ฒฐ๋ก ์ด ๋‚˜์™”๋‹ค๋Š” ์•Œ๋ฆผ(์ƒ๋‹จ)์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ• ๊นŒ์š”?

์™„๋ฃŒ:+1:

@PinpointTownes , ์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ์šฐ๋ฆฌ ํŽธ์—์„œ ์šฐ๋ฆฌ์˜ ์˜์‚ฌ ์†Œํ†ต์„ ์ฒญ์†Œํ•ด์•ผ ํ•˜๋Š”๋ฐ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ, ์˜๊ฒฌ ๋“ฑ์ด GitHub์— ๊ฒŒ์‹œ๋˜๋Š” ๋น„์œจ์ด ๋„ˆ๋ฌด ๋†’์•„ ์†Œ๊ทœ๋ชจ aspnet ํŒ€์ด ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์™€ .net ์ฝ”์–ด ๋’ค์— ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์˜ ์ด๋Ÿฌํ•œ ๋น„๋Œ€์นญ์„ฑ์€ asp.net ์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํƒ ๋“œ์—…์—์„œ ์ž˜ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ์ด๋Š” ๊ทธ๋“ค๋กœ๋ถ€ํ„ฐ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฑฐ์˜ ๋…์ ์ ์œผ๋กœ ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›๊ณผ .Net ํŒ€ ์‚ฌ์ด์— ์ถ”๊ฐ€ ๋ ˆ์ด์–ด๋ฅผ ํฌํ•จํ•˜์—ฌ Skype ํšŒ์˜ ๋˜๋Š” ์Šคํƒ ๋“œ์—…์—์„œ ์ œ์•ˆ ๋“ฑ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ƒ๋‹นํžˆ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฐฉํ–ฅ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ponant : ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด์ „์— ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹น์‹ ์ด ์–ด๋–ค ์‚ฌ๋žŒ์—๊ฒŒ ๋ณด๊ณ ํ•˜๊ณ  ๊ทธ ์‚ฌ๋žŒ์ด ๊ทธ๊ฒƒ์„ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ฌธ์ œ๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํŒ€์€ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ ค๋Š” ๋ฌธ์ œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋งŽ์€ ์ž‘์—…์ด๋ผ๋ฉด (์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์•„๋‹ˆ๋ผ) ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด github ๋ฌธ์ œ๋ณด๋‹ค ๋” ๋‚˜์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์ผ๋ จ์˜ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ์™€ ํ˜ผํ•ฉ๋จ), ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์™€ ์งˆ๋ฌธ์„ ์ œ๊ฑฐํ•˜๋Š” ์ž์ฒด ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐ€์žฅ ํˆฌ๋ช…ํ•œ IMHO๋Š” ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์„ ํƒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ธ”๋ž™ ๋ฐ•์Šค๋กœ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ†ต์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์žŠ์ง€ ๋งˆ์„ธ์š”. PR, ๊ธฐ์—ฌ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋ถ„๋ช…ํžˆ ์•Œ์•„๋‘์„ธ์š” ๐Ÿ˜‰

@FransBouma , ํˆฌ๋ช…์„ฑ์— ๊ด€ํ•ด์„œ๋Š” ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๋™์˜ํ•˜๋ฉฐ ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ •๋ณด๋ฅผ GitHub์— ๋ฒ„๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ ๋ถˆํ‰ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€์˜ ์ •๋ณด์— ์••๋„๋‹นํ•  ๊ฒฝ์šฐ ํŒ€์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitHub๋ณด๋‹ค ๋” ๋‚˜์€ ๋„๊ตฌ๋Š” ํ™˜์˜๋ฐ›์„ ๊ฒƒ์ด๋ฉฐ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ๋ชฉ์†Œ๋ฆฌ๋ณด๋‹ค ๋” ํ˜„๋Œ€์ ์ž…๋‹ˆ๋‹ค.

์™œ MS ์นœ๊ตฌ๋“ค์€ ์ˆ˜์—…์„ ๋ฐฐ์šฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ๋Š” ์—…๋ฐ์ดํŠธ๋Š” WP 7.x์—์„œ 8์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ .NET Core์˜ ํ‰ํŒ๊ณผ ์‹œ์žฅ์„ ์ฃฝ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET 4์—์„œ ASP.NET Core๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์–ด๋ ต๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ง„ํ–‰์ž…๋‹ˆ๋‹ค. ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ทธ๋“ค์€ MSDN ๋ผ์ด์„ ์Šค, ๋Œ€๊ทœ๋ชจ Azure ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ„์•ฝ, ๋Œ€๊ทœ๋ชจ Office ๊ตฌ๋… ๋ฐ ์ด๋Ÿฌํ•œ ๋„๊ตฌ์˜ ์ƒ์„ฑ, ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์— ์ž๊ธˆ์„ ์ง€์›ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ SQL Server ๋ฐฐํฌ๋ฅผ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์ผ๋“ฑ์„ ์Šน๊ฐ์ด ์ด์ฝ”๋…ธ๋ฏธ์„ ๊ฐœ์„ ์„ ๊ฐ€๋กœ๋ง‰๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š”.

@markrendle Microsoft๋Š” ํ˜„์žฌ ๋งค์ฃผ 20์–ต ๋‹ฌ๋Ÿฌ ์ด์ƒ์˜ ์ˆ˜์ต์„ ์˜ฌ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์—”์ง€๋‹ˆ์–ด๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ž˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค์ผ 4์–ต ๋‹ฌ๋Ÿฌ์˜ ๋น„์šฉ์œผ๋กœ ์ „์ฒด .NET ํŒ€์ด Tech Tomato๋ผ๋Š” ํšŒ์‚ฌ์— ์•„์›ƒ์†Œ์‹ฑ๋œ ๋ฒจ๊ธฐ์—์˜ ๊ณผ๋ถ€ํ•˜๋œ ์„œ๋ฒ„์—์„œ ๋งค์ผ ๋นŒ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ „์„ค์ ์œผ๋กœ ํ˜•ํŽธ์—†๋Š” NuGet์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ 78k DLL์„ ์„ค์น˜ํ•˜๋ ค๋ฉด 200MB์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. https://github.com/NuGet/Home/issues/4448

์•„๋งˆ๋„ Microsoft๊ฐ€ GitHub๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๋ฐฉ์‹์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ตœ์ข… ์‚ฌ์šฉ์ž ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ ๋”์ฐํ•˜๊ณ  ํŒ€ ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ์„ ์ถฉ๋ถ„ํžˆ ๋Œ๊ธฐ ์ „์— ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์กฐ๊ธฐ์— ๋งˆ๊ฐํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋ถ„ํ• ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ์Ÿ์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Microsoft๊ฐ€ ์ƒ์œ„ UserVoice ์š”์ฒญ์„ ๋ฌด์‹œํ•˜๊ณ  ์ž‘์—…ํ•˜๊ธฐ์— ์žฌ๋ฏธ ์—†์–ด ๋ณด์ด๋Š” ๋ชจ๋“  ๊ฒƒ์ด "๋ฐฑ๋กœ๊ทธ"๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜๋ฉด ๊ณต๊ฐœ์ ์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์š”์ ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋„ค, ๋ฐ”์˜์‹œ๊ตฐ์š”. ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ „์— ๋ฐ”๋นด๋‹ค. ์ด์ œ ๋‹น์‹ ์€ ๋ฐ”์  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ณต๊ณต ์ปค๋ฎค๋‹ˆํ‹ฐ ์—ฌ๋‹จ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋„ ๋ฐ”์ฉ๋‹ˆ๋‹ค.

์ œ๋Œ€๋กœ ์šด์˜๋˜์ง€ ์•Š์€ 1990๋…„๋Œ€ ์›น ํฌ๋Ÿผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›์€ ๊ด€๋ฆฌ์ž๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์Šค๋ ˆ๋“œ์—์„œ ๋Œ“๊ธ€์ด ์‹ ๋น„ํ•˜๊ฒŒ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ ์œ„ ๊ฒฝ์˜์ง„์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋ถ„๋…ธ๋ฅผ ์ง„์ •์‹œํ‚ค๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์„ ์ดํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

https://github.com/dotnet/cli/issues/5328
https://github.com/dotnet/corefx/issues/17522

์ผ๋ถ€ Microsoft ์ง์›์€ GitHub๋ฅผ ์ˆ˜์šฉํ–ˆ๊ณ , ๋งŽ์€ ์ง์›์ด ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ์ง์›์€ GitHub ์ค‘๋…์ž๊ฐ€ ๋˜์–ด ์•„๋ฌด ๋„์›€๋„ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Logitech ๋งˆ์šฐ์Šค ์Šคํฌ๋กค ํœ ์— ๋Œ€ํ•œ ๊ทน์ฐฌ.

๊ทธ๋ž˜์„œ ์ €๋Š” 1992๋…„๋ถ€ํ„ฐ ๊ทธ๋žฌ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋‚ด๋ถ€ ์—ฐ๋ฝ์ฒ˜๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ๋‹ต์žฅ์—๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ด GitHub ํ•ญ๋ชฉ์ด ์™„์ „ํžˆ ๋ฒ—์–ด๋‚œ ๋ฐฉ๋ฒ•์ด ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์šฐ์Šค ํœ ์— ๋Œ€ํ•ด ๋‚˜๋ฅผ ๋ฏฟ์ง€ ์•Š์€ @PureKrome ์„ ์œ„ํ•ด ํŽธ์ง‘ํ•˜์‹ญ์‹œ์˜ค.

Mouse Wheels is the new Mouse Balls

๋ง๋ถ™์—ฌ์„œ, Hanselman์ด ๊ฒฐ์ •์„ ๋ณ€ํ˜ธํ•˜๋Š” ์ด ์Šค๋ ˆ๋“œ์— ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋’ค์ง‘ํž ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. Microsoft๊ฐ€ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ๊ณ  ๊ธฐ์ˆ ์ด ์™„์ „ํžˆ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ๋•Œ๊นŒ์ง€ 6๊ฐœ์›”์„ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.

์ฐธ๊ณ : 2.0.0-preview2 ๋ฐ .NET Framework์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ •๋ณด https://github.com/aspnet/Announcements/issues/243

@chadwackerman ์‹ค์ œ๋กœ .NET ๊ฐœ๋ฐœ์— 20์–ต ๋‹ฌ๋Ÿฌ๋ฅผ ๋ชจ๋‘ ์“ธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ํ™”์žฅ์ง€, ์นดํŽ˜์ธ ์Œ๋ฃŒ, Azure ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ ๊ฐ™์ด ์–ด๋ฆฌ์„์ง€๋งŒ ํ•„์ˆ˜์ ์ธ ๊ฒƒ๋“ค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

@oldrev

์™œ MS ์นœ๊ตฌ๋“ค์€ ์ˆ˜์—…์„ ๋ฐฐ์šฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ๋Š” ์—…๋ฐ์ดํŠธ๋Š” WP 7.x์—์„œ 8์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ .NET Core์˜ ํ‰ํŒ๊ณผ ์‹œ์žฅ์„ ์ฃฝ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ทธ๋“ค์€ ๊ทธ๋žฌ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋” ๋งŽ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ASP.NET 4์—์„œ ASP.NET Core๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์–ด๋ ต๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์ง„ํ–‰์ž…๋‹ˆ๋‹ค. ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ์ง„ํ–‰์ด ์–ด๋ ต๊ณ  ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ์ „์ ์œผ๋กœ ๋™์˜ํ•˜๋ฉฐ MS ์‚ฌ๋žŒ๋“ค๋„ ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(์ง„ํ–‰์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ธ์ง€ ์—ฌ๋ถ€๋Š” ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค)

์กฐ๊ธˆ ๋’ค๋กœ ๋ฌผ๋Ÿฌ์„œ์„œ ์šฐ๋ฆฌ ํŒ€์€ ASP.net์—์„œ ASP.NET ์ฝ”์–ด ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ํ‰๊ฐ€ํ–ˆ์ง€๋งŒ MS ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ •์€ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ํ˜„์‹ค์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MS๋Š” ์ž์‹ ์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  Microsoft.Data.Sqlite ์ €์žฅ์†Œ https://github.com/aspnet/Microsoft.Data.Sqlite/pull/370 ์—์„œ ์ „์ฒด .NET์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์–ด๋–ค ํ† ๋ก ๋„ ์—†๊ณ  ์–ด๋–ค ๋ฐœํ‘œ๋„ ์—†์ด.

@alexvaluyskiy ๋‹น์‹ ์ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. net451 ์„ netstandard2.0 ๋กœ ๋Œ€์ฒดํ•˜๋ฏ€๋กœ .NET ์ง€์›์ด ์ค‘๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. netstandard2.0 ๋Š” .NET 4.6.1์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

@MartinJohns TFS์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฉฐ ๋จผ์ € ๋ฐœํ‘œํ•˜๊ณ  ๋…ผ์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
.NET 4.5.2 ๋Š” ์—ฌ์ „ํžˆ MS์—์„œ ์ง€์›ํ•˜๋ฉฐ Microsoft.Data.Sqlite ๋Š” ๊ทธ ์œ„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MS๊ฐ€ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ net4.6.1 ๋˜๋Š” netstandard2.0 ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

.NET ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋Œ€์ƒ ๋Ÿฐํƒ€์ž„์ด ์•„๋‹Œ .NET Standard 2.0๋งŒ ์ง€์›ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์œ ์ง€ ๊ด€๋ฆฌ ๋น„์šฉ์ด ์ ˆ๊ฐ๋ฉ๋‹ˆ๋‹ค. .NET์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ์ „ํžˆ ์ง€์›ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ตœ์‹  ๋ฒ„์ „์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ .NET 1.0๊นŒ์ง€ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

์ผ๋ถ€ ๋ฒ„์ „์—์„œ๋Š” netstandard๋กœ ์ˆ˜๋ ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@irwiss ๊ทธ ๋Œ“๊ธ€์€ ๋ณ„๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์–ด๋””์—๋„ ํŒจํ‚ค์ง€๊ฐ€ .NET 1.0๊นŒ์ง€ ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์•”์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Š” "์•„์ง ์ง€์›๋œ๋‹ค"๊ณ  ์–ธ๊ธ‰ํ–ˆ๋Š”๋ฐ, ๋งž์Šต๋‹ˆ๋‹ค. .NET 4.5.2๋Š” ์˜ˆ์ •๋œ ์ˆ˜๋ช… ์ข…๋ฃŒ ์—†์ด 2017๋…„ 5์›” 3์ผ ํ˜„์žฌ ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค(https://support.microsoft.com/en-us/help/17455/lifecycle-faq-net-framework).

์ง€์›๋˜๋Š” .NET ๋ฒ„์ „์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด๋ฆฌํ•œ ์š”์ฒญ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@MartinJohns ์–ด๋Š ์ชฝ๋„ ์†”์งํžˆ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. sqlite ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ๋งํฌ๋Š” ์ž˜๋ชป๋œ ์ „์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์œผ๋ฉฐ ๊ตฌ๋ฉ์„ (์‚ฌ์†Œํ•œ 4.5.2 ๋Œ€ 4.6.1 ํ† ๋ก ์œผ๋กœ) ์žฌ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ํŒŒ๊ธฐ๋Š” ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ •๋ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ ์ €๊ฒƒ ๋‹ท๋„ท์ด ๋งŽ์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฑด ์ •๋ง ๋ฏธ์นœ ์ง“์ด์•ผ. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ถ”์ ํ•ฉ๋‹ˆ๊นŒ?

ํ•œ ๊ณณ์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๋ฌธ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” DLL ์ง€์˜ฅ์ด ์žˆ์—ˆ๊ณ  ์ด์ œ ํŒจํ‚ค์ง€ ์ง€์˜ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค... ๋” ๋งŽ์€ ๊ฒƒ์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.... ;)

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ž ๊ทธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ GitHub ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฑ„ํŒ… ํ˜•์‹์— ์†ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@MaximRouiller ๋‚ด๊ฐ€ ์–ด์ œ๋ถ€ํ„ฐ netcoreapp1.1์—์„œ netcoreapp2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ๊ฒช์—ˆ๋˜ ์ง€์˜ฅ์„ ์•„์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด.

์ €๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ €๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌ ํ•ด์š”

@smithaitufe ๊ทธ๊ฒƒ์€์ด ๋ฌธ์ œ์™€ ๋‹ค์†Œ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

@PinpointTownes @Eilon

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ž ๊ทธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋Œ“๊ธ€์„ ๋‹จ ๋ชจ๋“  ์‚ฌ๋žŒ์€ 100๊ฐœ ์ด์ƒ์˜ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ์ƒˆ ์Šค๋ ˆ๋“œ์— ์†ํ•ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ํ™œ๋™์— ๋Œ€ํ•ด ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

@MaximRuiller ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ฒช์—ˆ์ง€๋งŒ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ทธ ๋ธ”๋กœ๊ทธ์—์„œ ์ด๊ฒƒ์„ ์ฝ์—ˆ์Šต๋‹ˆ๊นŒ?

*
์ „๋ฐ˜์ ์œผ๋กœ ์ด ํ”„๋ ˆ์ž„์›Œํฌ ์—…๋ฐ์ดํŠธ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์™ธํ•˜๊ณ  ๋น„๊ต์  ์›ํ™œํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทน๋„๋กœ ์‹ค๋ง์Šค๋Ÿฌ์šด ํ•œ ๊ฐ€์ง€๋Š” SDK, ๋Ÿฐํƒ€์ž„, ๋„๊ตฌ ๋ฐ ์ด๋“ค์ด ํ†ตํ•ฉํ•˜๋Š” ๋ชจ๋“  ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ํ™•์‚ฐ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๊ทธ๊ฒƒ๋“ค์ด ๋ชจ๋‘ ๋‹ค๋ฅธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋‹จ๊ณ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
*
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@Rutix ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ๊ฒƒ์ด๋‹ค

์—ฌ๊ธฐ์˜ ์ผ๋ถ€ ํ† ๋ก ์— ๋”ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ๊ณง ์ถœ์‹œ๋  Preview 2 ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ์ž ๊ทธ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”. ์–ด๋””์— ํŒŒ์ผ์„ ์ œ์ถœํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด Home ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ฌธ์ œ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์ €๋ฅผ (@Eilon) ํƒœ๊ทธํ•ด ์ฃผ์‹œ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ๋ฅผ ์ฐพ๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

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