:bulb: _Working draft: ์ด ๋ชฉ๋ก์ ASP.NET Core 3.0์์ ๊ณ์ ์์ ํจ์ ๋ฐ๋ผ ๋ณ๋๋ ์ ์์ต๋๋ค._
ASP.NET Core 3.0์์๋ Microsoft.AspNetCore.App์์ ๋ค์ ์ด์
๋ธ๋ฆฌ๋ฅผ ์ ๊ฑฐํ ๊ณํ์
๋๋ค. ์ด๋ฌํ API๋ ๊ณ์ NuGet ํจํค์ง๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ASP.NET Core 2.1์์ 3.0์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ๋ค์์ ๋ํด ์ฌ๋ฌ <PackageReference>
ํญ๋ชฉ์ ์ถ๊ฐํด์ผ ํ ์ ์์ต๋๋ค.
MVC ํจํค์ง๋ ์ถ๊ฐ NuGet ํจํค์ง๊ฐ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. MVC๋ ํ๋ฅญํ์ง๋ง ๋ฐ๋๋ผ ASP.NET Core์ ๋ฌ๋ฆฌ ๋ชจ๋ .NET ์ธ์ด์ ํจ๋ฌ๋ค์์ ๋ง๋ ๊ฒ์ ๊ณ ์ฌํ๊ณ ๋ชจ๋ ์ฌ๋์ ์ฐจ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งค์ฐ ๋ ๋จ์ ์ ๋๋ค. ๊ณต์ ASP.NET Core ํ๋ ์์ํฌ๋ MVC๊ฐ ์๊ฑฐ๋ ๋ ๋ฒ์งธ MVC ๋ฌด๋ฃ ๋ฒ์ ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ป๊ฒ ์๊ฐํ๋์?
์ด๋ค ์ด์ ์ด ์์๊น์? ์ด๊ฒ์ด ์ด๋ป๊ฒ ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ์ฌ๋๋ค์ ์ถ์ ๋ ์ข๊ฒ ๋ง๋ค๊น์?
์์ฒญ๋! asp.net ์ฝ์ด๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ ๊ฒ์ด ํ์ํฉ๋๋ค.
@davidfowl
์ด๋ค ์ด์ ์ด ์์๊น์? ์ด๊ฒ์ด ์ด๋ป๊ฒ ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ์ฌ๋๋ค์ ์ถ์ ๋ ์ข๊ฒ ๋ง๋ค๊น์?
๊ฐ์ ์ด์ ๋ก ์ด ๋ฌธ์ ์ ๋งจ ์์ ๋์ด๋ ํจํค์ง๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ๋์ค์ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๋ณด๋ค .NET Core 3.0๊ณผ ํจ๊ป ์ ๊ณต๋ ํ๋ ์์ํฌ์ ๋ ๋ง์ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํญ์ ๋ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ฅ ์์ ๊ณตํต ๋ถ๋ชจ๋ฅผ ์ถ๊ฐํ์ฌ ๊ธฐ๋ณธ ASP.NET Core ์ฑ์ ์คํํ ๋ค์ ๋๋จธ์ง๋ฅผ NuGet ํจํค์ง๋ก ์ ๊ณตํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ์ด๊ฒ์ด ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ผ๋ก ํ๋ช ๋๋ฉด ๋์ค์ ์ธ์ ๋ ์ง ์ถ๊ฐํ ์ ์์ง๋ง ๋์ค์ ๋ ์ด์ ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉํจ๊ณผ ๊ท ํ์ ์ ์งํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ค, ๋ฐ๋๋ผ ASP.NET Core๋ ์ด๋ฏธ ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ผ ์๊ด์์ด์ ;)
์์์ฃผ์์๋ผ๋ฉด ๋๋ถ๋ถ์ ๋ฏธ๋ค์จ์ด๋ MVC ๋๋ SignalR์ด ๊ผญ ํ์ํ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์์์ ๋ค์ด ์์ง ์์ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ์ธํธ๊ฐ ์์ด์ผ ํ๋ ๊ฒ๊ณผ ๊ทธ๋ ์ง ์์ ๊ฒ ์ฌ์ด์ ์ด ์ ์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ์ง๊ฐ์ ์ด๊ณ ๋ชจํธํ ๊ฒ์ ๋๋ค(๊ฒฝํ์ ๊ธฐ์ดํ์ฌ ๊ณผ๊ฑฐ์ ํ์ฌ์ ๋ค๋ฅธ ํ๋ซํผ์ ์ดํด๋ณด๊ณ ์ ํ ๊ฑธ๊ธฐ). ASP.NET Core 3.0๋ถํฐ ์ฐ๋ฆฌ๋ (์ ์ด๋ ์ง๊ธ ๋น์ฅ์) ๊ทธ๊ฒ๋ค์ ๊บผ๋ผ ๊ณํ์ด ์์ต๋๋ค.
๋ค, ์ด๊ฒ์ด ํญ์ ์ด๋ ค์ด ์ผ์ด๋ผ๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋์ (Microsoft์ ์ํ) ๊ฒฝํฅ์ด ํ์ ์ด์์ผ๋ก ๋ถํ๋ ค์ง๋ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ํ์ ์ด ์์ง ์์ต๋๋ค. ์์ฅ์์ ์์ ์ ์ ํ์ ํฌ์ง์ ๋ํ๋ ๋ฐฉ์์ ์ ํ์ด ์ด๋ป๊ฒ ์ธ์๋ ๊ฒ์ธ์ง์ ๋ฌ๋ ค ์์ต๋๋ค. ASP.NET Core๋ ์๋ก์ด ํ๋์ ์ธ ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ณ ์ ์ฐํ ์น ํ๋ ์์ํฌ๋ก ๊ฐ์ฃผ๋์ง๋ง ๋ชจ๋ ๊ฒ์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ฌ๋์๊ฒ MVC + SignalR + Identity + EF๋ฅผ ๊ฐ์ ์คํํ์ง ์๋ ํ ASP.NET Core๋ ์ธ๋ชจ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ด ์๊ฐ์ ๋น์ ์ ์ด๋ฏธ ์ ์ ๊ทธ๋ ค์ผ ํ ์์น๋ฅผ ํธ์ถํ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ MVC์ SignalR์ด ASP.NET Core์ ํฌํจ๋์ด ์์ง ์๊ณ ํ์ํ ๋ ์ถ๊ฐํ ์ ์๋ ๋ณ๋์ ํ๋ ์์ํฌ์ธ๋ฐ ์ ์ง๊ธ ์ด ์ ์ ํ๋ฆฟํ๊ฒ ๋ง๋ค๊ณ ์์ต๋๊น? ์ผ๊ด์ฑ์ด ์๊ณ ๊ทธ๋ก๋ถํฐ ์ป์ ์ ์๋ ์ด๋ค ๊ฐ์น๋ ์๊ฐํ ์ ์์ต๋๋ค. ASP.NET Core + ๋ฒ์ฑํ๋ ์คํ ์์ค ์์ฝ ์์คํ ์ ํ๋ณดํ๋ ๋์ ๋งค์ฐ ์ข์ ์น ๊ฒฝํ์ ํ๋ณดํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ํ๋ ๋ชจ๋ ๊ฒ์ ๋น์ ์ด ์ํ์ง ์์ ์๋ ์๋ ์ฌ๋๋ค์๊ฒ ์ผ์ ๋ฐ์ด๋ถ์ด๊ฒ ๋จ์ ๋ฐ๋ผ ์ฝ๊ฐ ๋ค๋ฅด๊ณ ๋ ๋ง์ ์ผ์ ํ๊ณ ์ถ์ดํ๋ ์ฌ๋๋ค์๊ฒ ์ข์ ๊ฐ์ ์ฃผ๋ ๊ฒ๋ฟ์ ๋๋ค.
MVC๋ฅผ ๊ธฐ๋ณธ ํ๋ ์์ํฌ์ ๋ฃ์ง ์์ผ๋ฉด ์ฌ๋๋ค์ด MVC๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋จ์ผ NuGet ํจํค์ง๋ก ๋ง๋ค๋ฉด ์๋ฌด๋ NuGet์์ MVC๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค๊ณ ๋ถํํ์ง ์์ ๊ฒ์ ๋๋ค. ๋ ๋ง์ ์ฌ๋๋ค์ด ์์ ๋์ฒ๋ผ ์ํ์ง ์๋ ๊ฒ๋ค๋ก ๊ธฐ๋ณธ ํ๋ ์์ํฌ๋ฅผ ๋ถํ๋ฆฐ ์ด์ ๋ฅผ ๋ฌป๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ํฝ๋๋ค.
๋๋ ์ด๊ฒ์ด ํ ๋ก ์ด๊ณ ์ฌ์ ํ ์ฌ๋ฌ๋ถ์ด ๊ณ ๋ คํ ์ ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ํ ๊ฐ์ง ๋ฌป๊ณ ์ถ์ ๊ฒ์ด ์๋ค๋ฉด ์ด ์ง๋ฌธ์ ํ์ ๋ค์ ์ ๊ธฐํ๊ณ ์ฌ๋ฌ๋ถ ๋ชจ๋๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ์ ๋ง๋ก ์ค๋น๊ฐ ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ๋น์ ์ ๋ด ์์ด๋์ด๋ฅผ ํฅํด ๋ถ๋๋ฝ๊ฒ ํ ์ ์์ต๋๋ค :)
์ถ์ : ๊ทธ๋ฐ ๊ฒฝ์ฐ์ธ์ง ํ์คํ์ง ์์ง๋ง SignalR๋ ๋ณ๋์ NuGet ํจํค์ง์์ผ๋ฉด ํฉ๋๋ค. Bootstrap๊ณผ Angular2๋ฅผ ๊ธฐ๋ณธ ํ๋ ์์ํฌ์ ํฌํจ์ํค๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด ๋ ์ ํ์ด Microsoft์์ ๊ฐ๋ฐํ๋ค๋ฉด ์๋ง ๊ทธ๋ ๊ฒ ํ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ง์ด ๋์ง ์์ ๊ฒ์ด๊ณ ์ ์๊ฐ์๋ ๊ทธ๊ฒ๋ค์ด ์ 3์์ ์ํด ์ํ๋๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋ง์ด ๋์ง ์๋์ง ์ ์ ์์ ๋ฟ์ ๋๋ค.
TBH ๊ธฐ๋ณธ ์ค์น์์ ์ ๊ฑฐ๋ ํญ๋ชฉ์ ๋ ๋ณด๊ณ ์ถ์ต๋๋ค. ํนํ MVC. ์ด๊ฒ์ด ASP.NET Core ์์ ์๋ ๋์ฒด ํ๋ ์์ํฌ๋ฅผ ๋์ฑ ๋งค๋ ฅ์ ์ผ๋ก ๋ง๋๋ ์ด์ ์ ๋๋ค. ๋ํ ContentResult์ ๊ฐ์ ๊ฒ๋ค์ด ์ฝ์ด๊ฐ ์๋ MVC์ ์๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค. ๊ทธ๊ฒ์ ํ๋๋น ํจ์์์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ ์ด์ ๋ ํญ์ ContentResult์ ๋ํด์๋ง MVC ํญ๋ชฉ์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
์์ ์ ASPNET SDK์ MVC ํญ๋ชฉ์ ํฌํจํ๋ ๊ฒ์ด ์ค์ ๋ก ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ๊ทธ๋ ๊ฒ ๋ฐฐ์กํ๋ ๊ฒ์ด ๋ณต์ ๋ก๋๋ฅผ ๋ถํ๋ฆฌ๋ ๊ฒ๋ณด๋ค ์ ํธ๋ฉ๋๋ค. ์ํ์ง ์์ผ์๋ฉด ์ฌ์ฉํ์ง ์์ผ์ ๋ ๋ฉ๋๋ค. ์์ ๋์ด๋ ๋๋ถ๋ถ์ ํจํค์ง๋ ํ์ฌ ์ข ์์ฑ(json)์ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ผ๋ถ ๋ฌด๊ฑฐ์ด ์ธก๋ฉด(๋ฉด๋๊ธฐ)์ด ์๊ฑฐ๋, ๊ฐ๋ ์ ์ผ๋ก ASPNET๊ณผ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฉฐ ์ข ์ข SDK(EFCore) ์ธ๋ถ์์ ์ฐธ์กฐ๋ฉ๋๋ค.
OSS ํ๋ ์์ํฌ๋ฅผ ์ํ ํ๋ฑํ ๊ฒฝ์์ ์ฅ์ ์กฐ์ฑํ๊ธฐ ์ํด ์ต์๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ ๋ฐ ๋์ํ๋ ๋งํผ ๊ท ํ์ด ๋ง์์ผ ํฉ๋๋ค. ์ฝ์ด(๋ฒ ํ ๋ฐ 1.0)์ ์ด๊ธฐ์๋ ๋ชจ๋ ๊ฒ์ด ํจํค์ง์์ผ๋ฉฐ ํจ์ฌ ๋ ํผ๋์ค๋ฝ๊ณ ๋ณต์์ด ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค.
@psibernetic ๋ฌผ๊ฑด์ด ๋ถ๋ฆฌ๋ ํจํค์ง์ ์๋๋ผ๋ .net ์ฝ์ด ์ค์น ํ๋ก๊ทธ๋จ์ ์ด๋ฌํ ํจํค์ง๋ฅผ ์ด๋ฏธ ๋ก์ปฌ ์บ์์ ๋ฃ์ ์ ์์ต๋๋ค.
@psibernetic ๊ท ํ์ด ์ค์ํ๋ค๊ณ
MVC๋ฅผ ๋จ์ผ NuGet ํจํค์ง๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ํผ๋์ค๋ฝ๊ฑฐ๋, ๋ณต์์ ์์ํ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ, ๋๋ ์ธ๊ธํ ๋ค๋ฅธ ๋ถ์ ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ํ ๊ฐ์ง ๋ง์ํด ์ฃผ์ญ์์ค.
๊ทธ๋ฆฌ๊ณ ๋ณต์ ์๊ฐ์ ๋ํ ์ด์ผ๊ธฐ โโ...
IMHO ๊ฐ๋ฐ์ ์ปดํจํฐ์์ ์ฝ๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋น๋ํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ฒ ์์ํ๋ ์ปจํ ์ด๋ ๋๋ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ(์ด๊ฒ์ด ๋น์ฆ๋์ค์ ์ค์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก)๋ฅผ ๊ฐ๋ ๊ฒ์ด ๋ ์ค์ํฉ๋๋ค. ์, ํ์๋ ๋งค์ฐ ์ค์ํ๋ฉฐ ๋งค์ฐ ๋น ๋ฅด๊ธฐ๋ฅผ ์ํ์ง๋ง ์ค์๋๋ฅผ ๋งค๊ฒจ์ผ ํ๋ค๋ฉด ํด๋ผ์ฐ๋์ ํ๋ก๋์ ์ธํ๋ผ๋ณด๋ค ๊ฐ๋ฐ ์์คํ ์์ ์ฝ๊ฐ์ ํ๊ฒฉ์ ๋ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฐ๋ผ์ ๊ณต๊ฐ์ ์ต๋ํ ์๊ฒ ์ ์งํ๋ ๊ฒ์ด ๋ณต์ ์๊ฐ์ ์ค์ด๋ ๊ฒ๋ณด๋ค ์ค์ํฉ๋๋ค.
์ด๋ค ์ด์ ์ด ์์๊น์? ์ด๊ฒ์ด ์ด๋ป๊ฒ ASP.NET Core ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ์ฌ๋๋ค์ ์ถ์ ๋ ์ข๊ฒ ๋ง๋ค๊น์?
๋ด Windows 10 PC์ ์ฌ์ ์ค์น๋ CandyCrush์ ๊ฐ์ด MVC๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์์น ์๋ ๋ธ๋กํธ์จ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Asp.net ์ฝ์ด๋ ํ์์ ๋ฐ๋ผ ๋ฏธ๋ค์จ์ด ๋ฑ์ ์๋ฒฝํ๊ฒ ๊ตฌ์ฑํ ์ ์์ด ๋ ๋ ์ ์ ์ด๋ผ๊ณ ์ฃผ์ฅํ์ต๋๋ค. dotnet ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ์ฝ์ด์ ๋ฒ ์ดํฌํ ํ์ ์์ด MVC๊ฐ ๊ธฐ๋ณธ ํฌํจ ํจํค์ง๊ฐ ๋ ์ ์์ต๋๊น?
Nancy, ServiceStack ๋ฐ Giraffe์ ๊ฐ์ ๋ง์ ๋ค๋ฅธ ํ๋ ์์ํฌ๊ฐ ์์ต๋๋ค. ์ด ํ๋ ์์ํฌ๋ ๋ชจ๋ ์ฅ๋จ์ ์ด ์์ผ๋ฉฐ ์ํ์ง ์๋/ํ์ํ์ง ์์ MVC ๊ฐ์ ์ค์น๋ก ์ธํ ํฝ์ฐฝ/์ถฉ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ธ์ฆ, ๋ฉด๋๊ธฐ, EF ๋ฑ์ด ๋ชจ๋ ํจํค์ง๋์ด ์์ง๋ง MVC, ๊ณจ๋ ์์์ด ํต์ฌ์ด ์๋ ๋ ํต์ฌ ํ๋ ์์ํฌ์ ์ผ๋ถ๊ฐ ๋๋ ๊ฒฝ์ฐ ์ผ๊ด์ฑ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
MVC๊ฐ ์ฝ์ด์ ๋๋ฌด ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ๋์ปคํ๋ง์ด ๋ง์ ์์ ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ป์ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ถ ๊ฐ๋ฐ์์ ์ถ์ ๋ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ผ๋ฅด๊ณ ์ด์ asp.net๊ณผ ๋งค์ฐ ํก์ฌํฉ๋๋ค. MVC ์ฌ๊ณ ๋ฐฉ์ ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ฉ๋ฆฌํ๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
.NET Core๋ .NET์ฉ node.js์ ๋ฆฐ ๋ชจ๋์ ํด๋ก ์ด์ด์ผ ํ์ง๋ง ๊ธฐ๋ฅ์ด ํฌํจ๋ ์๊ณ ์ ์ฐํ ์๊ฒฌ ์๋ ์ฝ์ด์ธ ๋ฒ์ฐฝํ๊ณ ํ๊ธฐ์ฐฌ ์ํ๊ณ๋ฅผ ์กฐ์ฑํ๋ ํน์ฑ์ ๋ณต์ ํ ์๋๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ์ฐฝ์ ์ธ ์น ํ๋ ์์ํฌ์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋์ง ์๋ ๋๋ถ์ ํต์ฌ์ ์ธ ์ด์ ์ ์์ฒด ๋ ๋ฆฝ ์ปค๋ฎค๋ํฐ์ ํจ๊ป โโ๊ฑด๊ฐํ ์์ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ๋ฅผ ์ฆ๊ธฐ๋ ์คํ์ผ๋ก ๋ฌด๋ฅด์ต์์ต๋๋ค.
๋ด ๋ง์ ASP.NET ํ์ด ๊ทธ๋ค์ด ํ ์ ์๋ ์ต๊ณ ์ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ค๊ณ ๋ฏฟ๊ฒ ๋ง๋ค์ง๋ง ๋ชจ๋ ์ฌ๋์ด ์ ํํ ๋ชจ๋ ์๊ฒฌ์ด๋ ์์ ์ ์๋ฃํ๋ ๋ฐ ํ์ํ ๋ณต์ก์ฑ ์์ค์ ๋์ํ๋ ๊ฒ์ ์๋๋๋ค. .NET Core์ ๋ชจ๋ ๊ฒ์ .NET์์ ์ค๋ ๋ค์ ํ์ ์ ๊ตถ์ฃผ๋ฆฌ๊ฒ ํ๋ ์ด๋ค ๊ธฐ์ ์ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋ํ ์๊ฒฌ์ ๊ตฝํ์ผ๋ก์จ ๋ค๋ฅธ ํ๋ซํผ์์ ์ด๋ค ์ ๊ทผ ๋ฐฉ์์ด ์ฑ๊ณตํ๋์ง ๋ง์ ์๊ฐ์ ๋ฐ์ ๋ค๋ฆ๊ฒ ์๊ฒ ๋ ์ด์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ค์ ์ผ์ด ๋ค๋ฅธ ํ๋ซํผ์์ ๊ด์ฌ์ ๋ชจ์ ๋ ASP.NET Core๋ ๋ชจ๋ ์น์ ๋ํ ๊ฐ๋ฐ ๋ชจ๋ธ์ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์๋๋ ์์ผ๋ก ๊ธฐ๋ณธ "MVC ์ธ๊ธ"์ ์์ํ ์ง๋ถํ๊ฒ ๋๋ฏ๋ก ์ฑ๊ณต์ ๋ณต์ ํ๋ ๋ฐ ๋ถ๋ฆฌํฉ๋๋ค. ์ฑ ๊ด๊ณ ๋ ๋ฌดํํฉ๋๋ค.
Node์ ๊ฐ๋ฒผ์์ ๋ํ Electron, Native Mobile Apps, IOT, ์ ธ ์คํฌ๋ฆฝํธ ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ฌ๋ฌ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๊ธฐ๋ณธ ์ค์น๊ฐ ๋ถํ๋ ค์ง์๋ก ๋ค๋ฅธ ์๋๋ฆฌ์ค์์ ์ฌ์ฉํ๋ ๋ฐ ๋ ์ ์ฉํด์ง๋๋ค.
IMO ๊ธฐ๋ณธ๊ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ๋ค๋ก ์ ๊ณตํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ๋ถํ๋ฆฌ์ง ์๊ณ ๊ธฐ๋ฅ(๋ชจ๋ ์ฌ๋์ด ํ์ฉํ ์ ์์)์ ๋ ์ฝ๊ฒ ์ถ๊ฐํ๋ ๋ฐ ์ค์ ์ ๋ ๊ฐ๊ฒฐํ ๋ชจ๋์ ์ฝ์ด๋ฅผ ๊ฐ๋ .NET Core์ ์๋ ๋น์ ์ผ๋ก ๋์๊ฐ์ผ ํฉ๋๋ค. ์ค์น.
ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ช ๊ฐ์ง ์๊ฐ์ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋จ์ง ๊ทธ๋ ๊ฒ ๋๋ผ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ํธ๋ฆฌ๋ฐํ์ง ์์ต๋๋ค. ์ ๊ฑฐํ๋ ๊ฐ ์ด์ ๋ธ๋ฆฌ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ฉฐ 2.x์์ 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋น์ฉ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๋ค์์ Microsoft.AspNetCore.App์ ํฌํจ๋๋ ํญ๋ชฉ์ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์์น์ ๋๋ค. https://github.com/aspnet/AspNetCore/blob/master/docs/SharedFramework.md. ์ ๊ฑฐ๋ฅผ ์ ์ํ๋ ์ด์ ๋ธ๋ฆฌ์๋ ๊ณต์ ํ๋ ์์ํฌ์ ํฌํจํ๊ธฐ ์ํ ์ผ๋ถ ๊ธฐ์ค์ด ๋๋ฝ๋์์ต๋๋ค. ํนํ ์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ๋ (1) ์๋น์คํ ์ ์๋ ํ์ฌ ์ฝ๋์ ์ข ์๋์ด ์์ต๋๋ค. (2) ์ด์ ๋ธ๋ฆฌ ์์ฒด๊ฐ 3.0์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ฑฐ๋ (3) ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ๋กํ ์ฝ ๋๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํฉ๋๋ค( ์๋ฅผ ๋ค์ด Facebook/Google/Twitter๋ ๋ด์ผ ์ธ์ฆ ์๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
Microsoft.AspNetCore.App์์ MVC๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๊ณ ๋ ค ๋์์ด ์๋๋๋ค. ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ MVC๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ์๋์ง๋ง ์ด๊ฒ์ด ASP.NET Core ์ ํ์ ํต์ฌ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ Microsoft.AspNetCore.App์ ๋ณด๊ดํ ๊ณํ์ ๋๋ค.
MVC๋ 2.1๋ถํฐ Microsoft.AspNetCore.App์ ์ผ๋ถ์์ง๋ง 2.1 "๋น ์น" ํ ํ๋ฆฟ ์์ ๋ณผ ์ ์๋ฏ์ด MVC๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. ๊ณต์ ํ๋ ์์ํฌ์ ์๋ค๊ณ ํด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ์ง๋ ์์ต๋๋ค. ๋์์ ์ฌ์ฉํ๊ฑฐ๋ ๊ณ ์ ํ ๋ณด๊ธฐ ํ๋ ์์ํฌ๋ฅผ ์์ฑํ๊ฑฐ๋ "์์" aspnetcore API๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ ๋ฐ ์๋ต์ ์ง์ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค.
@dustinmoris : ๋์ค์ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ๋ณด๋ค .NET Core 3.0๊ณผ ํจ๊ป ์ ๊ณต๋ ํ๋ ์์ํฌ์ ๋ ๋ง์ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ํญ์ ๋ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ฅ ์์ ๊ณตํต ๋ถ๋ชจ๋ฅผ ์ถ๊ฐํ์ฌ ๊ธฐ๋ณธ ASP.NET Core ์ฑ์ ์คํํ ๋ค์ ๋๋จธ์ง๋ฅผ NuGet ํจํค์ง๋ก ์ ๊ณตํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ์ด๊ฒ์ด ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ผ๋ก ํ๋ช ๋๋ฉด ๋์ค์ ์ธ์ ๋ ์ง ์ถ๊ฐํ ์ ์์ง๋ง ๋์ค์ ๋ ์ด์ ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํ๋ ค๊ณ ํ๋ ๊ฒ์ ๋๋ค. ์ ๊ฑฐํ๋ ๊ฒ๋ณด๋ค ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ์ฐ๋ฆฌ๋ 2.0์์ ๋๋ฌด ๋ง์ ๊ฒ์ ์ถ๊ฐํ์ผ๋ฉฐ, ์ฐ๋ฆฌ๋ ์์ผ๋ก์ ์์ธก ๊ฐ๋ฅํ ๊ธธ์ ์ํด ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ธํธ๋ผ๊ณ ๋ฏฟ๋ ๊ฒ์ผ๋ก ๋ค์ ์กฐ์ ํ๊ณ ์์ต๋๋ค. Microsoft.AspNetCore.App์์ ์ ๊ฑฐ๋ ๋๋ถ๋ถ์ ์ด์ ๋ธ๋ฆฌ๋ ์ฌ์ ํ NuGet ํจํค์ง๋ก ์ ๊ณต๋ฉ๋๋ค. ๋์ค์ ๋ชจ๋ ๊ณ ๊ฐ์ 90%๊ฐ ๋์ผํ ํจํค์ง๋ฅผ ์ฐธ์กฐํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋๋ค๋ฉด ๊ณต์ ํ๋ ์์ํฌ์ ์ข์ ํ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ ์ง์นจ ๋ฌธ์ ์์ ์ธ๊ธํ๋ฏ์ด API๊ฐ ์ผ๋ง๋ ์ฌ์ฉ๋๋์ง๋ ์ค์ํ ์งํ์ด์ง๋ง ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํ๋ ์ ์ผํ ์์๋ ์๋๋๋ค.
"๋ฐ๋๋ผ"๋ ์ฃผ๊ด์ ์ ๋๋ค. ๋ง์ ์ฌ์ฉ์์๊ฒ MVC์ SignalR์ "๋ฐ๋๋ผ"์ ๋๋ค.
๋ช๋ช ์ฌ๋๋ค์ .NET Core๊ฐ ์ด๊ฒ ๋๋ ์ ๊ฒ ๋๋ ๋ค๋ฅธ ๊ฒ์ด์ด์ผ ํ๋ค๊ณ ๋งํ์ต๋๋ค. ์ํฉ์ด ๋ณํ๊ณ , ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ์์งํ๊ณ , ์ ํ์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ๊ด์ฐฐํ๊ณ , ๊ฐ์ฅ ๋ง์ ๊ณ ๊ฐ์๊ฒ ํํ์ ์ค ๊ฒ์ผ๋ก ์๊ฐ๋๋ ๊ฒ๊ณผ ์ผ์นํ๋๋ก ๊ธฐ๋ณธ๊ฐ์ ์กฐ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด ๋ฌธ์ ์์ ์ ์๋ ์กฐ์ ์ .NET Core 2.x์์ ๋ฐ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ ๊ฒ์ ๋๋ค.
์ต์ข ์๊ฐ: ์ด ๋ฌธ์ ๊ฐ ๋ชจ๋ ์ฌ๋์ ํ๋ณตํ๊ฒ ๋ง๋ค์ง๋ ์์ ๊ฒ์ ๋๋ค. ๊ทํ์ ์๊ฒฌ์ ๋ฌด์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ์ฐ๋ฆฌ๋ ์์ญ๋ง ๋ช ์ ๊ณ ๊ฐ์ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ ๊ทธ ์ค ์์๋ง์ด ํผ๋๋ฐฑ์ ๊ณต์ ํ๊ธฐ ์ํด GitHub์ ์ต๋๋ค. ๋ํ ์ง์ ๋ฐฉ๋ฌธ, ์ ํ ํตํ, ์ด๋ฉ์ผ, ์์ ๋ฏธ๋์ด, ๊ณ ๊ฐ ์ง์ ์์ฒญ, ๋ธ๋ก๊ทธ, Visual Studio ์๊ฒฉ ๋ถ์ ๋ฑ์์ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๊ณ ๋ คํ๋ ๊ฒ์ ์ผ๋ถ์ด๋ฉฐ ๊ธฐ๋ณธ ํ๊ฒฝ์ ์ผ๋ถ์ด๊ณ ๊ทธ๋ ์ง ์์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ๋๊ธฐ๋ ์ด์ ์ ๋ํด ๋ช ํํ์ง ์์ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์๋ฉด ๋ช ํํ ํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
์ง์ ๊ณ ๊ฐ๊ณผ ์ ์ดํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ MVC ๋ฐ SignalR์ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์ด ๋ช ๋ช ์ธ์ง ๋ง์ง๋ง์ผ๋ก ์ง๋ฌธํ ๊ฒ์ด ์ธ์ ์ ๋๊น? ํ์ํ ๋ ๋งค์ฐ ์ฝ๊ฒ ์ค์นํ ์ ์๋ ํ๋์ ๋จ์ผ NuGet ํจํค์ง์ ๊ฐ๊ฐ ํฌํจํ๋ ๋์ ํ์คํ ์ ์งํ๋ ์ด ์ ์ฅ ๋ค์ ์ค์ ์ฌ์ฉ ๋ฉํธ๋ฆญ์ด ์์ต๋๊น?
๊ณต์ ๋ฐํ์์ MVC๋ฅผ ํฌํจํ๋ @dustinmoris ๋ ์ฌ์ ์ปดํ์ผ๋ ์ํ๋ก ๋ฐฐ์ก๋จ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์์ค๋ ์ ์๋ ์ด์ ์ด๋ฉฐ, ์ด๋ก ์ธํด ์์ ์๊ฐ์ด ์ต์ํ์ผ๋ก ์ฆ๊ฐํ์ฌ ๋น ๋ฅธ ์์์ ์์์ IMO๊ฐ ์ข์ง ์์ ์ ์ถฉ์์ด ๋ฉ๋๋ค. ๋์ปค ์ปจํ ์ด๋. ๊ทธ ์ธ์๋ ๋ชจ๋ ๋ฐฐํฌ๋ ์ด์ ๋ฐํ์์ ์๊ธฐ ๋๋ฌธ์ ์ฑ๊ณผ ํจ๊ป ํจํค์ง๋ฅผ ๋ฐฐ์กํด์ผ ํ๋ฏ๋ก ๋ชจ๋ MVC ์ฑ์ ๋ฐฐํฌ ํจํค์ง ํฌ๊ธฐ๊ฐ ๋์ด๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ฐํ์์์ MVC์ ์ข ์๋ ๋ชจ๋ ํจํค์ง๋ ๋ณ๋์ ๋ฐฐํฌ ๊ฐ๋ฅ์ด์ด์ผ ํฉ๋๋ค. ์ ์ฒด ๋ชฉ๋ก์ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๋ช ๊ฐ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ๋งํ๊ณ Microsoft ๋๋ aspnet ํ๊ณผ ์ ํด ๊ด๊ณ๊ฐ 0์ด๋ผ๋ ์ ์ ์ผ๋์ ๋์ญ์์ค. ์ปค๋ฎค๋ํฐ์์ ์ค์ ๋ก ๋ชฉ์๋ฆฌ๋ฅผ ๋์ด๊ณ ์ด๊ฒ์ด ์ฃผ์ ์๊ตฌ ์ฌํญ์์ ์ ์ฆํ๋ค๋ฉด ๋ฒ ์ด๋ณธ aspnetcore ๋ฐํ์์ธ ๋ณ๋์ ๋ฐํ์์ด ๋ฐฐ์ก๋๋ ๊ฒ์ ๋ณผ ์ ์์์ต๋๋ค. ์๋ฌด๋ ๊ฐ๋ฅํ ํ ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ๋ฐ์์๊ฒ ํ๋ฅญํ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด๋ฉฐ ํ์ฌ ๊ณต์ ๋ฐํ์์์ MVC์ ์ด์ ์ค ์์ฒญ๋๊ฒ ๋์ ๋น์จ์ ์ฐจ์งํ๊ณ ์์ต๋๋ค. @natemcmaster ๊ด๋ จ ๊ฐ์ธ์ด ํฅํ GitHub ๋ฌธ์ ์ ๋ํด ํฌํํ ์ ์๋ ์ ํธํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ ์ด๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์๋ฃจ์ ์ ๋๊น?
@psibernetic ๊ณต์ ํ๋ ์์ํฌ์์ MVC๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ์๋ก์ด GitHub ๋ฌธ์ ๋ฅผ ์์ํ๋ ๊ฒ์ ํ์ํฉ๋๋ค. ํ์ง๋ง ์์์ ์ธ๊ธํ๋ฏ์ด Microsoft.AspNetCore.App์์ MVC๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํ ์ฌํญ์ด ์๋๋ฏ๋ก ์ด ๋ฌธ์ ๋ ๋ด์์ ๊ฒฌ์ธ๋ ฅ์ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ ํ.
@Bomret ์ฐ๋ฆฌ๊ฐ ์กฐ์ฌํ ๊ฑฐ์ ๋ชจ๋ ์ค์ ๊ณ ๊ฐ ์ฑ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ MVC๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ณต์ ํ๋ ์์ํฌ์ ์ ์งํ๋ฉด ๋ง์ ์ด์ ์ด ์์ผ๋ฉฐ, ์ ์ ๊ฑฐํด์ผ ํ๋์ง ๋ช ํํ ์ด์ ๊ฐ ์์ต๋๋ค.
@Natemcmaster : ์ง๊ธ์ ํตํ ์ค์ด์ง๋ง ์ค๋ช
๊ฐ์ฌํฉ๋๋ค.
๋ด๊ฐ ๊ทธ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๋์ ์ด๊ฒ์ด ๋ฉํ ํจํค์ง์ ๊ดํ ๊ฒ์์ ๊นจ๋ฌ์์ต๋๋ค.
๊ณต์ ํ๋ ์์ํฌ.
@natemcmaster ๋๋ @forki , @dustinmorris , @gerardtoconnor ๋ฐ @mythz ๊ฐ ๋ด๊ฐ ์์ง ๋ฐ๋ ๋ ผ์ฆ์ ๋ฃ์ง ๋ชปํ ๋งค์ฐ ํ๋นํ ์ด์ ๋ฅผ ์ธ๊ธํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ ์์ํฌ ์์ฑ์๊ฐ ์๊ฒฌ์ด ์๋ ํญ๋ชฉ์ ๋ฒ๋ค๋ก ๋ฌถ๋ ๋์ nodejs์ ๊ฐ์ด ๋งจ ์์ ๊ตฌ์ถํ ์ ์๋ ๊ธฐ๋ณธ ์น ๋ฐํ์/lib๊ฐ ์์ผ๋ฉด ๋งค์ฐ ์ข์์ ๊ฒ์ ๋๋ค. ์ด์ ์ ์ธ๊ธํ๋ฏ์ด ๋ ธ๋๋ ๋๋ฌด ๋ง์ด ์๊ตฌํ์ง ์์ง๋ง ๊ทธ ์์ ๊ตฌ์ถํ ์ ์๋ ๋ฉ์ง ์ถ์ํ๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ฑ๊ณต์ ์ ๋๋ค. MVC๋ ์ฌ๋ผ์ง์ง ์๊ณ ๋ฌผ๋ฌ๋ ๊ฒ์ด๋ฉฐ ๋ค์ํ ๋ค๋ฅธ ์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ ์ค์์ ์ ํํด์ผ ํ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ํฌํจํจ์ผ๋ก์จ ๋น์ ์ ๊ทธ๊ฒ์ ๋ํ ์ ์ฅ์ ์ทจํฉ๋๋ค. ๋ฌผ๋ก ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๋ ์ด์ ๋ณด์ง ์๊ณ ๋ฐํ์๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค. ๋ด ์์งํ ์๊ฒฌ์ผ๋ก๋ ์ ์น์ ๋ง์ผํ ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ๋ถ์พ๊ฐ์ ์ฃผ์ง๋ ์์ต๋๋ค.
"Microsoft.AspNetCore.App"์ด๋ผ๊ณ ํฉ๋๋ค. ๋ ๋ฒ์งธ "Microsoft.AspNetCoreMVC.App"์ ๋ง๋ค์ง ์๊ฒ ์ต๋๊น?
์ด์จ๋ ๋๋ ์ ์ ๊ธ๋ ๊ฒ์ด ๋งค์ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ์ฌ๊ธฐ์ ๋ํ ์ผ๋ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋น์ ์ด aspnet ์ฝ์ด๋ก ํ ๊ฒ์ ์ข์ํ์ง๋ง MVC, ๋ฉด๋๊ธฐ ๊ฐ์ ๊ฒ์ ์ข์ํ์ง ์๋ ์ฌ๋๋ค์ด ์ ์ ๋์ด๋๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. , EF ๋๋ signalR.
๋ฌผ๋ก . api, ์น, ์น ์์ผ, ํ ํ๋ฆฟ, db ์ก์ธ์ค ๋ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ์ ๋ํ ๋ง์ ์์ด๋์ด๋ฅผ ์ ๊ณตํ ๋งํผ ์ปค๋ฎค๋ํฐ๊ฐ ํ๋ฐํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ MVC, Razor, EF ๋ฑ์ ๊ฐ์ง ์ฌ๋๋ค์๊ฒ ํ๋์ ์ต์ ์ ์ ๊ณตํ ๊ฒ์ด์ง๋ง ์ ์ผํ ์ต์ ๋ ๊ธฐ๋ณธ ์ต์ ๋ ์๋๋๋ค.
@natemcmaster ๋ด ์ค์, ๋๋ ์ค์ ๋ก ์ฌ๊ธฐ์์ ์ด ๋ฌธ์ ์ ๊ณต์ ํ๋ ์์ํฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๋ค. ๋ฉํ ํจํค์ง์๋ ๊ฐ์ ์ด์ ๊ฐ ์ ์ฉ๋๋ค๊ณ ์๊ฐํ์ง๋ง ์์งํ ๋งํ๋ฉด ๋ฉํ ํจํค์ง ๋์ ๊ฐ๋ณ ํจํค์ง๋ฅผ ์ด๋ฏธ ์ฐธ์กฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ํด ๋ ๊ท์ฐฎ์ต๋๋ค. ๊ฐ๋ฅํ ํ ์์ ์ปจํ ์ด๋์ด๋ฏ๋ก ๊ณต์ ํ๋ ์์ํฌ์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ์ ์์ด ์๋ฏธ๊ฐ ์์ต๋๋ค ๐
@natemcmaster ์ ๊ฐ ์ ๋๋ก ์ดํดํ๋์ง ๋น ๋ฅด๊ฒ ํ์ธํด ์ฃผ
๋ค์ .NET Core ๋ฐํ์(3.0)์ ๊ตฌ์ด ๊ณต์ ASP.NET Core ํ๋ ์์ํฌ๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ฆ, ASP.NET Core๋ ํ๊ฒฝ์ .NET Core ์ค์น์ ์ผ๋ถ๋ก ์ ๊ณต๋ฉ๋๋ค.
๋ํ ASP.NET Core ์ฑ์ฉ NuGet ํจํค์ง ๋ชจ์์ธ Microsoft.AspNetCore.App
๋ฐ Microsoft.AspNetCore.All
๋ผ๋ ๋ฉํ ํจํค์ง๊ฐ ์์ต๋๋ค.
๊ณต์ ASP.NET Core ํ๋ ์์ํฌ < EF Core์ ๊ฐ์ ํญ๋ชฉ์ ํฌํจํ๋ Microsoft.AspNetCore.App
๋ฉํ ํจํค์ง?
์์ฃผ ์์ API๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด EF Core, SignalR, MVC ๋ฑ์ด ํฌํจ๋ Microsoft.AspNetCore.App
๋ฉํ ํจํค์ง๋ฅผ ํฌํจํ์ง ์๊ณ ๋ ASP.NET Core ์น ์ฑ์ ๋น๋ํ ์ ์์ต๋๊น?
์ฌ๋ฌ๋ถ์ด ๋ฌด์์ ํ๋ , ์์ API๋ฅผ ์คํํ๊ธฐ ์ํด ASP.NET Core์ ๋ํ ์ข ์์ฑ์ด ๊ฐ์ฅ ์ ์ Docker ์ปจํ ์ด๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์?
๋ค์ .NET Core ๋ฐํ์(3.0)์ ๊ตฌ์ด ๊ณต์ ASP.NET Core ํ๋ ์์ํฌ๊ฐ ์์ ๊ฒ์ ๋๋ค. ์ฆ, ASP.NET Core๋ ํ๊ฒฝ์ .NET Core ์ค์น์ ์ผ๋ถ๋ก ์ ๊ณต๋ฉ๋๋ค.
์
๋ํ ASP.NET Core ์ฑ์ฉ NuGet ํจํค์ง ๋ชจ์์ธ Microsoft.AspNetCore.App ๋ฐ Microsoft.AspNetCore.All์ด๋ผ๋ ๋ฉํ ํจํค์ง๊ฐ ์์ต๋๋ค.
์๋์. FrameworkReference
๋ผ๋ ์๋ก์ด ๊ฐ๋
์ด ์์ผ๋ฉฐ Microsoft.AspNetCore.App์ด ๊ทธ ์ค ํ๋์
๋๋ค. Microsoft.AspNetCore.All์ 3.0์ ์กด์ฌํ์ง ์์ต๋๋ค.
๊ณต์ ASP.NET Core ํ๋ ์์ํฌ < EF Core์ ๊ฐ์ ๊ฒ์ ํฌํจํ๋ Microsoft.AspNetCore.App ๋ฉํ ํจํค์ง?
์๋์, EF๋ ํฌํจ๋์ง ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ด ๋ฌด์์ ํ๋ , ์์ API๋ฅผ ์คํํ๊ธฐ ์ํด ASP.NET Core์ ๋ํ ์ข ์์ฑ์ด ๊ฐ์ฅ ์ ์ Docker ์ปจํ ์ด๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์?
์ด์ ๋ธ๋ฆฌ ํธ๋ฆฌ๋ฐ ๋ฐ ๋ง์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ์, ASP.NET Core์ฉ ํจํค์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋๋ค.
@natemcmaster
์ฐ๋ฆฌ๋ ๋จ์ง ๊ทธ๋ ๊ฒ ๋๋ผ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ํธ๋ฆฌ๋ฐํ์ง ์์ต๋๋ค. ์ ๊ฑฐํ๋ ๊ฐ ์ด์ ๋ธ๋ฆฌ๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ฉฐ 2.x์์ 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋น์ฉ์ด ์ถ๊ฐ๋ฉ๋๋ค.
์์ ์ ์ํํ ์ ์๋ ์ฌ๋ฐ๋ฅธ ์์น๋ v3 ์ฃผ ๋ฒ์ ์ฐฝ ๋ด์ ์์ ๊ฒ์ ๋๋ค. ์ด ์ฐฝ์ ์ฌ์ค์ ์ด์ ๊ฐ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ์ ์๋ ์ ์ผํ ์๊ฐ์ ๋๋ค. ์ฆ, ๋ค๋ฅธ ํจํค์ง๊ฐ ์ ๊ฑฐ๋๋ ๊ฒ๊ณผ ๊ฐ์ ์๊ฐ์ ๋๋ค.
Microsoft.AspNetCore.App์์ MVC๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๊ณ ๋ ค ๋์์ด ์๋๋๋ค. ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ MVC๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
"ASP.NET Core ์ฑ"์ ๋ง๋๋ ๊ฒฝ์ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก "์ด ํจํค์ง ์ฐธ์กฐ"๋ก ์ฝํ๋ "Microsoft.AspNetCore.App"์ด๋ผ๊ณ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ASP.NET Core ์ ํ์ ํต์ฌ ๋ถ๋ถ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ด๊ฒ์ Microsoft.AspNetCore.App์ ๋ณด๊ดํ ๊ณํ์ ๋๋ค.
์ด๊ฒ์ ASP.NET Core์ ๋ชฉํ๊ฐ ๋ฆฐ(lean)์ ๊ฐ๋ฐฉํ node.js-esque ์คํ์ผ ์์ฝ์์คํ ์ ์ก์ฑํ๋ ๊ฒ์์ ๋ฉ์ด์ง๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ฌธ์ ์ ํต์ฌ์ ์ ์ ๋ ๊ฐ๊น์์ง๊ณ ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด ASP.NET Core ์ฑ์ MVC ์ฑ๊ณผ ๋์์ด๋ก ํตํฉํ๋ ค๋ ๊ฒ์ด ํ์ ์๋์ ๋๊น? ASP.NET Core์ ํ๋งค ํฌ์ธํธ ์ค ์ผ๋ถ๋ "Pay to play" ๋ฐ ๋ถ๋ฆฌ๋ "layering"์ด์์ง๋ง "ASP.NET Core App"์ด ์์ํ = MVC App์ผ๋ก ์๋๋์์์ ์์ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํจํค์ง๊ฐ ๋ ๋ช ์์ ์ด๋ผ๋ฉด ๊ด๋ จ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ ๋ช ํํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ "Microsoft.AspNetCore.App"์ด ๊ฑด๋๋ฆด ์ ์๋ ๊ฒฝ์ฐ ์ต์ํ ํต์ฌ ์๋ฒ ๊ธฐ๋ฅ๋ง ํฌํจ๋ ๊ณต์ "๊ธฐ๋ณธ" ๋ฉํ ํจํค์ง(๋๋ FrameworkReference)(์ฆ, ๋ ๋จ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์)์ ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ์ด๋ฆ:
("ํต์ฌ"๋ ์ ์ ํ์ง๋ง ์ด๋ฏธ ์ด ์ฉ์ด๊ฐ ๊ณผ๋ํ๊ฒ ์ฌ์ฉ๋์์ต๋๋ค).
๊ณต์ ๋ฉํ ํจํค์ง/์ด๋ฆ์ด ์์ผ๋ฉด ๋ชจ๋ ASP.NET Core ์ฑ์ ๋ํ ๊ถ์ฅ ๊ธฐ๋ฐ์ธ ํ์ฌ ๊ถ์ฅ๋๋ "Microsoft.AspNetCore.App"๋งํผ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ ์ฝ ์กฐ๊ฑด์ด ํ์ ์ ๋ณ์ต๋๋ค. MVC๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๊ณผ ๋์ผํ ๊ฒฝ๊ธฐ์ฅ์์๋ง ์คํ๋ ์ ์๋ค๋ฉด ์ฐ๋ฆฌ ๋ชจ๋๋ ์ฑ์ ํ์ํ ์ ํ(ํจํค์ง ์ ํ๊ตฐ์ด๋ผ๊ณ ๋ ํจ)์ ์ฝ๊ณ ๋ช ์์ ์ผ๋ก ์ ์ธํ ์ ์๋ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ฒ๋ผ:
๋๊ตฌ๋ ์ฝ๊ฒ ์ ์ธํ๊ณ ํ์ํ ๊ฒ๋ง ์ค์นํ ์ ์๊ณ ๋ฐฐํ์ ๋๊ตฌ๋ "Microsoft.AspNetCore.SignalR", "Microsoft.AspNetCore.EF" ๋ฉํ ํจํค์ง๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค. (๋๋ ์๋๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฐ์ํ ์๋ฃจ์ ์ ๋์ฒด).
๊ณต์ ํ๋ ์์ํฌ์ ์๋ค๊ณ ํด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ์ง๋ ์์ต๋๋ค.
์ง๊ธ๊น์ง ๋ง๋ค์ด์ง ๋ชจ๋ ๋จ์ผ์ฒด์ ๊ทผ๊ฑฐ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. "์ฐ๋ฆฌ๊ฐ ๋ฒ๋ค๋ก ์ ๊ณตํ๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค. ๋จ์ง ๊ทํ์ ํธ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค."
์ฌ์ ํ ๋์์ ์ฌ์ฉํ๊ณ , ์์ ๋ง์ ๋ทฐ ํ๋ ์์ํฌ๋ฅผ ์์ฑํ๊ณ ,
์๋ฅผ ๋ค์ด MVC ๋ฐ Razor์ ๋ํ ์์ฒด "๋ณด๊ธฐ ํ๋ ์์ํฌ" ๋์์ ๊ฐ๋ฐํ๋ ๋์ .NET Core์์ .NET Core๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด ํ์ค ๋ช ๋ น์ ์คํํ ๋ ๋น๋๊ฐ ์คํจํ๋ ๋ง๋ฒ ๊ฐ์ ๋์์ด ๋ฐ์ํ์ต๋๋ค. NET Core ํ๋ก์ ํธ, ์ฆ:
dotnet publish -c Release
๋ค์๊ณผ ๊ฐ์ด ์คํจํฉ๋๋ค.
EXEC(1,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?) [C:\src\NetC
oreWebApps\WebApp\src\WebApp\WebApp.csproj]
EXEC(1,54): error CS0518: Predefined type 'System.String' is not defined or imported [C:\src\NetCoreWebApps\WebApp\src\WebApp\WebApp.csproj]
C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.mvc.razor.viewcompilation\2.0.0\build\netstandard2.0\Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.targets(60,5):
MVC, Razor๋ฅผ ๋ช
์์ ์ผ๋ก ์ฐธ์กฐํ์ง ์๊ฑฐ๋ .cshtml
ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฑ์ ๋น๋ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด์๊ธฐ ๋๋ฌธ์ MVC์ ๋ํ ๋์์ ๊ฐ๋ฐํ๊ณ ์๋ค๋ ์ ์์ ๋๋ผ์ด ๋์์
๋๋ค.
๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ํ๋ ์ฌ๋ฌ GitHub ์ค๋ ๋๋ฅผ ์ ์ ์ด ๋ค์ง ํ ์๋ฃจ์ ์ด MVC Razor ์ปดํ์ผ ์ค๋จ ๋น๋์์ ์ ํ ํด์ ๋๋ ๋์ผํ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฐ๊ฒฌํ์ต๋๋ค.
dotnet publish -c Release /p:MvcRazorCompileOnPublish=false
ํ๋ก์ ํธ๋ฅผ ๊ฒ์ํ ์ ์์๋ ์ด์ ์
๋๋ค. ์์๋ ๋น๋๋ฅผ ์์ ํ๊ธฐ ์ํด ๋ค๋ฅธ ์ค์์น๋ฅผ ์๋ํ๋ ๋์ .NET Core 2.0 ์น ์ฑ์ ๋ถํ์ํ๊ฒ ํฝ์ฐฝ์ํค๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ตํธ์์ํ์ฌ /refs/*.dll
์ ์๋ 150๊ฐ์ .dll ๋งํผ ๊ฒ์๋ ๊ณต๊ฐ์ ์ค์ผ ์ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ Razor์ ํ์ํ ๋ฉํ๋ฐ์ดํฐ ์ตํธ์์:
<PreserveCompilationContext>false</PreserveCompilationContext>
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋์ง ์ก๊ธฐ๋ฅผ ์คํํ์ฌ ํ๋ก์ ํธ ๋น๋๋ฅผ ์ค๋จํ๊ณ MVC/Razor ์ฑ์๋ง ํ์ํ ๋ถํ์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋๊ตฌ์ MVC๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ์๋ ค์ผ ํ๋ ์ค์์น๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. MVC ๋นํธ๊ฐ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๊ตฌ๊ฐ ๋ชจ๋ ์ฑ์ด MVC๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๊ฐ๋ฅํ์ง ์์ "๊ธฐ๋ณธ" ๋ฉํ๋ฐ์ดํฐ ํจํค์ง๋ก ์์ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋ฐ๋์งํ์ ๊ฒ์ ๋๋ค.
ASP.NET Core๊ฐ ์ฌ์ ํ ๋์์ ์ธ "๋ณด๊ธฐ ํ๋ ์์ํฌ"์ ์คํ, ์์ฑ ๋ฐ ์ฌ์ฉ์ ๊ถ์ฅํ๋ ํ์ํ๋ ํ๋ซํผ์ด๋ผ๊ณ ๋งํ๊ธฐ๋ ์ฝ์ง๋ง MVC์ ๊ฐ์ด ๊ท์ ๋ ์๊ฒฌ์ด ์๋ ์น ํ๋ ์์ํฌ๋ฅผ ๋ฒ๋ค๋ก ๋ฌถ๋ ๊ฒ์ ์์ฑ ๋ฐ ์๊ธฐ ๋์์ ์ฌ์ฉ. ๋ ์ค๋ฅด๋ ์ธ๊ธฐ ์๋ ๋์์ ์๋ฅผ ์ ์ ์ดํด๋ณด๋ ๊ฒ์ ํ๋ซํผ์ด ๊ทธ๋ค์๊ฒ ์ผ๋ง๋ ๋งค๋ ฅ์ ์ธ์ง ์ ์ ์๋ ์ข์ ์ฒ๋์ ๋๋ค.
๋ชจ๋ ASP.NET Core ์ฑ์ด ๋ค๋ฅธ ๋ชจ๋ "๋ณด๊ธฐ ํ๋ ์์ํฌ"๋ณด๋ค MVC๋ฅผ ํฌํจํด์ผ ํ๋ ๊ฒฝ์ฐ(ext ๋ฉ์๋์ ๋จ์ผ .cs
ํ์ผ ๋๋กญ์ธ ํฌํจ) " ๊ทธ๋ฆฌ๊ณ ๋ฒ๋ค MVC๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ฒ๊ฑฐ๋กญ์ต๋๋ค. ๋ทฐ ํ๋ ์์ํฌ๊ฐ ํ์๋ก ํ๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ฒ๋ค๋ก ๋ฌถ์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์์ฝํ๋ฉด "MVC"๊ฐ ์ตํธ์ธ๋์ด .App
ํจํค์ง์ ํฌํจ๋์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํ์ง๋ง, ๊ฒฐ์ ์ ๋๋๋ฆด ์ ์๋ค๋ฉด ์ต์ํ ๊ณต์ ๋ฒ ์ด์ค๋ผ์ธ ๋ฉํ ํจํค์ง ๊ธฐ๋ฐ์ ๊ฐ์ง ์ ์์ต๋๊น? ํฌํจํ์ง?
์ฐ๋ฆฌ๋ ์์ญ๋ง ๋ช ์ ๊ณ ๊ฐ์ ๋ณด์ ํ๊ณ ์์ผ๋ฉฐ ๊ทธ ์ค ์์๋ง์ด ํผ๋๋ฐฑ์ ๊ณต์ ํ๊ธฐ ์ํด GitHub์ ์ต๋๋ค.
๋น๋ํด์ง ์์ ํจํค์ง์ ๋ํ IMO์ ์๊ตฌ๊ฐ ์ ๋๋ก ๋ฐ์๋์ง ์๊ณ ์์ต๋๋ค. ์ผํ: VS 2012, VS 2013, VS 2015, VS 2017 ๋ฐ .NET Core์ฉ์ผ๋ก ๋ง๋ ๋ชจ๋ C#/.NET ํ๋ก์ ํธ ํ ํ๋ฆฟ ์ค์์ ์ผ๊ด๋๊ฒ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํ ํ๋ฆฟ ์ง๊ธ๊น์ง VS.NET์ ๊ธฐ๋ณธ ๋น ASP.NET ํ ํ๋ฆฟ์ด ์ถฉ๋ถํ ๋น์ด ์์ง ์๋ค๋ ํด๋์ ASP.NET์ ๋ํ ๋น๋ฒํ ๋นํ์ด๊ธฐ๋ ํ "๋น" ํ ํ๋ฆฟ์ด ํญ์ ์์์ต๋๋ค. ์ด๊ฒ์ MVC ์์ด "๋น" ํด๋์ ASP.NET .NET Framework๋ฅผ ๋ง๋ค ์ ์์๋ ๋์์ง๋ง ์ง๊ธ์ ๋ ์๋กญ๊ณ ๋ ๊ฐ๋ณ๊ณ ๋ชจ๋์์ธ ASP.NET Core ํ๋ ์์ํฌ์์ MVC๊ฐ ์ต์ ๊ถ์ฅ ์์ ํจํค์ง ๋ด์ ๋ฒ๋ค๋ก ์ ๊ณต๋ฉ๋๋ค.
๋ํ ์ง์ ๋ฐฉ๋ฌธ, ์ ํ ํตํ, ์ด๋ฉ์ผ, ์์ ๋ฏธ๋์ด, ๊ณ ๊ฐ ์ง์ ์์ฒญ, ๋ธ๋ก๊ทธ์์ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค.
์ฌ๋๋ค์ ์ข ์ข ์ ๊ฑฐํ ์ ์๋ ๋ณต์ก์ฑ๊ณผ ๋์ผ์๋๋ ํฝ์ฐฝ์ ์ข์ํ์ง ์์ต๋๋ค. ์์ฒญ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฅํ ํ ๋จ์ํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ด์ ์ด ๋์ด์ผ ํ๊ณ ๊ธฐ๋ณธ ํ๋ก์ ํธ๋ฅผ ํฝ์ฐฝ์ํค์ง ์๊ณ ์ํํ ์ ์๋ ๊ฒ์ ๋๋ค.
๋ด ๊ฒฝํ์ ๋ช ์์ ์ด๋ผ๋ ๊ฒ์ด ๋ง๋ฒ ๊ฐ์ ๋์์ด ํฌํจ๋ ๋ถํ๋ ค์ง ํ๋ ์์ํฌ๋ณด๋ค ์ถ๋ก ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๋ช ์์ ์ด๋ผ๋ฉด ์ํธ ์์ฉํ๊ณ , ๊ฒ์ํ๊ณ , ์ฝ๊ณ , ์ ๊ฑฐํ๊ณ , ์ฌ์ฉํ์ง ์๊ณ ์คํ์ ํ ์คํธํ๊ณ (๋ฌธ์ ์ ์์ธ์ธ์ง ํ์ธํ๊ธฐ ์ํด) ๋ค๋ฅธ ๊ตฌ์ฑ์ ํ๋ก์ ํธ๋ฅผ ๋น๊ตํ ๋ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ mvc/razor-less ํ๋ก์ ํธ ๋น๋๋ฅผ ๊นจ๋จ๋ฆฌ๋ MVC ๋๊ตฌ์ ๋ง๋ฒ ๊ฐ์ ๋์์ผ๋ก ์ธํด ๋ด ํ๋ก์ ํธ์ ์ด๋ ๋ถ๋ถ์ด ์ด๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋์ง, ์คํ ์ค์ธ ์ด์ , ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ ์์์ต๋๋ค. ๋๋ ์ฌ์ ํ MVC๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ด ํ๋ก์ ํธ๊ฐ MVC๊ฐ ๋ฒ๋ค๋ก ์ ๊ณต๋์ด ์๋๊ฐ ๋๋ ค์ง์ง ์๊ฑฐ๋ MVC ๋๋ Razor๋ฅผ ์์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ต์ ์ด ์๋ ์ถ๋ ฅ์ ์์ฑํ๋ค๊ณ ํ์ ํ์ง ๋ชปํฉ๋๋ค.
Visual Studio ์๊ฒฉ ๋ถ์ ๋ฑ.
์กด์ฌํ์ง ์๋ ๊ธฐ๋ณธ ๋ฉํ ํจํค์ง์ ์ธ๊ธฐ์ ๋ํ ์๊ฒฉ ์ธก์ ์ ๋น๊ตํ๋ ๊ฒ์ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. IMO๋ฅผ ์ํํ๋ค๋ฉด ํฌํจํ ๊ฐ์น๊ฐ ์๋ ์ถฉ๋ถํ ์ธ๊ธฐ๋ฅผ ์ป์์ ๊ฒ์ ๋๋ค. ์ด์ ์ "Microsoft.AspNetCore.All"์ ์คํํธ๋ผ์ ๋ค๋ฅธ ์ชฝ ๋์ ๋ชฉํ๋ก ํ๊ณ ์ฐ์ฃผ๋ฅผ ํฌํจํ์ง๋ง ์ต์ํ์ ์ ์ฉํ ๊ธฐ์ค์ ์ ๊ฐ๋ ๊ฒ๋ณด๋ค ๋ ์ ์ฉํ ์ญ์ ์๋๋๋ค.
MVC ์ฑ์ ๋น๋ํ์ง ์๊ณ ๊ธฐ๋ณธ ๋ผ์ธ์ ์ ํํ๋ ์ต์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ก์ธ์ค ๊ฐ๋ฅํ๋ค๋ฉด MVC๋ฅผ ํฌํจํ๋ ๋ ๋ถํ๋ ค์ง ์คํํฐ ์ต์ ๋ณด๋ค ์ ํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@๋ด๋
ํ๋ ์์ํฌ ์์ฑ์๊ฐ ์๊ฒฌ์ด ์๋ ํญ๋ชฉ์ ๋ฒ๋ค๋ก ๋ฌถ๋ ๋์ nodejs์ ๊ฐ์ด ๋งจ ์์ ๊ตฌ์ถํ ์ ์๋ ๊ธฐ๋ณธ ์น ๋ฐํ์/lib๊ฐ ์์ผ๋ฉด ๋งค์ฐ ์ข์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ ํํ ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ์ฌ์ฉํ๋ ค๋ ๋ฐฉ์์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ๋กญ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. MVC๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ๋ฏธ๋ค์จ์ด๋ฅผ ์ถ๊ฐํ์ง ๋ง์ญ์์ค. ์, ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ง ์์ง๋ง ์ํ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ์ํ๋ ๋๋ก ์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋๋ ๋น์ ์ด ์ฌ๊ธฐ์์ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ์ฝ๊ฐ ์๋ชป ํด์ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. .NET Core์ ํจ๊ป ์ ๊ณต๋๋ ์ผ์ข ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. Node ์ฐธ์กฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด: Express์ ํ์ฌ ๋ฒ์ ์ด Node.js์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ์ฌ์ฉํ _๊ฐ์ง๋_ ์์ง๋ง ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ด๋ฏธ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ MVC์ ๊ฒฝ์ฐ MVC๊ฐ ์ค์ ๋ก ASP.NET Core์ ํฌํจํ๋ ๋ด์ฉ์ ์ ํํ ์์ง ๋ชปํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ปจํธ๋กค๋ฌ์ Razor ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ๊ด์ฐฎ์ง๋ง ์ด์จ๋ ์ฑ์์ ์ฌ์ ํ ์๋นํ ๋ง์ MVC ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์ปจํธ๋กค๋ฌ์ Razor ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ๊ด์ฐฎ์ง๋ง ์ด์จ๋ ์ฑ์์ ์ฌ์ ํ ์๋นํ ๋ง์ MVC ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
๋ฌด์์ฒ๋ผ?
์ปจํธ๋กค๋ฌ์ Razor ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ๊ด์ฐฎ์ง๋ง ์ด์จ๋ ์ฑ์์ ์ฌ์ ํ ์๋นํ ๋ง์ MVC ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
๋ค, ์๋ ค์ฃผ์ธ์. ์ฐ๋ฆฌ ๋๋ถ๋ถ์ ํต์ฌ ๋ฏธ๋ค์จ์ด/Kestrel์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋์ฒด ํ๋ ์์ํฌ์ ์ฐธ์ฌํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉ ์ค์ธ ์ปจํธ๋กค๋ฌ์ Razor ๋ณด๊ธฐ๋ MVC์ ์์ ํ์ ์งํฉ์ ๋๋ค. ์๊ณ . F# ํ๋ ์์ํฌ์ธ Giraffe/Saturn & Zebra๋ ๋ ๋์ ๋ผ์ฐํ ๊ณผ ๋จ์ํ๋ ์ฒ๋ฆฌ ๋ชจ๋ธ๋ก MVC๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค. ๋ ๋๋ง ์ TechEmpower์์ Zebra x2๊ฐ MVC๋ณด๋ค ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์งํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์ ๋ธ๋ฆฌ ํธ๋ฆฌ๋ฐ/๋ง์ปค๊ฐ ๋์ค์ ํํ๋ฆฐํธ๋ฅผ ์ค์ผ ์ ์๋ค๋ฉด ๊ทธ๊ฒ์ ์ต์ํ์ ๊ฒ์ด์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ง ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ํ ๋ ๊ณตํํ ๊ฒฝ์์ ์ฅ์ ํ์ฉํ๊ณ asp.net ์ฝ์ด ํ๋ซํผ์ ๋ํ ์ต๋ ํ์ฉ๋๋ฅผ ์ป์ ์ ์์ต๋๋ค.
@mythz ์กฐ์ง์ ๊ด์ ์์ ๋น์ ๋ง์ด ๋ง์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ๋ ผ๋ฆฌ์ ๊ตฌ๋ถ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์ธ๋ถํ์๋ ์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์๋นํ ๋ณต์ก์ฑ๊ณผ ์์ง๋์ด๋ง ์ค๋ฒํค๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ๋๋ค์์ ๊ณ ๊ฐ์ด MVC ๊ตฌ์ฑ ์์๋ฅผ ํ์ฉํ ๊ฒ์ผ๋ก ์์ํ ๋ ์ด๋ฅผ ๋ถํ ํ๋ ๋น์ฉ์ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํ์ง ์๋ ๊ฐ๋ฐ์์ ๋จ์ ์ ๋ฌด์ํ ๋งํฉ๋๋ค. ์ค์น ๋๋ ํ ๋ฆฌ์ ๋ช MB๊ฐ ์ถ๊ฐ๋๊ณ ๋ก๋ํ์ง ์๋ ํ ๋ฐํ์์ ์ํฅ์ด ์์ต๋๋ค.
์์ ์ ์ค๋ช ํ๊ธฐ ์ํด
@์ฐ๋ฆ
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๋ฏธ ์ผ๋ฏ์ด: ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ๋ฐํ์๊ณผ ์๋ฌด ๊ด๋ จ์ด ์๋ ํญ๋ชฉ์ ๋ฒ๋ค๋ก ๋ฌถ๋ ๊ฒ์
๋๋ค. ์ด๋ฏธ์ง ์ต์คํ๋ ์ค ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋
ธ๋์ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋์์ ๊ฒ์
๋๋ค. ์ํ๊ณ๊ฐ ์ด๋ ๊ฒ ํ๊ธฐ์ฐจ๊ณ ๋ค์ํด์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
๋ํ ๊ธฐ๋ณธ ์ค์น์์ MVC, SingalR ๋ฑ์ ์ ๊ฑฐํ๊ณ ๊ฐ๊ฐ "๋ณต์ก์ฑ ์ถ๊ฐ"๋ก ๋ ์ด๋ธ์ ์ง์ ํ ์ ์๋ ๋จ์ผ NuGet ํจํค์ง๋ก ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ ๋ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด์จ๋ ๊ฐ๋ฐ์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ถ๊ฐ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ ํจํค์ง๋ก ์ ๊ณตํ๋ฉด ๋ณต์ ์๊ฐ์ด "์๋นํ" ์ฆ๊ฐํ๋๋ผ๋ ์ด์จ๋ ๋๋ฌด ๋ฑ๋ฑํฉ๋๋ค.
@ํธ๋์ฒ
๊ทธ๋ฌ๋ ์ด๋ค ์ธ๋ถํ
์ด๋ฅผ ์ธ๋ถํํ๋ ๊ฒ์ MVC์ ๋ถ๋ฆฌ์ด๋ฏ๋ก ASP.NET Core ์ฑ์ ASP.NET Core ์ฑ์ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ๊ท์ ํ๋ ๋ ๋จ์ ์ธ ๊ฐ๋ฐ์ ํ๋ ์์ํฌ ์์ด๋ ์ต์ํ์ ์ ์ฉํ ๊ธฐ์ค์ ๊ฐ์ง ์ ์์ต๋๋ค.
์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๋ณต์ก์ฑ๊ณผ ์์ง๋์ด๋ง ์ค๋ฒํค๋๊ฐ ํฌ๊ฒ ์ถ๊ฐ๋์์ต๋๋ค.
์ด ๋ด์ฉ์ ๋ช ํํ ํ๋ ค๋ฉด MVC๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋ ASP.NET Core ์ฑ์์ ๋ถํ์ํ ์ค๋ฒํค๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋๋ฌด ๋ง์ ์์ง๋์ด๋ง ์ค๋ฒํค๋๊ฐ ํ์ํฉ๋๋ค. MVC๊ฐ "MVC์" ๋ณต์ก์ฑ์ ํฌ๊ฒ ์ถ๊ฐํ๋ ๋ค๋ฅธ ๋ชจ๋ ๋์ฒด ํ๋ ์์ํฌ์ฒ๋ผ ์๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
MVC๊ฐ ๋ค๋ฅธ ๋ชจ๋ ๋์ฒด ํ๋ ์์ํฌ ๋ด์์ ์๋ํด์ผ ํ๋ ๋์ผํ ํ์ฅ์ฑ ์ต์ ๋ด์์ ์๋ํ๊ธฐ ์ํด ์๋นํ ๋ณต์ก์ฑ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๋ MVC์ ๋ฌธ์ ๊ฐ ์์์ ๋ํ๋ด๋ฉฐ ๋ ์ํํ๊ฒ ์๋ํ๊ธฐ ์ํด ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ๋์ ์ด์ต์ ์ถ๊ฐ๋ ์ ์์ต๋๋ค. ๋ชจ๋๋ฆฌ์์ ๋ถ์ํ๋ ๊ฒ์ฒ๋ผ ๋๊ตฌ ๋ฐ ๋ฐํ์์ ๋ณต์ก์ฑ์ MVC ๋ฐ ํตํฉ/๋๊ตฌ์ ์ํ๋ ์์น๋ก ์ถ๊ฐ๋ ๋ณต์ก์ฑ์ด ์ด๋ํ์ฌ ๋ ๊ฐ๋ณ๊ณ ๋ ๋ณต์กํฉ๋๋ค.
๋์ ์ ์ฐ๋ฆฌ๋ MVC๊ฐ ํผ๋ธ๋ฆฌ์ฑ ํ๋ก์ ํธ๋ฅผ ์ค๋จ์ํค๊ณ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์๋ ํ๋ก์ ํธ์ ์ถ๋ ฅ์ ๋ถํ๋ฆด ์ ์๋ ๊ธฐ๋ณธ ๋๊ตฌ์ ํ๊ณ ํ ์๋ฆฌ ์ก์ ์ํฉ์ผ๋ก ๋๋ฌ์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๊ณผ ๊ฐ์ด ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ MVC๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋งํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ MVC๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์๋ค๊ณ ๋งํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ํญ์ ๊ฐ์ ํฉ๋๋ค.
๋๋ค์์ ๊ณ ๊ฐ์ด MVC ๊ตฌ์ฑ ์์๋ฅผ ํ์ฉํ ๊ฒ์ผ๋ก ์์๋๋ ๊ฒฝ์ฐ
๊ธ์์, ๊ทธ๊ฒ์ ์์๋ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๋์์ ํผํด๋ฅผ ์ฃผ๊ธฐ ์ํด Apple์ด ์ข๋ ์ซ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋ฌด๋ฃ U2 ๋ ธ๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ ์ต์ ๊ถ์ฅ ์ค์น์ โโ๋ฒ๋ค๋ก ์ ๊ณต๋๋ ๊ท์ ๋ ํ๋ ์์ํฌ์ ๋๋ค.
์ฌ์ฉํ์ง ์๋ ๊ฐ๋ฐ์์ ๋จ์ ์ ๋ฌด์ํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ๋ ๋ค์ํ๊ณ ์ต์ ๊ณผ ํ์ ์ด ์๋ ๋ ๊ฑด๊ฐํ ์ํ๊ณ์ ์ด์ ์ ๋๋ฆด ์ ์์๊น์?
๊ฐ๋ฐ์๋ "ASP.NET Core ์ฑ"์ด ๋ฌด์์ธ์ง์ ๋ํ ์ถ๊ฐ๋ ํผ๋๊ณผ ๋ชจํธํ ์ ์์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๊น? "์ด์ ์๋ .NET์ฉ node.js์ ๋น์ทํ์ง๋ง ์ด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฑ์ด ์น ์ฑ์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๊ท์ ํ๋ ๋ค์์ ์๊ฒฌ์ด ์๋ ํญ๋ชฉ์ผ๋ก ์์ํ๋ ๋ ๋จ์ ์ธ ๋จ์ผ ๊ณต๊ธ์ ์ฒด ํ๋ ์์ํฌ์ ๊ฐ๊น์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์คํ๋ ์ค ๋ฐ ํด๋น ์ข ์์ฑ๊ณผ ํจ๊ป ์ฌ์ ์ค์น๋๋ ์ฑ - ์ด๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค."
๊ฐ๋ฐ์๋ MVC์ ํน๋ณํ ์ผ์ด์ค๋ก๋ถํฐ ํํ์ ์ป์ต๋๊น? ๋ค๋ฅธ ๊ฒ๊ณผ ๊ฐ์ด ์ค์น๋๊ฑฐ๋ ์ ๋ฐ์ดํธ๋์ง ์์ผ๋ฉฐ ์กด์ฌํ๊ณ ๋นํ์ฑํํ๊ธฐ ์ํด ์ฃผ๋ณ์ ๋ค์ ธ์ผ ํ๋ ์จ๊ฒจ์ง ๋๊ตฌ ๋ฐ ๋ง์ ๋์์ ์์กดํฉ๋๋ค. ์ด์ ๊ฐ์ ํน์ ์ผ์ด์ค๋ ์ฐ์ฐํ ๋ณต์ก์ฑ์ ์ถ๊ฐํฉ๋๋ค. ํ๋ก์ ํธ์ ๋ํด ์ถ๋ก ํ ๋ MVC๊ฐ ์๋ํ๋ ๋ฐฉ์๊ณผ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ํด ๋ค๋ฅธ ๊ท์น ์งํฉ์ ์ ์งํด์ผ ํฉ๋๋ค.
๋ช ์์ ์ด๋ผ๋ฉด ๊ฐ๋ ์ฑ์ด ํฅ์๋๊ณ ํ๋ก์ ํธ ๊ตฌ์ฑ์์ MVC ์ฑ์์ ์ ์ ์์ต๋๋ค. ์:
MVC ์ฑ์์ ์๋ ค์ฃผ๊ณ ๋ชจ๋ ์ข ์์ฑ์ ์ค์นํ๊ณ MVC๊ฐ ํ์๋ก ํ๋ ๋ชจ๋ ๋ง์ถคํ ๋๊ตฌ๋ฅผ ์๋ ๊ตฌ์ฑํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋์ด ์ก์ธ์คํ ์ ์๋ ๋์ผํ ๊ฐ๋ฐฉํ ํ์ฅ ๊ฐ๋ฅ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ "Microsoft.AspNetCore.App" ํ๋ก์ ํธ์ ์ ์งํ๋ฉด ๋ชจ๋ ASP.NET Core ์ฑ๊ณผ ์์ํ ์ฐ๊ฒฐ๋๊ณ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ๋ถ๋ฆฌํ๊ฒ ๋ง๋ญ๋๋ค. ASP.NET ์น ํ์ด์ง ๋ ๋ช ๋
์ ์ ASP.NET์ ์ถ๊ฐ๋ ๋ ๋ค๋ฅธ Razor ๋ณด๊ธฐ ํ๋ ์์ํฌ๋ก ์ค์น๋์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์นจ์
๋ง๋ฒ ๋์์ด ํ์ฑํ๋์ด ์์ต๋๋ค. ๋ ์ด์ ์ง์๋์ง ์๊ฑฐ๋ ๋ค์ด๋ก๋ ํ ์ ๊ณต ๋๋ฏ๋ก ์ฃฝ์ ๊ธฐ์ ์ ๋ณต์ก์ฑ์ด ํด๋์ ASP.NET์ ์์ํ ํฌํจ๋์ด ๋ค๋ฅธ ํ์ฑ ์น ํ๋ ์์ํฌ์ ๋ฌธ์ ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ผ์ผํค๋ ๊ฒฝ์ฐ๊ฐ ๋จ์ต๋๋ค. ์น ํ์ด์ง๊ฐ ๋ณด๊ธฐ ํ๋ ์์ํฌ๋ฅผ ๊นจ๋จ๋ฆฌ๋ ๊ฒ์ ๋ช
์์ ์ผ๋ก ๋ฐฉ์งํ๊ธฐ ์ํด ์๋์ ์ํ๋ฌผ์ ์์ํ ๊ฐ์ง๊ณ ๋ค๋
์ผ ํ๋ Razor .cshtml
ํ์ด์ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ๊ฒฐ:
<appSettings>
<add key="webPages:Enabled" value="false" />
</appSettings>
์ ํธ๋์ ๋ฐ๋ผ ๊ธฐ๋ฅ ์์ฒญ์ ๋ฐ๋ณตํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ญ์์ค.
์ด๋ค ์ค ์ด๋ ๊ฒ๋ ๊ณ ๋ ค๋์ง ์๋๋ค๋ฉด ๋ชจ๋ MVC ๋๊ตฌ๊ฐ ์คํ์ ๋นํ์ฑํํ๊ณ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ธํ ์ ์๋ mvc:enabled
= false
์ ๊ฐ์ ํ๋ก์ ํธ ์ ์ฒด ํ๋๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?
@mythz ๋น์ ์ ๋ด ์ ์ ๋จ์ด๋ฅผ ๋ฃ๊ณ ์์ต๋๋ค. ์ถ๊ฐ๋ ๋ณต์ก์ฑ์ MVC์ ๋ํ ๊ฒ์ด ์๋๋ผ ๊ณ์ธต ๊ตฌ์ฑ์ ๊ด๊ณ์์ด ๊ตฌ์ฑ ์์์ ๋ ๋ค๋ฅธ ๊ณ์ธต์ ๋ง๋ค๊ณ ์ ๊ณตํ๋ ๋ฐ ํ์ํ ์ธํ๋ผ, ํจํค์ง, ์ค์น ํ๋ก๊ทธ๋จ ๋ฑ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค.
์ด๋ค ์ค ์ด๋ ๊ฒ๋ ๊ณ ๋ ค๋์ง ์๋๋ค๋ฉด ๋ชจ๋ MVC ๋๊ตฌ๊ฐ ๋นํ์ฑํ ๋ฐ ์คํ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ธํ ์ ์๋ mvc:enabled = false์ ๊ฐ์ ํ๋ก์ ํธ ์ ์ฒด ํ๋๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?
๋นํ์ฑํ๋์์ผ๋ฉด ํ๋ ๋๊ตฌ ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๊ฒ์ ๋ณ๋์ ๋ฌธ์ ๊ฐ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
@ํธ๋์ฒ
์ถ๊ฐ๋ ๋ณต์ก์ฑ์ MVC์ ๋ํ ๊ฒ์ด ์๋๋ผ ๊ณ์ธต ๊ตฌ์ฑ์ ๊ด๊ณ์์ด ๊ตฌ์ฑ ์์์ ๋ ๋ค๋ฅธ ๊ณ์ธต์ ๋ง๋ค๊ณ ์ ๊ณตํ๋ ๋ฐ ํ์ํ ์ธํ๋ผ, ํจํค์ง, ์ค์น ํ๋ก๊ทธ๋จ ๋ฑ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค.
์ฆ, MVC๊ฐ ์๋ํ๋๋ก ํ๋ ๋ฐ ํ์ํ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋์์ต๋๋ค.
๋นํ์ฑํ๋์์ผ๋ฉด ํ๋ ๋๊ตฌ ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๊ฒ์ ๋ณ๋์ ๋ฌธ์ ๊ฐ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ๋ง๋ 2๊ฐ์ง ๋ฌธ์ ๋ /p:MvcRazorCompileOnPublish=false
๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ด ํ๋ก์ ํธ(.cshtml ํ์ด์ง ์ ์ธ)๊ฐ ๊ฒ์๋์ง ์์์ต๋๋ค. ๋นํ์ฑํํด์ผ ํ๋ ๋ค๋ฅธ ํ๋๊ทธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<PreserveCompilationContext>false</PreserveCompilationContext>
๋๋ถ๋ถ์ ๋ง์ ํ๋๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ ๋ง์ ๊ฒ์ด ์๋ค๊ณ ๊ฐ์ ํ์ง๋ง ๋ด๊ฐ ๊ทธ๊ฒ์ ๋ง๋ฌ์ ๋๋ง ๊ทธ๊ฒ๋ค์ ๋ํด ์์๋ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก MVC๊ฐ ์ฌ์ฉ๋์ง ์๋๋ก ์ง์ ํ๊ณ MVC๋ก ์ธํด ์ถ๊ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ ๋ชจ๋ ๋๊ตฌ ๋๋ ์๋ณด๋ฅผ ๋นํ์ฑํํ๋ ํ๋๊ทธ์ ๋๋ค.
@mythz ๊ณ์ํด์ ํด๋น ๋ฌธ์ ๋ฅผ ์ ์ถํ์ญ์์ค.
์ถ๊ฐ MVC ๋ฐ SignalR dll์ด ์ฌ์ฉ์์ ๊ด์ฌ์ฌ์ธ ๊ฒฝ์ฐ ์ค์ ๋ก ์๋น์ค ์คํ์ ๋ํด ์ ์ฌํ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
@davidfowl ์ ๋ง ๋๋จํ๊ฒ ๋ค๋ฆฝ๋๋ค. ์ปค๋ฎค๋ํฐ์์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ์ ๋ํ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณผ ์ ์์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํ ๋ฌธ์๊ฐ ์์ต๋๊น?
์์ํ ์ ์๋ฏ์ด, ์ด ์์ ์ ์ํํ๋ ์ฌ๋์ ์๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ์ผ๊ธ ์ง์์ ๊ตฌ์ถํ ์ ์๋ ๋์์ด ์๋๋๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ ์ฐ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ๊ทธ ํ๋์ ๋ชจ๋ฐฉํ๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
@davidfowl ์ต์ ๊ธฐ๋ณธ ํจํค์ง๋ ๋ชจ๋ ๋น MVC ์ฑ์ ์ ์ฉํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ํ๋ ์์ํฌ๋ฅผ ์ฐํํ๊ณ ์๋ต ์์ฒด์ ์ง์ ์ฐ๊ธฐ๋ฅผ ์ํ๋ ๋ค๋ฅธ ๋ง์ ๊ฒฝ๋ ์ฑ๊ณผ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์์ ๊ฒ์ ๋๋ค. IMO ์ด ์ต์ ์ ์์์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ ์ ์ดํ ์ ์๋ ํจํค์ง ๋ฒ์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋น๊ณต์ ๊ธฐ๋ฐ์์ ์์ํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์์ ์ผ๋ก๋ ์ธ๋ถ์์ ์ ์ง ๊ด๋ฆฌ๋๋ ๋ค๋ฅธ ์ ์ ์์ ์์ํ๋ ๋์ ๊ธฐ๋ณธ ํจํค์ง์์ ๋ชจ๋ ๊ฒ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ธ๋ถ ์ปค๋ฎค๋ํฐ๊ฐ ํจ๊ป ๋ชจ์ฌ ๋ชจ๋ ๋น MVC ์ฑ ๋ฐ ํ๋ ์์ํฌ์ ์ ์ฉํ ๊ธฐ๋ณธ "AspNetCore" ํ์ ์งํฉ์ ์ ์ง ๊ด๋ฆฌํ ์ ์๋ ์์ญ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ์ฉ์ ์ง์ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ด๋๋ฅผ ์ดํด๋ด์ผ ํ ๊น์? "Microsoft.AspNetCore.App"์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ๋ณต์ฌ๋ณธ์์ ์์ํ๊ณ ํ์๊ฐ ์๋ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ฑฐํ์ฌ ์ต์ํ์ ์ ์ฉํ ํ์ ์งํฉ์ผ๋ก ๋๋๋ฆฌ๋ ๊ฒ๋งํผ ์ฌ์ธ ์ ์์ต๋๋ค.
@mythz ํ๋ ์์ํฌ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์
@natemcmaster ์ฌ์ฉ์ ์ง์ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋์์ค ์ ์์ต๋๋ค.
@davidfowl ์ด ์ฌ์ฉ์ ์ง์ ์ ์ ์
์ด๊ฒ์ ์๋ง๋ ๋น์ ์ ๋น ๋ฒ์ ์ด ๋น์ด๋ ํต์ ๋ํ ๋ค๋ฅธ ์ฌ๋์ ์๊ฐ์ด ์๋ ์๋ ์๋ค๋ ๊ฒ์ ๋งํ๋ ๊ฒ์ ๋๋ค.
MVC๊ฐ ๊ธฐ๋ณธ ํจํค์ง์ ์ํ์ง ์๋๋ค๋ ๋ฐ ๋ชจ๋๊ฐ ๋ง์ฅ์ผ์น๋ก ๋์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํฌํจ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ ์ผํ ๋ค๋ฅธ "์ ํ"์ MVC๋ณด๋ค ์ฌ์ฉ๋์ด ์ ๊ณ ํฌํจํ ์ด์ ๊ฐ ์ ์ SignalR์ ๋๋ค. ์ ๋ ๊ฐ ํจํค์ง์ ๋ฌด์์ด ๋ค์ด ์๋์ง ์ ์์ง ๋ชปํ์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํ๊ณ ASP.NET Core "ํ๋ซํผ"์ ๋์์ด ๋๋ ๋ถ๋ถ์ผ๋ก ๋ณด์ ๋๋ค.
์, ์ฌ๊ธฐ์ ๊ฑด์ค์ ์ธ ์๋๋ฅผ ํด๋ณด์๋ ์ ์์ ๋์ง๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ Microsoft.AspNetCore.App์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉฐ ๋๋ค์์ ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๊ณ ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด "ํต์ฌ" ๊ณต์ ํ๋ ์์ํฌ์ธ ๋ ๋ค๋ฅธ ๊ณ์ธต์ ์๊ฐํ๊ฒ ์ต๋๋ค(์๋ https://www.nuget.org/packages/Microsoft.AspNetCore/2.2.0-preview3-35497์์ ์ด์ ๊ฐ์ด ํ์ต๋๋ค). ์ด๊ฒ์ด Nancy ๋ฐ ServiceStack๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๋ ์์ํฌ์ ๊ธฐ๋ฐ์ด ๋๋ ๊ณต์ ํ๋ ์์ํฌ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ์ ํ Microsoft.AspNetCore.App๊ณผ ํจ๊ป ๊ธฐ๋ณธ ํ ํ๋ฆฟ์ ์ง๊ธ๊ณผ ๋์ผํ๊ฒ ์ ๊ณตํ ๊ฒ์ด์ง๋ง ๊ทํ์ ๊ฐ์ ํ๋ ์์ํฌ ์์ฑ์๋ ๊ธฐ๋ณธ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ ํ๋ฆฟ์ ๊ฐ์ง ์ ์์ต๋๋ค.
์ถ์ : ์ด ์ค๋ ๋๋ ์๊ฒฉ์ผ๋ก ์์๋๋ ๋๋ถ๋ถ์ ๊ณ ๊ฐ์ ๋ํํ์ง ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋จ๋ ์ผ๋ก ๊ฒฐ๋ก ์ ๋ด๋ฆฌ์ง๋ ์๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ง์ ๊ณณ์์ ํผ๋๋ฐฑ์ ๋ฐ๊ณ github์ ๊ฐ์ฅ ๋ชฉ์๋ฆฌ๊ฐ ๋๊ณ ์ด์ ์ ์ธ ์ง์นจ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์, ์ฑ์ ๊ตฌ์ฑํ๊ณ ์คํํ๋ ๋ฐ ํ์ํ ๋ง์ ๋ด์ฉ์ ํฌํจํ๋ ๋ฐ ๋ ๊ฐ๊น์ต๋๋ค. Microsoft.AspNetCore.App ์ deps์์๋ ๋ค์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ HTTP, ํธ์คํ , ๋ก๊น ๋ฐ ๊ตฌ์ฑ ์ถ์ํ(๋๋ถ๋ถ์ HTTP ์ฑ์ ์ ์ฉ)์ ๊ฐ์ ํญ๋ชฉ๋ ํฌํจ๋๋ ๊ฒ์ด ์ข์ผ๋ฉฐ ๋ค๋ฅธ ์ฌ๋์ด ์ ์ ํ๋ค๊ณ ์๊ฐํ๋ ๋ชจ๋ ํญ๋ชฉ๋ ํฌํจ๋ฉ๋๋ค. ๋ด ์ ์ผํ ์ ํธ ์ฌํญ์ MVC/SignalR์ ํฌํจํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ด์ ํฅ๋ฏธ๋ก์์ง๋๋ค. David๊ฐ ์ด๋ฏธ ๋งํ๋ฏ์ด: ์ฌ๋๋ค์ ๋ค๋ฅธ
"ํต์ฌ"์ด ์๋ฏธํ๋ ๋ฐ์ ๋ํ ์์ด๋์ด. ๋ด POV์์ ๋๋ DependencyInjection์ ์๊ฐํ์ง ์์ต๋๋ค.
์์ด์ผ ํฉ๋๋ค. / ์ด๊นจ๋ฅผ ์ผ์ฑ
Am Do., 8. 2018๋
11์ um 08:30 Uhr schrieb Demis Bellot <
์๋ฆผ@github.com>:
์, ๋๋ ๊ทธ๊ฒ์ด ๋ง์ ํ์ ์์๋ฅผ ํฌํจํ๋ ๊ฒ์ ๋ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฑ ๊ตฌ์ฑ ๋ฐ ์์ ๋ฐ ์คํ. ์ ๋์ค์์
Microsoft.AspNetCore.App
https://www.nuget.org/packages/Microsoft.AspNetCore.App ์ฐ๋ฆฌ๋
์ฌ์ฉ:
- Microsoft.Extensions.Primitives
- Microsoft.AspNetCore.Http
- Microsoft.AspNetCore.Http.Abstractions
- Microsoft.AspNetCore.Http.Extensions
- Microsoft.AspNetCore.Hosting.Abstractions
- Microsoft.AspNetCore.Logging.Abstractions
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Extensions.Configuration.Binder
- Microsoft.AspNetCore.Cryptography.KeyDerivation
HTTP, ํธ์คํ , ๋ก๊น ๋ฐ ๊ตฌ์ฑ ์ถ์ํ์ ๊ฐ์ ๊ฒ๋ค
(๋๋ถ๋ถ์ HTTP ์ฑ์ ์ ์ฉํจ) ๋ํ ํฌํจํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ฌ๋์ด ์ ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์ ์ผํ ์ทจํฅ์ ๊ฐ์ง ์๋ ๊ฒ์ ๋๋ค
MVC/SignalR ํฌํจ.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/aspnet/AspNetCore/issues/3755#issuecomment-436898980 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AADgNOzUVEHlJNBrPD5P2BsQj6UQdqyvks5us92zgaJpZM4YAsZ1
.
@mythz ๋๋ถ๋ถ์ ์ ์ด์ ์ผ๋ก ํฌํจ๋ฉ๋๋ค.
@forki ๐ ์ฐ๋ฆฌ์ ์ธ๊ณ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ Microsoft.AspNetCore.App์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉฐ ๋๋ค์์ ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๊ณ ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ช ํ ๋ง์ง๋ง ๋ง. ์ด๊ฒ์ด ๋ชจ๋ ์๋ชป๋ ๊ฒฐ์ ์ ์ ๋นํ์ ๋๋ค. "์ฐ๋ฆฌ๋ ๊ทธ๋ค์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค".
๋ด๊ฐ ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์์? Microsoft๋ ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ ์ ๊ฐ๋ฐ์๊ฐ ์๋ ๋ ๋ฆฝ์ ์ธ ์ง๋ฅํ ์์ง๋์ด๋ก ์ทจ๊ธํ๊ธฐ ์์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ต๋๋ค. ์ฌ๋ฌ๋ถ์๊ฒ๋ ์ฌ๋ฌ๋ถ์ด ๋ฌด์์ ๋์ง๋ฉด ๋ฐ๋ผํ๊ณ ์ฌ์ฉํ ์ ๊ฐ๋ฐ์๊ฐ ๋ง์ด ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋ค๊ณ .NET ์คํ์์ ์๋ก์ด ์คํํธ์ ์ ๊ตฌ์ถํฉ๋๋ค.
๋๋ก๋ ํ์ ์ ์ ์ ๋ง์ ๋ฃ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ฐ๋ฆฌ๋ Microsoft.AspNetCore.App์ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ ๋๋ค. ๋๋ ์ฌ๊ธฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ค๊ณ ์๊ฐํ๋ ์ ์ถฉ์์ ์ ์ํ์ต๋๋ค.
@forki aspnet ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด์จ๋ DI์ ์ง๋ฉดํ๊ฒ ๋๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ํฌํจํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค(์๋น์ค ๋ฐ๊ธฐ
@davidfowl์ด ์ธ๊ธํ ๊ธฐ๋ณธ ๊ณต์ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๊ณ ์ถ์ต๋๋ค... ์ ์๊ฐ์๋ @mythz ์ @dustinmorris ๊ฐ ๋ชจ๋ ๊ทธ๋ฌํ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๊ด์ฐฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋ํ ํ ์ฑ @Krzysztof-Cieslak์๊ฒ ์ ํฉํฉ๋๋ค.
๋น์ ์ ์ด์จ๋ DI์ ์ง๋ฉด
๋๋ ์๊ณ ์๊ณ ์ฐ๋ฆฌ๋ ๊ทธ ๋
ผ์๋ฅผ ์ฌ๋ฌ ๋ฒ ํ๋ค. ๊ทธ๋ฅ ์ํ๋๊ฒ ์ข์๋ฏ
;-) ํ์ง๋ง ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง...
์ค์ Fr., 2018๋
11์ 9์ผ, 10:57 ๋ชจ์ Nino Floris [email protected]
๊ฒ์๋ฆฌ๋ฒค:
@forki https://github.com/forki aspnet ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์ด์จ๋ DI์ ์ง๋ฉดํ๋ฉด ํธ์ ๋ฐฉ๋ฒ์ ํฌํจํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ธฐ๋ณธ๊ฐ(์๋น์ค ๊ฐ์ ธ์ค๊ธฐ, GetRequiredService ๋ฑ์ด ๊ทธ ์์ ์์ต๋๋ค.
ํจํค์ง). ๊ทธ๋ฆฌ๊ณ F#์ ๋๋ฝ์ผ๋ก ์ธํด ์์ฒด์ ์ผ๋ก ์์ฑํ ์๋ ์์ต๋๋ค.
T :> U ์ ์ฝ ์กฐ๊ฑด fsharp/fslang-suggestions#255
https://github.com/fsharp/fslang-suggestions/issues/255 ๊ทธ๋์ ยฏ_(ใ)_/ยฏ๊ธฐ๋ณธ ๊ณต์ ํ๋ ์์ํฌ @davidfowl์ ๊ฐ๊ณ ์ถ์ต๋๋ค.
https://github.com/davidfowl ์ธ๊ธ... ๋ด ์๊ฐ์ @mythz
https://github.com/mythz ๋ฐ @dustinmorris
https://github.com/dustinmorris ๋ ๋ค ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ํ ์ฑ @Krzysztof-Cieslak์๊ฒ ์ ํฉํฉ๋๋ค.
https://github.com/Krzysztof-Cieslakโ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/aspnet/AspNetCore/issues/3755#issuecomment-437309244 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AADgNGP3d8R0otOAuUQC7AYK6O2dzJ3mks5utVGegaJpZM4YAsZ1
.
๋ค์์ ํฌํจํ๋๋ก ์๋ณธ ๊ฒ์๋ฌผ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
์ด๋ค์ ๊ณต์ ํ๋ ์์ํฌ์์ ์ ๊ฑฐ๋๊ณ NuGet ํจํค์ง๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ์๋ ์์ง ๊ณต์ ํ๋ ์์ํฌ์ ๋ํ ์ง์นจ์ ๋ง์ง ์๋ IdentityModel API์ ๋ํ ์ข ์์ฑ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ IdentityModel ํ๊ณผ ํ๋ ฅํ๊ธฐ ์์ํ์ผ๋ฉฐ ํฅํ ์ด๋ฅผ ๊ณต์ ํ๋ ์์ํฌ์ ๋ค์ ๋ฃ๋ ๊ฒ์ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค. ํฌ๋ ํ https://github.com/aspnet/AspNetCore/pull/6035
Microsoft.AspNet.WebApi.Client๋ฅผ ํฌํจํ๋๋ก ์๋ณธ ๊ฒ์๋ฌผ์ ์ ๋ฐ์ดํธํฉ๋๋ค. https://github.com/aspnet/AspNetCore/pull/6552#issuecomment -453177732๋ฅผ ์ฐธ์กฐ
๊ผญ ๋ฃ์ด์ผ ํ๋ ๋ถ๋ถ์ด๋ผ ํท๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Visual Studio ๋งํ๊ธฐ - Microsoft.AspNetCore.App
๋
ธ๋๋ฅผ ์ด๊ณ ๊ทธ ์๋์ ์๋ ๋ชจ๋ ํญ๋ชฉ์ ๊ฐ๋ณ์ ์ผ๋ก ์ค์นํ์ ์ ์๋ ํญ๋ชฉ๊ณผ ์ํธ ์ฐธ์กฐํด์ผ ํฉ๋๊น?
์ง ์ฒญ์๋ฅผ ํ๊ณ ์๋๋ฐ ์ด ํจํค์ง๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ค๋ณต๋๋ ๊ฒ์ ๋ฌด์์ ๋๊น?
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.6.0-beta2" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.NodeServices" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.1">
SpaServices์ EntityFramework ๋๊ตฌ๊ฐ ํ์ฌ ํฌํจ๋์ด ์๋ค๋ ์ฌ์ค์ ๋งค์ฐ ๋๋์ต๋๋ค(์ด์ ์๋ ๊นจ๋ซ์ง ๋ชปํ๊ณ ํ๋ฅญํฉ๋๋ค). ํ์ง๋ง ๋์์ด ๋์ง ์๋ ์ค๋๋ 2.2.1 ์ฐธ์กฐ๋ ์์ต๋๋ค.
์์ ์ - Visual Studio ํ๊ณผ ๋ ๋์ ์กฐ์ ์์ ์ ์ํํ์ฌ ์ด๋ฌํ ๋ฉ๊ฐ ํจํค์ง๋ฅผ ์ดํดํ๊ณ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์์ ํ๋ค๊ณ ์๋ ค์ฃผ๋ IDE๊ฐ ์ข ๋ ์ง๋ฅ์ ์ผ๋ก ๋๋๋ก ํ ์ ์์ต๋๊น? ๊ทธ๋ฐ ๋ค์ v3์์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ์๋ ค์ค๋๋ค. ๋ค์ ;-)
@simeyla ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋น์ ์ด ๋งํ๋ ๊ฒ์ ์ฃผ์ ์ ๊ด๋ จ์ด ์์ง๋ง ์ ํํ ์ด ์ค๋ ๋์ ๋ํ ๋ด์ฉ์ ์๋๋๋ค. ํจํค์ง ์ฐธ์กฐ๋ฅผ ์ต์ ํํ๋ ๋๊ตฌ๋ ์๋ก์ด Visual Studio ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ด ์๋๋ฆฌ์ค๋ฟ๋ง ์๋๋ผ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉํ ์ ์์ผ๋ฏ๋ก ์ด ํผ๋๋ฐฑ์ Visual Studio์ ์ง์ ๋ณด๋ด๋ ๊ฒ์ด ์ข์ต๋๋ค. VS์์ "๋์๋ง > ํผ๋๋ฐฑ ๋ณด๋ด๊ธฐ..."๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๊ฒ์๋ฌผ์ ์์ฑํ ํ ๋งํฌ๋ฅผ โโ๊ณต์ ํ๋ฉด VS์์ ์์ ํ๋ ๋๋ฃ ํ์ ๋ด๋ถ์ ์ผ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
3.0์์๋ Microsoft.AspNetCore.App ๋ฉํํจํค์ง๋ฅผ ์์ ํ ์ ๊ฑฐํ๊ณ ๋ฐฐ์กํ ํจํค์ง๋ฅผ ๋ง์ด ์กฐ์ ํ ๊ฒ์ ๋๋ค. 2.x์์ 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ฌธ์ํํ๊ธฐ ์์ํ์ผ๋ฉฐ 3.0์์ ์ ๊ณต๋๋ ์ด์ ๋ธ๋ฆฌ ๋ชฉ๋ก์ ๋ง๋ฌด๋ฆฌํ๋ฉด์ ์ด ๋ฌธ์๋ฅผ ๊ณ์ ์ ๋ฐ์ดํธํ ๊ฒ์ ๋๋ค.
์ด ํญ๋ชฉ์ ์์ ์ ์ถ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ 'ํ ๋ก ' ์ด์ ํ๋ก ์ด๋ํ์ง๋ง ๊ตฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
Microsoft.Extensions.DependencyModel
์ ๋ชฉ๋ก์ ์ถ๊ฐํ์ต๋๋ค. https://github.com/aspnet/AspNetCore/pull/10271์ ์ผ๋ถ๋ก ๋ณ๊ฒฝ๋จ
@natemcmaster @DamianEdwards์ ์ง๋ฌธํ์ธ์. ๋ก์ปฌ์์ ๋น๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์๋ ํ ํ๋ฆฟ์ ๋ํ ์ธ๊ธ์ด ์์ต๋๋ค. ์ด๋ฌํ ์๊ฐ๊ณผ ์ธ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๊ฑฐ๋ก ์ธํด ์ธ์ฆ ํ ํ๋ฆฟ์ด 3.0์์ ์คํ๋ผ์ธ์ผ๋ก ๋น๋๋์ง ์๋๋ค๋ ์๋ฏธ์ ๋๊น? ์ด๋ค ์ธ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์คํ๋ผ์ธ์์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ๋๊ฒ ์บ์๊ฐ ์์ผ๋ฉด ์คํ๋ผ์ธ ์ํ์์ ์ ์ธ์ฆ ํ ํ๋ฆฟ์ ์๋ก ๋ง๋ ํ ์ด๋ก ์ ์ผ๋ก ๋น๋ ์คํจ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ข์ง ์์ ๊ฒฝํ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค, ์ด๊ฒ์ด ์ด ๋ณํ์ ๊ฒฐ๊ณผ ์ค ํ๋์
๋๋ค. Preview 6(๊ณง ์ ๊ณต ์์ ) ํ์ฌ dotnet new mvc
, dotnet new razor
, dotnet new web
๋ฐ ๊ธฐํ์๋ PackageReferences๊ฐ ์์ผ๋ฏ๋ก ์ํฅ์ ๋ฐ์ง ์์ง๋ง ์ถ๊ฐ ์ต์
์ ์ง์ ํฉ๋๋ค. , --auth individual
์ ๊ฐ์ด ํจํค์ง ๋ค์ด๋ก๋๊ฐ ํ์ํ PackageReference๊ฐ ๋ํ๋ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์๋์ ์ธ ์ ์ถฉ์์ ๋ง๋ค๊ณ ์์ต๋๋ค. PackageReference๊ฐ ์๋ ํ ํ๋ฆฟ์ ๊นจ๋ํ ์์คํ ์์ ์คํ๋ผ์ธ์ผ๋ก ๋ณต์๋์ง ์์ง๋ง ๋ฏธ๋ฆฌ ์ฑ์์ง ์คํ๋ผ์ธ NuGet ์บ์๋ฅผ ๋ง๋ค๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ๋ง์ ๋ฌธ์ ๋ ๋ฐฉ์งํ๊ณ ์์ต๋๋ค. dotnet-docker/issues/237, https://github.com/NuGet/Home/issues/6309 ๋ฐ http://blog.ctaggart.com/2019/03/using-nuget-lock-file-for-reproducible .html).
@natemcmaster๋ ์์ ํ ์ดํดํ๊ณ ์ถ๋ก ์ ์ป์์ต๋๋ค. ์ ๋ฌธ์ํํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋๋ค์ด dotnet new webapp --auth Individual
๊ฐ ๋น๋๋์ง ์๋๋ค๊ณ ๋งํ๋ ์ด๊ธฐ 3.0 ๋ฆด๋ฆฌ์ค์์ ์๋ง์ ๋ฌธ์ ๊ฐ ์ด๋ฆด ๊ฒ์
๋๋ค.
Microsoft.AspNetCore.Authentication.JwtBearer๊ฐ .netcoreapp3.0์ ๋ํ ์ข ์์ฑ์ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ ์ด์ ๋ฅผ ์๋ ค์ค ์ ์๋ ์ฌ๋์ด ์์ต๋๊น? .netstandard2.x์์๋ ์๋ ๊น์? ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ถ๊ณ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ .netstandard๋ก ์ ์งํ๊ณ ์ถ์ต๋๋ค.
@buvinghausen https://github.com/aspnet/Announcements/issues/324
@Pilchie ์ด ๋ฌธ์ ๋ ASP.NET Core 3.0์ ๋ํ ๋ฌธ์์์ <PackageReference>
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
@Bomret ์ฐ๋ฆฌ๊ฐ ์กฐ์ฌํ ๊ฑฐ์ ๋ชจ๋ ์ค์ ๊ณ ๊ฐ ์ฑ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ MVC๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ณต์ ํ๋ ์์ํฌ์ ์ ์งํ๋ฉด ๋ง์ ์ด์ ์ด ์์ผ๋ฉฐ, ์ ์ ๊ฑฐํด์ผ ํ๋์ง ๋ช ํํ ์ด์ ๊ฐ ์์ต๋๋ค.
MVC๊ฐ ์ ํ ํ์ํ์ง ์์ ์๋ฒ๋ฆฌ์ค ์ฑ, ์น API ๋ฑ์ ์ํด .net ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์์ ์์๋ ํ์คํ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ค๋ 3.0์ ์ถํํ๊ธฐ ๋๋ฌธ์ ๋ง๊ฐํฉ๋๋ค.
์ด ๋ชฉ๋ก์ ๋ฌธ์๋ก ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
@davidfowl ์ถ๊ฐ๋์์ต๋๋ค: https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#remove -obsolete-package-references
@pranavkm ๋ชฉ๋ก์ ์ค์ ๋ก ์ ๋ฐ๋์ ๋๋ค. ๋ ์ด์ ํจํค์ง๊ฐ ์๋์ง๋ง ์ฌ์ ํ ๊ณต์ ํ๋ ์์ํฌ์ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๊ณต์ ํ๋ ์์ํฌ์์ ์ ๊ฑฐ๋์์ง๋ง ์ด์ ํจํค์ง๋ก๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค.
@scottaddie ์ด๊ฒ์ ASP.NET Core ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ ๋ฌธ์์์ ์ฐธ์กฐํด์ผ ํ๋ ๋ชฉ๋ก์ ๋๋ค.
@DamianEdwards - https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#add -package-references-for-removed - ์ด์ ๋ธ๋ฆฌ?
๋ฐ๋ก ๊ทธ๊ฑฐ์ผ :)
ํํฐ์ ๋ฆ์์ง๋ง ๊ฐ๋ฐ์ ๋จ์ํํ๋ ค๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
a) ์ด์ AspNetCore ๊ตฌ์ฑ ์์(์: SignalR)์ ๋ํ ๊ฐ์ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ Microsoft.AspNetCore.App์ ๋ํ ์๋ก์ด "dotnet ํฉ"์ด ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ถ์๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ ํฉ์ ๋ค๋ฅธ?
b) ๋ ์ด์ netstandard ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: Auth ๋ฏธ๋ค์จ์ด)์์ AspNetCore์ฉ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด์ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด ํญ๋ชฉ์ ์์ฉํ๊ธฐ ์ํด netcoreapp3.0์ด์ด์ผ ํฉ๋๋ค. ์ด๋ ์ ํธ๋ฆฌํฐ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ netstandard / netcore ๊ตฌํ์ผ๋ก ๋ถํ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํธ์ง: c) <Project Sdk="Microsoft.NET.Sdk.Web">
์ํํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก ์ฌ์ฉ ์ค์ธ ํฉ ๋ฒ์ ์ ์ด๋ป๊ฒ ์ ์ํฉ๋๊น? ๋ถ๋ช
ํ ์ฐ๋ฆฌ๋ dotnet์ ์
๋ฐ์ดํธํ ํ ๋ค๋ฅธ ๋ถ๊ธฐ์์ ์ฌํ ๊ฐ๋ฅํ ๋น๋๋ฅผ ์ํฉ๋๋ค.
a) ์ด์ AspNetCore ๊ตฌ์ฑ ์์(์: SignalR)์ ๋ํ ๊ฐ์ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ Microsoft.AspNetCore.App์ ๋ํ ์๋ก์ด "dotnet ํฉ"์ด ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ถ์๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ ํฉ์ ๋ค๋ฅธ?
SignalR์ ๋๋จธ์ง AspNetCore์ ๋์ผํ ์ผ์ ์ผ๋ก ๋ฐฐ์ก๋๋ฏ๋ก ์ฌ๊ธฐ์ ์ผ์ ๋ณ๊ฒฝ์ด ์์ต๋๋ค.
SignalR์ ๋๋จธ์ง AspNetCore์ ๋์ผํ ์ผ์ ์ผ๋ก ๋ฐฐ์ก๋๋ฏ๋ก ์ฌ๊ธฐ์ ์ผ์ ๋ณ๊ฒฝ์ด ์์ต๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๋จ์ง ๋์ ์์ ๋๊น? ์ ๊ฑฐ๋ ๋ค๋ฅธ ๋ชจ๋ NuGet ํจํค์ง์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๊น?
SignalR์ ๋๋จธ์ง AspNetCore์ ๋์ผํ ์ผ์ ์ผ๋ก ๋ฐฐ์ก๋๋ฏ๋ก ์ฌ๊ธฐ์ ์ผ์ ๋ณ๊ฒฝ์ด ์์ต๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๋จ์ง ๋์ ์์ ๋๊น? ์ ๊ฑฐ๋ ๋ค๋ฅธ ๋ชจ๋ NuGet ํจํค์ง์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๊น?
๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํด. ๋ชจ๋ .NET Core ๋ฐ ASP.NET Core ๊ตฌ์ฑ ์์๋ ๋์ผํ ๋ฐฐ์ก ์ผ์ ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ฒด ํจํค์ง๋ก ๋ฐฐ์กํด์ผ ํฉ๋๋ค.
๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํด. ๋ชจ๋ .NET Core ๋ฐ ASP.NET Core ๊ตฌ์ฑ ์์๋ ๋์ผํ ๋ฐฐ์ก ์ผ์ ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์์ฒด ํจํค์ง๋ก ๋ฐฐ์กํด์ผ ํฉ๋๋ค.
๋น์ ์ ๋ง์ ๋ฐ๊ฒ ์ต๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐ๋ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๊ณผ๊ฑฐ์ AspNetCore NuGet ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ๋ ๊ทธ๋ฐ ์์ผ๋ก "๋๋ผ์ง" ์์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
MVC ํจํค์ง๋ ์ถ๊ฐ NuGet ํจํค์ง๊ฐ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. MVC๋ ํ๋ฅญํ์ง๋ง ๋ฐ๋๋ผ ASP.NET Core์ ๋ฌ๋ฆฌ ๋ชจ๋ .NET ์ธ์ด์ ํจ๋ฌ๋ค์์ ๋ง๋ ๊ฒ์ ๊ณ ์ฌํ๊ณ ๋ชจ๋ ์ฌ๋์ ์ฐจ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋งค์ฐ ๋ ๋จ์ ์ ๋๋ค. ๊ณต์ ASP.NET Core ํ๋ ์์ํฌ๋ MVC๊ฐ ์๊ฑฐ๋ ๋ ๋ฒ์งธ MVC ๋ฌด๋ฃ ๋ฒ์ ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ป๊ฒ ์๊ฐํ๋์?