Client Server Architektur
Da die meisten Webapplikation
durchlaufen in der Regel mehrere Schichten im Client-Server-Modell:
Client <> Server
Der Client kann verschiedene GUI (Global User Interfaces) haben.
das weitverbreiteste GUI ist wohl der Browser.
Es könnte aber auch eine Windows-Applikation mit Internetverbindung oder Netzerwerkverbindung sein.
Der Server macht die meiste Arbeit und stellt seine Dienste bereit.
In dem er die Anfragen vom Client beantwortet,
welche der Client über das GUI zum Server geschickt hat.
In der Regel kann der Server mehrer Clients gleichzeitig mit seinen Diensten bedienen.
Prinzipiel könnte ein Client-Server-Model auch nur auf einem Rechner laufen,
aber die meisten bestehen aus verschiedenen Rechner und die Server (Cluster)
bestehen aus einer Gruppierung von Servern
die Ihre unterschiedlichen Dieste anbeiten.
Eine typische Servergruppe könnte zum Beispiel bestehen aus:
Mail-Server, Webserver, Anwendungsserver und Datenbank-Server.
Die Hardware von Server muss (sollte) skallierbar sein.
Beim (Web-) Server muss viel auf skalierbarbeit Wert gelegt werden,
da schnell die Rechnenkapazität erreicht werden kann,
wenn mehr Clients als erwartet die Dienste des Server beanspruchen.
Frontend & Middleware & Backend
hinter dem Server kann dann eine Webapplikation aus dem
3-Schichten-Modell stehen:
GUI-Schicht <> Geschäftslogig-Schicht <> Datenbanken-Schicht
wobei im allgemeinen nun die Anwendungen/Applikationen immer mehr agiler sein sollen
und man daher die Zukunft der agilen Softwareentwicklung
eher weg vom starren 3-Schichten-Model (3-tier-layer) geht
und hin zu flexiblen Microservices geht.
Oder dem MVC Model-View-Controller
der Controller nimmt die Anfragen (HTTP-Request vom Client - Browser) entgegen.
Er steht sozusagen,
zwischen dem View und Model
Der Controller gibt HTTP-Request Infos (Paramter) and die entsprechende Komponente im Model weiter.
Wenn das Model die Antwort vom HTTP-Request fertig hat,
nimmt der Controller die Antwort vom Model wieder entgegen.
gibt diese Daten an das View weiter,
Frontend- & Backend Entwicklungssprachen - Die Middleware im Layer
Die meisten Webapplikation
durchlaufen in der Regel mehrere Schichten im Client-Server-Modell.
Dennoch ist es manchmal nicht einfach oder eindeutig alles,
also alle Komponenten einer Applikation einer Infrastruktur
in einem Process-Flow eindeutig einzuordnen.
Ich als Entwickler,
betrachte den Client auch als Frontend
und den Webserver und Datenbank als das Backend.
Wobei das Backend,
sich wiederrum aus mehreren Backend und Middleware Komponenten zusammen setzen kann.
Die Middleware oder auch Middle-Tier genannt,
beeinhaltet in der Regel DSS (Distributed System Services)
und wurde von der Object Management Group (OMG) spezifiziert.
Am anschaulichsten stellt sich die Middleware in verschiedenen Layern dar:
Aber je nach System, Applikation, Backend, Hardware etc.
ist die Darstellung manchmal nicht so wirklich eindeutig,
und der Serveradmin bescheibt seine Infrastuktur im Process-Flow,
etwas anders, als der Developer sein System Landscape.
Der Middleware Administrator
hat in vielen Unternehmen die Aufgabe die Infrastruktur zu definieren, installieren und zu überwachen (administrieren).
Wenn Beispielsweise neue Clusters angeschafft werden müssen, Server Neuinstallationen durchgeführt werden müssen
oder sonstige komplexe Server/Middleware-Architekturen aufgesetzt (installiert),
getestet und überwacht (administriert) werden sollen.
Also der Server Administrator hat oft ähnliche Verantwortungen,
wie der Middleware Administrator.
Die Middleware in der Cloud (PaaS oder IaaS)
In der Cloud (PaaS oder IaaS) gehört zu der Middleware die Mircroservices.
ergänzen die Microservices die Middleware komponenten.
Die Middleware kann dabei völlig unterschiedliche Funktionalitäten, Programme und Services sein.
Die Unternehmen in Applikationen implementieren können.
Die Middleware in der Cloud können eigene Produkte oder auch von 3. Anbieter sein.
Typische Frontend- & Backend Entwicklungssprachen
Aber nun wieder zurück zu Frontend- & Backend Entwicklungssprachen.
Denn hier unterscheide ich nur diese 2 Systeme/Sprachen (Frontend <> Backend).
Middleware-Programmiersprachen sind für mich ebensolche,
die ich auch im Backend einsetze.
Typische Middleware-Entwicklungssprachen sind Beispielsweise:
im Grunde die gleichen die für Backend eingesetzt werden.
Kurzum diese,
welche mir Eingriffe im Betriebssystem ermöglichen
und keine reine Webapplikations- (Brwoserbasierte) Sprachen, wie JavaScript sind.
Ein typisches Beispiel,
für eine Middleware Applikation und Programmierung,
wäre Beispielsweise Microshoft Share Point
Es ist schon eine fertige Middleware Applikation,
kann jedoch noch mit C# .Net in den Funktionalitäten erweitert werden.
Typische Frontend Entwicklungssprachen sind Beispielsweise:
JavaScript, JQuery etc.
Kendo UI
Strunts (XML)
Node.js (wobei hier die NODE.JS JavaScript libary als Serverseitges-Script schon wieder die Ausnahme machen)
Bootstrap (freies CSS-Framework für Responsive Webdesign)
HTML und CSS / HTML5 und CSS3 (Beschreibungssprachen)
usw.
Typische Backend Entwicklungssprachen sind Beispielsweise:
C und C++
C#, VB, alle MS .Net
Java
Spring Beans (for BO Business Objects and DAO Data Acccess Object)
PHP
Perl
PL/SQL-Programmierung
SAP-ABAP
usw.
Hier kann man Sinnvollerweise den Unterschied darin definieren,
wo die Script gerändert werden.
JavaScript, HTML, CSS etc. werden erst zur Laufzeit im Browser gerändert
(also für den Nutzer im umgewandelt und dargestellt)
Während die Backend-Programmiersprachen schon auf dem Server kompiliert
und zur Laufzeit zur Verfügung gestellt werden.
Für mich sind typische Backendsysteme
CRM (Customer Relationshhip Mangement) und SAP sind für mich typische Backendsysteme.
Auch die Datenbanken SQL, ORACLE, MySQL sind Backendsysteme.
Denn die Webseiten Besucher,
Bzw. die WebUI (User Interface) kommuniziert nur mit Hilfe einer Schnittstelle
(Bsp. Webservice, SAP-RFC function, database connector etc.) mit dem Backendsystem
und holt sich so die angefragten Daten oder schickt diese (request <> response)
zur Weiterverarbeitung zum Backendsystem zurück.
Der Webserver gehört selbstverständlich ebenso zu den Backendsystemen.
Er ist oft eine zentrale Figur im ganzen System,
und weiss, wo und wie,
er mit den anderen Backendsystem sich verbinden und unterhalten kann.
Alles andere,
was auf den Endgeräten abläuft,
wie der Browser, zählt für mich zum Client.