Mein Verständnis von kleinen MVC-Anwendungen ist, dass Sie das Front-End haben, das sich mit HTML, JS, jQuery usw. befasst, und das Back-End, das aus Ihren Controllern und Modellen besteht.
Wenn ich jedoch mit Entwicklern großer Unternehmen spreche, erwähnen sie oft, dass sie eine Front-End-Schicht und eine Back-End-Schicht haben. Manchmal höre ich vielleicht, dass sie ein Frontend mit C # und ein Backend mit Java haben. Warum sollte ein Unternehmen ein Backend und Frontend in verschiedenen Sprachen wünschen? Hilft dies, die große Website besser zu skalieren?
Wenn Leute sagen, dass ihr Frontend in C # erstellt wurde, bedeutet dies, dass sie ein Framework für das Frontend (wie .NET) und ein zusätzliches Framework für das Backend (wie Spring) verwenden? Oder bedeutet es etwas ganz anderes?
quelle
Antworten:
"Front-End" und "Back-End" können insbesondere in Unternehmensanwendungen zu Nebeln werden. "Front-End" kann die Benutzeroberfläche oder die gesamte Anwendung sein. "Back-End" kann verwendet werden, um die Interna zu bezeichnen, oder es kann sich um die Datenbank oder externe Dienste handeln, die verwendet werden. Was die Begriffe bedeuten, hängt oft ganz davon ab, mit wem Sie sprechen. Also hast du vielleicht gefragt "Hey, was meinst du damit?"
Wenn Sie in die Entwicklung großer Unternehmen einsteigen, werden Sie viele, viele Teams haben , die viele, viele Codes schreiben . Diese Teams werden sich in verschiedenen Sprachen und anhand verschiedener Paradigmen von verschiedenen Standorten aus entwickeln. Ein Teil dieses Codes muss zusammenarbeiten und ein Großteil nicht.
Ich arbeite für eine große Bank. Mein Team entwickelt unsere Anwendung in C #. Alles davon. Wir verwenden jedoch Webservices, die größtenteils in Java geschrieben sind, und diese Services kommunizieren mit anderen Services, die mit anderen Services kommunizieren, die die Kontodaten zu und von den entsprechenden Datenspeichern abrufen, und die wissen, welche Sprachen mit diesen verwendet werden.
Kurzfassung: Die Leute benutzen die Werkzeuge, die die Arbeit erledigen.
quelle
Ich denke, Sie müssen die Frage etwas erweitern: Warum verwenden große Softwareprojekte mehr als eine Programmiersprache?
Es gibt viele mögliche Antworten, die bemerkenswertesten sind:
Leistungsüberlegungen sind praktisch nie der Grund, außer in äußerst leistungskritischen Anwendungen wie dem Hochfrequenzhandel. In diesen Bereichen kann es vorteilhaft sein, die kritische Core-Engine in einer Sprache mit besserer Laufzeitleistung zu schreiben (z. B. C ++). aber die unterstützenden Systeme (UI, Reporting, etc.) in etwas übergeordnetem wie Java oder C #.
quelle
Es ist relativ in einem großen Unternehmen.
In meiner Firma ist der Stapel ungefähr
Für das Webentwicklungsteam ist das Frontend HTML / JS und das Backend Java. Für das Unternehmen ist das Frontend Java und das Backend .Net.
Tatsächlich muss die .Net-Schicht mit einer COBOL / UNIX-Anwendung für Abrechnungen und Forderungen zusammenarbeiten. In dieser Perspektive ist .Net das Frontend und COBOL das Backend.
Und ja, wie andere bereits erwähnt haben, arbeiten Teams von UX-Designern, HTML / JS-Entwicklern, Java-Entwicklern, Web-Middleware-Entwicklern, .NET-Entwicklern, SQL-Entwicklern und COBOL-Entwicklern an jedem Teil des Stapels.
Tatsächlich sind es in jedem ausreichend großen Unternehmen Schildkröten, die den ganzen Weg nach unten gehen.
quelle
Verwirrende Semantik
Es ist eine semantische Frage. Wenn jemand von einem .NET-Front-End- oder Java-Front-End-Entwickler spricht, spricht er normalerweise von der Person, die viel über die Vorlagensprachen und möglicherweise Frameworks weiß, die niemals wieder verwendet werden sollten, wie Webformulare, mit denen versucht wurde, die zu verbergen Dinge von App-Entwicklern über eine http-Pinnwand (dh "Web-Entwicklung") zu werfen, von denen angenommen wurde, dass sie nichts über diesen ganzen Mist erfahren wollten oder wollten. Im Fall von .NET und Java bin ich mir nicht sicher, aber ich konnte nur vermuten, dass im MVC-Sinne Java für alle Geschäftsmodelle zuständig ist und .NET alles andere erledigt, was besser beschrieben werden könnte als "Middle-Tier", aber es ist immer noch alles Server-seitig.
Die eigentliche Trennung besteht darin, was auf dem Server und was auf dem Client oder Browser geschieht. Sie können das Erstellen des HTML-Codes, der an das Front-End gesendet werden soll, oder das Darstellen des Front-End-Codes mit "Front-End-Entwicklung" kombinieren. Daher bevorzuge ich die Verwendung der Begriffe "Client" und "Server" anstelle von "Front-End" und "Back-End". (normalerweise clientseitige Arbeit).
Clientseitige Sprachen
Der Grund, warum wir den gleichen Satz von Sprachen im Browser verwenden, ist, dass der Browser auf der empfangenden Seite ist und zum größten Teil (es gab jetzt größtenteils toten Widerstand von Microsoft und Adobe), dass niemand drei verschicken muss Verschiedene Versionen derselben Client-Seite, um jeden potenziellen Kunden zufriedenzustellen, oder es muss ein proprietäres Plug-In installiert sein, damit das Web funktioniert. Außerdem kapseln die drei Sprachen die clientseitigen Belange recht gut, sodass wir Web-App-Frontends schnell erstellen und ändern können, indem wir die lose Kopplung zwischen der Dokumentstruktur, dem Aussehen und dem Verhalten aller Elemente beibehalten. Sie können eines ganz einfach ändern, ohne die beiden anderen zu ändern.
Serverseitige Sprachen
Der Grund, warum Sie Unmengen von Optionen im serverseitigen Web haben, ist natürlich, dass Sie dies können. Es ist dein Server. Alles, was es tun muss, ist über http / ssl zu kommunizieren und der Rest liegt bei Ihnen. Übrigens ist JavaScript jetzt eine Option, aber das wirft eine interessante Frage auf. Sollten Sie eine Web-App dennoch so behandeln, als wären es zwei Apps auf beiden Seiten dieser HTTP-Wall. Ich bin der Meinung, durch Schmerz informiert zu sein, dass ja, ja, du solltest und ich liebe Node.js.
quelle
Kurz gesagt, bei großen Projekten arbeiten mehrere Entwicklerteams an dem Projekt, und diese Teams sind in der Regel auf verschiedene Anwendungsebenen spezialisiert.
Wenn Sie sich auf die Web-Benutzeroberfläche konzentrieren und Flexibilität bei der Auswahl der Implementierung haben, verwenden Sie mit größerer Wahrscheinlichkeit eine auf die Web-Benutzeroberfläche ausgerichtete Sprache wie JScript oder Flex anstelle von C #.
Wenn Sie sich am Ende des Transaktionsdatenspeichers der Anwendung befinden und gleichzeitig viele Aktionen ausführen, werden häufig spezielle Sprachen wie erlang verwendet. (Oder Produkte von Drittanbietern, die teilweise in diesen Sprachen implementiert sind)
quelle
Der Grund ist der Ausgleich von Geschäftsrisiken.
Angenommen, Sie sind ein riesiger Arbeitgeber in einer Stadt. Sie müssen viele Entwickler einstellen, um viele verschiedene Dienste zu erstellen. Nehmen wir an, Ihre anfängliche Einschätzung ist, dass Lanuage A Ihren Interessen am besten entspricht, und Sie möchten damit beginnen.
Wenn Sie sich für eine Technologie entscheiden, können Sie den Talentpool austrocknen. Sind Sie sicher, dass Sie einen anständigen Langauge-A-Typ einstellen möchten, wenn ein Stern der Sprache B gleich um die Ecke ist? Was ist, wenn die Frameworks von Langauge A morgen vom Hauptentwickler unterstützt werden? Was ist, wenn es morgen eine erstaunliche Sprache C gibt, sollten Sie sie ignorieren, weil Sie sich vor fünf Jahren der Sprache A verschrieben haben?
Idealerweise möchten Sie ein heterogenes System mit verschiedenen Sprachen, das den aktuellen Talentpool und Technologietrends widerspiegelt. Sie möchten, dass sich dieses Gleichgewicht langsam verschiebt, wenn sich der Talentpool und die Trends ändern, sodass zu jedem Zeitpunkt alle Ihre Systeme funktionsfähig sind und Sie die Mitarbeiter einstellen können, um sie zu warten.
... und so machen es Unternehmen.
quelle
Es ist hilfreich, sich Front-End und Back-End als separate Anwendungen vorzustellen, die beide dieselbe Datenquelle verwenden.
Selbst für kleinere Websites können Sie sich das Front-End als Schnittstelle des Clients und das Back-End als CMS vorstellen. Hierbei kann es sich leicht um separate MVC-Anwendungen handeln. Für das Front-End müssen weiterhin Modelle und Controller ausgeführt werden. Schließlich ist der Controller der Einstiegspunkt für Ihre Site-Besucher und die Modelle werden die Art und Weise sein, wie Sie Daten aus Ihrer Datenbank an den Benutzer übertragen.
Ich mag es, Django / Python als CMS im Backend und Rails, CodeIgniter oder Spring MVC im Frontend zu verwenden. Oft gibt es keine Wahl; Der Kunde hat bereits eine Legacy-Site in einer bestimmten Sprache im Front-End eingerichtet und möchte lediglich eine CMS-Lösung. Die meisten Kunden würden nicht einmal wissen, dass das CMS eine andere Sprache oder ein anderes Framework ausführt, wenn ihnen dies nicht mitgeteilt würde.
Es geht wirklich darum, herauszufinden, was für die Site, die Sie erstellen möchten, am besten funktioniert. Das Frontend und das Backend müssen wirklich nur die Datenbank gemeinsam nutzen. Solange sie beide damit arbeiten können, können Sie die besten Optionen für die jeweilige Aufgabe auswählen.
quelle
Ein Beispiel für eine Back-End-Sprache ist PHP, eine Skriptsprache. Wenn eine PHP-Seite angefordert wird, liest der Server den PHP-Code und rendert das Markup. Das Ergebnis ist HTML, das an Sie gesendet wird. Sie, der Webseitenbetrachter, sehen niemals eine Zeile PHP-Code. Unter der Annahme, dass der Webserver-Administrator seine Arbeit korrekt ausgeführt hat, würde und könnte der Server Ihnen niemals den tatsächlichen PHP-Code anzeigen. Es wird analysiert, wenn die Seite bereitgestellt wird und das Ergebnis dieser Code-Übersetzung HTML ist.
quelle