C#

[ C# ๊ธฐ์ดˆ๊ณต๋ถ€] ๋‹ท๋„ทํ”„๋ ˆ์ž„์›Œํฌ์™€ C#

zoozoo2 2022. 12. 30. 12:37

๐ŸŸช ๋‹ท๋„ท ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์„ฑ

ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ CLR(Common Language Runtime)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Window Form + ASP.NET+ADO.NET+BCL(๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

๊ณต์šฉ๋Ÿฐํƒ€์ž„์–ธ์–ด(CLR)

 

๐ŸŸฆ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • C#ํ”„๋กœ๊ทธ๋ž˜๋ฐ = C#์–ธ์–ด + ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • MSDN์„ ์ฐธ๊ณ ( msdn.Microsoft.com)
  • ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • BCL(Basic Class Library): ๊ธฐ๋ณธ ํด๋ž˜์Šค
  • Window Form : ์œˆ๋„์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ œ์ž‘์„ ์œ„ํ•œ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ASP.NET : ์›น ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ADO.NET : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๐ŸŸง CLR(Common language Runtime)

์ปดํŒŒ์ผ๋œ C# ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• 

 

MSIL, IL(intermediate language), ์ค‘๊ฐ„์–ธ์–ด

  • Visual Studio์—์„œ C# ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•œ ์ฝ”๋“œ
  • *. exe, *. dll (์–ด์…ˆ๋ธ”๋ฆฌ, assembly)
  • ๋‹ท๋„ท ์–ธ์–ด์ธ VB, C#๋“ฑ์˜ ๊ณตํ†ต ์–ธ์–ด

๐ŸŸฉ CTS(Common Type System)์™€ CLS(Common Language Specification)

CTS๋Š” ๊ณตํ†ต ๋ฐ์ดํ„ฐํ˜•๊ณผ ํ˜•์‹ ์ •์˜

  • int -> System.Int32
  • float -> System.Single

 

CLS๋Š” ๊ณตํ†ต ์–ธ์–ด ์‚ฌ์–‘ ์ •์˜

๋‹ท๋„ท ์–ธ์–ด๊ฐ€ ์ง€์ผœ์•ผ ํ•  ์ตœ์†Œ ์ฝ”๋“œ ๊ทœ์ง

 

๐Ÿ‘ ๋‹ท๋„ท ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์—ญํ•  ์ดํ•ดํ–ˆ๋Š”๊ฐ€?  BCL, IL, CLR, JIT, CTS ๋“ฑ

BCL์ด ๋ญ์•ผ? Basic Class Library์˜ ์•ฝ์ž๋กœ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ!

 

IL์ด ๋ญ์•ผ? Intermediate Language์˜ ์•ฝ์ž๋กœ ์ค‘๊ฐ„์–ธ์–ด์ด๋‹ค.

C์–ธ์–ด์ฒ˜๋Ÿผ ํŠน์ • CPU์™€ OS์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ์‹คํ–‰ํŒŒ์ผ์ด ์•„๋‹Œ ๋…๋ฆฝ์ ์ธ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ๊ฐ€์ƒ๋จธ์‹  CLR์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ 

 

CLR์ด ๋ญ์•ผ? IL๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฐ€์ƒ๋จธ์‹  ๊ตฌ์„ฑ์š”์†Œ๋กœ Java์˜ JVM๊ณผ ๊ฐ™์€ ์—ญํ• 

์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ์ปดํŒŒ์ผ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , Native ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์คŒ

 

JIT๊ฐ€ ๋ญ์•ผ? Just-in-Time-Compile์˜ ์•ฝ์ž๋กœ ๋งค๋ฒˆ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ปดํŒŒ์ผ์„ ํ•˜์—ฌ ์‹คํ–‰์„ ํ•œ๋‹ค๋Š” ์˜๋ฏธ.

 

CTS๊ฐ€ ๋ญ์•ผ? ๊ณตํ†ต ๋ฐ์ดํ„ฐ ํ˜•์‹

 

๐Ÿ‘์ปดํŒŒ์ผ๋ถ€ํ„ฐ ์‹คํ–‰๊นŒ์ง€์˜ ๊ณผ์ •์„ ์ดํ•ดํ–ˆ๋Š”๊ฐ€

C#์ฝ”๋“œ์ž‘์„ฑ -> C#์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ปดํŒŒ์ผ ์ˆ˜ํ–‰(*. exe, *. dll ์–ด์…ˆ๋ธ”๋ฆฌ) ->. CIL์ฝ”๋“œ ์‹คํ–‰ ->  CLR์˜์—ญ์—์„œ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ์ปดํŒŒ์ผ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ฆ ->  JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ -> ๋‹ค์Œ๋ฒˆ ์‹คํ–‰์„  ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œ -> ์‹คํ–‰ ๋ฟ