Worin unterscheidet sich Web-Programmierung von der Back-End-Programmierung?

7

Ich habe die meiste Zeit meiner Karriere an Single-Thread-Business-Logik / Back-End-Programmierung gearbeitet. Ich möchte jetzt Webprogrammierung lernen, möchte aber wissen, wie sich Webprogrammierung von Nicht-GUI-Programmierung unterscheidet (z. B. Schreiben einer API oder einer Dateiverarbeitungsanwendung). Ich spreche nicht über die GUI-Design-Aspekte (jemand hat diese Frage bereits gestellt) hier ), sondern mehr über Komplexität der Programmierung.

In den wenigen Fällen, in denen ich an einer Webanwendung gearbeitet habe, waren Webanwendungen relativ unbestimmt und unvorhersehbar (zum Beispiel aufgrund des ereignisgesteuerten Multithreading-Modells von Webanwendungen gibt es mehrere Permutationen und Kombinationen von Ereignissen und Aktionen, um die man sich kümmern muss).

Was würden Sie sagen, sind einige der grundlegenden Funktionen von Web-Programmierung, die es von Nicht-GUI-Anwendungen unterscheidet? Was sind die Fehler / Fehler, die ein Backend-Entwickler bei der Arbeit an Webanwendungen begehen könnte?

BEARBEITEN Meine Definition von Back-End-Programmierung bedeutet nicht-GUI-Anwendungen wie eine API oder eine Batch-Batch-Anwendung, die eine große Datendatei analysiert, liest die Datensätze, führt eine Menge Berechnung Berechnungen auf die Daten und spuckt die Ergebnisse in eine andere Datei oder Datenbank. Ein anderes Beispiel könnte eine Bibliothek mit Dienstprogrammen für Datum und Uhrzeit sein.

    
Rahul 05.02.2009, 02:47
quelle

12 Antworten

8

Web-Anwendungen fühlen sich im Allgemeinen wie Single-Thread-Anwendungen an, da Sie als Anwendungsentwickler selten eigene Threads erstellen. Wenn überhaupt, ist es viel einfacher, weil die Stateless-Eigenschaft der Web-Transaktionen bedeutet, dass Sie die Daten für die Seite jedes Mal aus der Datenbank laden müssen. Daher müssen Sie sich keine Sorgen um Nebenläufigkeit machen, da "was auch immer da ist" normalerweise gut genug ist.

Das größte Problem bei der Web-Entwicklung ist all das Hintergrundwissen, das Sie im Laufe der Zeit sammeln müssen. Wie legen Sie Webseiten an? Wie stylen Sie Dinge mit CSS? Wie erhalten Sie Parameter aus der Abfragezeichenfolge? Wie validiert man einen Feldwert in JavaScript? All diese Dinge sind eigentlich sehr einfach zu erlernen, aber es gibt nur so viele, dass es ein echter Schmerz sein kann.

    
Travis 05.02.2009, 03:00
quelle
9

Die größte Herausforderung bei der Webprogrammierung ist der Umgang mit dem Staat. HTTP ist ein zustandsloses Protokoll. Dies kann dazu führen, dass der Wartungszustand schwieriger ist als in einer Desktop-Anwendung. Webanwendungen neigen daher dazu, einen anderen Lebenszyklus zu haben. Jede Web-Entwicklungsplattform behandelt das etwas anders, aber alle müssen sich damit auseinandersetzen.

    
Jim Petkus 05.02.2009 02:52
quelle
3

Die größten Fallstricke, die ich beobachtet habe, wenn Anwendungsentwickler beim Wechsel ins Web arbeiten, berücksichtigen nicht die Kosten ihres Codes. Entweder missbrauchen sie MySQL zu sehr, um das RDBMS zu blockieren, sie schreiben Code, der zu viel Speicher verbraucht, oder sie machen Frontend-Seiten, die zu groß sind, um in Dialup / Mobiltelefone oder Low-End-Breitband / DSL-Pipeline zu passen. p>

