web-dev-qa-db-ja.com

Node.jsとTwistedのユースケースは何ですか?

開発者のチームがPython&Twistedの場合と同じようにサーバー側でJavascriptを書くのと同じくらい快適であると仮定します。Node.jsがTwistedより適切な場合(およびその逆)はいつですか?)

65
pmn

Twistedはより成熟しています-長い間使用されており、頭を回転させるほど多くのベルとホイッスルがあります(最も素晴らしいプロトコルの実装、リアクターと他のさまざまなイベントループの統合、およびなど)。

Node.jsはより高速であると言われており(私はそれを自分で測定していません)、おそらく追加のベルやホイッスルがまったく必要ない場合は、より簡単に使用できます。 Python世界-繰り返しますが、私は相対的なパフォーマンスを測定したことがありません)。

そのため、追加の機能が必要な場合、またはより成熟したパッケージを使用してより堅実な地面を感じたい場合は、Twistedを絶対に使用します。これらの考慮事項が当てはまらないが、最高のパフォーマンスがプロジェクトの主要な目標である場合、Twistedで簡単なベンチマーク(ただし、実際のプロジェクトで少なくとも1つまたは2つの主要なパフォーマンスが必要な状況を表す)を記述します。 Node.js、andトルネード、そして全体的にどの方向に進むかを決める前に、多くの注意深い測定を行います。 Python vsサーバーサイドJavaScript)の「追加機能」(サードパーティの拡張機能と標準ライブラリ)もはるかに豊富であり、プロジェクトにそのような追加機能が必要な場合、それが重要な要素になる可能性があります。

最後に、これらの問題のどれも特定のアプリケーションシナリオに関係がない場合は、開発チームに、3つの候補(Twisted、Node.js、Tornado)の単純さと親しみやすさの相対的な単純さについて投票してもらいます。結構です、チームのほとんどが最も快適なものを選ぶかもしれません!

77
Alex Martelli

2012年の時点で、Node.jsは高速で、スケーラブルで、成熟し、広く使用されているプラ​​ットフォームであることが証明されています。 Node.jsの作成者であるRyan Dahl氏:

最近、Nodeは、VoxerやUberからWalmartやMicrosoftに至るまで、世界中の多くの新興企業や有名企業で使用されています。何十億ものリクエストが通過しています= Node毎日。プロジェクトに参加する人が増えるにつれて、利用可能なサードパーティのモジュールと拡張機能が成長し、品質が向上します。ミッションクリティカルなアプリケーションに推奨することについては、以前は予約されていましたが、私は今、Node=最も要求の厳しいサ​​ーバーシステムでさえも強くお勧めします。

より正式には、Nodeの利点は次のように分類できます。

  • 素晴らしいコミュニティ:他のプラットフォームがこのような短期間にコミュニティの魅力を獲得したとは言えず、何百人もの貢献者と何千人ものウォッチャーがいますGitHubにあり、Yahoo!のような巨人によって使用されています。 (マンハッタンプロジェクト)、e-bay、LinkedIn、Microsoft、およびVoxer。

  • NPM:コアは比較的小さいですが、Node haslots利用可能なパッケージを利用して、その機能をあらゆるものに拡張できます!PyPI(pip)は、すべて自動化されており、積極的に開発および拡張されています。

  • スケーラビリティと速度:ノードのアーキテクチャとシングルスレッドの性質により、高いスケーラビリティと速度が可能になります。特に0.8リリースの後、その速度は本当に速くなりました( ベンチマーク )。これは、Nodeを使用する多くの大企業で確認できます。現在のブラウザ戦争のおかげで、V8コアも常に改善されています。

  • JavaScript:Node(JS)のコア言語は、このようなサーバー側の使用法、特にラムダ関数、動的に適していますオブジェクトと簡単なJSONシリアライゼーションはJSのハイライトであり、速度とスケーラビリティが重要な場合に非常によく適合します(Pythonにはそれらすべてが備わっていますが、JSの方が優れており強力です)。

  • 導入:その幅広い使用法のため、多くの本当に優れたサイトが簡単で強力なツールを提供していますNode導入、含む:Heroku、Joyent、Cloud9など。

したがって、Nodeはより強力で将来が明るいように見えるため、それを使用するための制約(既存のコード、サーバー、チーム機能など)がない場合は、新しいコラボレーションに推奨されます高速性とスケーラビリティを目指したネットワークプロジェクト。

7
Amir Ali Akbari