Aspnetcore: ASP.NET Core์—์„œ Visual Basic .NET (VB.NET) ์ง€์›

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

์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ASP.NET Core์˜ VB.NET ์ง€์›์— ๋Œ€ํ•ด ๋งŽ์€ ์งˆ๋ฌธ์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋”ฐ๋ฅด๋ฉด ๋ชจ๋‘ ๋ง‰ ๋‹ค๋ฅธ ๊ณจ๋ชฉ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์‹ค์ œ ์‘๋‹ต์—†์ด ๋‹ซํžˆ๊ฑฐ๋‚˜ ASP.NET Core์™€ ๊ด€๋ จ์ด์—†๋Š” ๋‹ค๋ฅธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ (์˜ˆ : dotnet ์กฐ์ง ์–ด๋”˜๊ฐ€)๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ VB๋ฅผ์ง€์ง€ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ASP.NET Core๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ VB๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ๋งŽ์€ ๊ธ‰์†ํ•œ ๋ณ€ํ™”๋ฅผ ๊ฒช๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” C #์— ์ง‘์ค‘ํ•˜๊ณ  ๋‚˜์ค‘์— ๋‹ค๋ฅธ ์–ธ์–ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ VB๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์€ ๊ธธ์„ ์žƒ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ฐ„๋žตํ•œ ํƒ€์ž„ ๋ผ์ธ์ž…๋‹ˆ๋‹ค.

2014 ๋…„ 12 ์›” 16 ์ผ :

์ง€์› ํŒจํ‚ค์ง€ ๋“ฑ์˜ ํ˜•์‹์„ ํ†ตํ•ด VB, F # ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์งˆ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
https://github.com/aspnet/Home/issues/236#issuecomment -67046039

2015 ๋…„ 4 ์›” 25 ์ผ :

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค! ASP.NET 5 / DNX์—์„œ VB๋ฅผ ์ง€์›ํ•  ๊ณ„ํš์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค!
https://github.com/aspnet/Home/issues/236#issuecomment -96003847

์˜ค๋Š˜ ASP.NET 5๊ฐ€ Visual Basic (๋„๊ตฌ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‘ โ€“ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋Ÿฐํƒ€์ž„ ์ง€์› ํฌํ•จ)์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•  ์˜ˆ์ •์ž„์„ ๋ฐœํ‘œํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
https://blogs.msdn.microsoft.com/webdev/2015/04/24/making-it-better-asp-net-with-visual-basic-14/

2016 ๋…„ 11 ์›” 19 ์ผ :
VB ์ง€์›์ด ๋กœ๋“œ๋งต์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

 |1.0.4|Feb 2017|
 |1.2|Q2 2017|

-## Future Work
-
-Visual Basic support.
-
 <em><sup>*</sup> References to yearly quarters (Q1, Q2, Q3, Q4) are calendar-based</em>

https://github.com/aspnet/Home/wiki/Roadmap/_compare/2138fe4ff8a437e8edefc333189aaa8d9b5afb6a...b49bda1f8f40975b39d14d199a9ddac0a2beb45e

2017 ๋…„ 12 ์›” 12 ์ผ :

ASP.NET Core ์šฉ VB ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.
https://github.com/aspnet/Home/issues/2305#issuecomment -351501913

VB ์ง€์›์ด ์‚ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"์•„์ง ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ VB๋ฅผ ํ—ˆ์šฉ ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค."

...์—

"VB์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์›์ด์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!"

...์—

"VB๋Š” ์ง€์›๋˜์ง€ ์•Š์ง€๋งŒ ์‰ฟ, ์•„๋ฌด์—๊ฒŒ๋„ ๋งํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค".

๊ทธ๋ž˜์„œ ๋‚ด ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์€ :

๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ์œผ๋ฉฐ ์™œ ์ด์— ๋Œ€ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฐœํ‘œํ•˜๊ฑฐ๋‚˜ ๋…ผ์˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

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

๋‚˜์˜ ๋‹ค์Œ, ๊ทธ๋ฆฌ๊ณ  _ ๋” ์ค‘์š”ํ•œ _ ์งˆ๋ฌธ์€ :

VB ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ASP.NET Core์— VB.NET์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ตฌํ˜„ํ•  ์ˆ˜์žˆ๋Š” ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
ASP.NET Core๋ฅผ VB ๊ฐœ๋ฐœ์ž์—๊ฒŒ C # ๊ฐœ๋ฐœ์ž๋งŒํผ์ด๋‚˜ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?


.NET Core ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ , ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ , ASP.NET Core C #์—์„œ ์ƒ์„ฑ ๋œ ํด๋ž˜์Šค๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ VB์—์„œ ๊ฐ„๋‹จํ•œ ASP.NET Core ์•ฑ (๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์˜ค๋ž˜ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ญ์ œ ๋œ ๋งํฌ)์„ ํ•จ๊ป˜ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผํ˜•. ์ž˜ ์ž‘๋™ํ•˜๊ณ  ๋งค์šฐ ๊ธฐ๋ณธ์ ์ด์ง€๋งŒ VB.NET์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

+1
Visual Basic์€ ํ•ญ์ƒ .NET ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. VB๋Š” ์ง€๊ธˆ๋„ ๋งŽ์€ ํŒฌ๊ณผ ์‚ฌ์šฉ์ค‘! ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ง์žฅ์—์„œ C # ํ”„๋กœ์ ํŠธ์—์„œ ์ผํ•˜์ง€๋งŒ ์ € ๊ฐ™์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์—์„œ VB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

cc @DamianEdwards

Razor repo ์—์„œ .cshtml ์™€ ํ•จ๊ป˜ VB๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋žซ๋™์•ˆ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์–ด๋–ค ์ž‘์—…๋„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Ÿ.
๋‚ด๊ฐ€ ์ „์— ๋ช‡ ์ฃผ๋Š” hyprid VB ASP.NET ํ•ต์‹ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด์—ฌ @DamianEdwards์—์„œ ์ข‹์€ ์˜ˆ๋ฅผ๋ณด๊ณ  ์—ฌ๊ธฐ

@reduckted ํ›Œ๋ฅญํ•œ ์š”์•ฝ ์™ธ์—๋„ ASP.NET Core ์šฉ

Visual Basic ๊ตฌ๋ฌธ์€ ๋Œ€๊ด„ํ˜ธ ๋Œ€์‹  ์ œ๋„ค๋ฆญ ํ˜•์‹ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ด„ํ˜ธ๋กœ ๋ฌถ๊ธฐ ๋•Œ๋ฌธ์— .vbhtml Razor ํŒŒ์ผ์—๋Š”์ด ์ œํ•œ์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ScottAddie @ MSFT ๋Š” 2017-07-21์— ๋Œ“๊ธ€์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

ASP.NET Core๋Š” ์•„์ง VB.NET์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ASP.NET์„ ๊ณ ์ˆ˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด Visual Basic / vb.net / .vbhtml ํŒŒ์ผ์ด .Net Core์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ธ์ œ ??

์ด๋Ÿฌํ•œ ์ง€์›์ด ์ด๋ฃจ์–ด ์ง€๋„๋ก ์–ด๋–ป๊ฒŒ ๋„์™€ ๋“œ๋ฆด๊นŒ์š”? VB.Net ๋ฐ F # ์ง€์›์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

ASP.NET Core ๋ฌธ์„œ์—์„œ VBHTML ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด PR์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค : https://github.com/aspnet/Docs/pull/5201

ํ˜„์žฌ ASP.NET Core์— VBHTML ์ง€์›์„ ๋„์ž… ํ•  ๊ณ„ํš์€ ์—†์Šต๋‹ˆ๋‹ค.

.NET Core SDK์˜ ์ผ๋ถ€๋กœ ์„ค์น˜๋˜๋Š” ASP.NET Core ์šฉ F # ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@Eilon ํ˜„์žฌ ASP.NET Core์— VBHTML ์ง€์›์„ ๋„์ž… ํ•  ๊ณ„ํš์€ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” Razor ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์˜๋„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— VBHTML ์ง€์›์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @AnthonyDGreen (https://github.com/dotnet/vblang/issues/238#issuecomment-354927626)์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด MVC 5์—์„œ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— VB ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งŽ์€ ์ด๋“์„ ์–ป์ง€ ๋ชปํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ๋งŽ์€ ์–‘์˜ ์ž‘์—…์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@Eilon .NET Core SDK์˜ ์ผ๋ถ€๋กœ ์„ค์น˜๋˜๋Š” ASP.NET Core ์šฉ F # ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„์š”,ํ•˜์ง€๋งŒ ๋‹น์‹ ์˜ ์š”์ ์ด ์—ฌ๊ธฐ์— ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด VB ํ…œํ”Œ๋ฆฟ๋„ ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฐ•ํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

F # ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋งŒ๋“  F # ํ…œํ”Œ๋ฆฟ์ด ์•„๋‹Œ๊ฐ€์š”? Microsoft ํŒ€์ด VB ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ VB ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ VB ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@reduckted ์งˆ๋ฌธ์€ ์ดˆ๊ธฐ ๋น„์šฉ๊ณผ ์ง€์†์ ์ธ ๋น„์šฉ ๋ชจ๋‘์— ๋Œ€ํ•œ ์ˆ˜์š”์™€ ๋น„์šฉ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ˆ˜์š”๋Š” ๋งค์šฐ ๋‚ฎ์•˜์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ํ…œํ”Œ๋ฆฟ ์ง‘ํ•ฉ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์€ ๋งŽ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. F #์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€ ๊ด€๋ฆฌ์— ์ „๋…ํ•˜๋Š” Microsoft ์ง์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ VB๋ฅผ์œ„ํ•œ ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ๋“ค์ด ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ F # ํ…œํ”Œ๋ฆฟ์˜ ํ•œ ๊ฐ€์ง€ ์ œํ•œ์€ API ์ธก๋ฉด์— ๋” ์ง‘์ค‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Razor ๋˜๋Š” CSHTML์ด ์—†์Šต๋‹ˆ๋‹ค (FSHTML์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—). VB ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ VB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” MVC์— ๋Œ€ํ•œ VBHTML ๊ฒฝํ—˜์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œ์ž‘ ๋น„์šฉ์€ ์ˆ˜๊ฐœ์›” ๋ฐ ์ˆ˜๊ฐœ์›” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ œํ•œ๋œ VB ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํŠนํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Eilon VB ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ๋‚ด ์ƒ๊ฐ์— VB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” MVC์— ๋Œ€ํ•œ VBHTML ๊ฒฝํ—˜์„ ๊ธฐ๋Œ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@AnthonyDGreen ๊ณผ ๋Œ€ํ™”ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ์ธ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค (๊ฐ•์กฐ๋Š” ์ œ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

MVC 5์˜ .vbhtml ๋ฉด๋„๊ธฐ ์—”์ง„์€ ๊ธฐ๋ณธ์  ์œผ๋กœ ๋ชจ๋“  VB ์›น ํ”„๋กœ์ ํŠธ์˜ 1 % ๋ฏธ๋งŒ์ด 5 ๊ฐœ ๋ฒ„์ „ ์ดํ›„์—

@reduckted- ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค, ๊ทธ๊ฒƒ์€ ์ €์—๊ฒŒ ๋‰ด์Šค์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” VB ๊ฐœ๋ฐœ์ž (ํŠนํžˆ VB6)์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐœ๋…์œผ๋กœ ๋””์ž์ธ ๋œ Web Forms ์‹œ๋Œ€๋กœ ๋Œ์•„๊ฐ€์„œ Web Forms๋Š” ๋งค์šฐ HTML ์ค‘์‹ฌ (sorta)์ด๋ฏ€๋กœ VBHTML์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ทธ๋ฃน์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ํฅ๋ฏธ ๋กญ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ, ๊ทธ๊ฒƒ์€ ~ 15 ๋…„ ๋œ ์ผํ™” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

BTW๋ฅผ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ฒฐ์ฝ” ๊ทธ๋ ‡๊ฒŒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ํ˜„์žฌ ์–ด๋–ค ๊ณ„ํš์—๋„ ์—†์Šต๋‹ˆ๋‹ค.

์ €๋Š” VB ํŒฌ์ž…๋‹ˆ๋‹ค ๐Ÿ˜„, .vbhtml ์€ (๋Š”) ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์–ธ๊ธ‰ ํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ชจ๋“  VB ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ๊ฒฝ์šฐ์—๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‚ด ์งˆ๋ฌธ์€ C # ๋Œ€์‹  VB๋ฅผ ๋ฐฉ์ถœํ•˜๊ธฐ ์œ„ํ•ด Razor ๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” MVC๊ฐ€ cshtml C #์— ๋‹จ๋‹จํžˆ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

@hishamco ๋ถˆํ–‰ํžˆ๋„ Razor๋Š” VB์™€ C #์ด ๋ณ„๋„์˜ ๊ฒฝ๋กœ๊ฐ€๋˜๋„๋ก ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ด€๋ จ๋œ ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๊ฝค ํฐ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

@KathleenDollard .pug ๋ฐ .md ํŒŒ์ผ ํ˜•์‹์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ViewEngine์„ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ .NET Core ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ ์šฐ๋ฆฌ๋Š” <Project Sdk="Microsoft.NET.Sdk.Web"> ์™€ ํ•จ๊ป˜ .vbproj๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .vbhtml razorpages ํŒŒ์ผ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ tb-mtg ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ํƒํ—˜ํ•˜๊ณ  ๊ทธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด์—‡์„ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋ชจ๋‘ ์˜คํ”ˆ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์“ด ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์ด ํฐ ๋…ธ๋ ฅ์ด๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋ ฅ์˜ ๊ทœ๋ชจ์™€ ์ด์ „ ๋ฒ„์ „์˜ MVC์—์„œ vbhtml์˜ ์ฑ„ํƒ๋ฅ ์ด ๋งค์šฐ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ํŒ๋งค๊ฐ€ ์–ด๋ ค์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

@KathleenDollard ๋‚˜๋Š” ๋‚ด ์งˆ๋ฌธ์„ ๋‹ค์‹œ ๋ฐ˜๋ณต ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค .C # ๋Œ€์‹  VB๋ฅผ ๋ฐฉ์ถœํ•˜๋„๋ก Razor๋ฅผ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด MVC๊ฐ€ cshtml C #์— ๋‹จ๋‹จํžˆ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๊นŒ?

@rynowak ์—๊ฒŒ ์ข‹์€ ์งˆ๋ฌธ์ด ๋  @hishamco . ๋ผ์ด์–ธ?

MVC์˜ ๋Ÿฐํƒ€์ž„ ์ปดํŒŒ์ผ ์—”์ง„์€ C # ์ปดํŒŒ์ผ์„ ์œ„ํ•ด Roslyn ์ธํ”„๋ผ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  .deps.json ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” C # ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์˜ ์„ค์ •์„ ์˜ˆ์ƒ / ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. MVC๋Š” ์ƒ์„ฑ๋˜๋Š” ์ฝ”๋“œ์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ C # ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์„ฑ ๋œ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์— C # ๋ทฐ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ์œ„ํ•œ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„์— VB๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ทฐ ์—”์ง„์„ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@rynowak ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Roslyn ์ธํ”„๋ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C #์„ ์ปดํŒŒ์ผํ•˜๊ณ  .deps.json์„ ํ†ตํ•ด ์ „๋‹ฌ ๋  C # ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์˜ ์„ค์ •์„ ์˜ˆ์ƒ / ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

VB ๋ทฐ ์—”์ง„์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ • ๋œ C # ์—”์ง„์„ ๋ณต์ œํ•˜๋Š” ๊ฒฝ์šฐ .deps.json ์— ์ „๋‹ฌํ•ด์•ผํ•˜๋Š” ์„ค์ •์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+1
Visual Basic์€ ํ•ญ์ƒ .NET ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. VB๋Š” ์ง€๊ธˆ๋„ ๋งŽ์€ ํŒฌ๊ณผ ์‚ฌ์šฉ์ค‘! ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์ง์žฅ์—์„œ C # ํ”„๋กœ์ ํŠธ์—์„œ ์ผํ•˜์ง€๋งŒ ์ € ๊ฐ™์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์—์„œ VB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

MVC 5์˜ .vbhtml ๋ฉด๋„๊ธฐ ์—”์ง„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  VB ์›น ํ”„๋กœ์ ํŠธ์˜ 1 % ๋ฏธ๋งŒ์ด 5 ๊ฐœ ๋ฒ„์ „ ์ดํ›„์— ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Core๋กœ ์ด์‹๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€ 99 %๋Š” ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

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

์‚ฌ์‹ค ๊ทธ๊ฒƒ์€ ๋˜ํ•œ ASP.Net MVC Razor์—์„œ Angular๋กœ ์ด๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ์›น ํ”„๋กœ์ ํŠธ๋กœ ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์˜ฌํ•ด 4 ๊ฐœ์˜ ์ƒˆ๋กœ์šด ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ์—์„œ ์ถ”์ ๋˜๊ณ ์žˆ์–ด ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. ๊ทธ ๋•Œ ๋ช‡ ๊ฐ€์ง€ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

MS์˜ ๋ชจ๋“  ๊ธฐํ˜ธ (์กฑ์ œ๋น„ ๋‹จ์–ด)๋Š” VB.NET์„ ๋ฒ™์–ด๋ฆฌ๋กœ ๋งŒ๋“ค ๊ณ„ํš์ด๋ฉฐ / ๋˜๋Š” ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋ˆ„๋ฝ ๋œ ๋น„ํŠธ๋ฅผ ์“ธ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์˜ ์กฑ์ œ๋น„ ๋ง์„ ๋๋ƒˆ๊ณ  ์ง€๊ธˆ VB.NET ๊ฐœ๋ฐœ์„ ์ข…๋ฃŒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ GitHub๋ฅผ ์ธ์ˆ˜ํ–ˆ์„ ๋•Œ VB.Net์ดํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋Œ€์šฐ๋ฅผ๋ฐ›์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@NatShaw ์ €๋Š” Visual

