Node.js
태그 :
- 개념
- - 이벤트 기반의 비동기 I/O Framework로 확장성 있는 네트워크 애플리케이션(Server-Side) 개발에 사용되는 소프트웨어 플랫폼.
I. Single Thread 기반의 비동기 IO 지원, Node.js 의 개요
가. Node.js 의 정의
- 이벤트 기반의 비동기 I/O Framework로 확장성 있는 네트워크 애플리케이션(Server-Side) 개발에 사용되는 소프트웨어 플랫폼.
나. Noe.js의 특징
특징 |
설명 |
비동기 I/O |
비동기 I/O를 구현하여 고속의 서버 기능 구현 가능
|
Single Thread |
Multi Thread 모델 배제, Single Thread 모델로 Thread 레벨의 Context Switching 자원 효율적 사용 |
Event Loop |
Callback함수를 통한 Event Loop로 사용자의 요구사항을 처리하는 구조 |
NW Application Framework |
복잡한 네트워크 전문 지식 없이도 간단한 코딩으로 네트워크 프로그램 개발 가능한 프레임워크 |
서버 사이드 |
Server –Side 기반의 자바 스크립트 개발 지원
|
스크립트 기반 |
고수준의 동시성 프로그램을 스크립트만으로 작성 가능
|
II. Node.js 구성도 및 구성요소
가. Node.js의 구성도
- 노드는 C/C++과 자바스크립트로 생성되며 C/C++은 레이어와 시스템 통합을 위해 사용
나. Node.js의 구성요소
구성요소 |
내용 |
Node Standard Library |
V8과 연결되어 기능수행을 도와주는 자바스크립트 기본 라이브러리 , 노드바인딩과 연결 |
Node Bindings |
c/c++로 구성된 시스템 바인딩 레이러 소켓 , http 등 통신 기능 제공 (DOM 관련 기능 제공 안됨) |
V8 Engine |
구글에서 개발된 오픈소스 JIT 가상머신 형식의 자바스트립트 엔진 |
Thread Pool |
Libeio라는 비동기 I/O 라이브러리로 구성 POSIX API에 기반을 두고 있으며 파일 처리 관련 작업 수행 |
Event Loop |
다양한 기능을 가진 고성능 이벤트 루프 라이브러리 Libev로 구성 (libevent라는 라이브러리와 유사) |
III. Node.js의 장단점 및 Angular.js와 비교.
가. Node.js의 장단점
구분 |
장단점 |
내용 |
장점 |
단순한 개발구조 |
있어서 빠르게 개발이 가능 |
용이한 웹 Push 구현 |
|
|
non-blocking IO 모델 지원 |
|
|
단점 |
응답시간 저하 가능 |
|
인터페이스가 많은 웹 개발에 부적절 |
|
나. Node.js와 Angular.js와 비교.
구분 |
Node.js |
Angular.js |
정의 |
이벤트 기반의 비동기 I/O Framework로 확장성 있는 네트워크 애플리케이션 (Server-Side) 개발에 사용되는 소프트웨어 플랫폼 |
화면을 조작하는 라이브러리나 프레임워크가 아닌 모든 애플리케이션을 개발하는 프론트앤드 프레임워크 |
특징 |
- Asynchronous I/O 기반 - Single Thread 사용 - Server-Side 개발 지원 |
- Two Way Data-Binding - Dependency Injection - Directives |
구조 |
||
목적 |
미들웨어 역할 수행 |
MVC 프레임워크 역할 수행 |