Mono๋ฅผ ์‚ฌ์šฉํ•œ C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ฐ˜์‘ํ˜•

๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ , ๊ณต๋ถ€๋ฅผ ํ•˜๊ฒŒ ๋œ ์ €๋Š” C#์ด๋ผ๋Š” ์–ธ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  C# ์–ธ์–ด๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ์ •์‹์œผ๋กœ ๋ฐฐ์šด ์–ธ์–ด๋„ ์•„๋‹ˆ์—ˆ๊ณ , ๊ธฐ๊ปํ•œ ๊ฒƒ์ด๋ผ๊ณ ๋Š” Visual Basic ์–ธ์–ด๋ฅผ ํƒˆํ”ผํ•˜๊ณ ์ž ์ž ์‹œ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒƒ ์ •๋„์˜€์Šต๋‹ˆ๋‹ค.



Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

C# ์–ธ์–ด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ์ ์–ด๋ณด๊ธฐ ์ „์— ์ด ์–ธ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ๋ถ€ํ„ฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

C# ์–ธ์–ด๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” C++ ์–ธ์–ด ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋ฌธ๋ฒ•์€ C++์™€ Java ๋น„์Šทํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ Java์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.


C# ์–ธ์–ด๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ .NET Framework์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์ตœ์ดˆ .NET Framework 1.0 ๋ฒ„์ „์ด ๋‚˜์˜จ ๊ฒƒ์€ 2002๋…„ ์ •๋„์ธ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ ๋•Œ๋งŒํ•ด๋„ .NET Framework์˜ ์„ฑ๋Šฅ์€ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (๋ฌด์Šจ ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ, ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋Œ์•„๊ฐ€๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ํ„ฐ๋ฌด๋‹ˆ ์—†์ด ๋Š๋ ธ์ง€์š”.)


C#์€ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ C#์„ ์ž ๊น ์‚ฌ์šฉํ–ˆ์—ˆ์„ ๋•Œ๋งŒ ํ•ด๋„ Visual Basic๊ณผ ๋˜‘๊ฐ™์ด Windows Form์„ ์‚ฌ์šฉํ•ด์„œ ์‰ฌ์šด ์ปดํฌ๋„ŒํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , (JavaFX์— ๋น„ํ•˜๋ฉด ์—„์ฒญ๋‚œ ํŽธ๋ฆฌํ•จ๊ณผ ์„ฑ๋Šฅ์„ ์ œ๊ณต) ํ˜„์žฌ๋Š” WPF ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด MVPP ํŒจํ„ด์œผ๋กœ ๋” ์‰ฝ๊ฒŒ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ง€๊ธˆ์˜ C# ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ์˜ˆ์ „ Boland ํšŒ์‚ฌ(์ง€๊ธˆ์€ Codegear)์—์„œ ๊ฐœ๋ฐœํ•œ Delphi/C++ Builder์™€ ๋น„์Šทํ•œ๋ฐ, Microsoft๊ฐ€ C# ๊ฐœ๋ฐœ์„ ์œ„ํ•ด  Anders Hejlsberg ์„ ์˜์ž…ํ•œ ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์ด์œ ๋กœ ๊ผฝํžˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ €๋„ ์ตœ๊ทผ์— Embacadero RAD Studio ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ์ปดํฌ๋„ŒํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ตœ๊ฐ•์ž๋ผ๊ณ  ๋ถˆ๋ฆฌ์šธ ์ •๋„๋กœ ๊ฐ•๋ ฅํ•˜๊ณ , ์‰ฌ์šด ์ปดํฌ๋„ŒํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. "RAD Studio"๋ผ๋Š” ์ด๋ฆ„์ด ์•„๊น์ง€ ์•Š์„ ์ •๋„๋กœ ๋ง์ด์ฃ ... (ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฑด ๋ผ์ด์„ผ์Šค ๋น„์šฉ์ด ๋ฌด๋ ค 1000๋งŒ์›์ด ๋„˜๋Š”๋‹ค๋Š” ๊ฒƒ;;;)



.NET Framework

.NET Framework(๋‹ท๋„ท ํ”„๋ ˆ์ž„์›Œํฌ)๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์กฐ๊ธˆ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”๋ฐ, .NET Framework๋Š” Java๋กœ ๋งํ•˜์ž๋ฉด JRE์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋žจ์€ .NET Framework ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐ€๋” ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ๋•Œ๋งˆ๋‹ค .NET Framework ํ˜น์€ Visual C++ Runtime ๋“ฑ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”. 


๋ณ„๋„์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด Java์™€ ๋˜‘๊ฐ™์ด Garbage Collection์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ C/C++ ์–ธ์–ด์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋Š ์‹œ์ ์— ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋ฐ˜๋‚ฉํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๋”ฐ๋กœ ์ •ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†์–ด ๊ฐœ๋ฐœ์ด ์‰ฝ๋‹ค๋Š” ์žฅ์ ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์ง€๋งŒ, Java์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, C/C++์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ์ข‹์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.



Mono ์ž…๋ฌธ๊ณผ ์„ค์น˜

