>  기사  >  백엔드 개발  >  Rails와 Node.js/PHP/Python 등의 비교

Rails와 Node.js/PHP/Python 등의 비교

巴扎黑
巴扎黑원래의
2016-11-11 09:58:581260검색

우선 비교 포스팅이 아닙니다. 언어와 프레임워크를 비교할 수 있나요?

두 번째로, 저는 그것들을 모두 사용하지 않았습니다

이 글의 유일한 목적은 여러분이 정말로 집중해야 할 것이 무엇인지 제 자신(그리고 탐색 중인 여러분)에게 상기시키는 것입니다

PHP
PHP는 단순하지만 더러운 언어입니다. 단순하다는 것은 학습 곡선이 낮다는 것을 의미합니다. 주로 wordpress, discuz 등과 같은 PHP 기반의 바보 같은 응용 프로그램이 많기 때문입니다. 또는 포럼 요구 사항, Google을 잘 활용하는 한 코드 한 줄도 작성할 필요가 없습니다. 그런데 PHP 자체가 단순할까요? 개인적으로는 그렇지 않다고 생각하며, 그 이유를 하나씩 나열하지는 않겠습니다. 더티는 디자인이 더 문제인 것 같습니다. 밑줄로 연결된 함수 이름만 봐도 알 수 있듯이 숙련된 PHP 프로그래머가 아니면 누구나 작성하기 어렵습니다. 심각하지 않은 프로그램.

권장 PHP 개발 프레임워크: 첫 번째 클래스: Yii, Yaf, Symfony; 두 번째 클래스: Zend, Cake, CI

Django
Django는 Python 기반 웹 개발 프레임워크이며 매우 유사합니다. Rails와 마찬가지로 몇 년 전만 해도 Python이 Ruby보다 "신뢰성"이 높았다는 점에서 Rails에 비해 장점이 있었습니다. 소위 신뢰성이란 더 많은 사람들이 사용하고, 더 많은 문서를 보유하고 있으며, 질문을 통해 답변을 찾을 수 있다는 것을 의미합니다. , 최근 몇 년 동안 Ruby가 개발되면서 점차적으로 등장하고(주로 Rails를 기반으로 함) 점점 더 많은 웹사이트에서 Rails를 사용하고 있습니다. 언어 설계 측면에서만 Python이 반드시 Ruby보다 단순하지는 않으며 일관성도 약간 덜 일관성이 있습니다. Python의 유일한 장점은 전 세계 대부분을 차지할 정도로 많은 진지한 과학자들이 Python을 사용하고 있다는 것입니다. Ruby는 일본에서 만들어진 반면 Ruby는 Python에서 빌린 것입니다. 루비가 파이썬과 동시에 유럽과 미국 국가에서 탄생한 언어였다면, 지금의 파이썬에도 문제가 없을 것이라고 믿습니다.

Rails
Rails는 이제 Ruby의 특성을 최대한 활용하는 거의 모든 주류 웹 프레임워크에서 Rails의 그림자를 볼 수 있습니다. Rails는 크고 작은 모든 애플리케이션에 적용될 수 있습니다. 매우 큰 규모의 애플리케이션은 어떤 스크립팅 언어만으로는 처리할 수 없습니다. 수년간의 개발 끝에 Rails는 그 영광을 잃어버렸고 이제 "뛰어난" 상태에 있습니다. 포괄적인 기능(사용 용이성, 단순성, 효율성, 학습 곡선 등) 측면에서 Rails를 능가할 수 있는 프레임워크는 없다고 말할 수 있습니다. .), NodeJS는 좋지 않고, 다른 "틈새" 언어는 더더욱 좋지 않습니다. 반대로 Rails는 급속도로 발전하고 있는 상태이며, 초대형 애플리케이션의 성공적인 사례가 나타날 것입니다. 앞으로도 하나씩.
ASP, JSP 등
복잡하고 비대하며 기업체, 사람 축적에 의존하는 기업, 국영기업, 은행, 전자상거래, 스타트업 기업은 자살한다 이것을 사용하면 자살하고 중요한 부서에서 이것을 사용하지 않으면 자살합니다. (모집) 그것을 할 수 없는 사람은 애프터 서비스만 이용할 수 있습니다.

기타
다른 언어도 나름대로의 용도가 있지만, 엄밀히 말하면 Clojure, Io 등 네트워크 개발에 특화되어 있다고 볼 수는 없습니다. 지금은 여기서 논의하지 않겠습니다.

요약:

학습 경로를 다시 선택하면(언어만, 서버, DB 측면 제외)

깊이 들어가지 않고 PHP에 대해 배우겠습니다

PHP MVC 프레임워크인 Yii에 대해 알아보세요. 깊이 들어갈 필요가 없습니다.

Ruby 기본 학습

Rails 기본 학습

Ruby 철저하게 학습

Rails를 철저하게 배우세요

Python, Django, Lisp, Clojure, NodeJS 등을 이해하세요.

---------------------- --- -구분선---------