๋‚˜๋Š” ๋‹น์‹ ์ด VB.NET์„ ๋ฉ์ฒญํ•˜๊ฒŒ ๊ณ„ํšํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ณ„ํš์€ ์—†์Šต๋‹ˆ๋‹ค. Visual Basic ์–ธ์–ด ์ „๋žต ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

VB ์šฉ Razor๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๊ฐœ๋ฐœ ์›Œํฌ ํ”Œ๋กœ์˜ ๊ฒฝ์šฐ WebAPI๋Š” ์—ฌ๊ธฐ์— ํ‘œ์‹œ๋œ๋Œ€๋กœ VB๋ฅผ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ์›Œํฌ ํ”Œ๋กœ์ž…๋‹ˆ๋‹ค. (ํ…œํ”Œ๋ฆฟ ์ œ์™ธ)

@ tb-mtg VB.Net์€ ์ฃฝ์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์†์ ์ธ ๊ฐœ์„ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๊ฐ€ ์•ฝ๊ฐ„ ๊ฐœ์„ ๋˜๊ณ  IOperation์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์—ฌ Roslyn ๋ถ„์„๊ธฐ์—์„œ Visual Basic์„ ์ง€์›ํ•˜์—ฌ ์—์ฝ” ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ VB๋ฅผ ์‰ฝ๊ฒŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VB๊ฐ€ ๋ชจ๋“  ์ƒˆ๋กœ์šด ์‹œ๋‚˜๋ฆฌ์˜ค๋ณด๋‹ค๋Š” ์ด๋ฏธ ์ข‹์€ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์ ์ ˆํ•œ ์ƒˆ๋กœ์šด ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Scott Hunter๋Š” ์ด๋ฏธ VB.Net์ด .NET Core 3์—์„œ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

@KathleenDollard Pieces๊ฐ€ ์ด๋ฏธ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค 2.x- ๋ชจ๋“  VB ํ…œํ”Œ๋ฆฟ์€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? Nullable ์ฐธ์กฐ ์œ ํ˜•? C # ์ „์šฉ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜ ๊ณ„ํš์€ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ํ›Œ๋ฅญํ•˜์ง€๋งŒ VB๋Š” ์ด๋ฏธ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Microsoft๊ฐ€ ํ›Œ๋ฅญํ•œ ๊ธฐ์ˆ ์„ ๋งŒ๋“ค๊ณ  ํฌ๊ธฐํ•˜๋Š” ํ…Œ๋งˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ํšŒ์‚ฌ๋ฅผ ๋งŒ๋“  ์–ธ์–ด ์ธ VB๋ฅผ ๋ฒ„๋ฆฌ๊ณ  C # ์ „์šฉ ์ƒ์ ์ด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์ด ๋„์ž…๋˜๋ฉด ๋ชจ๋“  ์–ธ์–ด๊ฐ€ ์ง€์› ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„์ด ์ƒˆ๋กœ์šด Microsoft๋Š” ๋ชจ๋“  ์–ธ์–ด๋ฅผ ๋™๋“ฑํ•œ ํŒŒํŠธ๋„ˆ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ 15 ๋…„ ์ „์ฒ˜๋Ÿผ ์ข‹์€ ์ผ์„ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋‚˜์˜๋‹ค. ๋‚˜๋Š” ์ˆ˜๋งŒ ์ค„์˜ VB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ asp.net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ํฌ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ asp.net ์ฝ”์–ด์— ๋ฒ„๋ ค์ง„ ์›น ์–‘์‹์ด ์žˆ๊ณ  VB๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ??. ๋‚ด๊ฐ€ ๋…ธ๋ ฅํ•œ๋‹ค๋ฉด ์–ธ์–ด ๋ณ€๊ฒฝ์€ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ๋  ๊ฒƒ์ด๊ณ , ๋ชจ๋“  ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ฃผ ์ข‹์€ VB ๊ฐœ๋ฐœ์ž๋ผ๋Š” ์ด์œ ๋กœ ํ• ์ธ๊ณผ ํ‡ด์›์— ์ง€์ณค๋‹ค. Microsoft ํ”Œ๋žซํผ ๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํŒ๋งค ํ•œ ์ง€ 30 ๋…„์ด ์ง€๋‚˜๋ฉด ํšŒ์‚ฌ์™€ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์™€์„œ Microsoft๋ฅผ ๋– ๋‚  ๋•Œ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VB์— ๋Œ€ํ•œ .net ๊ด€๋ฆฌ์˜ ๊ฒธ์†ํ•œ ํƒœ๋„๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฆ˜์—๋Š” ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ์—์„œ ๋„ˆ๋ฌด๋‚˜ ์‹ค๋งํ•œ VBers๊ฐ€ ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. VB๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๋งŒ๋“ค์–ด์ ธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@SrqComputerguy ๊ทธ๋“ค์€ VB๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

์ž˜๋ชป๋œ. @KathleenDollard ๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ _ ํ•˜๋ฃจ ์ „ _ _์ด ์Šค๋ ˆ๋“œ _์—์„œ "The Visual Basic ์–ธ์–ด ์ „๋žต์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. (๋…ผํ‰)

@SrqComputerguy ๋„ˆ๋ฌด ๋‚˜์˜๋‹ค, ๋‚˜๋Š” ์ˆ˜๋งŒ ์ค„์˜ VB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ asp.net ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๊ฐ€๊ณ 