Manchmal kann es beim Schreiben einer Heavy-Duty-Seite nicht vermieden werden, aber es können Überlegungen angestellt werden, so viel wie möglich zu cachen oder beim Schreiben einer Seite, die viel getroffen wird, werden sie sich nicht bemühen, zu profilieren und zu optimieren Fragen, bevor sie aus der Tür gehen.

Es ist nicht so, dass diese Leute dumm sind, nur ein Mangel an Erfahrung und Bewusstsein, dass sie gut spielen müssen und Code schreiben, der etwas mager ist.

    
David 05.02.2009 03:22
quelle
2

Back-End-Programmierung ist unendlich einfacher als Web-Programmierung. (Sie wurden gewarnt!) Web-Programmierung ist am einfachsten zu jedem zu zeigen.

    
too much php 05.02.2009 03:50
quelle
1

Die meisten Websites haben auch eine Backend-Komponente. Typische Struktur wird etwa so aussehen:

  1. Benutzeroberfläche - html / css / javascript
  2. Controller - bei Verwendung von MVC
  3. Business Logik / Services - das ist Backend
  4. Datenbank - das ist auch das Backend

Das Erstellen von Websites wird also immer noch eine Menge Backend-Arbeit bedeuten. In Bezug auf die Benutzeroberfläche ist der Hauptunterschied, dass Sie ein gutes Auge für Design und Layout haben müssen, um es gut zu machen. Die HTML / CSS-Technologie ist an sich ziemlich einfach.

    
Craig 05.02.2009 02:54
quelle
1

HTML wurde eigentlich entwickelt, um Physik-Arbeiten zu liefern. Sie können es immer noch in einigen der alten Meta-Tags sehen. Auf jeden Fall ist der Unterschied, Web-Programmierung ist zustandslos und Thick-Client-Entwicklung ist nicht.

Wie Sie geschickt angegeben haben, wird alles durch Ereignisse gesteuert. Wahres JavaScript hat die Web-Entwicklung etwas in den Schatten gestellt, indem es die Illusion einer zustandsbehafteten Umgebung geschaffen hat, aber am Ende kommt alles auf einfaches HTML.

Es ist nie zu spät, um mit dem Lernen zu beginnen. Ich würde sagen, dass Sie statische HTML-Seiten erstellen und sich zu einem MVC-Framework bewegen sollten. Ich schlage Microsoft MVC Framework vor. Es ist ziemlich fantastisch, es gibt andere, die Sie wie ASP.Net Webforms verwenden könnten, aber Sie werden nichts durch Ziehen und Ablegen von Dingen auf einen Designer lernen;).

    
Al Katawazi 05.02.2009 03:17
quelle
1

web & amp; GUI-Anwendungen Schnittstelle mit Menschen .. Back-End-Anwendungen Schnittstelle mit Diensten und Datenbanken .. Als solche Ihre Spezifikationen müssen erhebliche Berücksichtigung des geistigen Modells Ihres Benutzers - Dinge so verhalten, wie Menschen erwarten sie zu. Und das zu tun - zu verstehen, wie Benutzer denken - ist nicht immer einfach oder logisch. Sie haben vielleicht elegante algorithmische Lösungen, die einfach nicht greifen, weil die Leute nicht immer logisch denken. Viele Male sind ziemlich elegante UI's extrem codiert codiert. Das ist sehr im Gegensatz zu system- & gt; system Programmierung

Je nach Problemraum kann vieles davon mehr Kunst als Wissenschaft sein.

    
Scott Evernden 05.02.2009 04:27
quelle
1

Eine Überlegung (unter vielen) mit Web-Programmierung ist, dass Benutzer nicht nur dumm sind (nicht, dass sie alle sind, aber Sie müssen das immer berücksichtigen), sie werden manchmal (immer vorausgesetzt) ​​immer bösartig und gemein sein und werden alles in ihrer Macht stehende tun, um Ihre Anwendung, Ihre Datenbank, Ihre Wochenenden, Ihre Gesundheit zu zerstören ...

Sei so paranoid wie eine sehr kleine Nonne bei einem Pinguintrieb. Vertraue deinen Nutzern nicht.

    
seanb 05.02.2009 04:53
quelle
0

Eine weitere Überlegung ist, dass Back-End-Programmierung gemäß Ihrer Definition einfacher zu testen ist.

