응용 프로그램 도메인

Application domain

응용 프로그램 도메인은 Common Language Infrastructure(CLI; 공통 언어 인프라스트럭처) 에서 실행되는 소프트웨어 응용 프로그램을 서로 분리하여 서로 영향을 미치지 않도록 하는 메커니즘(운영 체제 프로세스와 유사)입니다.각 응용 프로그램 도메인에는 자체 가상 주소 공간이 있으며, 이 주소 공간을 사용하여 응용 프로그램 도메인의 리소스 범위를 지정합니다.

그럼, 같은 프로세스로 복수의 애플리케이션도메인을 작성할 수 없습니다.NET Core 및.NET 5+.[1]

특성.

CLI 응용 프로그램 도메인은 운영 체제 프로세스 내에 포함됩니다.프로세스에는 다수의 응용 프로그램 도메인이 포함될 수 있습니다.응용 프로그램 도메인은 운영 체제 프로세스와 유사한 분리 속성을 가집니다.

  • 단일 응용 프로그램 도메인 내에 여러 스레드가 존재할 수 있습니다.
  • 도메인내의 애플리케이션은, 같은 프로세스내의 다른 도메인의 상태에 영향을 주지 않고 정지할 수 있습니다.
  • 한 도메인의 장애 또는 예외는 다른 도메인의 애플리케이션에 영향을 미치거나 도메인을 호스트하는 프로세스 전체를 크래시하지 않습니다.
  • 구성 정보는 프로세스의 범위가 아니라 도메인 범위의 일부입니다.
  • 각 도메인에는 다른 보안 액세스 수준을 할당할 수 있습니다.
  • 한 도메인의 코드가 다른 도메인의 코드에 직접 액세스할 수 없습니다.

그런 의미에서 CLI는 미니 운영 체제와 같습니다.여러 하위 프로세스 또는 응용 프로그램 도메인을 포함하는 단일 프로세스를 실행합니다.

응용 프로그램 도메인의 장점은 여러 운영 체제 프로세스를 실행하는 것보다 여러 응용 프로그램 도메인을 실행하는 데 필요한 메모리 등의 리소스가 적을 수 있다는 것입니다.도메인 간의 통신에는 여전히 마샬링이 필요하기 때문에 오버헤드는 단일 도메인 내에서 통신하는 것보다 여러 프로세스를 사용하는 것에 가까울 수 있습니다.

도메인 간 통신

응용 프로그램 도메인 간에 직접 통신할 수 없습니다.단, 어플리케이션도메인은 값(unbound objects)에 의한 마샬링과 프록시(application-domain-bound objects)에 의한 참조에 의한 마샬링을 통해 오브젝트를 전달함으로써 서로 통신할 수 있습니다.콘텍스트바인드 오브젝트라고 불리는 세 번째 타입의 오브젝트가 있습니다.이 오브젝트는 도메인 간에 참조에 의해 마샬링될 수도 있고 자신의 어플리케이션도메인 컨텍스트 내에서 마샬링될 수도 있습니다.관리 코드 타입의 안전성을 검증할 수 있기 때문에 CLI는 운영체제프로세스보다 훨씬 저렴한 비용으로 도메인 간의 장애 분리를 제공할 수 있습니다.분리에 사용되는 스태틱타입 검증에서는 운영체제시스템 프로세스에 필요한 프로세스 스위치나 하드웨어 링의 이행이 필요하지 않습니다.

관리 코드

응용 프로그램 도메인은 순수하게 관리되는 코드 개념입니다.포함된 네이티브/미관리 코드(예를 들어 C++)는 대부분 이러한 코드를 인식하지 못합니다.스태틱 변수는 도메인 간에 공유되고 있어 콜백에 문제가 있을 수 있습니다.또, 1개의 도메인내의 메모리 파손의 버그가 발생하면, 다른 도메인이 파손될 가능성이 있습니다.

레퍼런스

  1. ^ ".NET Framework technologies unavailable on .NET Core and .NET 5+". Microsoft Docs. Archived from the original on 2019-04-20. Retrieved 2021-02-02.