์›น ์–‘์‹์€ ์˜ค๋ž˜๋œ ๊ธฐ์ˆ  (์‹ค์ œ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ํ‘œ์ค€์— ์˜ํ•ด ์˜ค๋ž˜๋จ)์ด๋ฏ€๋กœ .NET Core (VB.NET _or_ C # ์‚ฌ์šฉ)์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ASP.NET Core์—์„œ VB.NET์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ด๋ฒˆ ์ฃผ ์ดˆ์˜์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

@SrqComputerguy ์ œ๊ฐ€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๋ฉด ์–ธ์–ด ๋ณ€๊ฒฝ์€ Microsoft ์ด์™ธ์˜ ๋‹ค๋ฅธ ์–ธ์–ด๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  ๋ชจ๋“  ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค .

VB.NET _is_ ํฌ๋กœ์Šค ํ”Œ๋žซํผ, ์›น ์–‘์‹์ด ์•„๋‹™๋‹ˆ๋‹ค.

@SrqComputerguy VB๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๋งŒ๋“ค์–ด์ ธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ˜• ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. https://github.com/dotnet/vblang

@reduckted C #์—๋Š” 'ASP.NET Core Web Application'ํ…œํ”Œ๋ฆฟ์ด ์žˆ์ง€๋งŒ VB์—๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ๋งž์Šต๋‹ˆ๊นŒ? nullable์ด ์•„๋‹Œ ์ฐธ์กฐ ์œ ํ˜•-VB ์šฉ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ „๋žต์€ ์ด๋ฏธ VB๊ฐ€ ๋” ์ด์ƒ 1 ๋“ฑ ์‹œ๋ฏผ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. @KathleenDollard ๋งํฌ ๊ธฐ์‚ฌ๋Š” ๋‹ค์†Œ ๋ชจ์š•์ ์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ๋ฐ˜์ง์ด๋Š” ์ƒˆ ๊ธฐ๋Šฅ์€ VB ์ฝ”๋“œ๋ฅผ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์—๊ฒŒ ์ข‹์ง€

  • VB 15์—๋Š” C # 7.0์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” VB๊ฐ€ ์ธ๊ธฐ์žˆ๋Š” ํ•ต์‹ฌ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๋„๋ฉ”์ธ์— ํ˜์‹ ์„ ์ง‘์ค‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ VB 15๋Š” is-expressions, out-variables ๋ฐ ๋กœ์ปฌ ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” VB์˜ ๊ฐ€๋…์„ฑ์— ์ข‹์ง€ ์•Š์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ๊ฐœ๋… ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋๋‚ฌ์–ด. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ๋ฐ”๋ณด๋กœ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. WebFroms๋Š” SEO๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ํ•„์š”ํ•œ LOB (๊ธฐ๊ฐ„ ์—…๋ฌด) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. WebForm์€ winform ๋ฒ„์ „์˜ ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์„ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด C # MVC angular.js ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ผ ํ•„์š”๋Š” ์—†์œผ๋ฉฐ ๊ทธ๋Ÿด ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด MS๊ฐ€ ํ˜„์žฌ ๊ฐœ์„ ํ•˜๊ณ ์žˆ๋Š” ์œ ์ผํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Razor ํŽ˜์ด์ง€ (.net ์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋œ ASP ํŽ˜์ด์ง€)๊ฐ€ VB๊ฐ€ ์•„๋‹Œ ์ฝ”์–ด์—์„œ C #์„ ์ข‹์•„ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

MS๋Š” Mono ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ž…ํ•˜์—ฌ C #์„ ๋จผ์ € ์ง€์›ํ•˜๊ณ  ํ™•์ธ์„ ๋ฐ›์•„์•ผ VB์—์„œ ์‚ฌ๋ž‘์„ ์–ป์Šต๋‹ˆ๋‹ค.

MS๋Š” VB๋ณด๋‹ค Python์— ๋” ๋งŽ์€ ์‚ฌ๋ž‘์„์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Python์€ C # ๋˜๋Š” VB๋ณด๋‹ค ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์–ธ์–ด์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.์ด ์–ธ์–ด๋Š”์ด VBer๊ฐ€ ์•ž์œผ๋กœ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ MS๋Š” ์•„์ง๊นŒ์ง€ ๋ผ์ธ์˜ ๋์„ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋Š” ์–ธ์–ด์— ์˜์กดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

MS๋Š” ๋” ์ด์ƒ VB ํŒ€์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์€ ์›น ์กด์žฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐœ์ „์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๊ณณ์„ ์ฐพ์•„์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€์†๋˜๋Š” ๋™์•ˆ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. VB RIP.

์•ˆ๋…•ํ•˜์„ธ์š”,

Microsoft์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฉด๋„๊ธฐ ๋ทฐ (.net ์ฝ”์–ด)์—์„œ VB๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์„ ์žฌ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ blazor๊ฐ€ ์ƒˆ๋กœ์šด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด vb์—์„œ ๋งŽ์€ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

VB .NET์€ C #์—์„œ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ๋” ์ธ๊ธฐ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. vb๊ฐ€ ๋‚จ์œผ๋ฉด ๊ทธ ์ธ๊ธฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋งค์šฐ ํฐ VB winforms ์•ฑ์„ ์›น ์•ฑ์œผ๋กœ ์ด์‹ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” JS๋กœ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์— 50 %๊ฐ€ ์žˆ์ง€๋งŒ blazor๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋น ๋ฅด๊ณ  ๊น”๋”ํ•˜๋ฉฐ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C # ๋Œ€์‹  VB๋กœ ๋ทฐ๋ฅผ ์ฝ”๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฉ‹์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด MVC์™€ ๋ฉด๋„๊ธฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ธ”๋ ˆ์ด์ €์— ์ง‘์ค‘ํ•˜๋ฉด ๋…ธ๋ ฅ์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

๋ช‡ ๋…„ ๋™์•ˆ ์ตœ์‹  ๋ฐ ๋ ˆ๊ฑฐ์‹œ VB ์ฝ”๋“œ๋กœ ์ž‘์—…ํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฅํ™ฉํ•จ์ด ์‚ฌ๋ผ์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Microsoft๊ฐ€ ํ•œ ๊ฐ€์ง€ ์Šคํƒ€์ผ์˜ ์–ธ์–ด (C)์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@mcurros

Razor ์ง€์›์ด ๊ณ ๋ ค๋˜๊ณ  ์žฌ๊ฒ€ํ† ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ํฅ๋ฏธ๋กญ์ง€ ๋งŒ ํ˜„์žฌ Blazor๋Š” ์ œํ’ˆ ๊ณ„ํš์ด์—†๋Š” ์‹คํ—˜์ ์ธ ๋…ธ๋ ฅ์ž…๋‹ˆ๋‹ค. Blazor๊ฐ€ ์ œํ’ˆ์ด๋œ๋‹ค๋ฉด VB์˜ ์ด์•ผ๊ธฐ๋ฅผ ์žฌ๊ณ  ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๋ฉฐ ๊ทธ๋Ÿด ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ VB ์ง€์›๊ณผ ๊ด€๋ จ๋œ ์ „๋žต์ด ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ธ ๊ฐ€์ง€ ์งˆ๋ฌธ :

  • .NET Core 3์œผ๋กœ ์ด๋™ํ•˜๋Š” WinForms์— ๋Œ€ํ•œ ๋ฐœํ‘œ๊ฐ€ WinForms ์ฝ”๋“œ๋ฅผ ์ด์‹ํ•˜๊ธฐ๋กœ ํ•œ ๊ฒฐ์ •์„ ์žฌ๊ณ ํ•˜๊ฒŒํ•˜๋‚˜์š”?

  • ์›น์šฉ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ VB WebAPI ๋ฐฑ ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ์‹  ์›น ์•ฑ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Angular, Visual Basic ๋ฐ .NET Core ๊ฒฐํ•ฉ ?

  • JS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŒ€์˜ ์ผ๋ถ€๊ฐ€ ์ค‘๊ด„ํ˜ธ ์–ธ์–ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. C #์œผ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

VB์—์„œ ์ˆ˜ํ–‰ ํ•  ์ˆ˜์—†๋Š” C # ๋…์ ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์€ ์—†์Šต๋‹ˆ๋‹ค. MS๋Š” IL ๋ณ€ํ™˜๊ธฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์˜์ง€์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ์ž‘๋™ํ•˜๋Š” ์›น ๋ฒ„์ „ .net 4.5.2๊ฐ€์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์•ฑ์ด ๋งŽ์ด์žˆ๋Š” ๊ฒฝ์šฐ MS๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

MS๊ฐ€ Asp.net Core ์›จ์ด๋ธŒ์— VB ๊ฐœ๋ฐœ์ž๋ฅผ ํฌํ•จ์‹œํ‚ค๋Š” ์•„์ด๋””์–ด๋ฅผ ๋ฉ์ฒญํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๊ณต์‹์ ์ธ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@ sreenathGanga1988 Visual Basic.NET์˜ .NET Core์—์„œ Razor๋ฅผ ์ง€์›ํ•  ํ˜„์žฌ ๊ณ„ํš์ด ์—†๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. MVC์˜ ์ผ๋ถ€๋กœ ASP.NET Core์—์žˆ๋Š” WebAPI๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ Razor๋ฟ์ž…๋‹ˆ๋‹ค. Razor ์—”์ง„์€ ๋ณต์žกํ•˜๋ฉฐ ๋‹จ์ผ ์–ธ์–ด ์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

@KathleenDollard ๋Š” VB ํŒฌ์ด VB๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ Razor ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉด๋„๊ธฐ ์—”์ง„์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก VBHTML.Contrib ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฒ„์ „์˜ Razor๋ฅผ ์ž‘์„ฑํ•œ ์‚ฌ๋žŒ๋“ค์€ Visual Basic์ด ์—ฌ๋Ÿฌ ์–ธ์–ด ์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์„ ๋ฏฟ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํฌํฌ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

.NET Foundation๊ณผ ํ•จ๊ป˜ Visual Basic ๊ณต๊ฐ„ (์•„๋งˆ๋„ ๊ธฐ์—ฌ, ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๊ฒƒ)์„์œ„ํ•œ ํ† ๋Œ€๋ฅผ ๋งˆ๋ จํ•˜์—ฌ Visual Basic ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ ๋ฐ ๊ด€๋ฆฌ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ์ €์žฅ์†Œ๊ฐ€์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (์žฌ๋‹จ์€ ์ฃฝ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค). Entity Framework ํ…œํ”Œ๋ฆฟ์ด ๊ทธ ์”จ์•—์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž์ง€๋งŒ ์ž˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด VB ํŠน์ •ํ•˜์ง€ ์•Š๊ณ , ๋‹น์‹ ์ด ๊ฐœ์ธ ์ €์žฅ์†Œ์—์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ด์œ  : @bricelam์—์„œ VB EF ํ…œํ”Œ๋ฆฟ, @natemcmaster์—์„œ ๊ธ€๋กœ๋ฒŒ ๋„๊ตฌ ์นดํƒˆ๋กœ๊ทธ๋ฅผ, ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ํ•˜๋‚˜์— ๋ช…๋ น ์ค„ ํŒŒ์„œ @natemcmaster์˜ ํฌํฌ ๋ฒ„์ „์„ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ .

๋”ฐ๋ผ์„œ ํ”„๋กœ์ ํŠธ์™€ ํ”„๋กœํ†  ํƒ€์ž…์€ Foundation์˜ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์ง€๋งŒ ์„ฑ๊ณต์ ์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด .NET Foundation์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค๋ช… ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ Roslyn์ด ๋‘˜ ๋‹ค ์ง€์›ํ•  ์ˆ˜์žˆ๋Š” ๋™์•ˆ์— ๋งŒ Razor๊ฐ€ C #์„ ๋Œ€์ƒ์œผ๋กœ ๊ตฌ์ถ• ๋œ ์ด์œ ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค !!

๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋ฅผ ์ง์ ‘ ๋นŒ๋“œํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด Razor ์ฝ”๋“œ๋ฅผ ์‚ดํŽด ๋ณด์ง€ ์•Š์•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ...

Roslyn์€ C # ๋ฐ VB์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ตฌ์ฒด์ ์ด๊ณ  ๋ช…์‹œ์ ์ธ ์›์‹œ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ธ์ด ์ฝœ๋ก ๊ณผ ์ค‘๊ด„ํ˜ธ๋Š” VB๊ฐ€ ์•„๋‹Œ C #์— ์žˆ์Šต๋‹ˆ๋‹ค. End Sub ๋ฐ Handles๋Š” C # ๊ตฌ๋ฌธ ํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ VB์— ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

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

๊ท€ํ•˜์˜ ์งˆ๋ฌธ :

  1. .NET core 3์€ WinForms ์•ฑ์„ ํ”Œ๋žซํผ ๊ฐ„์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. ์ €๋Š” ์›น์šฉ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์•ฑ์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ASP .NET ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์„œ๋ฒ„์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ์šฐ๋ฆฌ๋Š” JS์—์„œ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ž์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ด์•ผํ•˜๋ฉฐ UI๋Š” ์—ฌ์ „ํžˆ ๊ฐœ๋ฐœ์˜ 80 % ์ด์ƒ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ.

  3. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ blazor ์ด์ „์— ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ JS๋กœ ํฌํŒ…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. C #์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•œ๋‹ค๊ณ ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ ์•ฑ์ด ํ”Œ๋žซํผ๊ฐ„์— ๊ต์ฐจ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœํ•˜๊ฑฐ๋‚˜ Xamarin ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋…ธ๋ ฅ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” C, C ++, C #, VB, JS๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ณ  ์—ฌ๋Ÿฌ ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๋Š” ํŒ€์›์ด ์—ฌ๋Ÿฌ ๋ช… ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์š”์ ์€ ํ…Œ์ŠคํŠธ ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. blazor๊ฐ€ ๋ทฐ์—์„œ VB๋ฅผ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋งŽ์€ ์‹œ๊ฐ„์„ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ์ „์ฒด ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VB .NET์—์„œ ๋ฉด๋„๊ธฐ ๋ทฐ๋ฅผ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. VB๋ฅผ ๋‚จ๊ฒจ ๋‘์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ .NET ์ฝ”์–ด๋กœ ์‹œ์ž‘๋˜์—ˆ๋Š”๋ฐ, ์‹คํ—˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ์ด ์•„๋‹ˆ ์—ˆ๋‚˜์š”?

์ปจํ…์ŠคํŠธ๋ฅผ ์กฐ๊ธˆ ๋” ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋น„์ฆˆ๋‹ˆ์Šค ๋ผ์ธ์— ๋Œ€ํ•ด ์„ธ ๊ฐ€์ง€ ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ERP๋ฅผ ํฌํŒ…ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ.

@mcurros

์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

์•ˆ๋…•ํ•˜์„ธ์š”.

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

๋งˆ์ง€๋ง‰ ์งˆ๋ฌธ์—์„œ razor๋Š” ASP .NET ์›น ํŽ˜์ด์ง€์™€ ์›น ๋งคํŠธ๋ฆญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET core๋ณด๋‹ค ํ›จ์”ฌ ๋จผ์ € ์ž‘์„ฑ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ razor ์—”์ง„์ด C #์„ ๋Œ€์ƒ์œผ๋กœํ•˜๋Š” .NET core๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งž์•„?

ํ–‰์šด์„ ๋นŒ์–ด ์š”.

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. Razor๊ฐ€ ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? .
์ˆœ์ˆ˜ํ•œ C # ๋ฐ VB.NET ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ASP .NET Core ๋ฐ Blazor ํ”„๋กœ์ ํŠธ์—์„œ Razor ๊ตฌ๋ฌธ ์‚ฌ์šฉ์„ ์™„์ „ํžˆ ํ”ผํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? HTML5 ๋ฐ CSS ํŒŒ์ผ์„ ๋‚ด ๋ณด๋‚ด์•ผํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด Razor ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋ฌธ์•ˆ ์ธ์‚ฌ,
ํ•„๋ฆฌํฌ.

์•ˆ๋…•ํ•˜์„ธ์š”.

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

Node.JS๋Š” ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ„์— ์ฝ”๋“œ๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„๊ฐ„์— .NET ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Razor๋Š” ๊ณต์œ  ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์•ฑ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋” ๋‚˜์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉฐ ๋™์ผํ•œ ์ฝ”๋“œ๋กœ ๋” ๋งŽ์€ ํ”Œ๋žซํผ์„ ๋Œ€์ƒ์œผ๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ๋‹ค๋ฉด WPF๊ฐ€ webassembly๋กœ ์ปดํŒŒ์ผ๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ธฐ์กด JS ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜๊ณ ์ด๋ฅผ .NET ๊ธฐ๋ฐ˜๊ณผ ํ˜ผํ•ฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ angular์™€ ๊ฐ™์€ ๋‹ค๋ฅธ JS ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด .NET ๋ฐ razor๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฌด์—‡์„ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•ˆ๋‹ค๋ฉด 10 ๋ฐฐ ๋” ์ƒ์‚ฐ์ ์ž…๋‹ˆ๋‹ค.

๋ฌธ์•ˆ ์ธ์‚ฌ.

@mcurros ์˜ˆ, Razor๋ฅผ ํฌํ•จํ•˜์—ฌ ASP.NET Core์—์„œ ๋งŽ์€ ๋ถ€๋ถ„์ด ์žฌ ์ž‘์—… / ์žฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (์˜ˆ : ํŒŒ์ดํ”„ ๋ผ์ธ ๋ชจ๋ธ ์ฐธ์กฐ).

@mcurros ์ข‹์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ ๋ฌธ์ œ๋Š” ๊ฒฌ๊ณ ํ•œ WYSIWYG ๋””์ž์ด๋„ˆ๊ฐ€ Razor ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด Blazor๋Š” Bootstrap ์„ CSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Bootstrap Studio ๋ผ๋Š” ํฅ๋ฏธ๋กœ์šด Boostrap ๋””์ž์ด๋„ˆ๊ฐ€ ์žˆ์ง€๋งŒ Razor ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
WinForms ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ XAML๊ณผ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ๋””์ž์ธ ํ•  ์ˆ˜์žˆ๋Š” ํ›Œ๋ฅญํ•œ WYSIWYG ๋””์ž์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Razor ๊ตฌ๋ฌธ๋ณด๊ธฐ (.cshtml / .vbhtml)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML5-CSS๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋””์ž์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”.
๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜์žˆ๋Š” ์žฅ์น˜๋Š” 10K ์ˆœ์„œ์ด๋ฏ€๋กœ ์ •ํ™•ํ•œ WYSIWYG ๋„๊ตฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋…ธ๋ ฅํ•  ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์š”์ฆ˜ ์ถ”์„ธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Blazor ์ƒ˜ํ”Œ์€ Bootstrap์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ razor๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋ฏ€๋กœ ์›ํ•˜๋Š” ๊ฒƒ๊ณผ ์›ํ•˜๋Š” CSS / HTML ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์€ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ์ปดํŒŒ์ผ, SPA ๋ผ์šฐํŒ…์„ ์ œ๊ณตํ•˜๋Š” ์ˆ˜์ • ๋œ ๋ฉด๋„๊ธฐ, SPA ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๊ณต๊ฐœ ์›น ์‚ฌ์ดํŠธ ๋ฐ ๊ฒ€์ƒ‰ ์—”์ง„ ์ƒ‰์ธ ์ƒ์„ฑ ์šฉ). ๊ฝค ๋ฉ‹์ง€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ blazor๋Š” ์‹ค์‹œ๊ฐ„ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ์ปดํŒŒ์ผ์„ ์ œ๊ณตํ•˜๊ณ  F5๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋น ๋ฆ…๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด๋ณด์„ธ์š”.

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

