AppDomain이란 무엇입니까? [복제]
이 질문에는 이미 답변이 있습니다.
- C # 5 답변 에서 AppDomain 사용
AppDomain 이란 무엇입니까 ? AppDomains의 이점 또는 Microsoft가 AppDomains 개념을 도입 한 이유는 무엇입니까? AppDomains가없는 문제는 무엇입니까?
정교하게 작성하십시오.
는 AppDomain
프로세스 내의 절연 층을 제공한다. 일반적으로 "프로그램 별"(정적 변수 등)로 생각하는 모든 것은 실제로 AppDomain마다입니다. 이것은 다음에 유용합니다.
- 플러그인 (당신은 언로드 할 수 있습니다
AppDomain
,하지만 어셈블리 내에서AppDomain
) - 보안 (특정 신뢰 수준으로 코드 세트를 실행할 수 있음)
- 격리 (다른 버전의 어셈블리 등을 실행할 수 있음)
고통은 원격 등을 사용해야한다는 것입니다.
자세한 내용은 MSDN 을 참조하십시오 . 솔직히 말해서, 그것은 종종 당신이 엉망으로 만드는 것이 아닙니다.
앱 도메인은 직접 액세스하거나 참조 할 수있는 인 메모리 리소스와 코드를 보유하는 연속 가상 메모리 공간의 개념을 구현합니다.
별도의 AppDomain은 메모리 공간을 공유하지 않으므로 한 AppDomain이 다른 AppDomain을 직접 참조 할 수 없습니다. 특히 데이터는 값별 복사 프로세스를 통해 AppDomain간에 전달되어야합니다. 특히 포인터와 메모리 주소에 의존하는 참조 객체는 먼저 소스에서 직렬화 한 다음 대상 AppDomain으로 직렬화 해제해야합니다.
이전에는 Windows 시스템에서 프로세스에 의해 메모리 경계가 구현되었습니다. 그러나 프로세스 구성은 자원 집약적입니다. 또한 스레드 경계로서 이중 용도로 사용됩니다. 반면에 응용 프로그램 도메인은 메모리 경계 또는 주소 공간에만 관련됩니다. 스레드는 AppDomain에서 '흐름'할 수 있습니다 (즉, 프로시 저는 다른 AppDomain에서 진입 점을 호출하고 리턴 될 때까지 기다릴 수 있습니다. 스레드는 다른 AppDomain 내에서 실행을 '계속'한다고합니다).
이 아키텍처의 한 가지 중요한 이점은 AppDomain이 동일한 프로세스, 다른 프로세스 또는 서로 다른 시스템에 모두 있는지 여부에 관계없이 App 도메인 간의 통신 패턴이 크게 변경되지 않는다는 것입니다. 즉 매개 변수 데이터의 직렬화 및 역 직렬화 (마샬링) 프로세스 .
참고 1 : AppDomain을 교차하는 스레드의 의미는 다른 AppDomain에 대한 차단 또는 동기 메서드 호출의 의미입니다 (비 차단 또는 비동기 호출과 달리 대상 AppDomain에서 실행을 계속하고 현재 AppDomain에서 계속하기 위해 다른 스레드를 생성 함) 응답을 기다리지 않고).
참고 2 : Thread Local Storage와 같은 것이 있습니다. 그러나 스레드가 App-Domain을 교차 할 때 데이터를 남겨두고 반환 할 때 다시 가져 오기 때문에 더 나은 이름은 App-Domain Thread Local Storage였습니다. http://msdn.microsoft.com/en-us/library /6sby1byh.aspx
참고 3 : .Net 런타임은 관련 힙이있는 Windows Process 응용 프로그램입니다. 해당 힙에서 하나 이상의 AppDomain을 호스팅 할 수 있습니다. 그러나 AppDomain은 서로를 모르고 마샬링을 통해 서로 통신하도록 설계되었습니다. 동일한 .Net 런타임 및 동일한 Windows Process 힙을 공유하는 통신 AppDomain 간의 마샬링을 우회하는 최적화를 수행 할 수 있습니다.
AppDomain은 간단한 프로세스로 볼 수 있습니다. 그것들은 프로세스의 많은 동일한 특성을 공유합니다. 예를 들어, 그들 자신의 스태틱, 어셈블리 등을 가지고 있지만 단일 프로세스 내에 포함되어 있습니다. 운영 체제의 관점에서 볼 때 프로세스는 프로세스에 포함 된 AppDomain 수에 관계없이 프로세스 일뿐입니다.
그러나 프로세스와 달리 AppDomain에는 명시 적으로 만들지 않는 한 스레드가 없습니다. 스레드는 모든 AppDomain에서 코드를 실행할 수 있습니다.
AppDomain은 동일한 프로세스의 일부이므로 실제로 동일한 관리되는 힙을 공유합니다. AppDomain 프로그래밍 모델이 AppDomain 간의 암시 적 액세스를 방지하므로 일반적으로 문제가되지 않습니다. 그러나 일부 참조는 실제로 유형 개체 및 인턴 된 문자열과 같은 AppDomain간에 공유됩니다.
참고 URL : https://stackoverflow.com/questions/574708/what-is-appdomain
'Programing' 카테고리의 다른 글
메모장이 모두를 능가합니까? (0) | 2020.07.01 |
---|---|
면도기에서 "Html.BeginForm"을 작성하는 방법 (0) | 2020.07.01 |
IIS8의 IIS_IUSRS 및 IUSR 권한 (0) | 2020.07.01 |
동시 해시 세트 (0) | 2020.07.01 |
Github 리포지토리에서 "git update-server-info를 실행 했습니까?"오류 (0) | 2020.07.01 |