1

내 원시 리소스에 액세스하기위한 공유 라이브러리에 바인드하는 창없는 NPAPI 플러그인을 작성했습니다. 플러그인은 Firefox 브라우저에서 실행중인 웹 응용 프로그램에 의해로드됩니다. 최근 Java Script Extension을 사용하여 넷 코드를 호출 할 수 있다는 것을 알았습니다. 그러나 이러한 Java Script Extension은 브라우저에만 해당됩니다.성능과 관련하여 JavaScript 확장과 NPAPI 플러그인의 차이점

네이티브 코드를 호출하기 위해 NPAPI 플러그인 대신 Java Script 확장을 사용하면 네이티브 라이브러리 API 호출을 수행 할 때 대기 시간 측면에서 성능이 향상 될 수 있습니까?

유의 사항 : 내 검색어는 일반용이며 Firefox 브라우저에만 해당되는 것은 아닙니다.

답변

1

다른 브라우저에서 구현 된 메커니즘에는 공통점이 없습니다.

파이어 폭 : js-ctypes을 통해 네이티브 라이브러리를 호출 할 수 있습니다. 이 메커니즘은 NPAPI 플러그인과의 통신보다 가벼워 야합니다. 더 중요한 것은, 프로세스 간 통신의 오버 헤드가 없다는 것입니다 (최신 Firefox 버전은 별도의 프로세스에서 플러그인을 실행합니다).

크롬 : 운영 시스템 기능에 액세스 할 수 AFAIK 유일한 방법은 (디스크에 임의의 위치에 파일을 기록하는 등) NPAPI 경유, 크롬 확장 시스템 라이브러리를 사용하는 것을 허용하지 않습니다. 그러나 네이티브 라이브러리 만 사용하여 실행 속도를 높이고 샌드 박스에서이 코드를 실행해도 괜찮 으면 - native client이 도움이 될 수 있습니다. 샌드 박스 실행으로 인해 NPAPI 플러그인보다 속도가 느려지지만 확장 프로그램이 설치 될 때 엄청난 무서운 경고가 발생하지는 않습니다.

Safari : 내가 아는 바로는 Safari는 네이티브 라이브러리 not even via NPAPI plugins을 사용할 수 없도록합니다.

Internet Explorer : MSIE 9.0부터 Internet Explorer에는 JavaScript 기반 확장과 비슷한 것이 없습니다.

+0

답장을 보내 주셔서 감사합니다. 이전에 확장 기능을 사용한 적이 없으므로이 쿼리를 요청하고 있습니다. NPAPI 플러그인은 페이지의 메모리에로드되므로 페이지가 삭제되면 언로드됩니다. 확장의 경우 확장의 메모리에로드되고 브라우저 인스턴스가 활성화되어있는 한 살아있게됩니까? 이 초심자 질문을 위해 유감스러운. – Souvik

+0

Safari 확장 프로그램은 NPAPI 플러그인을 사용할 수 있습니다. 그러나 이러한 플러그인은 확장에 포함될 수 없습니다. 별도로 설치해야합니다. – anfilat

+0

@anfilat : 그게 내가 의미했던 것입니다. 기본적으로 확장 프로그램은 낮은 수준의 액세스 권한을 얻을 수있는 방법이 없습니다. 플러그인이 시스템에 이미있는 경우 웹 페이지처럼 플러그인을 사용할 수 있지만 복잡한 설치로 인해 대부분의 확장 프로그램에 대해서는 실제로 접근 할 수 없습니다. –

관련 문제