์นœ์• ํ•˜๋Š”,
ํ•„๋ฆฌํฌ.

๋‚˜๋Š” VB์˜ ๋ฏธ๋ž˜๊ฐ€ ์•„๋‹ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
C #๊ณผ Visual Basic์˜ ๊ณต์ง„ํ™”๋ฅผ ๋๋‚ด๊ธฐ์œ„ํ•œ ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ์˜ ์ƒˆ๋กœ์šด ์ „๋žต์€ ๊ฐœ๋ฐœ์ž๋“ค๋กœ๋ถ€ํ„ฐ ๋œ ์กด๊ฒฝ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
C #์€ .Net ๊ฐœ๋ฐœ์ž๋ฅผ์œ„ํ•œ ๋ฏธ๋ž˜์ด๋ฏ€๋กœ Visual Basic์˜ ์‚ฌ์šฉ์„ ์˜จ-ํ”„๋ ˆ๋ฏธ์Šค ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์œผ๋กœ ์ œํ•œ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค.

https://www.infoworld.com/article/3167210/application-development/visual-basic-is-the-odd-man-out-in-the-new-net.html

https://www.infoworld.com/article/3254564/application-development/doing-nicely-now-visual-basics-popularity-could-take-a-hit.html
https://blogs.msdn.microsoft.com/dotnet/2017/02/01/the-net-language-strategy/

