언어 간 상호 운용성

이 단원에서는 공용 언어 런타임에서 기본적으로 지원되는 언어 간 상호 운용성 및 언어 간 상호 운용성을 가능하게 하는 CLS(공용 언어 사양)의 역할에 대해 설명합니다.

언어 간 상호 운용성이란 특정 코드가 다른 프로그래밍 언어로 작성된 코드와 상호 작용할 수 있도록 하는 기능입니다. 언어 간 상호 운용성 기능을 사용하면 코드를 가능한 여러 번 다시 사용하여 개발 프로세스의 효율성을 향상시킬 수 있습니다.

개발자들이 서로 다른 기능과 형식을 제공하는 여러 가지 도구와 기술을 사용하기 때문에 지금까지 언어 간 상호 운용성을 지원하기가 어려웠습니다. 하지만 이제 공용 언어 런타임을 목적으로 하는 언어 컴파일러 및 도구에서는 런타임에서 기본적으로 제공하는 언어 간 상호 운용성 기능을 사용할 수 있습니다.

공용 언어 런타임에서는 공용 형식을 지정 및 적용하고 메타데이터를 제공하여 언어 간 상호 운용성에 필요한 기반을 제공합니다. 런타임을 목적으로 하는 모든 언어에서는 공용 형식 시스템 규칙에 따라 형식을 정의하고 사용하기 때문에 모든 언어에서 동일한 방법으로 형식을 사용하게 됩니다. 메타데이터의 경우에는 형식에 대한 정보를 저장하고 검색하는 메커니즘을 정의하여 언어 간 상호 운용성을 가능하게 합니다. 컴파일러는 형식 정보를 메타데이터로 저장하고 공용 언어 런타임에서는 이 정보를 사용하여 실행 시 여러 가지 서비스를 제공합니다. 이 때 모든 형식 정보는, 코드 작성에 사용된 언어에 상관 없이 동일한 방법으로 저장되고 검색되기 때문에 런타임에서는 여러 언어로 만들어진 응용 프로그램을 실행할 수 있습니다.

런타임에서 기본적으로 제공하는 언어 간 상호 운용성을 관리 코드에 대해 사용하면 다음과 같은 이점이 있습니다.

  • 형식은 해당 형식이 구현된 언어에 상관 없이, 다른 형식에서 구현을 상속받거나 다른 형식의 메서드에 개체를 전달하거나 다른 형식에 정의된 메서드를 호출할 수 있습니다.

  • 공용 언어 런타임의 MSIL(Microsoft Intermediate Language) 및 메타데이터만 이해하면 디버거, 프로파일러 또는 기타 도구에서 런타임을 대상으로 하는 모든 프로그래밍 언어를 지원할 수 있습니다.

  • 예외 처리는 모든 언어에서 동일합니다. 특정 언어의 사용자 코드에서 예외가 throw되면 다른 언어로 작성된 개체에서도 해당 예외를 catch하고 이해할 수 있습니다.

런타임에서는 여러 언어 환경에서 실행 가능한 기능을 모든 관리 코드에 대해 지원하지만, 사용자가 만든 형식의 기능을 다른 개발자가 사용하는 프로그래밍 언어에서 완벽하게 사용할 수 있는 것은 아닙니다. 그 이유는 런타임을 목적으로 하는 각 언어 컴파일러에서는 해당되는 고유한 언어의 기능을 지원하기 위해 형식 시스템과 메타데이터를 사용하기 때문입니다. 호출 코드가 어떤 언어로 작성되었는지 모르는 경우에는 구성 요소에서 노출하는 기능을 호출자가 액세스할 수 있는지 여부를 알 수 없습니다. 예를 들어, 사용하는 언어에서 부호 없는 정수를 지원하는 경우, 매개 변수의 형식이 UInt32인 메서드를 디자인할 수 있습니다. 그러나 부호 없는 정수에 대한 개념이 없는 언어에서는 이 메서드를 사용하지 못합니다.

사용자가 작성한 관리 코드를 다른 프로그래밍 언어를 사용하는 개발자가 액세스할 수 있도록 .NET Framework에서는 CLS(공용 언어 사양)를 제공합니다. CLS에서는 기본적인 언어 기능에 대해 설명하고 이들 기능을 사용하는 방법에 대한 규칙을 정의합니다. 구성 요소와 도구의 CLS 규격에 대한 자세한 내용은 CLS 규격 코드 작성을 참조하십시오.

관련 항목

제목

설명

공용 언어 사양

모든 언어에 공용으로 사용되는 기능의 필요성에 대해 설명하고 CLS 규칙 및 기능을 식별합니다.

CLS 규격 코드 작성

구성 요소에 대한 CLS 규격의 의미에 대해 설명하고 도구에 대한 CLS 규격을 식별합니다.

공용 형식 시스템

공용 언어에서의 형식의 선언, 사용 및 관리 방법에 대해 설명합니다.

메타데이터 및 자동 기술 구성 요소

공용 언어 런타임에서 형식을 설명하고 해당 정보를 형식 자체에 저장하는 메커니즘에 대해 설명합니다.