Cμ–Έμ–΄

[C#] .NET ν”„λ ˆμž„μ›Œν¬μ™€ C# ν”„λ‘œκ·Έλž˜λ°μ˜ 이해 - μ‹œμž‘ν•˜κΈ°

hyonie 2024. 4. 24. 02:15

πŸ–₯.NET ν”„λ ˆμž„μ›Œν¬ μ†Œκ°œ

.NET ν”„λ ˆμž„μ›Œν¬λž€ λ¬΄μ—‡μΌκΉŒ?

λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈκ°€ κ°œλ°œν•œ μ‘μš© ν”„λ‘œκ·Έλž¨ 개발 및 μ‹€ν–‰ ν™˜κ²½μΈ .NET ν”„λ ˆμž„μ›Œν¬λŠ”  CLRμ΄λΌλŠ” 가상머신을 μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  ν”Œλž«νΌμ„μ—μ„œ λ™μž‘ν•  수 μžˆλ‹€. 즉, μ–΄λ–€ OS이든 .NET ν”„λ ˆμž„μ›Œν¬λ§Œ μ„€μΉ˜λ˜μ–΄ 있으면 .NET μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘ κ°€λŠ₯ν•˜λ‹€. .NETν”„λ ˆμž„μ›Œν¬λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ³  μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ 마치 μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œ μ‹€ν–‰ν™˜κ²½μΈ Node.js와 λΉ„μŠ·ν•œ(?) 역할을 ν•œλ‹€.

 

.NET ν”„λ ˆμž„μ›Œν¬μ˜ ꡬ쑰

λ‚΄λΆ€λŠ” 주둜 3κ°€μ§€ μ£Όμš” ꡬ성 μš”μ†Œλ‘œ κ΅¬μ„±λœλ‹€.

  1. 핡심 ꡬ성 μš”μ†Œ CLR(Common Language Runtime): .NET ν”„λ ˆμž„μ›Œν¬μ˜ 핡심 κΈ°λŠ₯을 λ‹΄λ‹Ήν•œλ‹€. μžλ°”μ˜ JVMκ³Ό μœ μ‚¬ν•œ 역할을 ν•œλ‹€. 즉, CLR은 μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 가상 λ¨Έμ‹ μœΌλ‘œ, λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•œλ‹€.
  2. JIT 컴파일러: C# μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜λ©΄ MSIL(쀑간 μ–Έμ–΄)μ΄λΌλŠ” 쀑간 μ½”λ“œκ°€ μƒμ„±λœλ‹€. JIT μ»΄νŒŒμΌλŸ¬λŠ” 컴퓨터가 λ‹€μ‹œ μ½μ„μˆ˜ μžˆλ„λ‘ MSIL μ½”λ“œλ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ λ„€μ΄ν‹°λΈŒ μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€.
  3. 클래슀 라이브러리: .NET ν”„λ ˆμž„μ›Œν¬μ—λŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯κ³Ό APIκ°€ ν¬ν•¨λœ 클래슀 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μžˆλ‹€. μ΄λŸ¬ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” κ°œλ°œμžκ°€ 효율적으둜 μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆλ„λ‘ 도와쀀닀.

 

.NET ν”„λ ˆμž„μ›Œν¬μ˜ μΆœν˜„ μ΄μ „μ—λŠ” μ–΄λ–€ 도ꡬ듀이 μ‚¬μš©λ˜μ—ˆμ„κΉŒ?πŸ•°

이전에 μ‚¬μš©λ˜λ˜ 독립적인 개발 도ꡬ듀 VC++(Visual C++), VB(Visual Basic), λΉ„μ£Όμ–Ό ν­μŠ€ν”„λ‘œ(Visual FoxPro)λ“± 각각 λ³„λ„λ‘œ μ„€μΉ˜λ˜κ³  νŒλ§€λ˜μ—ˆμœΌλ©°, κ°œλ°œμžλ“€μ€ λ‹€μ–‘ν•œ 언어와 도ꡬλ₯Ό μ‚¬μš©ν•΄μ•Ό ν–ˆλ‹€. MicroSoftλŠ” 이λ₯Ό ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λ‘œ λ¬Άμ–΄ κ°œλ°œμžλ“€μ—κ²Œ μ œκ³΅ν•˜μ—¬ ν†΅ν•©λœ κ°œλ°œν™˜κ²½μ„ μ œκ³΅ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€.

 

.NET ν”„λ ˆμž„μ›Œν¬μ˜ μž₯점

  • μ—¬λŸ¬ 도ꡬλ₯Ό ν†΅ν•©ν•˜μ—¬ κ°œλ°œμžλ“€μ—κ²Œ νŽΈλ¦¬ν•œ ν™˜κ²½ 제곡
  • λ‹·λ„· ν”„λ ˆμž„μ›Œν¬λ₯Ό 톡해 λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ³  μ‹€ν–‰ν• μˆ˜ μžˆλ‹€.

 

✨ C# μ–Έμ–΄μ™€μ˜ 관계

C# 언어와 .NET ν”„λ ˆμž„μ›Œν¬λŠ” λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈμ˜ μ‘μš© ν”„λ‘œκ·Έλž¨ 개발 및 μ‹€ν–‰ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•œλ‹€.

NET ν”„λ ˆμž„μ›Œν¬μ™€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ™€μ˜ 관계

C# μ–Έμ–΄ νŠΉμ§•

  • λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈμ—μ„œ κ°œλ°œν•œ 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
  • λ‹·λ„· ν”„λ ˆμž„μ›Œν¬ κΈ°λ°˜μ—μ„œ μ‹€ν–‰λ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” 데 μ‚¬μš©λ¨
  • C 및 C++κ³Ό μœ μ‚¬ν•œ 문법을 κ°€μ§€λ©°, 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ 지원
  • C++의 언어적 νŠΉμ„±μ„ κ³ λ €ν•˜μ—¬ 이름이 지어짐 (C++의 ++λ₯Ό C#으둜 ν‘œν˜„)

C# μ–Έμ–΄μ˜ μ—­ν• 

  • .NET ν”„λ ˆμž„μ›Œν¬μ—μ„œ μ‹€ν–‰λ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜λŠ” μ£Όμš” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
  • λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ 개발 생산성을 ν–₯μƒμ‹œν‚΄

πŸ’‘ κ²°λ‘ 

.NET ν”„λ ˆμž„μ›Œν¬λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨ κ°œλ°œμ„ μœ„ν•œ 효율적인 ν™˜κ²½μ„ μ œκ³΅ν•˜λ©° C# μ–Έμ–΄λ₯Ό ν™œμš©ν•˜μ—¬ κ°œλ°œμžλŠ” κ°•λ ₯ν•œ κΈ°λŠ₯을 κ°–μΆ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ†μ‰½κ²Œ λ§Œλ“€κ³  μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•  수 μžˆλ‹€.