Microsoft-ui-xaml: ํ† ๋ก : WinUI๋Š” ํ”Œ๋žซํผ ๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 02์›” 25์ผ  ยท  59์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/microsoft-ui-xaml

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

์ €๋ฅผ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ €๋Š” 2008๋…„๋ถ€ํ„ฐ ๋ฒ ํ…Œ๋ž‘ XAML ๊ฐœ๋ฐœ์ž์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” XAML(WPF, Xamarin Forms ๋ฐ UWP ๋“ฑ)๊ณผ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋œ XAML๊ณผ ๊ด€๋ จ๋œ ๊ฑฐ์˜ ๋ชจ๋“  ์ž‘์—…์— ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ด ๊ธ€์„ ์“ฐ๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” ์ด๋ฏธ ๋ฃจํ”„์—์„œ ๋ฒ—์–ด๋‚ฌ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋ธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ํŠนํžˆ ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” Microsoft์— ๋Œ€ํ•œ ํฌ๋ง์„ ์žƒ์–ด ๋ฒ„๋ฆฐ ์ˆ˜๋งŽ์€ Forgotten Developers๋ฅผ ๋•๊ณ  ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋‚ด๊ธฐ ์œ„ํ•จ ์ž…๋‹ˆ๋‹ค. ํ† ๋ก  ์ฃผ์ œ์™€ ๊ฐ™์€ GUI ๊ด€๋ จ.

์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ธด ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๊ณ  Uno Platform ๋ฐ AvaloniaUI ์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ ํ›„ ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์žŠํ˜€์ง„ ๊ฐœ๋ฐœ์ž๋Š” ์นจ๋ฌตํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ƒฅ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ „์— ๋งํ–ˆ๋“ฏ์ด, ๊ทธ๋“ค์€ ์ด๋ฏธ ๋ฃจํ”„์—์„œ ๋ฒ—์–ด๋‚ฌ๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์†Œ์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š” ์ˆ˜๋…„๊ฐ„ ๋‹น์‹ ์˜ ์ฃผ์˜๋ฅผ ํ™˜๊ธฐ์‹œํ‚ค๋ ค ํ–ˆ์ง€๋งŒ ๋ฌด์‹œ๋‹นํ•˜๊ฑฐ๋‚˜ ์นจ๋ฌต์„ ์ง€์ผฐ์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, Forgotten Developers:

  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ HTML+JS๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์›น/๋ชจ๋ฐ”์ผ์— ๋” ๋‚˜์€ ์˜ต์…˜์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ž„ํ•˜๊ณ  ๋‹ค๋ฅธ ํ”Œ๋žซํผ/ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋“ค์€ Microsoft๊ฐ€ ์†Œ์œ„ "ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜๊ณ  ๋ชจ๋“  ๊ณณ์—์„œ ์‹คํ–‰"์„ ํ—ˆ์šฉํ•˜๋Š” GUI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ณ„์† ์ œ๊ณตํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๋ฐ ์ง€์ณค์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋“ค์€ WPF/UWP์— ๋น„ํ•ด ์•ฝ๊ฐ„์˜ ์ง„ํ™”์ ์ธ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณ ๋ คํ•ด์•ผ ํ•  ํ•ต์‹ฌ ์‚ฌํ•ญ

  • WPF์˜ ์ค‘์š”์„ฑ์„ ์ธ์‹ํ•˜์‹ญ์‹œ์˜ค . 14๋…„ ์ „, ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ GUI๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค. ๊ทธ ์œ„๋ ฅ์€ ์ „๋ก€๊ฐ€ ์—†์—ˆ๋‹ค. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ XAML ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ธฐ์ˆ ์„ WPF์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณตํ•˜๋Š” ์ž์œ ๋„(WPF๋กœ ๋ฌด์—‡์ด๋“  ํ•  ์ˆ˜ ์žˆ์Œ)๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค๋ฅธ XAML ํ”„๋ ˆ์ž„์›Œํฌ, ํŠนํžˆ ๋ชจ๋ฐ”์ผ/์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ ธ์Šต๋‹ˆ๋‹ค.
  • UWP(์œ ๋‹ˆ๋ฒ„์„ค Windows ํ”Œ๋žซํผ)๋Š” WPF๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๋„ˆ๋ฌด ๋Šฆ์—ˆ ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋ช‡ ๋…„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ธก๋ฉด์—์„œ๋Š” WPF๋ณด๋‹ค ๋‚ซ์ง€ ๋งŒ ์—ฌ์ „ํžˆ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๊ทธ๊ฒƒ์€ ๋ณดํŽธ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๋ถ„์„ ๋Œ€์ƒ์ธ ์œˆ๋„์šฐ 10 ๋ชจ๋ฐ”์ผ์˜ ์ฃฝ์Œ์€ ์› ์œˆ๋„์šฐ์˜ ๋น„์ „ ์„ ์ตœ์†Œํ•œ์˜ ํ‘œํ˜„์œผ๋กœ ์ž˜๋ž๋‹ค.

    • ์ƒŒ๋“œ๋ฐ•์Šค ์ œํ•œ์œผ๋กœ ์ธํ•ด UWP๋Š” ๊ณ ๊ธ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • ๋ฐฐํฌ ์ฑ„๋„์€ ๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋œ Microsoft Store์ž…๋‹ˆ๋‹ค. ์ธ์ฆ ํ”„๋กœ์„ธ์Šค ์ž์ฒด๊ฐ€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ๋Š๋ฆฝ๋‹ˆ๋‹ค. .NET Native์šฉ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์€ ๋งํ•  ๊ฒƒ๋„ ์—†์ด ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค.

    • ์ œ3์ž ํ†ต์ œ๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ชฉํ• ๋งŒํ•œ ์˜ˆ: DataGrid ๋ฐ ์ฐจํŠธ ๋“ฑ

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

์ž”์†Œ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์•ˆํƒ€๊นŒ์šด ํ˜„์‹ค์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ๋‚ด ์ œ์•ˆ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

WPF ๋ฐ UWP๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค.

  • DataGrid ๋ฐ ์ฐจํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์„ ๋งŒํผ ํ’๋ถ€ํ•œ ์™„์ „ํ•œ ํ‘œ์ค€ ์ปจํŠธ๋กค ์„ธํŠธ์ž…๋‹ˆ๋‹ค.
  • ๋งˆํฌ์—… ํ™•์žฅ
  • ์ ์‘ ํŠธ๋ฆฌ๊ฑฐ
  • ๋ฐ์ดํ„ฐ ํ…œํ”Œ๋ฆฟ
  • ๋ฐ”์ธ๋”ฉ
  • ๊ฐ’ ๊ฐ•์ œ๊ฐ€ ์žˆ๋Š” ์ข…์†์„ฑ ์†์„ฑ
  • ์Šคํƒ€์ผ
  • ๊ฒ€์ฆ์„ ์œ„ํ•œ ์ œ์–ด ์ง€์›
  • MVVM ์ง€์›

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค!

  • Windows, Linux, Mac, iOS, Android ๋ฐ WebAssembly ์ง€์›

WinUI๋Š” WPF ๋ฐ UWP์˜ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  • WinUI๋ฅผ DirectX์— ์—ฐ๊ฒฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  • ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ๊ฐ ํ”Œ๋žซํผ์—์„œ ๊ฐ€์† ๊ทธ๋ž˜ํ”ฝ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ ์—”์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. Windows๋Š” ์ฐธ์กฐ ํ”Œ๋žซํผ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ OS์—์„œ๋Š” WinUI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GUI๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.
  • AvaloniaUI ๋Š” ์ด๋ฏธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ WinUI ๊ฐœ์„ ์„ ์œ„ํ•œ ๋„์›€๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
discussion

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

Google์ด Flutter๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ GoogleUI ๋˜๋Š” AndroidUI๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์ƒ๊ธฐ์‹œํ‚ฌ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›น๊ณผ ๋ฐ์Šคํฌํƒ‘์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. "๊ทธ๋ƒฅ Windows์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š”" ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋” ์ €๋ ดํ•˜๊ณ  ๋” ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  Windows์™€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒฝ์Ÿ ์ œํ’ˆ์ด ์กด์žฌํ•œ๋‹ค๋ฉด... ๊ฐœ๋ฐœ์ž๋Š” ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ฐ ํ•ด๋‹น ์‹œ์žฅ) ์„ ํƒ? ๋‚˜๋Š” ์†Œ๊ธฐ์—… ์†Œ์œ ์ž๋กœ์„œ ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ด ์ฃผ์–ด์ง€๋ฉด ๋‚ด๊ฐ€ ์–ด๋””์— ํˆฌ์žํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Xamarin์ด .NET 5์— ๋ณ‘ํ•ฉ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
UWP XAML์„ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ž‘์—…ํ•˜๋ฉด Microsoft์™€ UNO๊ฐ€ ๋ฐ์Šคํฌํ†ฑ, ๋ชจ๋ฐ”์ผ, ์›น ๋ธŒ๋ผ์šฐ์ €(Azure) ๋ฐ IoT์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
UWP vNext(WinUI ๊ธฐ๋ฐ˜)/ Silverlight 6(UNO)

Blazor์˜ ๋…ธ๋ ฅ์€ ํ˜„์žฌ ๊ธฐ๋ณธ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ .NET์„ ๊ณต์‹์ ์œผ๋กœ WebBrowser์— ๊ฐ€์ ธ์˜ค๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. HTML DOM
๊ทธ๋Ÿฌ๋‚˜ ๋จธ์ง€ ์•Š์•„ ๋‹ค๋ฅธ ๋ Œ๋”๋ง ์—”์ง„, WinUI๋ฅผ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ๋ณด์™„, Silverlight, UNO Platform ๋ฐ Xamarin์„ ๋„๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ Flutter/WPF์™€ ๊ฐ™์ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

UWP XAML์„ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์ž‘์—…ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ Uno์—์„œ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. MS๋Š” ๊ทธ ์‚ฌ๋žŒ๋“ค์„ ์‚ฌ๋“ค์ธ ๋‹ค์Œ Uno์˜ ์ตœ์ข… ๊ฐœ๋ฐœ์„ ๋•๋„๋ก ๊ณ ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๋Š” ์ž˜๋ชป๋œ ์žฅ์†Œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์˜ ๋ชจ๋“  ๊ฒƒ์— ๋™์˜ํ•˜๊ณ  ์‹ถ์€ ๋งŒํผ WinUI ํŒ€๊ณผ Windows ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋งŽ์€ ์„ ์ž„ ๊ฐœ๋ฐœ์ž๋Š” WinUI๋ฅผ ๋งค์šฐ ์ข๊ฒŒ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒ์ ์ธ ์„ธ๊ณ„์—์„œ WinUI๋Š” ๋จธํ‹ฐ๋ฆฌ์–ผ ๋””์ž์ธ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ WinUI๋Š” ๋””์ž์ธ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ Fluent Design๋„ ์•„๋‹™๋‹ˆ๋‹ค. Microsoft๋Š” ๋ชจ๋ธ ๊ณต๊ฐ„์— ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— UI ์ œํ’ˆ์„ ๊ฒฝ์Ÿ์—…์ฒด๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

WinUI๋Š” Windows ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•œ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ ์ด๊ฒƒ์€ ๊ฐ€์žฅ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋””์ž์ธ ์–ธ์–ด๋Š” ๊ตฌํ˜„๊ณผ ๋ณ„๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๊ตฌ์„ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํ”Œ๋žซํผ ์ข…์†์„ฑ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„์€ ํ”Œ๋žซํผ ๋ฐฐํƒ€์ ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋ฐ”์ผ/ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์ž์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์ข‹์ง€ ์•Š์ง€๋งŒ ์—ฌ๊ธฐ์„œ์˜ ๋…ธ๋ ฅ์€ ์‹ค์ œ๋กœ Windows ์•ฑ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋˜ํ•œ Uno Platform์ด DX 11์„ ๋ชจ๋“  ํ”Œ๋žซํผ์— ์ด์‹ํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ชจ๋“  ๊ณณ์—์„œ ์ง„์ •ํ•œ WinUI๊ฐ€ ๋  ์ˆ˜ ์—†๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Comet(.Net ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ)๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋‹จ๊ณ„์ด์ง€๋งŒ ๊ฐœ๋…์€ Flutter์™€ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Skia(์˜ต์…˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ/์„ ์–ธ์  UI ํŒจํ„ด์œผ๋กœ UI๋ฅผ ๊ทธ๋ฆฌ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” Material Design๊ณผ ๊ฐ™์€ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์™„์ „ํžˆ ๋™์ผํ•˜๊ฒŒ ๋ณด์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์œ ๋Š” Windows UI๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  Windows(ํ”Œ๋žซํผ ๋ฐ ์–ธ์–ด)์—์„œ ์ž‘๋™ํ•˜๋Š” UI ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•„์ง ๋‹ฌ์„ฑ๋˜์ง€๋„ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ .net ํ”„๋ ˆ์ž„์›Œํฌ, .net ์ฝ”์–ด, uwp ๋ฐ C++ ์Šคํ† ๋ฆฌ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ uwp๋Š” ์žˆ์ง€๋งŒ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UWP/WinRT์—๋Š” ์—ฌ์ „ํžˆ ๋ฐฐํฌ, ๊ฐ•์ œ ์ž‘์—… ํ‘œ์‹œ์ค„ ๋ฐ ์ œ๋ชฉ ํ‘œ์‹œ์ค„ ํŒ์—…๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ํ™”๋ฉด์ผ ๋•Œ(yikes).

ํฌ๋กœ์Šค ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ์—„์ฒญ๋‚œ ์ž์› ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ๋จผ์ € Windows์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  .net 5๋ฅผ ์ถœ์‹œํ•˜๊ณ  UWP์™€ ์œˆ๋„์šฐ ์Šคํ† ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  DirectX๋ฅผ C#์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  GC๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ข์€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” Windows์—์„œ๋งŒ ํ•ด์•ผ ํ•  ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  OP์—๊ฒŒ.

  • UWP๋Š” ๋ณดํŽธ์ ์ž…๋‹ˆ๋‹ค. ๋ณดํŽธ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค(Android๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค). ์›๋ž˜ ์•ฝ์†์ด ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  Windows ์žฅ์น˜๋Š” UWP๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Windows Mobile์€ ๋ณ„๋„์˜ OS์˜€์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒˆ๋กœ์šด Windows ํ”Œ๋žซํผ์€ Windows(10 ๋˜๋Š” 10X)์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ CoreOS๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋ชจ๋‘ Windows ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ Windows Phone์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์žฅ์น˜ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ณง Neo์™€ Duo๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ƒŒ๋“œ๋ฐ•์Šค ์ œํ•œ - ์ด๊ฒƒ์€ ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Win32 ์Šคํƒ€์ผ ์‹œ์Šคํ…œ ์ „์ฒด ์•ก์„ธ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธˆ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ œ์ถœํ•˜์—ฌ UWP ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ œ์•ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. UWP์— ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. UWP๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ๊ณ ๊ธ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์š”! ๊ตฌ์ฒด์ ์ธ ๋…ผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

  • "WinUI๋ฅผ DirectX์— ์—ฐ๊ฒฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค" - WTF? ๊ธฐ๋ณธ Windows ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ์ธ DirectX์™€ ์ ˆ๋Œ€์ ์œผ๋กœ ๊ฒฐํ•ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ณ ๋ ค์กฐ์ฐจ ํ•˜์ง€ ๋งˆ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ํ›„๋“œ ์•„๋ž˜์—์„œ OpenGL ๋ Œ๋”๋ง ํ‘œ๋ฉด์„ ๋งŒ๋‚˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ˜ธํ™˜์„ฑ์„ ๊นจ๊ณ  ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ˜ผ๋ž€์„ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Gavin-Williams

ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. WPF๋ฅผ ํ†ตํ•ด ์•ฝ๊ฐ„ ์ง„ํ™”๋œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

UWP๋Š” ๋ณดํŽธ์ ์ž…๋‹ˆ๋‹ค

"๋ชจ๋“  Windows ์žฅ์น˜๋Š” UWP๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค"๋Š” ๋ชจ๋ฐ”์ผ ์—†์ด๋Š” ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. HoloLens๋Š” ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๊ณ  Surface Hub๋Š” ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๋ฉฐ Windows 10 IoT Core๋Š” ๋†๋‹ด์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋“œ์‹œ DirectX์™€ ๊ฒฐํ•ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋กœ์„œ ํ•˜๋“œ ์ปคํ”Œ๋ง์€ ์†Œ๋ฆ„์ด ๋‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ์„ ๊ตํ™˜ํ•  ์ˆ˜ ์—†๋Š” ์ฃผ์š” ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

"๋ชจ๋“ˆํ™”"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ํ•ญ์ƒ ๊ทธ๊ฒƒ๊ณผ ์”จ๋ฆ„ํ•ด์™”์Šต๋‹ˆ๋‹ค.

์ƒŒ๋“œ๋ฐ•์Šค ์ œํ•œ์€ ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ”์œ„๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ œํ•œํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. UWP์—์„œ ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

Google์ด Flutter๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ GoogleUI ๋˜๋Š” AndroidUI๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์ƒ๊ธฐ์‹œํ‚ฌ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›น๊ณผ ๋ฐ์Šคํฌํƒ‘์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. "๊ทธ๋ƒฅ Windows์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š”" ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋” ์ €๋ ดํ•˜๊ณ  ๋” ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  Windows์™€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒฝ์Ÿ ์ œํ’ˆ์ด ์กด์žฌํ•œ๋‹ค๋ฉด... ๊ฐœ๋ฐœ์ž๋Š” ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ฐ ํ•ด๋‹น ์‹œ์žฅ) ์„ ํƒ? ๋‚˜๋Š” ์†Œ๊ธฐ์—… ์†Œ์œ ์ž๋กœ์„œ ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ด ์ฃผ์–ด์ง€๋ฉด ๋‚ด๊ฐ€ ์–ด๋””์— ํˆฌ์žํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DirectX๋ฅผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์€ ๋ฐฉ๋Œ€ํ•œ ์ž‘์—…์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํ•ด๊ฒฐ์ฑ…์€ DirectX ๋Œ€์‹  OpenGL ๋˜๋Š” Vulkan์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Gavin-Williams, UWP์— ์ต์ˆ™ํ•˜์‹ ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋นŒ๋“œ/๋ฐฐํฌํ•  ๋•Œ Windows์˜ ํŠน์ • ๋ฒ„์ „(๋˜๋Š” ๋ฒ„์ „ ๋ฒ”์œ„)์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์•„์ด๋””์–ด๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ UWP๊ฐ€ WPF๋งŒํผ ์ฃผ๋ฅ˜๊ฐ€ ๋˜์ง€ ๋ชปํ•œ ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
@nerocui UI ์–ธ์–ด์˜ ์ „์ฒด ๋ชฉ์ ์€ ํ™”๋ฉด์˜ ์›์‹œ ๋„๋ฉด์—์„œ UI ๋””์ž์ธ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด HTML์ด ARM/x64/x64์—์„œ ๋ Œ๋”๋ง๋  ์ˆ˜ ์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

XAML์€ UI ๊ธฐ๋ณธ ์š”์†Œ/๊ตฌ์„ฑ/์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๋›ฐ์–ด๋‚œ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๊ฐœ๋ฐœ ๋น„์šฉ๊ณผ ํ”Œ๋žซํผ ๋„๋‹ฌ ๋ฒ”์œ„ ๋•Œ๋ฌธ์— ์š”์ฒญ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

UWP .Net ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ฝ”๋“œ ๋‚œ๋…ํ™”์˜ ํ•„์š”์„ฑ๊ณผ ์ด๋กœ ์ธํ•ด WPF์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถˆ์•ˆ์ •์„ฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ–ฅ์ƒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. UWP ์ž์ฒด๋Š” DirectX ๋ฐ ๊ธฐํƒ€ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ๋””์ž์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ์–ธ์–ด, ํŠนํžˆ C++์™€ ํ†ตํ•ฉํ•  ๋•Œ WPF๋ณด๋‹ค ํฐ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์„ฑ๋Šฅ C++ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ C#๊ณผ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ UWP์—์„œ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. DirectX ํ‘œ๋ฉด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋„ ํ›จ์”ฌ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

