Ändern Sie meinen Stapel von Montag



Grüße Kollege!



Ungefähr ein Jahr bevor dieser Artikel geschrieben wurde, fühlte es sich an, als würde ich anfangen auszubrennen. Die Arbeit, die vor langer Zeit zu einem Handwerk geworden ist, hat aufgehört, jedem Programmierer das Pioniergefühl der Schüler zu vermitteln, das Euphorie mit sich bringt. Um dieses Gefühl zu wahren, um neuen Erkenntnissen willen, saß ich einmal 18 Stunden am Tag am Monitor. Es ist lange her ... aber vor kurzem habe ich dieses Gefühl wieder erlebt! Anfangs war es ruhig, ungewöhnlich wegen einer langen Pause, aber im Laufe der Zeit flammte es auf und ging in Flammen auf!



Wenn Sie mit mir identisch sind, ein Programmierer mit ungefähr 12 Jahren Erfahrung, ungefähr 30 Jahre alt, der in Ihrem eigenen Stall-Stack verweilt (besonders wenn es sich um C # .Net MVC handelt), dann lade ich Sie unter cat ein. Für diejenigen, die jünger sind, denke ich, dass es auch nützlich sein wird, im Voraus bereit zu sein.



Der Hintergrund beginnt mit der Tatsache, dass ich mich schon lange auf dem C # .Net-Stack (ASP, MVC, Windows-Dienste) entwickelt habe. Es scheint mir, dass ich so etwas wie ein Full-Stack-Entwickler genannt werden kann: Datenbanken, Backend, Frontend und sogar Olympiadenprogrammierung - all das habe ich selbst durchlaufen. Ich werde nicht sagen, dass ich ein Profi bin, aber es ist schwierig, mich mit etwas zu überraschen, wenn es um .Net geht. Nein, ich habe nicht an .next-Konferenzen und dergleichen teilgenommen, aber ich habe bei mehreren Oldtimern an der Universität studiert, ich kenne einige von ihnen persönlich, und die Anzahl der mittelgroßen Projekte, die ich in PE gestartet habe, hat 30 überschritten.



Wie es vor der Kata angegeben wurde, schien es mir dass ich ausbrenne. Als uns ein neues Projekt zur Umsetzung gebracht wurde (nicht zu groß - das ist wichtig!), Wusste ich bereits beim ersten Treffen, was und wie wir tun würden - langweilig.



Erkennst du dich noch nicht? Wenn Sie jünger sind, lesen Sie weiter, Sie haben alles vor sich. Wenn Sie weiter gegangen sind als ich, lesen Sie weiter und erzählen Sie uns in den Kommentaren von Ihren Erfahrungen.



Ich hatte also ungefähr ein halbes Jahr uninteressante Arbeit vor mir. Aber wir haben das Projekt ein paar Monate zuvor abgeschlossen, ein paar der coolsten Dinge gelernt, in verwandten Bereichen gepumpt und viel Spaß bekommen! Ich werde nicht zögern ... das neue Projekt wurde auf einem völlig neuen Stapel erstellt: Node.js + React.



Kollegen, die das Glück voraussehen, sollten sofort reservieren, dass die Entscheidung, den Stapel zu wechseln, nicht spontan getroffen wurde. Seit einigen Monaten bin ich auf die Idee gekommen, dass .Net MVC nicht die beste Wahl ist, wenn es um kleine Projekte geht. Ich suchte nach Alternativen und sah mich um. In Bezug auf die Kombination von Node.js und React dachte ich, dass dies Tools sind, die für Server und Client stärker geschärft sind als für C #, aber bereits die erste Erfahrung hat alle meine Erwartungen übertroffen.



Lassen Sie uns die Regeln festlegen



Zunächst halte ich es für notwendig, einige Details und Bedingungen zu klären, unter denen die Schlüsselidee des Artikels - das Ersetzen des .Net MVC-Stacks und Node.JS + React - als richtig angesehen werden kann. Ich bin nicht geneigt, bis zum Äußersten zu gehen und zu argumentieren, dass ein solches Ereignis in allen Fällen nützlich sein wird. Deshalb hier eine kurze Liste der anfänglichen Einschränkungen:



  • Projekte mit bis zu 3-5 Programmierern;
  • Mangel an wesentlichen Berechnungen und komplexer Logik im Backend;
  • Verfügbarkeit und / oder Notwendigkeit, Backend und Frontend zu vereinheitlichen;


Projekte mit bis zu 3-5 Programmierern



Diese Einschränkung ergab sich aus der Annahme, dass es sich bei der Teilnahme eines großen Teams von 5 oder mehr Personen um ernsthafte Unternehmensanwendungen handelt, die ohne die Vorteile von .Net (und nicht nur ASP.NET, sondern auch Core) nur schwer zu implementieren wären. Wir werden im Folgenden auf die Vor- und Nachteile selbst eingehen.



Mangel an wesentlichen Berechnungen und komplexer Logik im Backend



Die Verwendung von JavaScript (oder sogar TypeScript, das Sie nicht retten wird), einer dynamisch typisierten Sprache ohne Multithreading und ohne Linq, um Berechnungen oder mehr oder weniger komplexe Geschäftslogik zu implementieren, ist einfach nicht möglich - die Sprache ist einfach nicht dafür ausgelegt. Das Gleiche gilt nicht für C #. Es ist wichtig, die Besonderheiten des Instruments zu berücksichtigen, um Nägel nicht mit einem Mikroskop einzuschlagen.



Verfügbarkeit und / oder Notwendigkeit, Backend und Frontend zu vereinheitlichen



Die Vereinigung wird dazu beitragen, Eintrittsbarrieren, Budgets und Fristen zu senken. Aber der Stock hat immer zwei Enden, und ein vorschneller Schritt seitens "effektiver Manager" ohne wirkliche Notwendigkeit kann zu Verlusten führen.



In Anbetracht dieser Einschränkungen schlage ich die folgende Checkliste vor, anhand derer Sie die Anwendbarkeit von Projekten auf Ihr Ökosystem beurteilen können.



Checkliste



Entwicklungs- und Wartungskosten



Benötigt Ihr Budget eine niedrige Talentbar und niedrige Betriebskosten?



Wenn Sie ein kleines Unternehmen oder ein Team von Programmierern haben, beansprucht die Komplexität der Entwicklungstools wertvolle Ressourcen. Der Node.js + React-Stack bietet gegenüber .Net MVC oder Core eine Reihe von Vorteilen: 



  1. Vereinheitlichung von Backend und Frontend - Spezialisten können immer einfacher als vollständiger Stapel arbeiten, als wenn es sich um einen C # -Stapel handeln würde.
  2. Geringere Anforderungen an die Serverressourcen - Node.js ist nicht so umfangreich wie .Net und wirklich plattformübergreifend.
  3. Die Entwicklungsgeschwindigkeit ist höher - aufgrund der fehlenden Typisierung steigt die Freigaberate der ersten Versionen des Produkts erheblich an.




Einführung von MVP (Minimum Viable Product) und PoC (Proof of Concept)



Sind Ihre Fristen für einen MVP- oder PoC-Start?



In Bezug auf die Geschwindigkeit der Implementierung von MVP oder PoC befindet sich der Node.js + React-Stack zweifellos in einer besseren Position als der .Net-Stack. Unter Berücksichtigung des vorherigen Punktes über die Kosten für Entwicklung und Inhalt ergeben sich Synergien für die Aufgabe, ein MVP zu starten: schnell, billig, effizient. Darüber hinaus ist die Stabilität von Node.js auf einem hohen Niveau und nicht zufriedenstellend.



Entwicklungsumgebung



Wird die Funktionalität von "leichten" IDEs für Sie ausreichen?



Leichte IDEs eignen sich hervorragend für Node.js in Verbindung mit React. Zum Beispiel benötigt VS Code während der Entwicklung nicht viel Leistung, ein plattformübergreifender Editor, der kostenlos verteilt wird. Seine Funktionalität reicht völlig aus, um sowohl das Backend als auch das Frontend bequem zu entwickeln.

Für Projekte in C # können Sie Visual Studio Community verwenden - auch eine Shareware-IDE, für die jedoch bereits Ressourcen erforderlich sind, die nicht so schnell und nicht plattformübergreifend ist.



Spracheingabe



Können Sie Ihr Projekt qualitativ hochwertig entwickeln und unterstützen, da Sie nicht tippen?



Das Fehlen einer Sprache ist ein zweischneidiges Schwert. Einerseits können Sie mit diesem Ansatz die Entwicklungsgeschwindigkeit multiplizieren, indem Sie die Codemenge reduzieren. Andererseits nimmt das Testvolumen zu. Darüber hinaus können einige Fehler nur während des Betriebs auftreten und alle Tests erfolgreich bestehen. Es wird schwierig, große Projekte ohne Eingabe durchzuführen.



Leistung und Skalierbarkeit



Sind Sie bereit, volles Multithreading aus der Box zu werfen? Fehlen Ihrem Projekt komplexe Berechnungen oder Geschäftslogik?



Wie Sie wissen, implementiert Node.js ein ereignisgesteuertes Single-Threaded-Modell. Dies eignet sich hervorragend für eine große Anzahl von Abfragen, ist jedoch für die Parallelisierung von Berechnungen oder die Implementierung komplexer Geschäftslogik völlig ungeeignet. Wenn man also einen Stapel für ein Backend auf Node.js auswählt, muss man sich der Nuancen seiner Arbeit bewusst sein.



Plattformübergreifend



Benötigen Sie eine plattformübergreifende Lösung?



Ja, unter .Net gibt es .Net Core, der behauptet, plattformübergreifend zu sein. Aber es ist immer noch nicht .Net MVC. Wenn Sie eine große Anzahl vorgefertigter Komponenten für .Net MVC zusammengestellt haben, ist der Übergang zu .Net Core nicht einfach. Mit Node.js müssen Sie sich darüber keine Gedanken machen und Ihre Entwicklungen für jede Plattform verwenden, abhängig von den Anforderungen des Kunden.



Fazit



Die reichhaltige Welt der Node.js-Module ermöglicht es Ihnen, nahezu jede Anwendungsaufgabe effizient und kostengünstig zu implementieren, von Autorisierungen in Unternehmenssystemen über Rest-API bis hin zu Chat-Bots von Messenger.



Das Bereitstellen von Node.js-Apps auf jedem Betriebssystem ist ein Vergnügen und ein paar Befehle. Und der Bedarf an Serverkapazität kann durch eine Größenordnung reduziert werden im Vergleich zu Net, und Sie können sicher „Lohn für Ressourcen“ in unserem wählen dedizierten Server - Konfigurator .



Haben Sie versucht, den Stapel zu ändern?






All Articles