Erstens ist dies kein Vergleichsbeitrag. Können Sprachen und Frameworks verglichen werden?
Zweitens habe ich nicht alle verwendet
Der einzige Zweck dieses Artikels besteht darin, mich (und Sie, die im Internet surfen) daran zu erinnern, worauf Sie sich wirklich konzentrieren müssen
PHP
PHP ist eine einfache, aber schmutzige Sprache. Einfach bedeutet eine geringe Lernkurve, vor allem weil es eine große Anzahl idiotischer Anwendungen auf PHP-Basis gibt, wie WordPress, Discuz usw. Wenn Sie nur einen allgemeinen Blog haben oder Forumanforderungen. Solange Sie Google gut nutzen, müssen Sie nicht einmal eine einzige Codezeile schreiben. Aber ist PHP selbst einfach? Persönlich glaube ich nicht, und ich werde die Gründe nicht einzeln auflisten. Was Dirty angeht, liegt es meiner Meinung nach eher am Design der Sprache. Man kann sich nur einen Eindruck davon verschaffen, wenn man sich die durch Unterstriche verbundenen Funktionsnamen ansieht. Es ist für niemanden schwierig, einen zu schreiben Programm, das nicht schwerwiegend ist.
Empfohlene PHP-Entwicklungsframeworks: Erste Klasse: Yii, Yaf, Symfony; Zweite Klasse: Zend, Cake, CI
Django
Django ist ein Python-basiertes Webentwicklungsframework, das sehr ähnlich ist Ähnlich wie bei Rails bestand der Vorteil gegenüber Rails vor einigen Jahren darin, dass Python „zuverlässiger“ war als Ruby. Die sogenannte Zuverlässigkeit bedeutet jedoch, dass mehr Menschen es verwenden, mehr Dokumente haben und durch Fragen Antworten finden können , Mit der Entwicklung von Ruby in den letzten Jahren, Nach und nach (hauptsächlich angetrieben durch Rails) verwenden immer mehr Websites Rails. Allein in Bezug auf das Sprachdesign ist Python nicht unbedingt einfacher als Ruby und seine Konsistenz ist etwas weniger konsistent. Man kann sagen, dass der einzige Vorteil von Python darin besteht, dass es von vielen ernsthaften Wissenschaftlern verwendet wird, die den größten Teil der Welt ausmachen Bereich des wissenschaftlichen Rechnens, während Ruby in Japan hergestellt wird (Ruby entlehnt von Python). Wenn Ruby eine Sprache wäre, die zur gleichen Zeit wie Python in europäischen und amerikanischen Ländern geboren wurde, wäre Python meiner Meinung nach jetzt nichts Falsches mehr.
Rails
Rails ist ein erstaunliches Web-Framework. Der Schatten von Rails ist mittlerweile in fast allen gängigen Web-Frameworks zu sehen. Rails nutzt die Eigenschaften von Ruby bis zum Äußersten. Rails können auf alle großen, mittleren und kleinen Anwendungen angewendet werden. Sehr große Anwendungen können nicht von einer Skriptsprache allein verarbeitet werden. Nach Jahren der Entwicklung hat Rails seinen Ruhm verloren und befindet sich nun in einem Zustand von „hervorragend“. Man kann sagen, dass kein Framework Rails in Bezug auf umfassende Fähigkeiten (Benutzerfreundlichkeit, Einfachheit, Effizienz, Lernkurve usw.) übertreffen kann .), und Django ist nicht gut, und andere „Nischen“-Sprachen sind noch weniger gut. Im Gegenteil, Rails befindet sich in einem rasanten Entwicklungsstadium und es werden erfolgreiche Fälle von extrem großen Anwendungen erscheinen einer nach dem anderen in der Zukunft.
NodeJS
NodeJS ist ein vielversprechendes Web-Framework, aber es ist schade, dass es ein paar Jahre später geboren wurde, sonst wäre es im Vergleich zu PHP, Django und Rails immer noch in der Lage, mit Rails zu konkurrieren , NodeJS ist Open Source Es gibt relativ wenige Projekte und etwas weniger erfolgreiche Großprojekte, aber sein Design und seine Leistung sind auch recht einfach und effizient. Ich glaube, dass es auch in naher Zukunft glänzen wird.
ASP, JSP usw.
Komplexe, aufgeblähte Unternehmen auf Unternehmensebene, Unternehmen, die auf die Ansammlung von Menschen angewiesen sind, staatliche Unternehmen, Banken, E-Commerce und Start-up-Unternehmen werden Selbstmord begehen wenn sie diese nutzen, und es wird auch Selbstmord begehen, wenn wichtige Abteilungen diese nicht nutzen (Rekrutierung). Wer das nicht kann, kann nur den After-Sales-Service nutzen).
Andere
Andere Sprachen haben ihre eigenen Verwendungszwecke, werden aber streng genommen nicht als auf die Netzwerkentwicklung spezialisiert angesehen, wie z. B. Clojure, Io usw. Wir werden hier vorerst nicht darauf eingehen.
Zusammenfassung:
Wenn ich den Lernweg erneut wähle (nur Sprache, ohne Server, Datenbankaspekte), werde ich
PHP lernen, ohne in die Tiefe zu gehen
Lernen Sie mehr über Yii, ein PHP-MVC-Framework, ohne dass Sie in die Tiefe gehen müssen
Grundsätzlich Ruby lernen
Grundsätzlich Rails lernen
Ruby gründlich lernen
Rails gründlich lernen
Python, Django, Lisp, Clojure, NodeJS usw. verstehen.
----------------------------------- --- -Trennlinie---------------------------------
Dieser Artikel beschreibt anwendbare Szenarien für Schienen und NodeJS Sehr genau. Rails und NodeJS sind die beiden bemerkenswertesten Backend-Technologien.
Haftungsausschluss: Dieser Artikel ist keineswegs eine Diskussion über die Vorteile und Strategien von NodeJS und Ruby on Rails. Es beschreibt nur einen Teil des Denkens in unserem Entscheidungsprozess und die Gründe für unsere Entscheidungen. Beide Frameworks sind hervorragend und haben ihre ursprünglichen Designziele gut erreicht, weshalb einige unserer Module immer noch auf NodeJS laufen.
Ich bin ein großer Fan von NodeJs. Ich denke, dass dies eine sehr aufregende Technologie ist und ich glaube, dass sie immer beliebter werden wird. Ich schätze diese Technologie sehr – auch wenn wir kürzlich unsere Targeter-App von NodeJS auf Ruby on Rails migriert haben.
Der Grund, warum wir NodeJS für die Entwicklung verwendet haben, war einfach. Ich habe ein Paket, mit dem unsere App sehr schnell online geht (wir haben dafür 54 Stunden gebraucht), und ich verwende JavaScript häufiger als Ruby. Da unsere technische Architektur MongoDB beinhaltet, machen meine Fachkenntnisse nur in einer NodeJS-Umgebung Sinn. Als die Anwendung jedoch größer wurde, wurde mir klar, dass die Wahl von NodeJS zur Implementierung dieser Anwendung eine falsche Wahl war. Lassen Sie mich darlegen, warum.
NodeJS eignet sich gut für Anwendungen mit einer großen Anzahl kurzlebiger Anfragen. Für herkömmliche CRUD-Anwendungen ist es in Ordnung, aber nicht ideal. Für die Handhabung dieser Art von Anwendungen gibt es sehr ausgereifte und optimierte Frameworks in den Sprachen PHP, Ruby und Python. Die Idee, dass alles in NodeJS asynchron ausgeführt wird, hat keine Auswirkungen auf CRUD-Anwendungen. Beliebte Frameworks in anderen Sprachen bieten eine sehr gute Caching-Technologie, die alle Ihre Anforderungen erfüllt, einschließlich der asynchronen Ausführung.
NodeJS ist ein sehr junges Technologie-Framework und die umgebenden Bibliotheken sind noch nicht sehr ausgereift. Ich sage dies, ohne die Codegeber zu beleidigen, die ausgezeichnet sind und viele hervorragende Bibliotheken entwickelt haben. Allerdings müssen die meisten Bibliotheken verbessert werden, und die schnell wachsende Umgebung von NodeJS bedeutet, dass es bei jedem Versions-Upgrade viele Änderungen gibt. Wenn Sie eine Spitzentechnologie verwenden, ist es sehr wichtig, dass Sie so schnell wie möglich auf dem neuesten Stand bleiben möglich. Das bringt unternehmerisch tätige Unternehmen in große Schwierigkeiten.
Ein weiterer Grund ist das Testen. Das Test-Framework in NodeJS ist nicht schlecht, aber im Vergleich zu denen auf Django- oder RoR-Plattformen immer noch minderwertig. Für eine Anwendung, die jeden Tag eine große Anzahl von Code-Übermittlungen hat und innerhalb von ein oder zwei Tagen veröffentlicht wird, ist es entscheidend, dass das Programm keine Probleme hat, sonst wird sich Ihre harte Arbeit nicht lohnen. Niemand möchte einen Tag damit verbringen, ein paar dumme Fehler zu beheben.
Letzter Punkt: Was wir brauchen, ist etwas, das alles zwischenspeichern kann, und es muss so schnell wie möglich implementiert werden. Obwohl unsere Anwendung mit Zehntausenden Zugriffen pro Sekunde wächst, wird es nie eine große Anzahl von Zugriffsanfragen geben; Das Hauptprogramm kann höchstens 1000 RPS erreichen. Eine solche Auslastung ist für Ruby on Rails und Nginx nichts.
Wenn Sie diesen Artikel jetzt noch lesen, dann haben Sie alles gesehen, was ich zu sagen habe, und Sie sind möglicherweise sehr beharrlich und möchten wissen, wo unsere Anwendung NodeJS noch verwendet. Nun, unsere Bewerbung besteht aus zwei Teilen. Der erste ist die Schnittstelle, der Teil, den Benutzer sehen, und der zweite ist der Teil, der für die Berichtsverwaltung und die Protokollierungsfunktion verantwortlich ist. Letzteres ist eines der besten Nutzungsszenarien für NodeJS, bei dem es eine große Anzahl kurzzyklischer Anfragen gibt. Dieser Teil der Aktion muss so schnell wie möglich ausgeführt werden, noch bevor unser Daten-Push abgeschlossen ist. Dies ist wichtig, denn wenn die Anforderungsausführung noch nicht beendet ist, wartet der Browser weiterhin auf das Ende der Antwort, was sich auf die Benutzererfahrung auswirkt. Die asynchrone Natur von NodeJS hat uns gerettet. Die Daten werden entweder in der Datenbank gespeichert oder verarbeitet, und sobald die Anfrage abgeschlossen ist, kann der Browser andere wichtige Dinge tun.