이 문서에서는 적용 가능한 시나리오를 설명합니다. 레일 및 nodejs의 경우 매우 정확합니다. Rails와 nodejs는 가장 주목할만한 두 가지 백엔드 기술입니다.
면책 조항: 이 기사는 결코 NodeJS와 Ruby on Rails의 장점과 전략에 대한 논의가 아닙니다. 이는 의사결정 과정의 일부 사고와 결정 이면의 이유만을 설명합니다. 두 프레임워크 모두 훌륭하고 원래 설계 목표를 잘 달성했습니다. 이것이 바로 우리 모듈 중 일부가 여전히 NodeJS에서 실행되는 이유입니다.

저는 NodeJs의 열렬한 팬입니다. 저는 이것이 매우 흥미로운 기술이라고 생각하며 점점 더 대중화될 것이라고 믿습니다. 최근 Targeter 앱을 NodeJS에서 Ruby on Rails로 마이그레이션했지만 저는 이 기술에 대해 큰 감사를 표합니다.

NodeJS를 사용하여 개발한 이유는 간단했습니다. 저는 앱을 매우 빠르게 온라인에 올리는 패키지를 가지고 있으며(이 작업을 수행하는 데 54시간이 걸렸습니다) Ruby보다 JavaScript를 더 많이 사용합니다. 우리의 기술 아키텍처에는 MongoDB가 포함되어 있기 때문에 내 전문 지식은 NodeJS 환경에서만 의미가 있습니다. 하지만 애플리케이션의 크기가 커지면서 이 애플리케이션을 구현하기 위해 NodeJS를 선택한 것이 잘못된 선택이라는 것을 깨달았습니다. 그 이유를 간략하게 설명하겠습니다.

NodeJS는 단기 요청이 많은 애플리케이션에 매우 적합합니다. 기존 CRUD 애플리케이션의 경우에는 괜찮지만 이상적이지는 않습니다. 이러한 종류의 애플리케이션을 처리하기 위해 PHP, Ruby 및 Python 언어에는 매우 성숙하고 최적화된 프레임워크가 있습니다. NodeJS의 모든 것이 비동기적으로 실행된다는 생각은 CRUD 애플리케이션에 영향을 미치지 않습니다. 다른 언어로 널리 사용되는 프레임워크는 비동기 실행을 포함하여 모든 요구 사항을 충족하는 매우 우수한 캐싱 기술을 제공합니다.

NodeJS는 매우 젊은 기술 프레임워크이며 주변 라이브러리는 그다지 성숙하지 않습니다. 나는 훌륭하고 훌륭한 라이브러리를 많이 개발한 코드 기증자들을 모욕하지 않고 이렇게 말합니다. 그러나 대부분의 라이브러리는 개선이 필요하며 빠르게 성장하는 NodeJS 환경은 각 버전 업그레이드에 많은 변경 사항이 있음을 의미하므로 최신 기술을 사용하는 경우 즉시 최신 상태를 유지하는 것이 매우 중요합니다. 가능합니다. 이는 기업가들에게 많은 어려움을 안겨줍니다.

또 다른 이유는 테스트 때문입니다. NodeJS의 테스트 프레임워크는 나쁘지 않지만 Django나 RoR 플랫폼의 테스트 프레임워크에 비해 여전히 열등합니다. 매일 제출되는 코드 수가 많고 하루나 이틀 내에 출시되는 애플리케이션의 경우 프로그램에 문제가 없는 것이 중요합니다. 그렇지 않으면 여러분의 노력이 가치가 없을 것입니다. 멍청한 버그를 고치느라 하루를 보내고 싶어하는 사람은 아무도 없습니다.

마지막으로 우리에게 필요한 것은 모든 것을 캐시할 수 있는 것이며 가능한 한 빨리 구현되어야 합니다. 우리의 애플리케이션은 초당 수만 건의 조회수로 성장하고 있지만 결코 많은 액세스 요청이 발생하지 않습니다. 이것은 채팅 프로그램이 아닙니다. 메인 프로그램은 최대 1000RPS에 도달할 수 있습니다. 이러한 로드는 Ruby on Rails 및 Nginx에는 아무 것도 아닙니다.

지금도 이 기사를 읽고 계시다면 제가 말하려는 모든 내용을 보셨을 것이며, 우리 애플리케이션이 여전히 NodeJS를 사용하고 있는 곳이 어디인지 알고 싶을 수도 있습니다. 음, 우리 애플리케이션은 두 부분으로 구성되어 있습니다. 첫 번째는 사용자가 보는 부분인 인터페이스이고, 두 번째는 리포트 관리와 로깅 기능을 담당하는 부분입니다. 후자는 짧은 주기 요청이 많은 NodeJS의 가장 좋은 사용 시나리오 중 하나입니다. 작업의 이 부분은 데이터 푸시가 완료되기 전이라도 가능한 한 빨리 실행되어야 합니다. 요청 실행이 아직 종료되지 않은 경우 브라우저는 응답이 종료될 때까지 계속 기다리며 이는 사용자 경험에 영향을 미치기 때문에 중요합니다. NodeJS의 비동기적 특성이 우리를 구했습니다. 데이터는 데이터베이스에 저장되거나 처리되며, 요청이 완료되면 브라우저는 다른 중요한 작업을 시작할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 네임스페이스다음 기사:PHP 네임스페이스