[C# – 기초 강좌] 1. .NET 소개 (Introduction)

C#을 사용할 일이 생겨서, C#을 정리하는 시간을 갖고자 합니다.

C# 기초 강좌를 시작하기에 앞서 .NET에 대해 간략하게 소개하고 C# 기초 강좌를 진행해 보겠습니다.

좀 더 자세한 내용은 Microsoft 공식 문서를 참고해주세요.

.NET 소개

개요

.NET은 마이크로소프트에 의해 개발된 소프트웨어 개발 플랫폼입니다.

주로 웹, 모바일, 데스크톱 애플리케이션을 만드는 데 사용됩니다.

.NET은 개발자가 플랫폼에 구애받지 않고 작업할 수 있도록 도와주며, 다양한 프로그래밍 언어의 지원을 통해 소프트웨어 개발의 유연성을 제공합니다.

특징

  • 언어의 다양성과 호환성
    • .NET은 C#, Visual Basic, F#, 그리고 다른 여러 프로그래밍 언어를 지원합니다.
    • 공통 타입 시스템(CTS) 덕분에 다양한 언어로 작성된 코드가 서로 호환될 수 있어, 개발자는 자신이 선호하는 언어를 자유롭게 선택할 수 있습니다.
  • 플랫폼 독립성
    • .NET Core의 도입으로, .NET은 윈도우즈, 맥OS, 리눅스 등 다양한 운영 체제에서 실행될 수 있습니다.
    • 이는 .NET 애플리케이션의 범용성을 크게 향상시켜, 더 넓은 시장에 접근할 수 있게 합니다.
  • 강력한 프레임워크 라이브러리
    • .NET은 광범위한 라이브러리를 제공하여, 네트워킹, 데이터 접근, 그래픽 처리 등 다양한 기능을 쉽게 구현할 수 있습니다.
    • 이러한 라이브러리는 잘 정립된 API를 통해 접근이 가능하며, 코드의 재사용을 촉진합니다.
  • 효율적인 메모리 관리
    • 공통 언어 런타임(CLR)은 가비지 컬렉션을 제공하여, 메모리 관리를 자동으로 처리합니다.
    • 이는 메모리 누수를 방지하고, 개발자가 메모리 관리에 신경 쓰지 않아도 되게 만들어, 개발의 효율성을 높여줍니다.

.NET 개발 이력 (History)

.NET은 시간이 흐를수록 여러 단계의 발전을 거쳐 왔습니다.

1. .NET의 출시 (2002)

.NET 프레임워크의 첫 버전인 1.0은 2002년에 출시되었습니다.

이는 동적 웹 페이지를 개발하기 위한 ASP.NET과 Windows 어플리케이션을 개발하기 위한 Windows Forms, 그리고 기업 수준의 애플리케이션을 위한 ADO.NET을 포함하고 있었습니다.

2. .NET Framework의 진화

  • .NET Framework 2.0 (2005):
    • 제네릭, 익명 메소드와 같은 새로운 C# 언어 기능이 추가되었습니다.
  • .NET Framework 3.0 (2006):
    • WPF(Windows Presentation Foundation), WCF(Windows Communication Foundation), WF(Windows Workflow Foundation) 등 새로운 개발 기능이 포함되었습니다.
  • .NET Framework 3.5 (2007):
    • LINQ(Language Integrated Query)가 도입되어 데이터 처리가 간편해졌습니다.
  • .NET Framework 4.0 (2010):
    • 병렬 프로그래밍 지원이 강화되었습니다.

3. .NET Core의 등장 (2016)

클라우드 기반의 애플리케이션과 크로스 플랫폼 개발의 요구가 증가하면서 마이크로소프트는 더 유연하고 모듈화된

.NET Core를 발표했습니다. 이는 Linux 및 macOS에서도 실행될 수 있으며, 더 빠른 업데이트와 개선을 제공합니다.

4. .NET 5와 .NET 6의 통합 (2020, 2021)

.NET Core와 .NET Framework의 기능을 통합하여 마이크로소프트는 .NET 5를 발표했습니다.

이후 .NET 6에서는 Blazor와 같은 현대적 웹 프레임워크와 MAUI(Microsoft .NET Multi-platform App UI)가 포함되어, 모바일 및 데스크탑 앱 개발이 간소화되었습니다.

5. 최근의 발전과 .NET 7 (2022)

.NET 7은 성능 개선, 보다 나은 클라우드 통합, 개발자 경험 향상을 목표로 하며, 지속적인 혁신을 통해 기업 및 개발자 커뮤니티에 꾸준히 기여하고 있습니다.

.NET 동작 원리

개요

.NET 응용 프로그램이 실행될 때, 소스 코드는 먼저 CIL(Common Intermediate Language) 코드로 컴파일됩니다.

실행 시점에 CLRJIT(Just-In-Time) 컴파일러가 이 CIL기계어 코드로 변환하여 실행합니다.

이 과정은 실행 중에 일어나며, 필요한 코드 부분만 컴파일하여 실행 속도와 효율성을 최적화합니다.

image 2
출처: https://www.c-sharpcorner.com/blogs/what-is-clr-in-net

1. 공통 언어 런타임 (CLR)

.NET의 핵심은 공통 언어 런타임(Common Language Runtime, CLR)입니다.

CLR은 .NET 프로그램이 실행되는 가상 머신으로, 코드를 관리하고 실행하는 역할을 합니다.

모든 .NET 프로그램은 CLR을 통해 실행되며, CLR은 다음과 같은 중요한 기능을 제공합니다:

  • 메모리 관리: 자동 가비지 컬렉션을 통해 개발자가 메모리 관리를 직접 처리할 필요가 없습니다.
  • 보안: 코드 액세스 보안을 통해 어플리케이션이 시스템 리소스에 안전하게 접근할 수 있도록 합니다.
  • 예외 처리: 애플리케이션 전반에 걸쳐 일관된 예외 처리 메커니즘이 구현됩니다.
  • 스레드 관리: 다중 스레딩 및 동시성 관리를 지원합니다.

2. 공통 타입 시스템 (CTS)

공통 타입 시스템(Common Type System, CTS)은 .NET에서 지원하는 모든 프로그래밍 언어가 서로 호환될 수 있도록 데이터 타입과 클래스를 표준화합니다.

CTS는 다양한 언어에서 개발된 코드가 CLR에서 서로 효율적으로 작동하게 하며, 개발자가 언어 간의 제한 없이 자유롭게 코드를 작성할 수 있게 돕습니다.

3. 어셈블리와 메타데이터

.NET에서 코드는 “어셈블리”라는 단위로 컴파일됩니다.

어셈블리는 실행 가능한 코드와 이 코드에 대한 메타데이터를 포함합니다.

메타데이터는 클래스, 메소드, 변수 등 코드의 구조적 세부 사항을 설명하며, CLR이 코드를 올바르게 로드하고 실행하는 데 필요합니다.

4. 중간 언어 (Intermediate Language, IL)

.NET에서 소스 코드는 중간 언어(IL)로 컴파일됩니다.

IL은 플랫폼 독립적인 저수준 프로그래밍 언어로, CLR이 실행 시점에 기계어로 변환(JIT 컴파일)합니다.

이 과정을 통해 .NET 애플리케이션은 다양한 시스템에서 성능을 최적화하여 실행할 수 있습니다.

5. JIT 컴파일러

실행 시점에, JIT(Just-In-Time) 컴파일러가 IL 코드를 해당 시스템의 네이티브 코드로 변환합니다.

이 단계는 애플리케이션이 실행될 때마다 발생하며, 최적화된 실행을 가능하게 합니다.

JIT 컴파일은 애플리케이션의 시작 시간을 다소 지연시킬 수 있지만, 전반적인 실행 성능은 향상됩니다.

C# 기초 강좌 진행 커리큘럼

  1. .NET 소개하기
    • .NET 소개
    • .NET 개발 순서
    • .NET 동작원리
  2. C# 시작하기: 프로젝트 만들기
  3. C# 기본 문법 이해하기
  4. 함수와 메서드
  5. 클래스와 객체 지향 프로그래밍
  6. 고급 데이터 타입 (자료구조)
  7. 파일 읽기와 쓰기
  8. C#에서 Database 이용하기
    • ADO.NET 기초
    • SQL 서버 연결 및 CRUD 작업
    • 엔티티 프레임워크를 이용한 ORM
  9. C#에서의 통신
    • IPC 통신 (Named Pipe, Message Queue, Shared Memory)
    • Socket 통신
    • 비동기 통신의 이해와 적용

Leave a Comment

Discover more from Devitworld

Subscribe now to keep reading and get access to the full archive.

Continue reading