Node.js는 다른 서버 측 프레임 워크와 어떻게 다릅니 까?


21

Node.js의 인기가 높아짐에 따라 소규모 프로젝트를 수행하는 사람들이 여러 명있는 것을 보았습니다.

또한 Node.js가 무엇을 할 수 있는지에 대한 아이디어를 얻기 위해 찬반 양론 목록을 살펴 보았지만 여전히 PHP, Perl 또는 Ruby와 같은 다른 성숙한 서버 측 기술과 어떻게 다른지 명확하지 않습니다. 울타리.

구체적으로 Node.js를 현재 대안과 차별화하는 이유는 무엇입니까?


1
@ downvoter-왜 downvote입니까? 두 번째 paragragh를 제외하고 (항상 더 잘 할 수 있기 때문에 다른 사람이 그것을했을 때 왜 무언가를 시작하는지 물어볼 수는 없습니다), 나는이 질문이 흥미 롭다는 것을 알았습니다. 나는 종종 이것을 스스로 생각했다.
David Peterman

선택하기에는 사소한 편이지만 인용 된 문구 "node.js" 를 검색하면 약 3 백만 건의 조회수가 발생합니다.
피터 로웰

@ 피터, 그래, 나는 그것을 시도, 당신이 맞아요. 그러나 3 백만은 여전히 ​​2 개입니다. 1 년 후 다시 올 수 있으며이 수치는 아마도 천만 명에 이릅니다. :)
Saeed Neamati

3
@Mark, 뛰어난 편집에 감사드립니다. 지금은 더 명확합니다.
Saeed Neamati

답변:


18

Node.js를 기존 서버 측 프레임 워크, 비동기 이벤트 및 프로그래밍 언어로 JavaScript 를 사용하는 것과 다른 두 가지 중요한 사항이 있습니다.

비동기 이벤트

기존 서버 측 프레임 워크의 대부분은 동기식 아키텍처를 사용하지만 Node.js는 비동기식 아키텍처를 사용하며 JavaScript는 잘 처리 할 수 ​​있습니다. 이는 서버 가 이벤트에 반응하고 이벤트 (메시지)를 데이터베이스 등으로 보냅니다. 이 프로그래밍 스타일은 동기식 스타일과 매우 다르며 다른 언어에서는 사용하기 어려울 수 있습니다. Node.js는 비동기 IO를 사용하는 비동기 스타일을 사용하며 확장 성이 뛰어납니다.

이벤트 중심 아키텍처 참조

자바 스크립트

JavaScript는 웹 응용 프로그램이 클라이언트에서 사용하는 프로그래밍 언어입니다. 서버 측에서 동일한 언어를 사용한다는 것은 개발자가 자신의 JavaScript 지식을 클라이언트와 서버 모두에 적용하고 필요에 따라 동일한 기능을 사용할 수 있음을 의미합니다.

Ryan Dahl의 Node.js 소개 프레젠테이션 에서 Node.js 이벤트 중심 아키텍처에 대해 자세히 설명합니다.


2
이것은 지금까지 가장 좋은 대답이지만, Asynchromous Events를 가장 우선시합니다. 이것이 Node.js를 서버 측 프레임 워크로 매우 매력적으로 만드는 이유입니다. 그러나 비동기 I / O 및 확장 성을 언급하는 것이 좋습니다. 그것이 핵심입니다.
Adam Crossland

글쎄, @ 조나스, 난 아직도 이해가 안 돼요. ASP.NET도 이벤트 기반입니다. 그렇다면 Node.js와 ASP.NET의 차이점은 무엇입니까? 비동기식이기 때문입니까? 이 경우 ASP.NET에서 멀티 스레딩을 사용하면 똑같이 할 수 있다고 생각합니다.
Saeed Neamati

3
@Saeed : ASP.NET은 스레드 및 동기입니다. 예를 들어 데이터베이스에 액세스 할 때 스레드가 차단되고 데이터베이스의 응답을 기다리고 있습니다. 그리고 많은 스레드 (예 : 요청 당 하나)를 사용하는 경우 많은 메모리가 사용됩니다 (각 스레드에는 상당히 많은 양의 메모리가 필요함). 병목 현상 일 수 있습니다. Node.js는 메시지를 보내고 이벤트에 반응하므로 스레드를 (희망적으로) 차단하지 않습니다. node.js를 사용하면 Ajax ( Asynchronous javascript and XML) 및 동일한 언어로 클라이언트 측과 동일한 프로그래밍 모델을 사용합니다 .
조나스

당신은 그 뒤에 큰 오픈 소스 커뮤니티를 잊어 버렸습니다.
Raynos

3
C # 5가 새로운 async것들 과 함께 롤백 할 때 변경 될 수 있습니다. 문제는 다른 언어로 확장 가능한 비동기 코드를 작성할 수 없다는 것이 아니라 , 언어 수준이 제대로 지원되지 않으면 (정확하게) 수행하기가 더 어렵다는 것입니다.
Davy8

6

이벤트 중심 이기 때문에 차이점이 있습니다. 따라서 서버의 확장 성이 향상됩니다.

간단히 말해서;

실 모형

  1. 고객이 무언가를 요구합니다
  2. 서버가 종료되고 요청을 처리합니다.
  3. 클라이언트에게 돌려줍니다
  4. 새로운 요청을 처리 할 준비가되었습니다.

이벤트 모델

  1. 고객이 무언가를 요구합니다
  2. 서버가 처리 요청을 전달합니다. 새로운 요청을 처리 할 준비가되었습니다.
  3. 서버는 더 많은 요청을 처리합니다.
  4. 요청 처리가 완료되면 서버는 클라이언트에 데이터를 다시 제공합니다.

@Tom, 이벤트 중심이란 무엇입니까? ASP.NET WebForms도 이벤트 중심이며 Session_Started또는 Context_Authenticated또는 Page_Load? 와 같은 처리기를 볼 수 있습니다 .
Saeed Neamati

1
그것을 이벤트 중심이라고 부르는 것이 필요 이상으로 모호하며 실제로 Node.JS의 핵심에 도달하지 않습니다. 비동기 I / O.
Adam Crossland

2

나는 그것이 인기가 JavaScript를 사용했기 때문이라는 인상을 받았습니다. 많은 웹 개발자가 JavaScript를 알고 있기 때문에 이제는 동일한 언어를 사용하여 서버 측 코드를 개발할 수있는 판매 시점입니다. 이것은 내가 생각할 수있는 몇 가지 장점이 있습니다.

  • 서버와 클라이언트간에 코드 파일을 공유 할 수 있으므로 시스템의 양면을 처리하기위한 노력이 중복되지 않습니다.
  • 개발자는 언어를 정신적으로 전환 할 필요가 없습니다. (내 의견으로는 별거 아님)
  • 설계자는 웹 솔루션을 설계 할 때 여러 언어를 선택할 필요가 없습니다.
  • 서버 측 코드를 개발 한 적이없는 사람은 이제 다른 언어를 배우지 않고도 그렇게 할 수 있습니다. (IMHO의 귀중한 주장이 아닐 것임)

Node.JS는 빠르고 확장 성이 뛰어나서 인기가 있습니다. JavaScript로 된 것은 좋지만 대체로 부수적입니다.
Adam Crossland

2
더 중요한 것은 서버 측 개발자가 동일한 언어로 클라이언트 측 코드를 작성할 수 있고 서버 측 모듈을 클라이언트와 공유 할 수 있다는 것입니다. 다른 방법은 아닙니다. 해킹 된 클라이언트 측 코드를 서버에 이식하고 싶지 않습니다.
Raynos

@Adam : "빠른 확장 성"설명에 적합한 기술이 이미 있는데 node.js가 인기를 얻는 이유는 무엇입니까? -JavaScript이기 때문입니다.
존 피셔

@John Node.js에서 확장 성 이 좋지 않은 앱을 작성하는 것이 더 어렵습니다 . 앱이 CPU를 많이 사용하는 것보다 디스크 / 네트워크를 많이 사용하는 경우 (대부분의 경우) 매우 까다로운 스레딩 코드를 작성하지 않는 한 대부분의 다른 서버보다 단일 코어에서 여러 번의 동시 연결을 쉽게 지원할 수 있습니다.
Davy8

@ Davy8 : 모든 것이 다른 프레임 워크 / 시스템에 달려 있다고 생각합니다. 설명하는 확장 성의 용이성은 이미 내가 사용하는 도구로 간단합니다. 내 관점에서 Node.js가 제공하는 유일한 것은 강력하지 않은 JavaScript 풍미입니다.
John Fisher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.