C# ์–ธ์–ด์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ Windows Platform์—์„œ๋งŒ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋‹จ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, NIX ๊ณ„์—ด ํ”Œ๋žซํผ์—์„œ .NET์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Mono๊ฐ€ ๊ฐœ๋ฐœ์ด ๋˜์—ˆ๊ณ , ์ž‘๋…„ ์ •๋„ ์•ˆ์ •ํ™”๊ฐ€ ๋˜๋ฉด์„œ ์ตœ์ข…์ ์œผ๋กœ NIX ๊ณ„์—ด์— ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 


- MonoDevelop IDE

- Xamarin Studio IDE


Mono๋ฅผ ํ†ตํ•œ C# ๊ฐœ๋ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์œ„์˜ ๋‘ ๊ฐ€์ง€ IDE ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” OS X ์šฉ Visual Studio๊ฐ€ Beta ๋ฒ„์ „์œผ๋กœ Release ๋˜์–ด์žˆ์–ด์„œ Visual Studio๋กœ๋„ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Linux ๊ณ„์—ด์—์„œ๋Š” ์•„์ง Visual Studio IDE๊ฐ€ ๊ฐœ๋ฐœ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ MonoDevelop IDE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋Ÿฌ๋ฉด ๋ณธ๊ฒฉ์ ์œผ๋กœ Linux์—์„œ Mono๋ฅผ ์„ค์น˜ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


$ sudo apt install mono-complete monodevelop 

Linux์—์„œ Mono๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฒ•์€ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์Šต๋‹ˆ๋‹ค. mono ๊ด€๋ จ ์„ค์น˜๋Š” mono-complete, IDE ๋„๊ตฌ๋Š” monodevelop์œผ๋กœ ์„ค์น˜ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



MonoDevelop์„ ์‚ฌ์šฉํ•œ C# ๊ฐœ๋ฐœ

์„ค์น˜๊ฐ€ ๋๋‚ฌ์œผ๋ฉด, ๋ณธ๊ฒฉ์ ์œผ๋กœ MovoDevelop์„ ์‚ฌ์šฉํ•ด ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


MonoDevelop์„ ์‹คํ–‰์‹œํ‚ค๋ฉด New ๋ฒ„ํŠผ์ด ๋ณด์ด์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. New ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ CLI ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” Console Project์™€ GUI ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” Gtk# 2.0 Project๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ๋ž˜ Windows์—์„œ๋Š” Windows Form Project์™€ WPF Project๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์— NIX ๊ณ„์—ด๊ณผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ™์ง€ ์•Š์œผ๋ฏ€๋กœ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š” ์ . ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


์‚ฌ์šฉํ•  ์–ธ์–ด๋Š” C#, VB.NET, IL ์ค‘ ํ•œ ๊ฐœ๋ฅผ ๊ณ ๋ฅด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” C# ์–ธ์–ด๋กœ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ด๋ฏ€๋กœ, C#์„ ์„ ํƒํ•œ ํ›„, Next๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.


Project ์ด๋ฆ„๊ณผ ์œ„์น˜๋ฅผ ์ •ํ•ด์ค€ ํ›„ Create ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


์Œ ์ฒ˜์Œ์—๋Š” ์–ด๊น€์—†์ด Hello World๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋„ค์š” ~_~


์ €๋Š” ๊ฐ„๋‹จํ•œ ์Šคํƒ๊ณผ ํ๋ฅผ ์งœ๋ดค์Šต๋‹ˆ๋‹ค. ์ž ์—ฌ๋Ÿฌ๋ถ„๋„ Let's Coding !


Windows์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ทธ๋Œ€๋กœ Linux์—์„œ C#์œผ๋กœ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์Œ ์†๋„๋„ ์•„์ง๊นŒ์ง€๋Š” ๋น„์Šทํ•œ๋ฐ....)



๋งˆ์น˜๋ฉฐ....

์—ฌ๊ธฐ๊นŒ์ง€ Mono๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค Mono๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์˜ˆ์ „๋ถ€ํ„ฐ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, C#์—๋Š” ์•„์ง ์นœ์ˆ™ํ•˜์ง€ ์•Š์•˜๊ณ , ์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ, C# ์–ธ์–ด๋ฅผ ๋‹ค์‹œ ์ ‘ํ•˜๊ฒŒ ๋˜์–ด ๋ธ”๋กœ๊ทธ์— ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€ ์™„๋ฒฝํ•œ C# ์–ธ์–ด๋ฅผ ์ง€์›ํžˆ์ง€ ์•Š๋Š” Mono์ด์ง€๋งŒ, ์กฐ๊ธˆ๋งŒ ๋” ํ™œ์„ฑํ™” ๋œ๋‹ค๋ฉด ๋ถ€์กฑํ•œ Linux์˜ GUI ํ”„๋กœ๊ทธ๋žจ์„ ๋งค๊ฟ”์ค„ ์œ ์ผํ•œ ์ˆ˜๋‹จ์ด ๋  ์ˆ˜๋„ ์žˆ์„๊นŒ ์ง์ž‘ํ•ด๋ด…๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments