문제

도에 대한 질문 AppDomains 에서 인터뷰,그리고 내가 알고 있는 기초:

  • 그들은 격리 수준에서는 응용 프로그램(그들에게 서로 다른 응용 프로그램에서)
  • 그들은 있을 수 있는 스레드(그들에게 서로 다른 스레드에서)
  • 예외 중 하나는 사용되지 않에 영향을 미치지 않는 다른
  • appdomains 액세스할 수 없는 서로 다른 메모리
  • 각 사용되지 않는 서로 다를 수 있습니 보안

저는 아직도 얻지 않는다 무엇이 그들이 필요하다.내가 찾는 것은 합리적인 콘크리트 상황할 때 사용하는 것이 하나입니다.

답변:

  • 신뢰할 수 없는 코드
    • 핵심 보호 응용 프로그램
      신뢰할 수 없는/3 자 플러그인은 금지 를 공유 메모리와 비에 대한 액세스 권한을 부여 레지스트리 또는 하드 드라이브에 의해 분리에 사용되지 않는 별도의 보안을 제한 보호 응용 프로그램 또는 서버입니다.예:ASP.NET 과 SQL 서버호스팅 구성 코드
  • 신뢰할 수 있는 코드
    • 안정성
      응용 프로그램으로 분할된 안전,독립적 특징과 기능
    • 건축의 융통성
      자유를 여러 응용 프로그램을 실행 내에서 단일 CLR 인스턴스는 각 프로그램 그 자체.

아무거나 다른?

도움이 되었습니까?

해결책

아마도 가장 일반적인 하이드 어셈블리를 포함하는 plug-in 코드에서 신뢰할 수 없는 당사자입니다.코드에서 실행 자신의용,분리합니다.

또한,그것은 가능한 언로드는 특정 어셈블리,하지만 당신은 언로드 할 수 있 AppDomains.

전체에 대한 개요,크리스 Brumme 대 블로그 항목에 이:

http://blogs.msdn.com/cbrumme/archive/2003/06/01/51466.aspx

https://devblogs.microsoft.com/cbrumme/appdomains-application-domains/

다른 팁

의 또 다른 혜택 AppDomains(당신이 언급에서 당신의 질문에)코드로 로드하는 그것을 실행할 수 있습으로 다른 보안 권한이 있습니다.예를 들어,내가 쓰는 동적으로 읽어 DLLs.나는 강하고 이 학생을 Dll 었니다.나는 원하지 않았다 일부는 불만 학생을 닦아 내 하드 드라이브 또는 손상된 내 레지스트리,그래서 로드된 코드에서 Dll 으로 별도의 사용되지 않는 않는 파일 IO 권한이나 레지스트리 편집하는 권한 또는 권한을 표시하는 새로운 윈도우(그것이 실제로만 실행 권한).

나는 생각한 주요에 대한 동기 부여하는 데 AppDomains 는 CLR 디자이너가 원하는 방식의 격리 관리 코드를 발생시키지 않고 성능의 오버헤드 여러 윈도우 프로세스입니다.했 CLR 되는 원래 의 상단에 구현 UNIX(을 만드는 여러 프로세스는 훨씬 적은 비용),AppDomains 수 없었을 발명했습니다.

또한,하는 동안 관리되는 플러그인 아키텍처에서 제 3 자 응용 프로그램은 확실히 좋은 사용 AppDomains,더 큰 이유는 그들이 존재한다는 것은 잘 알려진 호스트가 같은 SQL Server2005ASP.NET.예를 들어,ASP.NET 공급자를 호스팅 제공할 수 있는 공유를 호스팅 지원하는 솔루션을 여러 사이트에서 여러 고객은 모두 동일한 박스에서 실행되는 하나의 윈도우 프로세스.

응용 도메인에 대한 좋은 응용 프로그램 안정성이 있습니다.

함으로써 응용 프로그램으로 구성 중앙 프로세스를 생성으로"기능"에서 별도의 appdomains 할 수 있습을 방지할 수 있는 글로벌 충돌 그 중 하나는 올바르게 작동하지 않습니다.

는 경우 응용 프로그램을 만들 수 있는 제 3 자 플러그인,로드할 수 있습니다 그는 플러그인에서는 별도의 사용되지 않도록 당신의 주요 응용 프로그램은 안전에서 알 수없는 코드입니다.

ASP.NET 또한 사용하여 별도의 AppDomains 각 웹 응용 프로그램에 대한 단일 작업자 프로세스에서 처리됩니다.

내가 그것을 이해하기로는 사용되지 않는할 수 있도록 설계되었 호스팅 entity(OS,DB,서버 등)자유를 여러 응용 프로그램을 실행 내에서 단일 CLR 인스턴스는 각 프로그램 그 자체.그래서 그에 대한 문제가 아닌 호스트가 있습니다.

이 비교 Java 어디에 당신은 항상 1JVM 응용 프로그램별,종종 결과에서 많은 인스턴스의 JVM 을 실행해 중복된 리소스입니다.

나는 2 또는 3 가지 주요 활용 사례를 만들기 위한 별도의 응용 프로그램 도메인:

1) 과정과 같은 절연 저렴한 리소스 사용과 오버헤드가 발생합니다.예를 들어,이것은 무엇인 ASP.NET 지-호스트하는 각 사이트에서 별도의 응용 프로그램 도메인에 있습니다.는 경우 사용되는 다른 스레드에서 하나의 응용 프로그램 도메인한 다음의 코드를 다른 웹사이트를 방해할 수 있습니다.는 경우 다른 호스팅 웹사이트에서 다른 프로세스-그것은 사용하는 것에 많은 자원과 또한 프로세스 간의 통신 상대적으로 어렵에 비교하되 커뮤니케이션.

2) 실행하는 신뢰할 수 없는 코드 별도의 응용 프로그램 도메인에 있는 특정한 보안에 대한 권한(이에 관련된 제 1 이).으로 사람들이 이미 말했다,당신은 당신할 수 있 부하 제 3 자 플러그인 또는 신뢰할 수 없는 dll 으로 별도의 응용 프로그램 도메인이 있습니다.

3) 는 기능을 언로드 어셈블리를 줄이는 불필요한 메모리를 사용합니다.불행하게도,방법은 없을 내리는 어셈블리에서는 응용 프로그램 도메인에 있습니다.그래서 만약 당신이 로드 중 일부는 큰 어셈블리의 주요 응용 프로그램 도메인을 무료로에 해당하는 메모리를 한 후에는 어셈블리가 더 이상 필요하지 않은 응용 프로그램입니다.선적 어셈블리 별도의 응용 프로그램에서 도메인을 내리는 응용 프로그램 도메인을 때 그 어셈블리는 더 이상 필요하지 않은 이 문제를 해결할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top