'C#/기본개념'에 해당되는 글 2건

  1. 2018.02.02 C#, .NET 기본개념
  2. 2018.02.02 C#. 파일(소스)기본구조

[ C#, .NET 기본개념 ]


1. 컴파일

   - 작성된 코드를 빌드하게 되면 MSIL(Microsoft Intermediate Language)이라고 하는 

     기계어 직전 단계의 언어로 구성된 어셈블리가 생성이 된다. 

     바로 바이너리(Binary) 형식이 아닌 MSIL 형태로 생성을 하게 되는 이유는 자바와 마찬가지로 플랫폼에 종속적이 않고, 

     다양한 플랫폼에 이식 가능하도록 하기 위해서 이다. 

     현재 Mono 프로젝트(http://www.mono-project.com/Main_Page)를 통해서 다양한 플랫폼에 적용 가능하다. 

     이렇게 MSIL 형태로 존재하는 어셈블리는 실행되는 시점에 

     Just-In-Time (JIT) 컴파일러(compiler)가 각 플랫폼에 맞는 코드로 컴파일 되며 실행이 된다.


2. 닷넷 프레임워크

   - 이러한 런타임 환경에서 일어나는 다양한 일들은 닷넷 프레임워크에서 제공해 준다.

   - 구성요소

     . CLS(Common Language Specification)

       닷넷 프레임워크는 다양한 언어로 개발이 가능하다. 

       하지만 문제는 각 언어별로 특별히 지원하는 스펙이 존재할 것이다. 

       모든 프로젝트다 특정 하나의 언어로만 생성된 어셈블리만 사용하면 상관이 없으나, 

       개발을 하게 되면 다양한 언어로 개발된 어셈블리를 참조하게 될 것이다. 

       만약 참조된 어셈블리에서 지원하는 자료형 등이 해당 언어에서 지원이 되지 않는다면? 

       난감한 상황이 발생하게 된다. 

       이러한 문제점을 줄이고, 다양한 언어들 간에 호환성을 놓이기 위해 닷넷 프레임워크를 지원하는 최소한의 스펙을 정의하고 있는데 그것이 바로 CLS이다. 

       CLS 규칙을 따르는 것은 개발 시점에서는 약간의 제약사항이 발생을 하게 되지만 다른 언어들 간의 상호 운영성은 증대하게 된다.


     . CTS(Common Type System)

       CLS를 포함하여, 닷넷에서 사용하게 되는 필드(Field), 

       메소드 등 모든 스펙이 정의된 것을 가리킨다.


     . CLR(Common Language Runtime)

       실행되는 프로그램의 메모리 관리, 보안 등 실제 운영되는 환경을 관리하게 되는 핵심 요소 이다.


     . GC(Garbage Collector)

       닷넷 프레임워크는 예전의 비관리 코드(Unmanaged Code)로 작성되던 시기에 

       개발자가 직접해주던 메모리 관리를 GC를 통해서 자동으로 하게 된다.


'C# > 기본개념' 카테고리의 다른 글

C#. 파일(소스)기본구조  (0) 2018.02.02
Posted by 농부지기
,

[ C#. 파일(소스)기본구조 ]


1. C#으로 작성된 어플리케이션 3가지 요수로 구성

   - 어셈블리(Assembly)

   - 네임스페이스(Namespace)

   - 클래스(Class)


2. 어셈블리(Assembly)

   - 클래스, 네임스페이스가 모여 생성된 물리적 파일.

   - 간단히 말하면 빌드 후 생성되는 DLL 혹은 EXE 파일이라고 생각하면 된다.

 

3. 네임스페이스(Namespace)

   - 여러 개의 클래스들이 모인 논리적 그룹 단위.


4. 클래스(Class)

   - 프로그램 내에서 독립적으로 존재할 수 있는 최소 단위.

   - 멤버로 메소드(Method), 프로퍼티(Property), 이벤트(Event), 델리게이트(Delegate) 등을 가진다.




A. using 블록

   닷넷 프레임워크는 방대한 BCL(Base Class Library)을 제공해 주고 있다. 

   각 라이브러리는 네임스페이스와 클래스가 잘 계층 구조를 가지며 분류가 되어 있으며, 

   상단에 사용하고자 하는 네임스페이스를 미리 선언한다. 

   선언된 네임스페이스는 사용되는 시점에 네임스페이스를 생략하고 바로 클래스명으로 작성을 하고, 

   만약 네임스페이스를 using 구문으로 선언을 하지 않았으면 사용하는 시점에 

   [네임스페이스].[클래스].[메소스] 와 같이 전체 명칭을 작성해 주면 된다. 

   코드에서 보는 것처럼 Console.WriteLine() 메서드는 System 네임스페이스에 

   존재하는 클래스로 using 블록에 선언을 하였으므로 네임스페이스명을 생략 하였다.

    System.Console.WriteLine()과 같이 작성하여도 된다.


B. 네임스페이스 선언

   PC에서 파일 관리할 때를 생각해 보라. 

   각 자료의 특성에 따라 폴더를 분리하고, 그 안에서 파일을 관리한다. 

   마찬가지로 네임스페이스도 각 클래스들의 기능단위를 논리적으로 묶어 놓는 역할을 한다.


C. 클래스 선언

   독립적으로 존재할 수 있는 최소 단위로 모든 메서드는 반드시 클래스(혹은 struct)의 멤버이어야 한다.

'C# > 기본개념' 카테고리의 다른 글

C#, .NET 기본개념  (0) 2018.02.02
Posted by 농부지기
,