UWP์˜ ๋‚˜๋จธ์ง€ ๊ตฌ๋ฉ์€ ์‰ฝ๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ํฐ ๋ฌธ์ œ๋Š” Microsoft๊ฐ€ WPF์™€ ๊ด€๋ จ๋œ ํ’ˆ์งˆ ์ˆ˜์ค€์„ ๋‹ฌ์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. WPF๊ฐ€ ๋ฐฉ๊ธˆ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ๋˜ํ•œ Data Grid, INotifyDataErrorInfo, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ƒํƒœ๋ฅผ ํŠน์ง•์œผ๋กœ ํ•˜๋Š” ์ปจํŠธ๋กค ๋ฐ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ•๋ ฅํ•œ DB์™€ ๊ฐ™์€ LOB ์š”๊ตฌ ์‚ฌํ•ญ์˜ ์ค‘์š”์„ฑ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ง์‚ฌ๊ฐํ˜•์ด ์•„๋‹Œ ์˜์—ญ์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

HTML+JS๋Š” ์˜ค๋Š˜๋‚ ์˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋ฐœ๋ช…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. IOS ๋ฐ Android์—์„œ ๊ณ ์„ฑ๋Šฅ XAML ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด XAML์„ ๋” ์ด์‹์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๋” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” WinUI๊ฐ€ ๋ฏธ๋ž˜์— ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ๋ชฉํ‘œ๋กœ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋งค์šฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰๊ฐ์ ์ธ ์šฐ์„ ์ˆœ์œ„

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

WinUI๊ฐ€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ 

๋ช…๋ฐฑํ•˜๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ฒญ์ค‘์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ C#(๋˜๋Š” C++์€ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค)/XAML์ด ์ข‹์€ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๊ฐ„ ์Šคํ† ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด Flutter์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐ์ˆ ๋กœ ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

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

WinUI๋Š” ํ˜„์žฌ ํ”Œ๋žซํผ์—์„œ ์ปจํŠธ๋กค๊ณผ ๋ Œ๋”๋ง ๋ฐ ์ž…๋ ฅ ๋ ˆ์ด์–ด๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์œ„์น˜์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ Œ๋” ๋ ˆ์ด์–ด๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ Skia๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ถ”์ƒํ™”๋ฅผ ๊ฐ•์ œํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2D ๊ทธ๋ž˜ํ”ฝ์„ ์œ„ํ•œ C++ ์ œ์•ˆ์ธ ๋ Œ๋” ๋ ˆ์ด์–ด๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ดํŽด๋ด์•ผ ํ•  ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค . . ๊ทธ๋“ค์€ ๋ถ„๋ช…ํžˆ API ํ‘œ๋ฉด์— ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์œผ๋ฉฐ ๊ฝค ํฌ๊ด„์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ 2D ๊ทธ๋ž˜ํ”ฝ์˜ '๋ฌธ์ œ'๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๋ช‡ ๋…„ ์ „์— ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ฉฐ ๋‚˜๋Š” ๊ทธ๋“ค์˜ API ํ‘œ๋ฉด์ด ๊ฝค ์™„๋ฒฝํ•ด ๋ณด์ธ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์ด ์žˆ์ง€๋งŒ ์Šน์ธ๋˜์ง€ ์•Š๋”๋ผ๋„ API ํ‘œ๋ฉด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด API ํ‘œ๋ฉด์— ๋Œ€ํ•ด Direct2D ๋ฐฑ์—”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ œ์•ˆ์ด ์ˆ˜๋ฝ๋˜๋ฉด MSVC ํŒ€์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ WinUI ํŒ€์€ ์ž‘์—…์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ํŒ€ ๊ตฌ์„ฑ์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์•„๋งˆ๋„ ๋…ผ๋ฌธ์˜ ์ €์ž๋“ค์ด ๊ธฐ๊บผ์ด ๋„์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Skia ๋˜๋Š” ๊ธฐํƒ€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๋ฐฑ์—”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œ์•ˆ์ด ๊ฒฐ๊ตญ ์ˆ˜๋ฝ๋˜๋ฉด ์ œ์•ˆ์ด ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ๊ธฐ๋ณธ ๊ตฌํ˜„์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฏธ๋ž˜๋ฅผ ๋‚ด๋‹ค๋ณด๋ฉด์„œ WASI - https://wasi.dev/ ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ๋กœ์„œ๋Š” ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์œ„์˜ C++ ์ œ์•ˆ์ด ์•„๋งˆ๋„ ๋‹ค์Œ์„ ์œ„ํ•œ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ›„๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์™„์ „ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ ํ”„๋ ˆ์ž„์›Œํฌ(ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐ ๋ณด์•ˆ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ)๋กœ ์ „ํ™˜ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ๋ ˆ์ด์–ด API. (๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๋งค์šฐ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค).

์ฆ๊ฑฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด @SuperJMN ๊ณผ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์€ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ๊ณ ๋ คํ•  ๋•Œ ๋งŽ์€ ์‹ ๋ขฐ๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @SuperJMN ์ด UWP๊ฐ€ ์•„์ง ์„ฑ์ˆ™ํ•˜๋Š” ๋™์•ˆ(์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ) UWP๋ฅผ ํฌ๊ธฐํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ €์žฅ์†Œ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ชฉ์†Œ๋ฆฌ๋Š” ๊ทธ๋“ค์ด ์„ธ์ƒ์— ์ œ์‹œํ•˜๋Š” ์ž‘์—…์˜ ๋ณธ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน๋ณ„ํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@Noemata ์ €๋Š” XAML+MVVM์˜ ์—ด๋ ฌํ•œ ํŒฌ์ด์—ˆ์Šต๋‹ˆ๋‹ค. Silverlight, WPF, WindowsPhone, Metro(WinRT)์—์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. UWP์™€ Xamarin์— ์™€์„œ ์ง€์ณค์Šต๋‹ˆ๋‹ค ...

์ƒˆ๋กœ์šด XAML ์Šคํƒ์„ ์‚ดํŽด๋ณธ ๋‹ค๋ฅธ ๋ชจ๋“  ์‹œ๊ฐ„๊ณผ ์ด ๋ฐ˜๋ณต์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” ํ™˜์ƒ์ ์ธ UWP ์ƒ˜ํ”Œ ์•ฑ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ฉ‹์ง€๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ผ๋ถ€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

https://github.com/Microsoft/Windows-appsample-customers-orders-database
https://github.com/microsoft/InventorySample
https://github.com/microsoft/VanArsdel
https://github.com/microsoft/BuildCast
https://github.com/microsoft/Windows-appsample-shopping

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

ํ•ด๋‹น WPF ์ƒ˜ํ”Œ์— ๋Œ€ํ•œ ๋…ธ๋ ฅ์€ ๊ฑฐ์˜ ๊ธฐ์–ต๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„ ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ? UWP ๋ฐ XAML์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์œ„์น˜์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค. UWP๊ฐ€ ์ฒ˜์Œ ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์„ ๋•Œ Microsoft๊ฐ€ Visual Studio์™€ ํ•จ๊ป˜ ์ ์ ˆํ•œ ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ–ˆ๋‹ค๋ฉด UWP์— ๋Œ€ํ•ด ๋œ ๋ถ€์ •์ ์ด์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ๊ณ ์˜ VS ํ…œํ”Œ๋ฆฟ์„ ๋ณด๋ ค๋ฉด ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/microsoft/windowsTemplateStudio

UWP ์•ฑ์„ ์œ„ํ•œ ๋งค์šฐ ์œ ์—ฐํ•˜๊ณ  ์™„์ „ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ์ง‘ํ•ฉ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ฐพ์Šต๋‹ˆ๊นŒ? ์‹ค๋งˆ๋ฆฌ ์—†์Œ. ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋ฌผ ์ฐพ๊ธฐ์— ๊ฐ€๋Š” ๊ฒƒ์€ ์ž์‹ ๊ฐ์„ ํ‚ค์šฐ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. WinRT ์ฑ„ํƒ์„ ๊ฑฐ๋ถ€ํ•œ Office ํŒ€์€ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด๋ก ์  ํŒ” ๊ธธ์ด์— ๊ด€๊ณ„์—†์ด OS์— ๋“ค์–ด๊ฐ€๋Š” ๋งŽ์€ ๊ฒƒ์„ ์ถ”์ง„ํ•ฉ๋‹ˆ๋‹ค. ํ’ˆ์งˆ ๋ฌธ์ œ, ๋ฒ„๊ทธ, Windows Phone์˜ ์‹คํŒจ ๋ฐ ์ผ๊ด€๋˜์ง€ ์•Š์€ ํˆฌ์ž์™€ ๋ฉ”์‹œ์ง•์„ ๋˜์ง€๊ณ  ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” ํ™˜์ƒ์ ์ธ UWP ์ƒ˜ํ”Œ ์•ฑ์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ฉ‹์ง€๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

@Noemata ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๋ฉ‹์ง„ ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ UWP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ํ›จ์”ฌ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์˜ˆ, WPF์˜ "๊ทธ๋ƒฅ ์ž‘๋™ํ•˜๋Š”" ์‹œ๊ฐ„์ด ๊ทธ๋ฆฌ์›Œ์ง‘๋‹ˆ๋‹ค.