2 ์–ต 5 ์ฒœ๋งŒ ์ค„์˜ ์ฝ”๋“œ ์ค‘ ์ ˆ๋ฐ˜์ด ์•„์ง ์‚ฌ์šฉ ์ค‘์ด๋ฏ€๋กœ ์ด์ œ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. VB.Net์€ ์ตœ์‹  ์„ธ๋Œ€์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์–ธ์–ด ์ž์ฒด์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๋ฌด์ง€ (๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ Visual Basic-Apples to Oranges์™€ ๊ณ„์† ๋น„๊ตํ•˜๋Š” ๋ชจ๋“  ๋ฐ”๋ณด)์™€ ์„ฑ๋Šฅ ๋ฐ ๊ธฐํƒ€ ๋ฒกํ„ฐ์—์„œ ํ„ฐ๋ฌด๋‹ˆ์—†์ด ์ž˜๋ชป๋œ ๋น„๊ต๋กœ ์ธํ•ด ์ฃฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ผ์ž๋ฆฌ๋ฅผ ์žƒ๊ฒŒ ๋  RIP VB.Net๊ณผ ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ๊ฐœ๋ฐœ์ž.

@DamianEdwards ์ฒ˜๋Ÿผ C #์—์„œ VB๋กœ "ASP.Net Core Web Application"์˜ˆ์ œ๋ฅผ ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค. VB ํ”„๋กœ์ ํŠธ์—์„œ Razor .cshtml ํŒŒ์ผ์„ (์„ฑ๊ณต์ ์œผ๋กœ) ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ASP.Net Core 2.1๊ณผ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/mevdschee/aspnetcorevb

@marcusoftnet ๋ฐ๋ฏธ์•ˆ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ‹์ง„ .cshtml ๋ทฐ์™€์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚˜๋จธ์ง€ VB.NET , ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์•„์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ƒ‰๊ฐํ•ฉ๋‹ˆ๋‹ค .vbhtml ๋ณด๊ธฐ์— ๐Ÿ˜ƒ

๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ ์†Œํ”„ํŠธ๊ฐ€ ์—ผ๋‘์—๋‘๊ณ ์žˆ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. VB์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์›น์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ์„œ๋ฒ„ ์ธก ์˜์—ญ์„ ๋ชจ๋‘ ์ ์ ˆํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ : vbscript
์„œ๋ฒ„ : vb

์—ฐ๋งˆ VB๋Š” ๋‹น์‹ ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ์ ์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vb.net์ด ์›น์— ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์€ ์ •๋ง ์•„ํ”„๊ณ  ํ–ฅ์ˆ˜์ž…๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ์ž˜๋ชป์ด๋ฉฐ ํ•˜๋‚˜์— ๋งŒ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.

Bing ๋ฒˆ์—ญ :
๋‚˜๋Š” Microsoft๊ฐ€ ๋จธ๋ฆฌ์— ์žˆ๊ณ  VB์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธก๊ณผ ์„œ๋ฒ„ ์ธก์˜ ๋‘ ์˜์—ญ์˜ ์›น์—์„œ ์ ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ : VBScript
์„œ๋ฒ„ : VB

์—ฐ๋งˆ VB๋Š” ์ˆ˜ํ˜œ์ž๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ์ดํ•ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ ์‘ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. vb.net์ด ์›น์— ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•„๋Š” ๊ฒƒ์€ ์ •๋ง ๋งŽ์€ ๊ณ ํ†ต๊ณผ ํ–ฅ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ ์ผ์œผ ํ‚ต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
https://blogs.msdn.microsoft.com/vbteam/2018/11/12/visual-basic-in-net-core-3-0/

์ด๊ฒƒ์ด ๋ณ€๊ฒฝ ๋ ๊นŒ์š”?

์ด๋ ‡๊ฒŒํ•˜๋ฉด C #์— ์ด๋ฏธ ์ถ”๊ฐ€ ๋œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด VB.NET์ด ๊ณ„์† ์ง€์›๋˜์ง€๋งŒ ๋‹ค์‹œ vbhtml ๐Ÿ˜•

