Node.JS
는 결국 V8
엔진에 의하여 동작하기 때문에, Node.JS
가 의존하는 V8
엔진의 헤더와 소스코드를 그대로 사용하여 코드를 작성하면, Node.JS
에서 사용가능한 C/C++
코드가 완성됩니다.이렇게 완성된
C/C++
코드를 포함시켜 Node.JS
를 다시 컴파일해도 상관이 없지만, 일반적으로는 동적 링크 라이브러리
Dynamically Linked Library, DLL의 형태로 컴파일한 뒤 require()
함수를 사용하여 동적으로 불러오는 방식을 취하며, 이렇게 만들어진 DLL
을 Native Extention
이라고 합니다.구체적으로
Native Extention
이 작동하는 방식은 다음과 같습니다.fs
모듈의 핵심 구현은C
언어로 구현된Native Extention
에 담겨있다.
Native Extention
를 메모리에바인딩
하여fs
모듈을 사용할 준비를 마친다.
fs
모듈이require
되고,Native Extension
의 메소드를 호출한다.
- 호출된 메소드는
LibUv
에 의해 동기 또는 비동기로 수행된다.
Native Extention
은 V8
의 메소드를 사용하면서 Node.JS
와 통신한다
Native Extention이 수행되는 순서