MS๊ฐ€ ์ƒ˜ํ”Œ๋กœ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๋Š” MS ์Šคํ† ์–ด ์™ธ๋ถ€์— ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ UWP ์•ฑ์ž…๋‹ˆ๋‹ค(์˜ˆ, ์ƒ๊ฐ๋งŒํผ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

๋‚˜์™€ ์ž˜ ๋งž์ง€ ์•Š๋Š” ๋˜ ๋‹ค๋ฅธ ์ ์€ UWP๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋ฐ์Šคํฌํ†ฑ ๊ฒฝํ—˜์„ ๋ฒ„๋ฆฌ๊ณ  "๋ชจ๋ฐ”์ผ ์šฐ์„ "์„ ์—ผ๋‘์— ๋‘๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•ด ์ฃผ์„ธ์š”. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” UWP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ UI๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์€ ์Šคํฌ๋กค๋ฐ”์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ํ„ฐ์น˜ํŒจ๋“œ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์Šคํฌํƒ‘ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์Šคํฌ๋กค ๊ฒฝํ—˜์ด ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค(์ฐธ๊ณ : WinUI ํŒ€์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ์Šคํฌ๋กค๋ฐ”๋ฅผ ๋‹ค์‹œ "์ •์ƒ"์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ตฌ๊ธ€๋ง์„ ๋งŽ์ด ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด API ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ •๋ง ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ผ๋””์˜ค ๋ฒ„ํŠผ/์ฝค๋ณด ๋ฐ•์Šค๋„ ๋ชจ๋ฐ”์ผ์— ์ตœ์ ํ™”๋œ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์˜ ๋„ˆ๋น„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ "MinWidth=0"์„ ์„ค์ •ํ•ด์•ผ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ…์ŠคํŠธ ๋ฒ„ํŠผ ์ƒ‰์ƒ์€ ํฐ์ƒ‰์ด๊ณ  ์ดˆ์ ์ด ๋งž์ถฐ์ง€๋ฉด ๊ฒ€์ •์ƒ‰์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด์ฃ ? ๊ทธ๋ฆฌ๊ณ  ํ…์ŠคํŠธ ๋ฒ„ํŠผ์—๋Š” ์ง€์šฐ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "x"๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ํ„ฐ์น˜ํŒจ๋“œ์ž…๋‹ˆ๋‹ค. ํ„ฐ์น˜ํŒจ๋“œ๊ฐ€ ์—†๋Š”๋ฐ ์™œ ๊ฑฐ๊ธฐ์— ์žˆ์ฃ ?

๊ธฐ๋ณธ ํ…์ŠคํŠธ ์ƒ์ž์— ๋งž์ถค๋ฒ•์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ํ•„์š”ํ• ๊นŒ์š”?

๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” 10๋ถ„ ๊ฑธ๋ฆด ์ผ๋“ค์ด ๋ณดํ†ต 2์‹œ๊ฐ„ ์ด์ƒ ๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์˜ˆ์ธกํ•˜๋Š” ๋Šฅ๋ ฅ์„ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•  ๋•Œ ๋ฐ˜๋‚˜์ ˆ์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•  ๋•Œ๋งˆ๋‹ค 2-3์ผ์ด ๊ฑธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,
์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ํ† ๋ก  ๋ฌธ์ œ์ด๊ณ  UWP ํฌ๋ง/๊ธฐ๋Šฅ ์š”์ฒญ์„ ์–ด๋””์— ๋‘˜์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—..... ์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ธฐํšŒ๋ฅผ ์žก์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ ๋˜๋Š” ๋ฌธ์ œ๋Š” ํ˜„์žฌ ์ค‘๋‹จ๋œ uservoice์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ ๋ฌธ์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํ”ผ๋“œ๋ฐฑ ํ—ˆ๋ธŒ์—์„œ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜์š”?

"์žŠํ˜€์ง„ ๊ฐœ๋ฐœ์ž"๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์žฌ๋Šฅ ์žˆ๊ณ  ๊ฒฝํ—˜์ด ๋งŽ์œผ๋ฉฐ ๊ธฐ์ˆ ์— ์—ด์ •์„ ๊ฐ€์ง„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฒ ํ…Œ๋ž‘ .Net ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ iOS ๋ฐ Android์šฉ ์•ฑ ๊ฐœ๋ฐœ๋กœ ๋ฒˆ์ฐฝํ•˜๋Š” ๋งŽ์€ ์•„์ด๋“ค๋ณด๋‹ค ๋” ๋‚˜์€ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—๋Š” ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
WinUI๊ฐ€ C# + .Net + Xaml์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ๊ฒฝํ—˜์„ ํ™œ์šฉํ•˜์—ฌ Windows, Android, iOS ๋ฐ ์›น์šฉ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์พŒ์ ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์™œ๊ฑด์— ๋›ฐ์–ด๋“ค ๊ฒƒ์ด๋ฉฐ ์ „ ์„ธ๊ณ„๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ํ˜œํƒ์„ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–‘์งˆ์˜ ์•ฑ.
WinUI + Uno Platform ์€ ๊ถ๊ทน์ ์ธ ํ˜ธ์ถœ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IServiceProvider๊ฐ€ ๋ˆ„๋ฝ๋œ UWP ๋งˆํฌ์—… ํ™•์žฅ ๋ฐ ๋งˆํฌ์—… ํ™•์žฅ์ด ์‚ฌ์šฉ๋˜๋Š” ์š”์†Œ ์ž์ฒด

์—ฌ๊ธฐ @mfe- !

์—ฌ๊ธฐ @mfe- !

@Mike-EE ์™€, ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค! CalcBinding์„ UWP๋กœ ์ด์‹ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•œ ์ผ์€ ๋ณด๊ธฐ ๋ชจ๋ธ์— ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

"ํ•œ ๋ฒˆ ์ž‘์„ฑ, ๋ชจ๋“  ๊ณณ์—์„œ ์‹คํ–‰".

Microsoft๋Š” ์–ผ๋งˆ ์ „์— ์ด ๋ฌธ์ œ์—์„œ ๋ฉ€์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์ž‘ํ’ˆ ๋ชจ๋‘ ์šฐ๋ฆฌ๋Š” ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜‚

https://www.theregister.co.uk/2020/02/28/winui_cross_platform/

์žŠํ˜€์ง„ ๊ฐœ๋ฐœ์ž๋Š” ์นจ๋ฌตํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ƒฅ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

"์žŠํ˜€์ง„ ๊ฐœ๋ฐœ์ž"๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์ด๋ฆ„์œผ๋กœ ์กฐ์งํ•˜์ž! ๐Ÿ’ช

Microsoft์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์ง€์›ํ•˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. _Uno Platform_ ๋ฐ _Xamarin.Forms_๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” .NET ์—์ฝ”์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค(์•„์ง ๋ฐ์Šคํฌํ†ฑ์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ).

๊ทธ๋ฆฌ๊ณ  Windows ์ „์šฉ ๋น„์ฆˆ๋‹ˆ์Šค ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๋”๋ผ๋„ Microsoft๊ฐ€ UWP์— ์™„์ „ํžˆ ์ „๋…ํ–ˆ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•˜์ง€๋งŒ Office Online PWA๋ฅผ ์œ„ํ•ด Office UWP ์•ฑ์„ ํฌ๊ธฐํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? MS๊ฐ€ ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ UWP๋ฅผ ์‹ ๋ขฐํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? _๊ธฐ์นจ ์‹ค๋ฒ„๋ผ์ดํŠธ_

๊ณ ๋ง™๊ฒŒ๋„ WPF๋Š” ์•„์ง ํฌ๊ธฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚ด ์˜์‹ฌ์„ ๋”ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ์ž‘ํ’ˆ ๋ชจ๋‘ ์šฐ๋ฆฌ๋Š” ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜‚

https://www.theregister.co.uk/2020/02/28/winui_cross_platform/

ํ™€๋ฆฌ ๐Ÿคญ

๊ฐ๋…์ž! ๋‹ค๋ฅธ ํฐ ์ €๋„, ์›น ์‚ฌ์ดํŠธ ๋“ฑ์œผ๋กœ ํ™•์žฅํ•ฉ์‹œ๋‹ค ๐Ÿ˜›

์•ฑ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด Unity๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://unity.com/

์ด๋Ÿฌํ•œ ๋ชจ๋“  ์†”๋ฃจ์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฏธ๋‹ˆ ์šด์˜ ์ฒด์ œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค. Java๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๊ต๋ฌ˜ํ•˜๊ฒŒ ์œ„์žฅํ•œ ์šด์˜ ์ฒด์ œ์˜€์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด์ œ ๋ฏธ๋‹ˆ OS์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ๋“ค๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WinUI/UWP๋Š” Windows 10 ์ด์ƒ์˜ ๊ธฐ๋ณธ UI์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ณณ์—์„œ ์‹คํ–‰๋˜๋Š” XAML ์—”์ง„์„ ๊ฐ–๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด Unity์™€ ๊ฐ™์€ ์—ญํ’์— ๋งž์„œ ๋‚ ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. Microsoft๊ฐ€ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ XAML์„ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก Silverlight๋ฅผ ๋‹ค์‹œ ๊ฐœ๋ฐœํ•˜๊ธฐ ์ „์— ์„ธ๋ จ๋œ ๊ณ ํ’ˆ์งˆ UWP๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๊ทธ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ–ˆ๋Š”์ง€ ์••๋‹ˆ๋‹ค. Unity๋ฅผ ๋ณด์ง€ ์•Š์•˜๋‹ค๋ฉด ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋งŽ์€ ์ฝ”๋”ฉ๊ณผ ๋” ๋งŽ์€ ๋””๋ฒ„๊น…์„ ์ˆ˜ํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฃผ์—๋Š” ๋ช‡ ์ดˆ ๋งŒ์— ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” UWP์šฉ VS ํ…œํ”Œ๋ฆฟ ์„ธํŠธ๋ฅผ ์ถœ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "๋‚ด๋ถ€" ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VS์—๋งŒ ์˜ฌ๋ฐ”๋ฅธ ๋นŒ๋”ฉ ๋ธ”๋ก์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด UWP๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ RAD ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฆ๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฃผ์—๋Š” ๋ช‡ ์ดˆ ๋งŒ์— ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” UWP์šฉ VS ํ…œํ”Œ๋ฆฟ ์„ธํŠธ๋ฅผ ์ถœ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "๋‚ด๋ถ€" ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VS์—๋งŒ ์˜ฌ๋ฐ”๋ฅธ ๋นŒ๋”ฉ ๋ธ”๋ก์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด UWP๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ RAD ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฆ๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@Noemata ๋ฉ‹์ง€๋„ค์š” ! ์ƒ๋‹นํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค!

๋ชจ๋“  ๋””์ž์ธ ์–ธ์–ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” .Net ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ. ๋” ์ด์ƒ ๋ณด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. Comet์ž…๋‹ˆ๋‹ค.

https://github.com/Clancey/Comet

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

์„ ์–ธ์  UI์™€ MVU ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Microsoft์˜ ์ˆ˜์„ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ์ž ์„ค๊ณ„์ž์ธ James Clancey๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ด€์‹ฌ์ด ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Comet์—์„œ UI๋Š” ๋‹จ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ ๋ฟ์ด๋ฏ€๋กœ Comet์ด Material Design ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž(๋˜๋Š” Microsoft๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ)๊ฐ€ WinUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋””์ž์ธ ์–ธ์–ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” .Net ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ. ๋” ์ด์ƒ ๋ณด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. Comet์ž…๋‹ˆ๋‹ค.

@nerocui ๋ฉ‹์žˆ๊ฒŒ ๋“ค๋ฆฌ์ง€๋งŒ ์ ์–ด๋„ ๋ณด๊ธฐ์—๋Š” XAML ๋””์ž์ด๋„ˆ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ UI๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ํ˜„์žฌ ๋‹จ๊ณ„์—์„œ ๋ฏธ์นœ ์ง“์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๋””์ž์ธ ์–ธ์–ด์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” .Net ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ. ๋” ์ด์ƒ ๋ณด์ง€ ๋งˆ์‹ญ์‹œ์˜ค. Comet์ž…๋‹ˆ๋‹ค.

@nerocui ๋ฉ‹์žˆ๊ฒŒ ๋“ค๋ฆฌ์ง€๋งŒ ์ ์–ด๋„ ๋ณด๊ธฐ์—๋Š” XAML ๋””์ž์ด๋„ˆ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•œ UI๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์•„๋งˆ๋„ ํ˜„์žฌ ๋‹จ๊ณ„์—์„œ ๋ฏธ์นœ ์ง“์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์ด ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋””์ž์ด๋„ˆ์—์„œ UI๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฏธ๋ฆฌ ๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฃผ์—๋Š” ๋ช‡ ์ดˆ ๋งŒ์— ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” UWP์šฉ VS ํ…œํ”Œ๋ฆฟ ์„ธํŠธ๋ฅผ ์ถœ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "๋‚ด๋ถ€" ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VS์—๋งŒ ์˜ฌ๋ฐ”๋ฅธ ๋นŒ๋”ฉ ๋ธ”๋ก์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด UWP๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ RAD ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฆ๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NoesisGUI๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด LOB ์•ฑ์— ํ•„์š”ํ•œ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Unity๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” WinUI๋Š” ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” XAML์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ ์‚ฌ๋žŒ๋“ค์ด XAML์˜ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‚˜์—ดํ•˜๋Š” ํ†ต์ฐฐ๋ ฅ๊ณผ ์‹ค์ œ ์ฝ”๋“œ ์กฐ๊ฐ์œผ๋กœ ๋„์›€์„ ์ฃผ๊ณ  ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://github.com/gatewayprogrammingschool/XAML-ํ‘œ์ค€ํ™”

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ, ์˜ค๋Š˜๋‚ ์˜ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋„˜์–ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ๊ฒƒ์„ ์ˆ˜์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฏธ UI๊ฐ€ ์•„๋‹Œ Windows/OS์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒŒ๋“œ๋ฐ•์Šค ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ด์šฉํ•˜์„ธ์š”.


๋ณด๋‚ธ ์‚ฌ๋žŒ: anthonyadame [email protected]
๋ณด๋‚ธ ๋‚ ์งœ: 2020๋…„ 2์›” 29์ผ ํ† ์š”์ผ ์˜คํ›„ 8:00:13
๋ฐ›๋Š” ์‚ฌ๋žŒ: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋” ์ƒคํ”„ ๋‹Œ์ž [email protected] ; ๋Œ“๊ธ€ [email protected]
์ œ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] ํ† ๋ก : WinUI๋Š” ํ”Œ๋žซํผ ๊ฐ„(#2024)์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ, ์˜ค๋Š˜๋‚ ์˜ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋„˜์–ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์— ํ•„์š”ํ•œ ๊ฒƒ์„ ์ˆ˜์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฏธ UI๊ฐ€ ์•„๋‹Œ Windows/OS์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์ธก๋ฉด์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
GitHub์˜์— ๊ทธ๊ฒƒ์„ ์ง์ ‘์ด ์ด๋ฉ”์ผ์— ํšŒ์‹  ๋ณผ https://github.com/microsoft/microsoft-ui-xaml/issues/2024?email_source=notifications&email_token=AD3GCLAISGPMJCQ4AYDPDLLRFG6S3A5CNFSM4K3JAUQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENMOWIY#issuecomment-593029923 , ๋˜๋Š” ํƒˆํ‡ด https://github.com/ ์•Œ๋ฆผ/๊ตฌ๋… ์ทจ์†Œ-์ธ์ฆ/AD3GCLDKTTDCWIJ2ED3OKC3RFG6S3ANCNFSM4K3JAUQA .

๊ณ ์„ฑ๋Šฅ C++ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ C#๊ณผ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ UWP์—์„œ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. DirectX ํ‘œ๋ฉด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋„ ํ›จ์”ฌ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@Noemata ๋‚ด๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ๊ฒƒ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ C++๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  WinDev๋Š” C++ API, Managed Direct X, XNA, .NET์˜ ์ ์ ˆํ•œ AOT ์ปดํŒŒ์ผ๊ณผ ๊ด€๋ จํ•˜์—ฌ .NET ์–ธ์–ด๋ฅผ ๋ˆˆ๊ณผ ๋ˆˆ์„ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ์‹œ๋„๋ฅผ ๊ณ„์† ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ, COM ๊ธฐ๋Šฅ, ....

WinUI 3.0์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ธฐ์กด .NET/Forms ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ WinUI๋กœ ์ด์‹ํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ˆ˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” macOS๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋ฉฐ Windows์™€ ๋™์ผํ•œ ์„ฑ๋Šฅ์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ฐ™์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Windows๋Š” ์ฐธ์กฐ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” DirectX์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— macOS๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด HTML+JS์—์„œ ๋Œ€๊ทœ๋ชจ C# ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด ๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ C#์ด ๋” ๋‚˜์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค.

๋ฐ์Šคํฌํ†ฑ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ C# ๋ฐ XAML์ด HTML+JS๋ณด๋‹ค ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

WinUI 3.0์„ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ .NET, C# ๋ฐ XAML์˜ ๋ฏธ๋ž˜๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…• ๋ชจ๋‘

์ €๋Š” ๋Ÿฐ๋˜์—์„œ ์ผํ•˜๋Š” WPF ๊ณ„์•ฝ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์ €๋Š” 2006๋…„๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ธˆ์œต ๊ธฐ๊ด€์„ ์œ„ํ•ด WPF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๊ณ ์„ฑ๋Šฅ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ œ ์˜๊ฒฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) ๋‚˜๋Š” ์˜๊ตญ์˜ ๊ณ ์šฉ ์‹œ์žฅ์„ ์˜ˆ์˜์ฃผ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2006๋…„ ์ดํ›„ ๊ด‘๊ณ ๋œ WPF ์ž‘์—…์˜ 100%(๊ทธ ์ค‘ 1000๊ฐœ)๋Š” ๊ธˆ์œต ๋ถ€๋ฌธ์„ ์œ„ํ•œ ๊ณ ์„ฑ๋Šฅ ๊ธˆ์œต ๊ฑฐ๋ž˜ ๋ฐ์Šคํฌํƒ‘ ์•ฑ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฐ์—… ๋ถ„์•ผ์˜ UWP ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•ด ์•„์ง ๊ตฌ์ธ ๊ด‘๊ณ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

2) ์ด๋Ÿฌํ•œ ๋ฐ์Šคํฌํ†ฑ ๊ฑฐ๋ž˜ ์•ฑ์€ UWP ๋˜๋Š” ๊ณง ์ถœ์‹œ๋  WinUI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณต์žกํ•œ ์ด์œ ๋กœ WPF์— ๋น„ํ•ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Fluent ๋””์ž์ธ์€ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Excel ๊ทธ๋ฆฌ๋“œ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜, ์Šคํƒ€์ผ ์ง€์ • ์—†์ด ๋ฐ์ดํ„ฐ์™€ ๋†€๋ผ์šด ์„ฑ๋Šฅ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