@hishamco ์•„๋‹ˆ์š”. ๊ณต์œ ํ•˜๋Š” ๋™์•ˆ :( Razor ์—”์ง„์€ C # ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Razor ์—”์ง„์€ C # ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

Tibor Index๋Š” VB.NET์ด ์„ฑ์žฅํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” VB ๋ฉด๋„๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@DamianEdwards ์ฒ˜๋Ÿผ C #์—์„œ VB๋กœ "ASP.Net Core Web Application"์˜ˆ์ œ๋ฅผ ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค. VB ํ”„๋กœ์ ํŠธ์—์„œ Razor .cshtml ํŒŒ์ผ์„ (์„ฑ๊ณต์ ์œผ๋กœ) ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ASP.Net Core 2.1๊ณผ ํ˜ธํ™˜๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/mevdschee/aspnetcorevb

@mevdschee Visual Studio๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ VSCode์—์„œ ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— VB.NET์œผ๋กœ ํฌํŒ…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์นœ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜์…จ๋‚˜์š”?

@Webbarrr ์ €๋Š” C # ์ฝ”๋“œ๋ฅผ VB๋กœ ์ง์ ‘ ๋ณ€ํ™˜ํ•˜๊ณ  Visual Studio C # ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

@reduckted @hishamco @muratg @ TB-MTG @brunojuliao @Eilon @rynowak @CheungTatMing @VBDotNetCoder @ simonmilne80 @NatShaw @SrqComputerguy @ sreenathGanga1988 @mcurros @filippobottega @mrjohnr @beefydog @mevdschee @ Baner041986 @hannespreishuber @Webbarrr

VB.NET ์ฝ”๋“œ๊ฐ€ HTML, CSS ๋ฐ JavaScript ๊ตฌ๋ฌธ์— ์ž˜ ๋งž์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— vbhtml์ด ์†์‹ค ๋œ ์›์ธ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค! ๋Œ€์‹  vbxaml์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค!
๋ช‡ ๋‹ฌ ์ „์— VB.NET ์ €์žฅ์†Œ์—์ด ์ œ์•ˆ์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/dotnet/vblang/issues/329
๋‹ค์Œ์€ ๋”ฐ์˜ดํ‘œ์ž…๋‹ˆ๋‹ค.

VB.NET์ด ์ƒˆ๋กœ์šด WebAssembly ๋ฌผ๊ฒฐ์„ ํƒ€๊ฒŒํ•˜์‹ญ์‹œ์˜ค :
WebAssembly์™€ Blazor ์ดํ›„, ๊ธฐํšŒ๋Š” ๊ทธ ์ž์ฒด๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด์ œ HTML5 ๋Œ€์‹  XAML์„ ์ž‘์„ฑํ•˜๊ณ  (์ฐจ์ด๊ฐ€ ์ตœ์†Œํ™” ๋จ) Java ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  VB.NET์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค (Blazor์—์„œ C #์ด Java๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹).
์ด๋ฏธ C #์—์„œ์ด๋ฅผ ์‹œ๋„ํ•˜๋Š” Ooui๋ผ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
VB.NET์€ ๋˜‘๊ฐ™์ดํ•ด์•ผํ•˜๋ฉฐ SilverLight, Blazor ๋ฐ Ooui์—์„œ ์ˆ˜ํ–‰ ํ•œ ์ž‘์—…์„ ํ™œ์šฉํ•˜์—ฌ XAML ๋ฐ VB.NET ์ฝ”๋“œ๋กœ ASP.NET ํŽ˜์ด์ง€๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ง€๊ธˆ ์‹œ์ž‘๋˜๋ฉด ๊พธ์ค€ํžˆ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  Blazor์™€ Ooui๊ฐ€ ์•ˆ์ • ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ๋‹ค์Œ MS๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.
์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. VB.NET์ด ๋”ฐ๋ผ ์žก๊ธฐ์—๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค!

VBlazor (.vbxaml)๋Š” VB.NET ๋ฐ WPF / UWP์— ์ต์ˆ™ํ•œ ๋ฐ์Šคํฌํ†ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ASP.NET์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค.

XAML ๋˜๋Š” Fluid์™€ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” IMHO๋Š” Razor๊ฐ€ C # ์ „์šฉ์œผ๋กœ ์ž‘์„ฑ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒƒ์„ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

VBLazor๋Š” uwp / wpf ๋””์ž์ธ ๋ทฐ์™€ ๋น„์Šทํ•˜์ง€๋งŒ MVVM ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์ด์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์ฝ”๋“œ ์ˆจ๊น€ ํŒŒ์ผ (์„œ๋ฒ„ vb.net ์ฝ”๋“œ ์šฉ ๋ฐ ํด๋ผ์ด์–ธํŠธ (์Šคํฌ๋ฆฝํŠธ) ์ฝ”๋“œ ์šฉ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. XAML์€ html5๋กœ, Xaml ์Šคํƒ€์ผ์€ CSS๋กœ, VB.NET ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋Š” WebAssembly๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

์Šฌํ”„๊ฒŒ๋„ ASP.NET Core ์šฉ VB.NET ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์„ ์ถ”๊ฐ€ ํ•  ์˜๋„๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๋‚ด์šฉ์„ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

@reduckted @muratg @ tb-mtg @brunojuliao @rynowak @CheungTatMing @VBDotNetCoder @ simonmilne80 @NatShaw @SrqComputerguy @ sreenathGanga1988 @mcurros @filippobottega @mrjohnr @beefydog @mevdschee @ Baner041986 @hannespreishuber @hannespreishuber

๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘๋™ํ•˜๋Š” VB.NET ASP.NET MVC Core Razor ์ƒ˜ํ”Œ!
https://github.com/VBAndCs/VB.NET-Razor
VbRazor ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ„๋‹จํ•œ VBRazorViewEngine์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ์—์„œ VBRazorViewEngine์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‘ ๋ฌธ์„ Startup.ConfigureServices ๋ฉ”์„œ๋“œ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
```VB.NET
services.AddTransient (Of IConfigureOptions (Of MvcViewOptions), VBRazor.VBRazorMvcViewOptionsSetup) ()
services.AddSingleton (Of IViewEngine, VBRazor.VBRazorViewEngine) ()

The VBRazor is just a VB class that implements the IVBRazor Interface:
```VB.NET
Public Interface IVBRazor
    ReadOnly Property Razor As String

End Interface

Razor ์†์„ฑ์€ xml ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ :
```VB.NET
VbRazor ์ˆ˜์ž…

๊ณต์šฉ ํด๋ž˜์Šค IndexView
IVBRazor ๊ตฌํ˜„

Dim students As List(Of Student)

Public Sub New(students As List(Of Student))
    Me.students = students
End Sub

Public ReadOnly Property Razor As String Implements IVBRazor.Razor
    Get
        Dim x = <html>
                    <h3> Browse Students</h3>
                    <p>Select from <%= students.Count() %> students:</p>
                    <ul>
                        <%= (Iterator Function()
                                 For Each std In students
                                     Yield <li><%= std.Name %></li>
                                 Next
                             End Function)() %>
                    </ul>
                </html>
        Return x.ToString()

    End Get
End Property

์ˆ˜์—… ์ข…๋ฃŒ

To use the IndexView from the Controller, I passed it to the View method as the model data in the action method, and passed the actual model data to its constructor:
```VB.NET
Public Function Index() As IActionResult
    Return View(New IndexView(Students))
End Function

๊ทธ๊ฒŒ ๋‹ค์•ผ!! ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ ์›น ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
VBRazor

์ด๊ฒƒ์€ ์ •๋ง ์‰ฌ์› ์ง€๋งŒ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฏ€๋กœ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ค์ œ ์ƒ์‚ฐ์ ์ธ ๋„๊ตฌ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์ด ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!
๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ASP.NET MVC Core ์šฉ VB.NET ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. C # ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“  ๋‹ค์Œ VB๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค!

๋‘ ๋ฒˆ์งธ๋กœ ํ•  ์ผ์€ VB์˜ xml ๋ฆฌํ„ฐ๋Ÿด์—์„œ html ์†์„ฑ์— ๋Œ€ํ•œ ์ธํ…”๋ฆฌ ์„ผ์Šค ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

Truth View Engine์€ Razor ๋˜๋Š” Markdown ๋“ฑ์—์„œ ๋ณธ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ์ข…์˜ ํ…œํ”Œ๋ฆฟ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผํ•˜์ง€๋งŒ Razor์—์„œ ์ƒ์„ฑ ๋œ ํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ ํ•œ ์ฝ”๋“œ ๋’ค์— ์ƒ์„ฑ ๋œ ์ตœ์ข… ๋งˆํฌ ์—…์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ ํ•œ ์ž‘์—…์ด ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ฟก๋ฟก
๊ฑฐ์˜ ์žŠํ˜€์ง„ VB XML ๋ฆฌํ„ฐ๋Ÿด ๋•๋ถ„์— ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์—์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋ช‡ ์ฃผ ๋™์•ˆ ์ƒˆ๋กœ์šด ๊ตฌ๋ฌธ์„ ์ œ์•ˆํ•˜๋ ค๊ณ  ํ•  ๋•Œ๊นŒ์ง€ ์žŠ์–ด ๋ฒ„๋ ธ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ž‘์„ฑ ํ•˜๊ณ  ํŽธ์ง‘์ž๊ฐ€ ๋‹ซ๋Š” ํƒœ๊ทธ๋กœ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. :) ๊ทธ๋Ÿฌ๋‚˜์ด ์•„์ด๋””์–ด๋ฅผ ์™„์ „ํ•œ ์ œํ’ˆ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ดํ•ด์•ผ โ€‹โ€‹ํ•  ์ผ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

https://gitter.im/VB-NET/Volunteer
๊ฐ์‚ฌ.

XML ๋ฆฌํ„ฐ๋Ÿด์€ VB๋งŒ์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์•„์ฃผ ์ข‹์€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. vbhtml์— ๊ด€ํ•ด์„œ๋Š” ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๊ณ  ์ €๋Š” ๊ณผ๊ฑฐ์— ๊ด€์‹ฌ์ด์žˆ๋Š” ๋ถ„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์กฐ๋งŒ๊ฐ„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
๊ธฐ๋Šฅ์ ์ธ VB Razor (Vazor)์ž…๋‹ˆ๋‹ค. ์žฌ๋ฏธ :
https://github.com/VBAndCs/Vazor

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด ์ œ์•ˆ์„ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค https://github.com/aspnet/AspNetCore/issues/9270
vbhtml ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์‰ฌ์šด ๋Œ€์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@VBAndCs , ์ด์ „์— ์ข…๋ฃŒ ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฅผ ํ”ผํ•˜์‹ญ์‹œ์˜ค. ASP.NET Core์˜ ๋ฒ„๊ทธ ๋ฐ ๊ธฐ๋Šฅ ์š”์ฒญ์— ๋Œ€ํ•ด์ด ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ผ์˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

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

@VBAndCs , @Eilon (Github ๋ฐ”์ด์˜ค์— ๋”ฐ๋ฅด๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ Microsoft ๊ด€๋ฆฌ์ž)์˜

๊บ„๋œŒ ๋‹˜
๋‹น์‹ ์˜ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค :). @Eilon ์ด ํ•˜๋ฃจ์— ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์•Œ๋ฆผ, ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ฒ„๊ทธ, ๋งŒ๋“ค ํ† ๋ก , ๋‹ต๋ณ€ํ•ด์•ผ ํ•  ์งˆ๋ฌธ ๋ฐ ๊ฑฐ๋ถ€ ์ œ์•ˆ์œผ๋กœ ์ธํ•ด ์—„์ฒญ๋‚œ ์••๋ ฅ์„
๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚˜์˜ ์ œ์•ˆ์—์„œ์ด ์ฃผ์ œ๋ฅผ ์–ธ๊ธ‰ ํ•  ๊ฒƒ์ด๋‹ค (VB.NET์ด ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๋ฅผ ๋ณต์› ํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์˜ค๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค :)).
๋‚˜๋Š” Eilon์ด ์ค‘์š”ํ•œ ์ œ์•ˆ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ฑฐ๋‚˜ ์ ์–ด๋„ ์ž ์‹œ ๋™์•ˆ ๊ณต๊ฐœํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ฆ‰์‹œ ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋Œ€์‹  ํ† ๋ก  ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค @mevdschee , ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค @Eilon :)

๋‚˜๋Š” ๊ฐ•์š” ํ•  ํ•„์š”์—†์ด ๋กœ๋“œ๋งต์— ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ ์ ˆํ•œ ์™„์ „ํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ์˜ค๋žซ๋™์•ˆ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋”ฐ๋ผ์™”๋‹ค. ๋‚˜๋Š” @VBAndCs ๊ฐ€ ๋…ธ๋ ฅํ•œ ํ›„ @Eilon ์ด ๋„ˆ๋ฌด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ ค๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์„ ๋ง‰์œผ๋ ค ๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์„๋ณด๊ณ  ์•ฝ๊ฐ„ ์‹ค๋ง ํ–ˆ์Šต๋‹ˆ๋‹ค! ๋งŽ์€ ๋ถ€๋‹ด์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค! ์ข‹์€ ์ผ์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค :)

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋™ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•˜์ง€๋งŒ ํŠน์ • ๊ธฐ๋Šฅ ์š”์ฒญ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์€ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋ฝ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํ…Œ์ŠคํŠธ ๋ฐ ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ’€ ์š”์ฒญ์ด์žˆ๋Š” ๊ฒฝ์šฐ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทœ๋ชจ์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ๋ณ€๊ฒฝ์—๋Š” ์žฅ๊ธฐ์ ์ธ ๋น„์šฉ์„ ํฌํ•จํ•˜์—ฌ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ๊ณ ๋ ค์ค‘์ธ ๋‹ค๋ฅธ ๋ชจ๋“  ์ž ์žฌ์  ์ž‘์—…๊ณผ ๊ท ํ˜•์„ ์ด๋ฃจ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ ์—”์ง„๊ณผ ๊ด€๋ จํ•˜์—ฌ ์šฐ๋ฆฌ๋Š” C #์„ ์ง€์›ํ•˜๊ณ  Visual Studio, Mac ์šฉ Visual Studio ๋ฐ Visual Studio Code์˜ ๋›ฐ์–ด๋‚œ ํŽธ์ง‘๊ธฐ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” Razor ๋ทฐ ์—”์ง„์— 100 % ์ „๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ @VBAndCs ์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์ด ASP.NET Core์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ†ตํ•ฉ๋˜๋Š” ์ถ”๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด MVC readme ์™€ ๊ฐ™์€ readme ํŒŒ์ผ์— PR์„ ๋ณด๋‚ด๋„๋กํ•˜์—ฌ ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ์— ์—ฐ๊ฒฐํ•˜๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ,
Eilon

