문제

웹에서 .NET 애플릿에 관한 기사를 발견했으며 ActiveX 컨트롤 (.NET 언어를 사용하여 생성)과 어떻게 다른지 궁금했습니다. (명확히하기 위해, 이것은 웹 브라우저 내부에서 실행되는 애플릿과 관련이 있습니다)

(차이점 : .NET 언어로 작성된 ActiveX 컨트롤은 .NET 애플릿이라고 불립니다.)

서로를 사용하는 데있어 장점이 있습니까?

또한 Microsoft는이 기술이 무엇을 참조합니까? (MSDN의 검색은 .NET 애플릿이라고 불리는 아무것도 가져 오지 않습니다!)

추신 : ActiveX 컨트롤은 COM 등록 해야하는 반면 .NET 애플릿은 그렇지 않습니다. 또한 웹 페이지에서 ActiveX 컨트롤은 CLSID를 사용하여 참조되는 반면 .NET 애플릿은 전체 이름 (Path, DLL 이름, 네임 스페이스 및 클래스)으로 참조되는 것 같습니다.

도움이 되었습니까?

해결책

ActiveX 컨트롤은 단순히 IunkNown을 구현하는 단순히 COM 객체입니다. 최근 버전의 IE는 또한 IOBJECTSAFETY를 구현하기 위해 개체가 필요하기 시작했습니다. 유용한 작업을 수행하려면 객체는 idispatch, ioleobject 등과 같은 다른 올레 인터페이스도 구현해야합니다. 등록하다 레지스트리와 어떤 식 으로든. 태그에서 Guid를 사용할 필요가 없으며 사용할 수도 있습니다. Appid 하나를 등록하는 경우.

관리 코드를 작성하고 IE 내부에서도 실행할 수도 있습니다. 작동 방식은 CLR 레지스터 a입니다 마임 필터 설치 될 때. 그런 다음 IE가 적절한 마임 유형의 무언가를 보내는 것을 보면 CLR에 코드를 건네주십시오. CLR은 인터넷 권한 만 부여되는 정도까지 코드를 샌드 박스를 수행하므로 프레임 워크가 노출하는 모든 것을 수행 할 수는 없습니다. 이 보안 영역에서 할 수 있고 할 수없는 일에 대한 특정 문서를 확인해야합니다.

일부 절충 :

쉽게 설치 : ActiveX 컨트롤을 사용하려면 설치 요구 사항을 상당히 비밀스러운 방식으로 설명하는 .ini 파일이있는 .CAB 파일에 모든 것을 포장해야합니다. 모듈 (ATL/MFC DLL 또는 기타 타사 모듈)에 추가 종속성을 설치 해야하는 경우 매우 까다 롭습니다. .NET 모듈을 사용하면 올바른 MIME 유형으로 보내지 만 사용자에게 올바른 버전의 프레임 워크를 갖도록해야합니다 (웹 사이트의 사용자 에이전트 문자열을 통해 확인할 수 있음).

보안 : ActiveX 컨트롤은 사용자 시스템에서 실행되는 기본 코드이므로 이론적으로는 원하는대로 할 수 있습니다. 실제로 Lorie는 많은 경우에 그것을 제한하며 레지스트리 및 파일 시스템 액세스와 같은 특수 케이싱을해야합니다 ( 보호 모드에서 이해 및 작업).

스레딩 : ActiveX 컨트롤은 브라우저 UI 스레드에서 실행되므로 해당 스레드에서 오랫동안 차단 작업을 수행하지 않아야하므로 스레드를 직접 수행해야합니다. 긴 차단 작업이 DOM을 조작하는 경우 IHTMLXXX 인터페이스를 사용하여 git 또는 com 마샬링 기능. .NET 애플릿이 브라우저 UI 스레드에서 실행되는지 확실하지 않지만 C#에서 처리하기가 더 쉽습니다.

브라우저 객체 : 관리 된 확장에서 IE / Shell 개체를 사용하려면 프레임 워크가 관리되는 객체에 인터페이스를 감싸는 데 큰 도움이되지 않기 때문에 대부분의 시간을 직접 작성해야합니다. 보다 http://pinvoke.net 시작하는 데 약간의 도움을 받기 위해.

호환성 : 동일한 프로세스에서 다양한 버전의 런타임을 호스팅하는 데 문제가 있습니다. 최근까지는 전혀 불가능했지만 3.x 버전으로 어느 정도 가능해지기 시작했다고 생각합니다. 상향은 .NET 2.0을 목표로하고 다른 사람이 이미 브라우저 확장의 일부로 .NET 1.0을로드 한 경우 손실됩니다. 일반적으로 IE와 Windows Shell은 관리 된 확장을 지원하지 않습니다. 이 .NET 앱 마임 필터 물건은 주목할만한 예외 일 수 있지만 잠재적 인 문제가있을 수 있습니다.

다른 팁

"ActiveX Control (.NET 언어를 사용하여 생성)"및 ".NET 애플릿"은 "IE에서 호스팅 된 .NET 어셈블리"의 속어입니다.

실제로 .NET 어셈블리는 다양한 응용 프로그램에서 호스팅 할 수 있습니다. 보다:

.NET Common Language 런타임에 호스트를 만듭니다

ActiveX Controls는 .NET 애플릿과 동일한 보안 제한이 없으므로 원하는 작업에 따라 유리하거나 단점이 될 수 있습니다. .NET 애플릿은 일반적으로 개발하기 쉽고 VB6 또는 C ++로 생성하는 ActiveX입니다.

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