3) ์ด ๊ณ ๊ฐ์€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์†”๋ฃจ์…˜์— ์ „ํ˜€ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ Mac์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋ฐ”์ผ์—๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค.

4) ์ด๋Ÿฌํ•œ WPF ๊ฐœ๋ฐœ ํŒ€์€ ํƒ€์‚ฌ WPF ์ œ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ง‰๋Œ€ํ•œ ํˆฌ์ž(์‹œ๊ฐ„๊ณผ ๋น„์šฉ)๋ฅผ ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋‚˜ ๊ฐ™์€ ์‚ฌ๋žŒ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ๋œ ๋ณต์žกํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ์‚ฌ์šฉ์ž ์ง€์ • ์ œ์–ด ์ œํ’ˆ๊ตฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋งค์šฐ ์ค‘์š”ํ•œ ์ด์ ์ด ์—†๋Š” ํ•œ WPF์—์„œ ๋ฉ€์–ด์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5) ์ด๋Ÿฌํ•œ ๊ธˆ์œต ๊ธฐ๊ด€์˜ ๊ฒฝ์šฐ ๋ฐ์Šคํฌํƒ‘/WPF์šฉ์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์›น ๊ธฐ์ˆ  ๋ฐ Javascript๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๋ณด๋‹ค ๋” ์ด๊ตญ์ ์ธ ๊ฒƒ์—๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌํ„ฐ, ๋ธ”๋ ˆ์ด์ € ๋“ฑ.