@ simonmilne80 , @mevdschee ๋ฐ ๊ด€์‹ฌ์žˆ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ :
๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— zml ํŽ˜์ด์ง€์˜ ์ž‘์—… ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ ํ–ˆ์œผ๋ฏ€๋กœ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์ง„ํ–‰ํ•˜์‹ญ์‹œ์˜ค : https://github.com/VBAndCs/Vazor-DotNetCore2/issues/1
@Eilon ์—๊ฒŒ ํ‰ํ™”์˜ ์ˆœ๊ฐ„์„

BTW๋Š” ๊ณง ์ถœ์‹œ ๋  ASP.NET Community Standup ์— Vazor์— ๋Œ€ํ•œ ์–ธ๊ธ‰์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. GitHub ์ €์žฅ์†Œ ์™ธ์— ์ฐธ์กฐ ํ•  ์ˆ˜์žˆ๋Š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—์ผ ๋ก 
๋‹ต์žฅ์„ ๋Šฆ์ถฐ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  ZML ํƒœ๊ทธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ •๋ณด๊ฐ€ ํฌํ•จ ๋œ readme ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
ZML 1.0์—๋Š” ์ด์ œ ์ž์ฒด ์ €์žฅ์†Œ ์™€ NuGet์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ZML์„ ์–ธ๊ธ‰ํ•˜๋ฉด โ€‹โ€‹์–ธ์–ด ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์Šน์ธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋Š” C # ๋ฐ VB ๋‘ ๋ฒ„์ „์˜ ํ”„๋กœ์ ํŠธ ์ƒ˜ํ”Œ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‘˜ ๋‹ค ๋™์ผํ•œ .zml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌ.

์ด๊ฒƒ์€ ์ด๋ฏธ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค! https://github.com/VBAndCs/Vazor/issues/1

๋‚ด VB.NET WebForms ์•ฑ์„ .NET Core Razor Pages๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. VB๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด ๋Œ€์‹  ์–ด๋–ค ์ตœ์‹  ASP.NET ๊ฒฝ๋กœ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? C #์œผ๋กœ ์•ฑ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

@Gruski "๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"์ฝ”๋“œ ์ธ VB.NET ์ฝ”๋“œ๊ฐ€

๊ฐœ๋ฐœ์ž๊ฐ€ WebForms์—์„œ Blazor๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „์ž ์ฑ… ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ฐฉ๊ธˆ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

https://docs.microsoft.com/en-us/dotnet/architecture/blazor-for-web-forms-developers/index

๋”ฐ๋ผ์„œ ์•ฑ์˜ ์ผ๋ถ€๋ฅผ VB๋กœ ์œ ์ง€ ํ•œ ๋‹ค์Œ UI ๋งŒ C #์ด๋ฉด๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•ฑ์˜ ์ผ๋ถ€๋ฅผ VB๋กœ ์œ ์ง€ ํ•œ ๋‹ค์Œ UI ๋งŒ C #์ด๋ฉด๋ฉ๋‹ˆ๋‹ค.

UI์—๋„ VB.NEt ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cshtml ํŒŒ์ผ์—๋งŒ C # ์ฒญํฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. C # ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด VB.NEt์˜ xml ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ Vazor ํ”„๋กœ์ ํŠธ์—์„œํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ UI๋ฅผ ๋””์ž์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/VBAndCs/Vazor-DotNetCore2
Anthony Green์€ ๋ธ”๋กœ๊ทธ์˜ ๋งˆ์ง€๋ง‰ ์ฃผ์ œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด์ด๋ฅผ ๋‹ค๋ฅธ ์ˆ˜์ค€์œผ๋กœ ๋Œ์–ด ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.
https://anthonydgreen.net/
๋˜๋Š” ์—ฌ๊ธฐ :
https://github.com/dotnet/vblang/issues/483
๋˜ํ•œ C #๊ณผ VB๋ฅผ ๋ชจ๋‘ ํ”ผํ•˜๊ณ  ์ˆœ์ˆ˜ํ•œ XML Razor (ZML์ด๋ผ๊ณ  ํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด XML ํƒœ๊ทธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/VBAndCs/ZML

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” WebForms ํ”„๋กœ์ ํŠธ์ด์ง€๋งŒ ์›๋ž˜ ์˜๋„ ํ•œ๋Œ€๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŽ˜์ด์ง€ ๋’ค์˜ ๊ฐ .aspx ์ฝ”๋“œ์—์žˆ๋Š” WebMethods๋ฅผ ํ˜ธ์ถœํ•˜๋Š” Vue.js ํด๋ผ์ด์–ธํŠธ ์ธก ํ”„๋ ˆ์ž„ ์›Œํฌ๋งŒ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜๋…„์— ๊ฑธ์ณ ๋ณ€ํ™˜ ๋œ ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ (runat = "server"์—†์Œ), viewstate ์—†์Œ, ์ „์ฒด ํŽ˜์ด์ง€ ๊ฒŒ์‹œ๋ฌผ ์—†์Œ ( "form"์š”์†Œ ์—†์Œ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ Vue ํด๋ผ์ด์–ธํŠธ ์ธก ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” Load ๋ฉ”์„œ๋“œ ์™ธ์— ๋’ค์—์žˆ๋Š” ์ฝ”๋“œ์—๋Š” WebMethods ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์—ผ๋‘์—๋‘๊ณ  .NET Core๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์—ฌ WebForms์—์„œ ๋ฒ—์–ด๋‚˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•˜๋Š” ์ƒˆ๋กœ์šด ASP.NET ๊ธฐ์ˆ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Vue.js๋Š” ์ด๋ฏธ ํด๋ผ์ด์–ธํŠธ ์ธก์— MVC ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— MVC๋Š” ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ œ ์˜๊ฒฌ์€ ๋” ์šฐ์•„ํ•ฉ๋‹ˆ๋‹ค. ์™œ ์„œ๋ฒ„์—์„œ์ด ํŒจํ„ด์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? Blazor๋Š” ์ „์ฒด UI๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@Gruski Razor Pages๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ASP.NET Core ์•ฑ์— Pages ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ์—ฌ๊ธฐ์— .cshtml ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํŽ˜์ด์ง€๋Š” ๋ณธ์งˆ์ ์œผ๋กœ URL์ด๋ฉฐ ์ž„์˜์˜ HTML์„ ๋„ฃ์€ ๋‹ค์Œ ์„œ๋ฒ„ ๋กœ์ง์— ๋Œ€ํ•ด ์›ํ•˜๋Š” C #์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋ ค๋ฉด์ด ์ž์Šต์„œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค. https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-3.0&tabs=visual-studio

@Eilon Razor Pages์— WebMethods๋ฅผ ๋ฐฐ์น˜ํ•˜๊ธฐ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด WebMethods๋Š” ์–ด๋””์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ ๋ณด๋ฉด Vue๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ค‘๋ณต๋˜๋Š” ์žฅ๋ฉด ๋’ค์—์„œ ์„œ๋ฒ„ ์ธก MVC ํŒจํ„ด์˜ ๋‹จ์ˆœํ™” ๋œ ๋ฒ„์ „์„ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Razor ํŽ˜์ด์ง€์—์„œ๋Š” VB ์ง€์›์ด ์—†์Šต๋‹ˆ๋‹ค.

Razor Pages๋Š” WebMethods๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์— MVC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์•ฑ์—์„œ Razor Pages์™€ MVC๋ฅผ ํ˜ผํ•ฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Gruski ๋‚˜๋Š” ์—ฌํ–‰ํ•˜๊ณ  ๋”ฐ๋ผ ์žก์•˜์Šต๋‹ˆ๋‹ค.

Vuew.js์— UI๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ASP.NET Core MVC / WebAPI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” Angular๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์•ฝ๊ฐ„ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ˆ ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค : https://devblogs.microsoft.com/vbteam/combining-angular-visual-basic-and-net-core-for-developing-modern- ์›น์•ฑ /

์ง€์›์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Razor๋Š” Visual Basic์—์„œ ์ง€์›๋˜์ง€ ์•Š์ง€๋งŒ @VBAndCs ์™€ @AnthonyDGreen ์€ ๋ชจ๋‘ Visual Basic์— ๋Œ€ํ•ด ์ž ์žฌ์ ์œผ๋กœ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ASP.NET WebAPI์— ๋Œ€ํ•œ ํ…œํ”Œ๋ฆฟ์€ ์—†์Šต๋‹ˆ๋‹ค.
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