Sobald Sie mit der Webprogrammierung beginnen, sind Sie den verschiedenen Interpretationen des gleichen Codes durch die verschiedenen Browser ausgeliefert. Außerdem hat der Benutzer mit Eingaben von Maus und Tastatur eine Vielzahl von Möglichkeiten, um zu brechen, was Sie produzieren.

    
MadMurf 05.02.2009 04:11
quelle
0

Web-Programmierung ist keine Back-End-Programmierung. Es zeigt Sachen am Frontend, im Web.

Definieren Sie es sonst?

BEARBEITEN

Web-Programmierung bringt Sie dazu, Daten konsistent und visuell für jeden zu präsentieren. Backend-Codierung bedeutet, dass diese Daten auf die gleiche Weise für die Präsentation konstruiert, aber nicht präsentiert werden.

    
Jas Panesar 05.02.2009 03:31
quelle
0

Ausgehend von Ihrer Definition von "Backend-Programmierung" gilt Ihre Frage nicht nur für Web-Anwendungen, sondern für jede GUI-Anwendung.

Es kommt darauf an, um welche Art von GUI-Anwendung es sich handelt. Zum Beispiel:

  • Bei internen Geschäftsanwendungen sind viele Geschäftsprozess-Arbeitsabläufe, Aufzeichnungen und Interoperabilität zwischen einzelnen Systemen erforderlich. Keine ausgefallenen Alorithmen oder Zahlenverarbeitung benötigt. Ihre Zielgruppe ist begrenzt, daher ist die Leistung keine große Sache, aber die plattformübergreifende Kompatibilität ist wichtig, daher handelt es sich meist um Webanwendungen. Ihr Hauptanliegen besteht darin, Business-Systeme miteinander zu verknüpfen und die API so zu überlagern, dass der GUI-Code nicht mit dem Business-Logik-Code umgehen muss.
  • Öffentliche Websites (wie diese) neigen dazu, weniger eine formale Architektur zu beinhalten, und eher eine Mentalität von "nur diese coole Funktion zu arbeiten, damit wir mehr Besucher bekommen können." Nochmals, keine Zahlenverarbeitung oder Algorithmen, es sei denn Leistung ist ein Problem. Leistung ist eher ein Problem für massiv beliebte Websites wie Slashdot oder Google. Wenn Sie also ein schnelles Wachstum erwarten, lohnt es sich, die Skalierbarkeit im Voraus zu planen.
  • Öffentliche E-Commerce-Websites ähneln den beiden oben genannten Aspekten: Funktionen und Leistung sind wichtig, aber ebenso wichtig ist die strukturierte Architektur, die alle Commerce-Business-Systeme miteinander verbindet (Einkauf, Lieferant, Einkaufswagen, Zahlungsgateways usw.)

Für den eigentlichen GUI-Teil bestimmt die Komplexität der Anwendungsart, wie komplex der GUI-Code sein wird. Für hochkomplexe, verschachtelte GUIs, bei denen sich Ihre Anforderungen häufig ändern, fällt es leicht in die Falle zu geraten, zu viel GUI-Material auf einer Seite zu platzieren. Bald übersteigt die Seite die Komplexitätsschwelle der meisten Leute, was die Seite sehr schwierig zu pflegen macht. Es zahlt sich aus, im Voraus darüber nachzudenken, wie Sie verschiedene Teile der GUI in separate Komponenten aufteilen und dann miteinander verknüpfen können. Wenn Sie mit der GUI-Programmierung noch nicht vertraut sind, lesen Sie einige Artikel im Model-View-Controller (MVC) -Muster.

Bei einfachen Websites, bei denen die meisten Seiten ziemlich statisch sind, kommt dieses Problem nicht so oft auf, weil jede einzelne Seite leicht zu pflegen ist.

    
davogones 05.02.2009 05:06
quelle
0

Die meisten Web-Programme werden im Stil der frühen siebziger Jahre gemacht, bevor Dijkstras "als schädlich betrachtet" bekannt wurde.

    
Stephan Eggermont 23.02.2009 15:09
quelle

Tags und Links