์ด๊ฒƒ์ด ์˜๊ตญ์˜ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ ๋ช…์˜ WPF ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น ๋ฅธ ์‹œ์ผ ๋‚ด์— ์ƒˆ๋กœ์šด ๋ถ„์•ผ๋กœ ์ด๋™ํ•  ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UWP ๊ฐœ๋ฐœ์ž ์—†์Œ

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

์ €์—๊ฒŒ๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ํฌ์ƒํ•˜์ง€ ์•Š๊ณ  Microsoft์—์„œ WPF์— ์ง์ ‘ ๋” ๋งŽ์€ ํˆฌ์ž๋ฅผ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ธˆ์†์— ๋” ๊ฐ€๊น๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” C++์—์„œ WPF ์ง€์› ์ œ์–ด ๊ฐœ๋ฐœ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐ”์ธ๋”ฉ ๊ธฐ์ˆ , ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ํ…œํ”Œ๋ฆฟ, ๋ถ€๋ถ„ ์ƒ์†์„ ํฌํ•จํ•œ ๋” ๋‚˜์€ ์ปจํŠธ๋กค ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋””๋ฒ„๊น… ๋„๊ตฌ์™€ ์‹œ๊ฐ์  ํŠธ๋ฆฌ ๋ถ„์„๊ธฐ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. XAML ๋””๋ฒ„๊น…์ด ๋” ๊ตฌ์ฒดํ™”๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. UI์—์„œ ๋” ๋‚˜์€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ์ง€์›์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งŽ์€ ๊ฒƒ์„ ์›ํ•˜๊ณ  ๋™๋ฃŒ ์˜๊ตญ WPF ๊ณ„์•ฝ์ž๋“ค๋„ ์›ํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ Microsoft ๋กœ๋“œ๋งต์€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ํ•˜๋‚˜๋„ ์—†๊ณ  ๊ด€์‹ฌ๋„ ์—†๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

@deanchalk ๋‚˜๋Š” ์ด๊ฒƒ์˜ ๋Œ€๋ถ€๋ถ„์ด WPF์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด WPF ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋” ์ž˜ ๋ฐฐ์น˜๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„ WinUI ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…/์ด ๋ฌธ์ œ์—์„œ ๋…ผ์˜๋œ ์ž‘์—…์— ๊ด€์‹ฌ์ด ์—†๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์œ ํšจํ•œ ์ž…๋ ฅ์ด์ง€๋งŒ ๋ฌดํšจ ํ† ๋ก ์„ ๋„˜์–ด ๊ฑด์„ค์ ์ธ ๊ฒƒ์œผ๋กœ ์ด์–ด์ง€์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@weltkante @deanchalk WinUI ์—์„œ "๋ ˆ๊ฑฐ์‹œ ์ œ์–ด ์ง€์›"์„ ์š”์ฒญํ•˜๋Š” ์ €์žฅ์†Œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/microsoft/microsoft-ui-xaml/issues/1833
์ตœ์†Œํ•œ 4) ํ•ญ๋ชฉ์€ ํ•ด๋‹น ๋ฌธ์ œ์— ์ ํ•ฉํ•˜๋ฉฐ Microsoft์˜ ํˆฌ์ž ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ํ•ญ๋ชฉ์— ๋‹ค์‹œ ๊ฒŒ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@deanchalk , ์ €๋Š” ์—ฌ์ „ํžˆ WPF์˜ ์—ด๋ ฌํ•œ ํŒฌ์ž…๋‹ˆ๋‹ค. ๊ณ ๋ง™๊ฒŒ๋„ Microsoft์˜ ์‚ฌ๋ž‘์„ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ•œ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Microsoft๊ฐ€ ์ฒ˜์Œ์— WPF๋ฅผ ์‚ญ์ œํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๋ฐฉ์‹์€ ๊ฐ€์žฅ ๋ถˆํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. UWP๋Š” ๋น›๋‚˜๋Š” ์ƒˆ ์žฅ๋‚œ๊ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— WPF์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํˆฌ์ž๋ฅผ ๋ฐฉํ•ดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

UWP๋Š” ์—ฌ๋Ÿฌ ๋ฉด์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ๋Š” WPF๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ ๋ คํ–ˆ์„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ฌด์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๋‹จ์ผ ์กฐ์ง์˜ ๋ฒฝ ๋‚ด์—์„œ XAML ์กฐ๊ฐํ™”์˜ ๋‹ค์†Œ ๋†€๋ผ์šด ์ƒํƒœ์ž…๋‹ˆ๋‹ค. WPF != Silverlight != UWP != ์ž๋งˆ๋ฆฐ. ์™€!

์ €๋Š” 2020๋…„์— WPF์— ์ž์‹ ์„ ํ™•๊ณ ํžˆ ํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ WPF ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋œ ๋™์ •์ ์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ์ด ์ƒ๋‹นํžˆ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WinRT API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” XAML ์•„์ผ๋žœ๋“œ๋Š” UWP๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ•˜๋Š” ๋งค์šฐ ์‰ฌ์šด ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„๋งค ์ „ํ™˜์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ UWP๊ฐ€ ๋” ์ด์ƒ ๋ถ€์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋” ํฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์— ๋Œ€ํ•œ Microsoft์˜ ๋ช…ํ™•์„ฑ์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. XAML Nirvana๋ฅผ ๊ธฐ๋Œ€ํ–ˆ๋˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ UWP๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์žฌ์ƒ๋˜๊ณ  ์žˆ๋Š” Silverlight์˜ ์‹คํŒจ๋ฅผ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

WinUI๋Š” ๋ถ„๋ช…ํžˆ UWP๋กœ ๋ ˆ์ด๋ธ”์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ชฉ๊ฒฉํ•˜๋Š” ๊ฒƒ์ด ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ UWP๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์žŠ์–ด๋ฒ„๋ฆฌ๊ธฐ๋ฅผ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ์™ผ์†์ด ์˜ค๋ฅธ์†์ด ํ•˜๋Š” ์ผ๊ณผ ํ•ญ์ƒ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. WindowsX๋Š” Win32์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋ชจ๋“  ๊ฒƒ(WPF/Winforms/etc.)์„ ๋‚ฎ์€ ์„ฑ๋Šฅ์˜ ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ "์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”" ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ํฌ๋ฏธํ•œ ์ „๋ง์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. UWP๋Š” ํ˜„์žฌ Windows 10, WindowsX ๋ฐ ์ดํ›„ ๋ฒ„์ „์˜ ๊ธฐ๋ณธ UI์ž…๋‹ˆ๋‹ค. WinRT API๋Š” Win32์— ๋น„ํ•ด ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 2020๋…„๋Œ€๋กœ ๋„˜์–ด๊ฐˆ์ง€ 2010๋…„๋Œ€์— ๋‚ด๋†“์„์ง€ ์„ ํƒํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”.

WinUI๋Š” ๋ถ„๋ช…ํžˆ UWP๋กœ ๋ ˆ์ด๋ธ”์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ชฉ๊ฒฉํ•˜๋Š” ๊ฒƒ์ด ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Microsoft๋Š” ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ UWP๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์žŠ์–ด๋ฒ„๋ฆฌ๊ธฐ๋ฅผ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.

@Noemata WinUI๋Š” UWP API(XAML, Composition, Input,...)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์‹ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๊ธฐ๋ณธ ์•ฑ ๋ชจ๋ธ์— ๊ด€๊ณ„์—†์ด Windows ์•ฑ์šฉ UI๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์š”. ๋‹น์‹ ์€ ๋งˆ์ง€๋ง‰ ๋‹จ๋ฝ์—์„œ 10X๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. UWP ์•ฑ ๋ชจ๋ธ ์ž์ฒด๊ฐ€ Windows 10X์—์„œ ์ถ”์ง„๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ 10X๊ฐ€ ์„ฑ๊ณตํ• ์ง€ ์—ฌ๋ถ€๋Š” ์‹œ๊ฐ„์ด ๋งํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MS๋Š” ๋ฉ”์‹œ์ง€์—์„œ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. UWP๋Š” ๊ท€ํ•˜๊ฐ€ ์ง€์ ํ•œ ๋Œ€๋กœ 10X(์›น๊ณผ ํ•จ๊ป˜)์˜ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

@Noemata ๋Š” 2020๋…„๊นŒ์ง€ 2010๋…„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋”ฐ๋ผ์žก์•˜๊ณ  ์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด 2010๋…„์— ๋จธ๋ฌผ๋Ÿฌ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ค‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Silverlight, XNA๋ฅผ ์‚ญ์ œํ•˜๊ณ  MS๊ฐ€ .NET Core, WinUI์— ํ•„์š”ํ•œ ์žฌ์ž‘์„ฑ์„ ์–ด๋–ป๊ฒŒ ์†์œผ๋กœ ํ”๋“œ๋Š”์ง€ ๋ณด๋ฉด์„œ ์‹œ์ž‘ํ•˜๋Š” ์žฌ์ž‘์„ฑ ํŠธ๋ ˆ์ธ์— ์ง€์ณค์Šต๋‹ˆ๋‹ค. ๋” ์ ์€ ๊ธฐ๋Šฅ์„ ๋˜์ฐพ๊ธฐ ์œ„ํ•ด ์žฌ์ž‘์„ฑ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๋Š” ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ฐ.

ํ˜„์žฌ Android ๋ฐ Windows 10 X ํƒœ๋ธ”๋ฆฟ์ด ์žˆ๋Š” ์˜๋ฆฌํ•จ ๋•๋ถ„์— ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์€ WinUI๊ฐ€ ์•„๋‹ˆ๋ผ Xamarin ๋ฐ PWA์ž…๋‹ˆ๋‹ค.

