Anwendungsfälle für node.js und c #

10

Ich mache ziemlich viel ASP.NET-Arbeit (C #, MVC), aber das meiste davon ist typische Webentwicklung. Ich mache eine erholsame Architektur mit CRUD-Repositorys. Die meisten meiner Kunden haben nicht viele fortgeschrittene Anforderungen in ihren Anwendungen.

Ich schaue jetzt auf node.js und seine Auswirkungen auf die Leistung (ich bin süchtig nach Geschwindigkeit), aber ich habe mich nicht so sehr damit beschäftigt.

Ich frage mich, ob

  • node.js kann meine typische Webentwicklung in C # und ASP.NET MVC realistisch ersetzen (vorhandene Apps nicht neu schreiben, sondern an neuen arbeiten)
  • node.js kann eine ASP.NET MVC-App ergänzen, indem der vorhandenen Architektur eine gewisse asynchrone Güte hinzugefügt wird.

Gibt es Anwendungsfälle für / gegen C # und node.js?

Bearbeiten

Ich liebe ASP.NET MVC und bin sehr gespannt, wohin es geht. Ich versuche nur zu sehen, ob es spezielle Anwendungsfälle gibt, die bevorzugen

Chase Florell
quelle
Ja, mir ist klar, dass dies ein größeres Gespräch sein kann, wenn Ruby oder PHP einbezogen werden, aber für diese spezielle Frage interessiert mich keines von beiden ... das bin nur ich.
Chase Florell
Die Antwort lautet: Versuchen Sie es mit Node. Lesen Sie mehr darüber. Sehen Sie, ob es Ihnen gefällt.
Raynos

Antworten:

11

Ich schaue jetzt auf node.js und seine Auswirkungen auf die Leistung (ich bin süchtig nach Geschwindigkeit), aber ich habe mich nicht so sehr damit beschäftigt.

Profil, Profil, Profil. Nur so können Sie feststellen, dass Ihre Beschleunigungen den richtigen Effekt haben. Sie können sich vorstellen, dass es schnell genug ist. Aber die meisten Leute optimieren gerne vorzeitig. Das ist schlimmer als mit dir selbst während eines Dates zu spielen.

Ich frage mich, ob node.js meine typische Webentwicklung in C # und ASP.NET MVC vollständig ersetzen kann, ob es besser als Ergänzung zu C # und ASP.NET MVC ist oder ob es einige Dinge gibt, die einfach "gut genug in Ruhe lassen" sollten ".

Gibt es Anwendungsfälle für / gegen C # und node.js?

Wenn Sie sich in einem Geschäft befinden, das routinemäßig Code in C # schreibt, sollten Sie MVC verwenden (es ist viel besser als WebForms und heißt WebPages). Sie werden nicht viel Zeit für das Tooling-Training verlieren, und das sollten Ihre Workflows bereits erledigen.

Was Sie oben anscheinend nicht angeben, sind die Gründe für die Auswahl. Sie haben zwei aktuelle Marktoptionen angegeben, eine befindet sich noch in der Alpha-Phase, die andere im dritten Jahr der Veröffentlichung der Plattform. Ich möchte die aktuellen Testmodell-Elektroautos nicht mit den Honda-Hybriden vergleichen, die bereits auf dem Markt sind. Sie sind in zwei verschiedenen Ligen.

Hier ist ein Grund für Sie, sich von node.js fernzuhalten, wenn Sie nominell ein C # -Shop sind.

Sie arbeiten derzeit nicht in asynchronen Ereignis-E / A, sondern in einem prozeduralen Format.

Das ist der Gegensatz zu dem, was nodejs für Sie tun wird.

Wenn Sie jedoch häufig asynchronen Code in C # schreiben und ihn häufig in einem ereignisgesteuerten Stil verwenden, sollten Sie node.js unbedingt berücksichtigen.

Folgendes wirst du aufgeben:

  • IIS - Dies ist für viele Menschen tatsächlich wichtig. Dinge wie die native A / D-Integration sind bereits erledigt und ziemlich fehlerfrei. Tatsächlich lässt sich node.js jetzt gut in IIS integrieren.
  • Rasiermessertemplat - Wenn Sie ernsthaft C # MVC gemacht haben, dann verwenden und lieben Sie Rasiermesser und wie schnell Sie Dinge erledigen können. Es gibt ähnliche Vorlagen in Node, und ich klopfe sicherlich nicht an Node, aber die gesamte Toolchain ist bereits in C # vorhanden, und viele davon werden derzeit in der Node-Welt erstellt. NB: Viele dieser Werkzeuge sind jetzt eher reifen _
  • Erstellung von DLLs zur Kompilierungszeit - node.js wird im Allgemeinen im laufenden Betrieb kompiliert, dh, nicht alle Pfade werden beim Start überprüft. Es ist durchaus möglich, dass der Knoten wirklich schlechten Code enthält, den niemand berührt, prüft oder testet.
  • Alle derzeit in VS integrierten Tools, die Sie täglich verwenden - Es gibt einfach nicht so viel VS-Unterstützung für Javascript. Zum Teil, weil alles in Javascript so dynamisch ist. NB: Microsoft arbeitet offensichtlich an der Unterstützung von Tools für Javascript _

Folgendes erhalten Sie:

  • Alles, was Sie entwickeln, wird in derselben Sprache verfasst, vorausgesetzt, Sie führen sowohl clientseitige Skripte als auch serverseitige Skripte aus. (oder warum sollten Sie überhaupt Javascript auf dem Server in Betracht ziehen)

Da ich Node hier also völlig verprügele, möchte ich darauf hinweisen, dass Node meine Spielsprache zu Hause ist, ich liebe es und ich helfe Leuten, es manchmal auf den Stackoverflow-Chat-Servern (Raum 642) zu debuggen. Ich sehe, dass es in Zukunft ein großes und erstaunliches Potenzial hat.

Ich sage nur, wirf das Baby nicht raus und frage mich, warum das Badewasser schmutzig ist.

Sie haben keinen Grund angegeben, warum Sie Ihre jahrelange Erfahrung aufgeben und mit etwas Neuem beginnen sollten. Sind entweder schlechte Werkzeuge? Überhaupt nicht. Beide sind großartig und machen die Entwicklung zum Kinderspiel.

Kann der Knoten C # ersetzen? Ja, ganz sicher. So könnte PHP oder Java oder Ruby. Sie fragen nicht danach.

Hier erfahren Sie, wann Sie bereit sind, node.js anstelle von C # zu programmieren:

  • Sie überlegen, ein Buch zu schreiben, um anderen Menschen zu helfen, "Javascript zu bekommen", anstatt der langweiligen alten Programme, die sie zuvor in C # usw. geschrieben haben.
  • Sie haben Probleme mit synchronen (blockierenden) E / A, die verhindern, dass Ihre Apps tatsächlich arbeiten.
  • Sie verwenden KEINE anderen Bibliotheken in C # als die Standard-MVC und das nur für das Routing. Sie sind sich ziemlich sicher, dass Sie eine bessere Routing-Engine verwenden können, und Sie codieren alles so nah wie möglich am Metall.
  • Jedes Datenobjekt, das Sie entwerfen, wird als Hash anstelle eines stark typisierten Objekts angezeigt.
jcolebrand
quelle
1
Mein Rat, schreiben Sie drei oder vier komplexe Websites in node.js. Fangen Sie klein an und werden Sie dann größer.
Jcolebrand
1
Ich bin nicht in der Hochschule. Ich entwickle seit ungefähr 8 Jahren Solo und es geht mir ganz gut. Ich kann alleine bessere Dollars verdienen als unter einer anderen Firma.
Chase Florell
2
C # überprüft die Kompilierungszeit aller Codepfade. Es wird nicht geworfen, bis schlechte Daten es in die Luft jagen. Node wird den Build nicht nur wegen schlechten Codes stoppen. Oder ich habe eine alte Version verwendet und das hat sich geändert.
Jcolebrand
1
@ Raynos: Razor ist kein Open-Source-Projekt eines Drittanbieters, sondern die offiziell von Microsoft entwickelte View-Engine für ASP.NET MVC 3
Carson63000 vom
1
Zum Zeitpunkt dieses Schreibens wurde Node.js von IIS nicht unterstützt, jetzt jedoch.
Jcolebrand
5

Wenn Ihr nur ruhige Architektur zu tun CRUD Repositories gibt es keinen guten Grund zu der Hafen eine bestehende Anwendung zu node.js.

Wenn Sie eine neue Anwendung schreiben, die REST und CRUD ausführt, kann es gute Gründe geben, node.js von Anfang an zu verwenden.

Es ist wirklich pro Anwendung abhängig.

Zum Beispiel würde ich persönlich REST / CRUD-Anwendungen vollständig in node.js schreiben, da dies eine persönliche Präferenz ist. Die Entwicklung von Node ist großartig. ASP.NET MVC war für mich ein nerviges restriktives Framework.

Fazit: Beide Tools erledigen den Job. Wenn es keine spezifischen Anforderungen gibt, die .NET oder Node bevorzugen, verwenden Sie, was Sie wollen. dh es ist persönliche Präferenz.

Ich kann jedoch einige der offensichtlichen Vorteile beider Plattformen auflisten

ASP.NET

  • Windows / .NET-Integration. Wenn Sie möchten, dass Ihr Microsoft-Stack eng gekoppelt und hochintegriert ist, möchten Sie .NET
  • leicht verfügbare Arbeitskräfte
  • Monolothische Gerüste, die Ihre Hand halten
  • Verfügt über eine Reihe von Funktionen, die sofort funktionieren. Wenn Sie mit diesen Funktionen zufrieden sind, verbessert dies die Produktivität. Wenn Sie stattdessen benutzerdefinierte Funktionen wünschen, kämpfen Sie gegen das Tool und reduzieren die Produktivität.

Node.js

  • Einzelne Sprache für Ihren gesamten Webstack (wenn Sie noSQL-Datenbanken verwenden, die js für ihre "Abfragen" wie couch / mongo verwenden).
  • Ideal für weiche Echtzeit-Webanwendungen mit Tools wie socket.io
  • Hervorragend geeignet für Netzwerkkleber, wenn Ihr Server nur mit n Remote-Endpunkten verschiedener Typen spricht.
  • Sie erhalten nur die minimalistischen Funktionen, die sofort verfügbar sind. Dies bedeutet, dass Sie Ihre Anwendung auf die von Ihnen gewünschte Weise individuell gestalten können.
  • Sammlung kleiner Unix-Tools, die eine Sache und eine Sache gut machen und einfach zu kombinieren sind
  • npm : Paketverwaltung richtig gemacht
  • reiche Open Source Community
Raynos
quelle
Ja, ich möchte keine vorhandenen Apps portieren. Denken Sie an die Apps, die in Zukunft kommen werden.
Chase Florell
5
@Raynos sollte den Haftungsausschluss hinzufügen, dass er ein Node.js-Evangelist ist und niemals eine auf MVC3 / 4 basierende Website erstellt hat. (Ich denke, das spiegelt sich in der Antwort wider).
Matt Esch