@pjmlp , ์•„๋งˆ๋„. ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ํฐ WPF ์•ฑ์„ UWP๋กœ ์ด์‹ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋Š” ๋ณด์•ˆ ์ƒŒ๋“œ๋ฐ•์Šค์™€ ์ด์— ๋งž์„œ ์‹ธ์šฐ๊ธฐ๋ณด๋‹ค๋Š” ํ•จ๊ป˜ ์ผํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” Data Grid, DB ์—ฐ๊ฒฐ, ๊ณ ์† ํ†ต์‹ ์„ ์œ„ํ•œ ์ ์ ˆํ•œ API ๋“ฑ๊ณผ ๊ฐ™์€ ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ถ€์กฑํ•œ ๊ฒƒ์ด ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. WPF์—์„œ๋Š” ๊ฑฐ์˜ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณตํ‰ํ•˜๊ฒŒ ๋งํ•ด์„œ, ํ˜„์žฌ๋กœ์„œ๋Š” UWP๊ฐ€ ๋” ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ๋” ๋‚˜์€ DirectX ๋ Œ๋”๋ง ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋” ๋‚ฎ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  WinRT API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ WPF์—์„œ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ IP๋ฅผ ๋ณดํ˜ธํ•˜๊ฑฐ๋‚˜ ์นจ์ž…์ž๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ WPF ์ฝ”๋“œ๋ฅผ ๋‚œ๋…ํ™”(๋” ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

@Felix-Dev WinUI๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. WPF, Winforms ๋ฐ MFC/Win32 ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌ๋งคํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋˜ ๋‹ค๋ฅธ ํฌํฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์ „๋žต์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋” ๋งค๋ ฅ์ ์œผ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋œ ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” UWP๋กœ ๋งŽ์€ ์ผ์„ ํ•ด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ๋Š” ํ’๋ถ€ํ•œ ์ƒ˜ํ”Œ ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Šฆ๊ฒŒ ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋„ˆ๋ฌด ๋Šฆ์—ˆ๋‚˜์š”?

@Noemata WinUI๋Š” OS์—์„œ UWP UI ์Šคํƒ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ๋‹จ๊ณ„์ด๋ฏ€๋กœ WinUI Desktop์ด ์žˆ๋“  ์—†๋“  ์–ด๋Š ์ชฝ์ด๋“  ๋ฐœ์ƒํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Windows 10์ด ์ฒ˜์Œ ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ WinUI๊ฐ€ ์ด๋ฏธ ์กด์žฌํ–ˆ๋‹ค๋ฉด ๊ฐ€์žฅ ์ข‹์•˜๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ๋Šฆ์—ˆ๋‹ค๋Š” ๊ฒƒ์€.... UWP ์ปค๋ฎค๋‹ˆํ‹ฐ ๋””์Šค์ฝ”๋“œ ์ฑ„๋„์—์„œ ๊ทธ๋Ÿฐ ํ† ๋ก ์„ ๋งŽ์ด ํ–ˆ๊ณ  ์—ฌ๊ธฐ์—์„œ๋„ ์ˆ˜์—†์ด ์—ด์ •์ ์ธ ๊ต๋ฅ˜๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ค‘ ์ผ๋ถ€๋Š” ๋ฐฐ๊ฐ€ ์ด๋ฏธ ํ•ญํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ ์ผ๋ถ€๋Š” ์—ฌ์ „ํžˆ UWP ํ”Œ๋žซํผ/WinUI๊ฐ€ ์„ฑ์žฅํ•˜๊ณ  ์„ฑ์ˆ™ํ•˜์—ฌ ์ฃผ์š” ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. MS์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: xplatform์œผ๋กœ ๊ฐˆ์ง€ ๋ง์ง€?). ์‚ฌ์‹ค, ํŒ€์€ ํ˜„์žฌ WinUI 3์— ๋Œ€ํ•ด ์—ด์‹ฌํžˆ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ฆด๋ฆฌ์Šค๋Š” ์ง„์ •ํ•œ ๋„์ „์— ์ฐฉ์ˆ˜ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Œ์„ ์•Œ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€์„ ๋ฐ›์•„ WinUI๋ฅผ ๋ฐœ์ „์‹œ์ผœ Windows๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํƒํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. .

@Noemata , ์šฐ์„  Telerik, Component One ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ์กด ํƒ€์‚ฌ ๊ตฌ์„ฑ ์š”์†Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ...

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์šฐ๋ฆฌ๋Š” ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ง€์ณค์Šต๋‹ˆ๋‹ค.

DirectX์™€ ๊ด€๋ จํ•˜์—ฌ WPF์˜ 3D ๋ชจ๋ธ๋ง ํด๋ž˜์Šค๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Microsoft๊ฐ€ DirectX์— ๋Œ€ํ•œ ๋Ÿฐํƒ€์ž„ ํ”„๋กœ์ ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‹ ๊ฒฝ์„ ์“ธ ์ˆ˜ ์—†๊ณ  ๋‹ค์†Œ ์œ ์พŒํ•œ C++/CX ๋ฐฉ์–ธ์ด ๋‹จ์–ด๋กœ ๋Œ€์ฒด๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— C++๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋Šฅ๋ ฅ์€ ๋–จ์–ด์ง€์ง€๋งŒ C++/WinRT์™€ ๋” ์ž˜ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” WPF ์ฝ”๋“œ๋ฅผ ๋ฒ„๋ ค์•ผ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ WCF, EF6 ์ฝ”๋“œ์—๋„ ๋˜‘๊ฐ™์ด ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ UWP๊ฐ€ Win32๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ API๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ๋“  Longhorn์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Microsoft๊ฐ€ ๋งŽ์€ ์กฐ์ง์˜ ์žฌ์ž‘์„ฑ ์˜ˆ์‚ฐ์„ ์†Œ์ง„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์ด ๋„ˆ๋ฌด ๋งŽ์€ ๋‹ค๋ฆฌ๋ฅผ ํƒœ์›Œ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

@pjmlp , ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋‹ค์†Œ ์˜จ๊ฑดํ•œ ๋ฐ˜๋ก ์„ ๊ฐ€์ง„ ์ข‹์€ ์ ์ด๋ฏ€๋กœ ์‹œ๋„์กฐ์ฐจํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. WPF 3D API์— ๋Œ€ํ•œ ์ง€์›์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ๊ฐœ์ธ์ ์œผ๋กœ ํฐ ํƒ€๊ฒฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. 3D์šฉ WPF ๋ฐ”์ธ๋”ฉ ์˜ต์…˜์„ ๊ณ ๋ คํ•  ๋•Œ ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ๋„ ์—†๊ณ  ๋Šฅ๋ ฅ๋„ ํ›จ์”ฌ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. UWP์—์„œ 3D์— ๋Œ€ํ•œ C# ๋Œ€์•ˆ์ด ์žˆ์ง€๋งŒ 3D ๋ชจ๋ธ์— ๋ฐ”์ธ๋”ฉํ•  ๋•Œ์˜ ์ด์ ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ๋‚˜๋ฉด ํ›จ์”ฌ ๋œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

C++/CX๋Š” C++/WinRT์—์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

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

@Felix-Dev, ๋‹น์‹ ๋„ ์™„์ „ํžˆ ์œ ํšจํ•œ ์ง€์ ์„ํ•ฉ๋‹ˆ๋‹ค. UI ๋””์ปคํ”Œ๋ง์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์กด์žฌํ–ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. XAML ๊ธฐ๋ฐ˜ xplatform UI๋ฅผ ์š”์ฒญํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์š”์ฒญ์„ ๋‹ค์‹œ ํ‘œํ˜„ํ•˜๊ณ  API ํ‘œ๋ฉด(๋‹ค๋ฅธ Java/Silveright/Uno Platform/Unity/Whateverโ€ฆ ๊ธˆ์† ์•ฑ์— ๊ฐ€๊นŒ์šด HTML๋กœ ๋๋‚˜๋Š” ๊ฒƒ์€ ๊ณ ๋ คํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค). ์ €๋Š” ํ˜„์žฌ ์ตœ์‹  MS ๋‚ด๋ถ€ ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋ฐ–์„ ๋‚ด๋‹ค๋ณด๋ฉด WinUI๋Š” ๋ฐฐ๊ฐ€ ๋‹ค์‹œ ๊ต์ •๋˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊นƒ๋ฐœ์„ ํ”๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๋ช‡ ๋ฒˆ ๋”?). Silverlight์˜ ์ฃฝ์Œ์œผ๋กœ Microsoft๋ฅผ ๋ฐฉ์–ดํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ๋Š” ๊ทธ ๊ฒ€์„ ๋“ค์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๋‚ด๊ฐ€ ์ง„์งœ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ด UWP์˜ ์ฃฝ์Œ์„ ํ•œํƒ„ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค :-( ... ๊ณ ํ†ต์Šค๋Ÿฝ๋‹ค. https://www.youtube.com/watch?v=uBiewQrpBBA

์ฐฐ๋ฆฌ == ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ

ํฌ๋กœ์Šค ํ”Œ๋žซํผ? ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” UNO๋ฅผ ์‚ฌ์„œ ๋๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋กœ์Šค ํ”Œ๋žซํผ? ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” UNO๋ฅผ ์‚ฌ์„œ ๋๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์†”๋ฃจ์…˜์ด ์ œ๊ณต๋˜๋“  ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์ผ์ข…์˜ ์›น ๋ณด๊ธฐ์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ๊ธฐ๋ณธ ์ฐฝ์ด๋‚˜ UI ํ‘œ๋ฉด์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— UI๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ Windows์—์„œ์™€ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

ํฌ๋กœ์Šค ํ”Œ๋žซํผ? ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” UNO๋ฅผ ์‚ฌ์„œ ๋๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์†”๋ฃจ์…˜์ด ์ œ๊ณต๋˜๋“  ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์ผ์ข…์˜ ์›น ๋ณด๊ธฐ์— ์˜์กดํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ๊ธฐ๋ณธ ์ฐฝ์ด๋‚˜ UI ํ‘œ๋ฉด์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์— UI๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ Windows์—์„œ์™€ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด Windows 7์„ ์ œ์™ธํ•˜๊ณ  UNO๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. Windows 7์€ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ฐ์Šคํฌํ†ฑ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•œ WPF ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” Wine์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Linux์—์„œ Wine์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ทœ๋ชจ WPF ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(๋Œ€๋ถ€๋ถ„ .NET Core WPF)์„ ์ด์‹ํ•˜๋Š” ๋ฐ ํฐ ์„ฑ๊ณต์„ ๊ฑฐ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://ccifra.github.io/PortingWPFAppsToLinux/Overview.html

๋˜ํ•œ ์ผ๋ถ€ WinForms ์•ฑ์„ Linux์— ์ด์‹ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” ์–ด๋–ค ๋ฌธ์ œ๋„ ๊ฒช์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Wine์€ ๋˜ํ•œ Mac, Chrome OS ๋ฐ Android์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฆฌ๋ˆ…์Šค ๋งŒ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ DirectX๋ฅผ ์ถ”์ƒํ™” ๊ณ„์ธต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ž‘๋™ํ•˜๊ณ  ๋”ฐ๋ผ์•ผ ํ•  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. .NET WASM์ด ๋” ์„ฑ์ˆ™ํ•ด์ง€๋ฉด WebGL์„ ์‚ฌ์šฉํ•˜๋Š” ์›น์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

AvaloniaUI๋Š” ์ด๋ฏธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ WinUI ๊ฐœ์„ ์„ ์œ„ํ•œ ๋„์›€๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ธ€์Ž„์š”, Uno Platform๋งŒํผ์€ ์•„๋‹™๋‹ˆ๋‹ค. Uno Platform์€ ์›น์—์„œ๋„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(WASM). ์•„๋ฐœ๋กœ๋‹ˆ์•„์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

Avalonia๋Š” ๋˜ํ•œ Uno๊ฐ€ ํ”ผํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ž์ฒด XAML ๋ฐฉ์–ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๋ณด๋‚ธ ์‚ฌ๋žŒ: Shimmy [email protected]
๋ณด๋‚ธ ๋‚ ์งœ: 2020๋…„ 3์›” 27์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 4:09:30
๋ฐ›๋Š” ์‚ฌ๋žŒ: microsoft/microsoft-ui-xaml [email protected]
์ฐธ์กฐ: ๋” ์ƒคํ”„ ๋‹Œ์ž [email protected] ; ๋Œ“๊ธ€ [email protected]
์ œ๋ชฉ: Re: [microsoft/microsoft-ui-xaml] ํ† ๋ก : WinUI๋Š” ํ”Œ๋žซํผ ๊ฐ„(#2024)์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

AvaloniaUI๋Š” ์ด๋ฏธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ WinUI ๊ฐœ์„ ์„ ์œ„ํ•œ ๋„์›€๊ณผ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ธ€์Ž„์š”, Uno Platform๋งŒํผ์€ ์•„๋‹™๋‹ˆ๋‹ค. Uno Platform์€ ์›น์—์„œ๋„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(WASM). ์•„๋ฐœ๋กœ๋‹ˆ์•„์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/microsoft/microsoft-ui-xaml/issues/2024#issuecomment-604893750 ์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/ ๊ตฌ๋…์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ WinUI ๊ธฐ์ˆ ์€ Sliverlight์—์„œ ๋‚˜์™”๊ณ  Sliverlight๋Š” ์‹ค์ œ๋กœ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ WinUI ํฌ๋กœ์Šค ํ”Œ๋žซํผ์€ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ ์ „๋žต์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ... ์‹ค์ œ๋กœ Microsoft๊ฐ€ ๋”ฐ๋ผ์žก๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์ •๋ง ํ•œ์‹ฌํ•œ ์ผ์ž…๋‹ˆ๋‹ค... ๊ทธ๋“ค์€ "ํฐ" ์‹œ์žฅ ์ ์œ ์œจ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๊ณ  ๊ณ ๊ฐ/์ œํ’ˆ ํŒฌ์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” DESKTOP APP ๊ฐœ๋ฐœ์ด ์›น ๊ฐœ๋ฐœ์ด ๋„ˆ๋ฌด ๋”์ฐํ•  ๋•Œ์—๋„ ๊ตฌ์‹ WEB ๊ฐœ๋ฐœ๋กœ ์˜ฎ๊ฒจ๊ฐ„ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  XAML ๊ฐœ๋ฐœ์ž๋Š” HTML/CSS๊ฐ€ ๋„ˆ๋ฌด ์“ฐ๋ ˆ๊ธฐ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ... HTML, CSS, DOM... React, Angular, Vue์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ข€ ๋” ์ฆ๊ฒ๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ด ๊ตฌ์‹ ์›น์— ์ง‘์ค‘ํ–ˆ๊ณ , 2-4๋…„๋งˆ๋‹ค ์ƒˆ๋กœ์šด ํ”Œ๋žซํผ์„ ์œ„ํ•ด ์ฃฝ๋Š” Microsoft์˜ ์ƒˆ๋กœ์šด ํ์‡„ ์†Œ์Šค Windows ์ „์šฉ ํ”Œ๋žซํผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

XAML ๊ธฐ๋ฐ˜ Win-app ํ”Œ๋žซํผ์€ ๋ช‡ ๋…„ ์ „์— ์˜คํ”ˆ ์†Œ์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. WEBSITE, Windows, Mac, Linux, Android(๊ณ ๊ฐ์ด ์›ํ•˜๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ)์— ํ•œ ๋ฒˆ๋งŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Windows ์Šคํ† ์–ด๋Š” XAML/UWP ์•ฑ ๋ Œ๋”๋Ÿฌ์™€ ํ”Œ๋žซํผ ๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (Google ํฌ๋กฌ์ด HTML/CSS ๋ Œ๋”๋Ÿฌ์™€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ธ ๊ฒƒ๊ณผ ์œ ์‚ฌ).

Microsoft์˜ ํ™ฉ๊ธˆ๊ธฐ์—๋Š” XAML ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์•ฑ์ด ์›น์„ ํŒŒ๊ดดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” ์ด CSS, HTML, DOM ๋ฐ ์ˆ˜๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์•„๋‹™๋‹ˆ๋‹ค. ๋…์  ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ Microsoft์˜ ์ง‘์ฐฉ์œผ๋กœ ์ธํ•ด ์›น์—์„œ ํŒจ๋ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•œํŽธ Google์˜ Flutter๋Š” XAML์— ๋Œ€ํ•ด ํ•ญ์ƒ ์›ํ•˜๋˜ ๊ฒƒ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

WinUI 3๊ฐ€ MAUI์˜ ๋Œ€์ƒ ํ”Œ๋žซํผ์ด ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. Uno ํ”Œ๋žซํผ์€ ์ด๋ฏธ WinUI 3 Preview๊ฐ€ ์ง€์›๋œ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ @jeromelaban /Microsoft ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง๋กœ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ Uno/MAUI ํ†ตํ•ฉ์ž…๋‹ˆ๊นŒ? MAUI๋Š” ์›น(๋ธŒ๋ผ์šฐ์ €) ๋Œ€์ƒ์ด ์—†๋Š” Flutter ๋˜๋Š” Uno๋ณด๋‹ค ๋œ ์œ ์šฉํ•œ IMO์ž…๋‹ˆ๋‹ค.

MAUI ์ €์žฅ์†Œ ์—๋„ ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

์–ด๋””์„œ๋‚˜ WPF(์‹ค๋ฒ„๋ผ์ดํŠธ)!

DirectX๋ฅผ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์œผ๋กœ ์ด์‹ํ•˜๋Š” ๊ฒƒ์€ ๋ฐฉ๋Œ€ํ•œ ์ž‘์—…์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํ•ด๊ฒฐ์ฑ…์€ DirectX ๋Œ€์‹  OpenGL ๋˜๋Š” Vulkan์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Google์—๋Š” ํ˜ธ์ถœ ๋ฐ ์…ฐ์ด๋”๋ฅผ ๊ธฐ๋ณธ API(๋ฐ์Šคํฌํ†ฑ gl[swiftshader ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋Ÿฌ์—์„œ ์ œ๊ณต], vulkan, directx, metal)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ OpenGL ES๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ANGLE์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Skia์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” Chrome ๋ฐ Flutter์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

Microsoft๋Š” GUI ์•ฑ์šฉ DirectX์˜ ์ž‘์€ ๋ถ€๋ถ„(์‹œ์ž‘์ ์œผ๋กœ ์‚ผ์„ ์ˆ˜ ์žˆ์Œ)์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ANGLE์ฒ˜๋Ÿผ ๋„ค์ดํ‹ฐ๋ธŒ API๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Lonje ์ฑ„ํŒ… https://www.lonje.com/message/1968439855/ ์—์„œ ์–ธ๊ธ‰๋จ

๋‚˜๋Š” ์ •๋ง๋กœ WinUI๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ํ…Œ๋งˆ๋ฅผ ๊ณ„์† ์ง€์›ํ•˜๋ฉด์„œ Mac๊ณผ Linux์—์„œ ๊ธฐ๋ณธ ํ…Œ๋งˆ๋„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Mac ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Linux ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ฐ์Šคํฌํƒ‘์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋“ค์€ ์ด๋ฏธ Gtk๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ WinUi ํ”„๋ ˆ์ž„์›Œํฌ์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ •๋ง๋กœ WinUI๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ํ…Œ๋งˆ๋ฅผ ๊ณ„์† ์ง€์›ํ•˜๋ฉด์„œ Mac๊ณผ Linux์—์„œ ๊ธฐ๋ณธ ํ…Œ๋งˆ๋„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Mac ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Linux ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๋ฐ์Šคํฌํƒ‘์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋“ค์€ ์ด๋ฏธ Gtk๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ WinUi ํ”„๋ ˆ์ž„์›Œํฌ์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

WinUI๋Š” ์Šคํƒ€์ผ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํ™•์‹คํžˆ ํ•˜๊ธฐ ์–ด๋ ค์šด ์ž‘์—…์ด๋ฉฐ ๊ธฐ๋ณธ XAML ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ธฐ๋ณธ ํ…Œ๋งˆ๋„ ์ œ๊ณต๋˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ…Œ๋งˆ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ณผ๊ฑฐ์— ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ macOS ๋ฐ iOS์šฉ Metal Renderer๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  Android์šฉ Skia ๋ Œ๋”๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ๋ฐ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Android ๋ฐ macOS ์Šคํƒ€์ผ์˜ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ๋ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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