
Transcription
Sicheres Generieren auf dem Webserver private Schlüssel sollten niemals unsicher übertragen werden Bei der Anfrage kann eine sog. „Certificate Signing Request“ (CSR) generiert Enthält folgende Informationen Land Bundesland Stadt Organisation Abteilung Common Name (Bezeichnung / URL) Mail-Adresse asymmetrischer privater RSA-Schlüssel verbleibt auf dem ServerWeb Engineering IIDuale Hochschule Baden-Württemberg71
CSR generieren Ein CSR kann bspw. mit OpenSSL generiert werden Die Anfrage wird anschließend bei der CA für die Generierung einesZertifikats verwendetopenssl req -nodes-newkey rsa:4096-sha256-keyout 'meinedomain com.key'-out 'meinedomain com.csr'-subj '/CN meinedomain.com/C DE'! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg72
Installation auf dem Webserver (nginx) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/nginx/sites-available/meinedomain.com“# Domain-Nameserver name meinedomain.com www.meinedomain.com;## SSL / TLSlisten 443 ssl;## Protokolle - hierzu spaeter mehrssl protocols TLSv1 TLSv1.1 TLSv1.2;## Öffentlicher und privater Schluesselssl certificate/etc/ssl/meinedomain.com.public;ssl certificate key/etc/ssl/meinedomain.com.private;! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg73
Installation auf dem Webserver (Apache) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/apache2/sites-available/ssl.conf“ VirtualHost *:443 SSLEngine cSSLCertificateKeyFile /etc/ssl/meinedomain.com.private# Pfad zu den docs/ /VirtualHost ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg74
Installation auf dem Webserver (Apache) Dem Webserver muss mitgeteilt werden, dass eine Website via SSL mit einembestimmten Zertifikat bereitgestellt werden soll Port ist TCP 443 Protokolle sind unterschiedlich Anpassen der Config unter „/etc/apache2/sites-available/ssl.conf“ VirtualHost *:443 SSLEngine cSSLCertificateKeyFile /etc/ssl/meinedomain.com.private# Pfad zu den docs/ /VirtualHost ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg75
Installation auf dem Webserver (Windows IIS)tr.im/modbesWeb Engineering IIDuale Hochschule Baden-Württemberg76
Welche Protokolle sollen verwendet werden? SSL ist mehr als nur ein Protokoll, sondern vielmehr eine Familie von Protokollen Unterstützung von Fallback für altere Systeme Verschiedene Plattform erfordern unterschiedliche ProtokollstandardsWeb Engineering IIDuale Hochschule Baden-Württemberg77
Poodle Wo?Ist ein Fehler im (veralteten) SSLv3-ProtokollSicherheitslücke ist seit 1999 anwendbar. Warum schlimm?Verschlüsselte Datenpakete können durch eingeschleusten Javascript-Code entschlüsseltwerden. Dies kann auch durch Dritte als „Man-in-the-middle“-Attacke durchgeführt werden. Wie schützen?Serverseitig SSLv3 Protokoll deaktivieren, bzw. TLS FALLBACK SCSV verwenden.Web Engineering IIDuale Hochschule Baden-Württemberg78
Heartbleed Wo?Ist ein Fehler in OpenSSL 1.0.1 bis 1.0.1fund wurde ab 1.0.1g behoben Warum schlimm?Ursprüngliche „Heartbeat“ (periodische Kontaktaufnahme) Funktion kann überlastet werden und eskönnen Teile des aktiven Arbeitsspeichers (bis zu 64kb) ausgelesen werden. Wiederholt können somitBenutzerpasswörter und private Schlüssel abgerufen werden. Wie schützen?OpenSSL serverseitig aktualisieren.Web Engineering IIDuale Hochschule Baden-Württemberg79
SSL Verbindungstest (Qualys SSL Labs)tr.im/ssltestWeb Engineering IIDuale Hochschule Baden-Württemberg80
Good to know: StartSSL und Let’s Encrypt Kostenlose Web- und SMIME-Zertifikate stellt StartSSL aus Ebenfalls möglich: günstige Code-Signing-Certificates und Wildcard-SSL Let’s Encrypt ist eine neue - kostenlose - CA. automatische Verlängerung mit einem Serverdienst kostenfrei automatische Installation und CSRWeb Engineering IIDuale Hochschule Baden-Württemberg81
Serverseitige ProgrammierungAnfragen dynamisch beantworten
Serverseitige Programmierung bedeutet, dass serverseitige Programme erstellt und ausgeführt werden, um Daten aus Datenbanken zu lesen, Daten in Datenbanken zu schreiben und Webseiten dynamischen aufzubauen, bevor die Webseite zum Benutzer geschickt wirdWeb Engineering IIDuale Hochschule Baden-Württemberg83
Serverseitige ProgrammierungClient (Webbrowser)dynamische her Inhaltdynamische Inhalteserverseitiginterpretiert mittelsclientseitigerWebtechnikenWeb Engineering IIWebserver fügt mittelsserverseitigerWebtechniken einDuale Hochschule Baden-Württemberg84
Auslieferung statischer Web-InhalteAnfrage an den Webserverdurch Hyperlink oder DirektaufrufClient (Webbrowser)WebserverRequest / Response im HTTP-Protokoll- Aufbau TCP-Verbindung- HTTP-Request, der vom Web-Deamon entgegengenommen wird- Zurücksenden der Informationen über dieselbe Verbindung- Schließen der VerbindungDarstellung auf Clientdurch Interpretation von HTML / CSSStatische Inhalteaus FilesystemWeb Engineering IIDuale Hochschule Baden-Württemberg85
Auslieferung dynamischer Web-InhalteSkriptsprachen, Plugins, JAVA-Applets, Komponenten,DHTML, FlashClient (Webbrowser)client- und serverseitige Erweiterungen machendynamische Webinhalte möglichWebserverStatische Inhalteaus FilesystemWeb Engineering IISSI, PHP/ASP, J2EE, CGIje nach Anwendungszweck soll überlegt werden,welche dynamischen Inhalte clientseitig und welcheserverseitig realisiert werdenDatenbankDuale Hochschule Baden-Württemberg86
Dynamische Webtechniken Erweitern statische Webseiten um dynamische Inhalte Clientseitig Bewegung im Browser (Animation) Interaktive Elemente Serverseitig Generieren der Seite erst bei Aufruf Integration aktueller Daten aus Datenbanken und anderer Systemen Einbinden speziell für diesen Abruf relevanter DatenWeb Engineering IIDuale Hochschule Baden-Württemberg87
Serverseitige Programmierung Zur serverseitigen Programmierung stehen mehrere konkurrierende Technologien zurVerfügung Unterschiede in der Leistungsfähigkeit und unterstützten Plattformen Wichtige Vertreter CGI und Perl PHP ASP und ASP.NET Coldfusion Java-Servlets und JSP Node.JSWeb Engineering IIDuale Hochschule Baden-Württemberg88
Serverseitige Programmierung: CGI CGI Common Gateway Interface CGI definiert eine Schnittstelle zwischen dritter Software und Webserver, die esermöglicht, mit Programmen auf dem Webserver Anfragen vom Browser zubearbeiten und Webseiten dynamisch zu generieren CGI kann dazu die Eingaben von HTML-Formularen verarbeitenCGI startet für jedeAnfrage einen eigenen Prozess auf dem Server, weshalb die Performance desWebservers bei vielen Anfragen sinktWeb Engineering IIDuale Hochschule Baden-Württemberg89
Serverseitige Programmierung: CGI Perl ist eine Skriptsprache, die zur Laufzeit interpretiert wird und daher alsInterpretersprache keinen Compiler benötigt. Perl setzt nur einen auf dem Server installierten Perl-Interpreter voraus Perl hat Ähnlichkeiten zur C-Syntax und wurde ursprünglich für Unix-Plattformenentwickelt, um schnell kleine Programme für die Netzwerkentwicklung schreiben zukönnen Perl besteht aus einfachen ASCII-Zeichen Perl ist frei erhältlich (GPL) es gibt eine kleinere, aber recht rege Perl-Fan-Gemeinde Perl wird oft im Zusammenhang mit CGI verwendet, obwohl Perl ursprünglich nichtspeziell für CGI entwickelt wurdeWeb Engineering IIDuale Hochschule Baden-Württemberg90
Funktionsweise von Perl in Verbindung mit CGIRequest *.plClient (Webbrowser)Web Engineering IIWebserverCGISTDOUTPerlInterpreterResponse .*pl (HTML)Server-BetriebssystemDuale Hochschule Baden-Württemberg91
Ausführung CGI Aufruf über CLI Ausführung auch über die Konsole möglich ?phpecho "Dies ist eine dynamische Ausgabe! \n";date default timezone set("Europe/Berlin"); timestamp time(); uhrzeit date("H:i", timestamp);echo "Uhrzeit: " . uhrzeit . "\n";? ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg92
Serverseitige Programmierung: Node.js Node.js ist eine Laufzeitumgebung zur Ausführung verschiedenen Diensten Ausführung von serverseitigem Quellcode erfolgt in einem Prozess, der auchweitere Prozesse starten kann Es existieren Module für HTTP-Webserver und WebSocket-Server, die als Basis fürdie Entwicklung eines Webprojekts verwendet werden Anfragen werden von einem Webserver (bspw. Apache oder nginx) lediglich an denNode-Prozess weitergegeben Der Webserver fungiert hier als Reverse-proxyWeb Engineering IIDuale Hochschule Baden-Württemberg93
Funktionsweise von Node.js und einem Reverse-ProxyReverse ProxyRequest /indexClient (Webbrowser)Web Engineering IIWebserverNode ProzessResponse ./index (HTML)Server-BetriebssystemDuale Hochschule Baden-Württemberg94
Clouddynamische Lastenverteilung und Ressourcenaufteilung
Beispiel: Dokumentenverarbeitung als SaaS Texterkennung innerhalb von PDF-Dokumenten als „Software-as-a-Service“ Eine eigene Schnittstelle (API) stellt Funktionen für den Upload und Verarbeitungeines PDF-Dokuments bereit Dokument wird zwischengespeichert OCR wird auf das Dokument angewendet PDF-Dokument wird optimiert Abrechnung Bereitstellung des ErgebnissesWeb Engineering IIDuale Hochschule Baden-Württemberg96
SaaS: Mit eigener InfrastrukturAnfrage vom Client1.Annahme der Datei2.Zwischenspeichern der Datei undEinsortieren in eine Verarbeitungsschlange3.Starten der Erkennung des Dokuments4. . Warten .5. Warten .6.Ergebnis abspeichern und an den Client zurücksendenAntwort an den Client7.nächste Datei verarbeitenProblem tritt auf, Dienst beendetsichVerarbeitung nicht mehr möglichWeb Engineering IIDuale Hochschule Baden-Württemberg97
Clouddienste Anfragen im Web werden nicht von einem dedizierten Server sondern von einemGesamtsystem verarbeitet Das Gesamtsystem greift dabei auf einen zentralen Ressourcenpool zu Rechenkapazität und Arbeitsspeicher Datenspeicher und Backupspeicher Das Gesamtsystem stellt eigene Dienste, die ebenfalls verwendet werden können Load-Balancer zur dynamischen Lastenverteilung auf Hintergrundsysteme Datenbankdienste DNS, Routing, Überwachung und sonstige DiensteWeb Engineering IIDuale Hochschule Baden-Württemberg98
Anbieter Skalierbare Plattformen mit Diensten Microsoft Azure Amazon AWS Google Cloud Computing Heroku u.v.m.Web Engineering IIDuale Hochschule Baden-Württemberg99
Skalierbarkeit und Dynamik Dienste können automatisch zu Stoßzeiten skalieren und Webdienste sind damitauch bei hoher Last immer reaktionsschnell Herunterfahren von Diensten und bereitgestellten Kapazitäten wenn Dienst nichtverwendet wird georedundante Spiegelung von Servern und Datenbanken für schnelle ZugriffszeitenWeb Engineering IIDuale Hochschule Baden-Württemberg100
Amazon AWS - Dienstübersichttr.im/modbesWeb Engineering IIDuale Hochschule Baden-Württemberg101
SaaS mit Cloud Infrastruktur: DNStr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg102
DNS Verwaltung mit Route 53 Konfiguration von DNS Weiterleitung an Amazon AWS Infrastruktur sog. „Endpunkte“ können basierend auf Standort des Benutzers automatisch gewähltwerden (latenzbasiertes DNS) DNS Failover Auswertung von Statistiken Überwachung und Benachrichtigung durch Amazon-Dienst (Simple NotificationService)Web Engineering IIDuale Hochschule Baden-Württemberg103
DNS Verwaltung mit Route 53 Im Beispiel des SaaS DNS steuert den Zugriff auf den - abhängig vom Standort - nächstenVerarbeitungsserver Konfiguriert Szenarien für Failover (Routing in das nächste Rechenzentrum) Schaltet ggf. Ressourcen für Kostenreduktion in dem Rechenzentrum abWeb Engineering IIDuale Hochschule Baden-Württemberg104
SaaS mit Cloud Infrastruktur: Load-Balancertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg105
Lastenverteilung mit Elastic Load Balancer Anfragen werden nicht an einen bestimmten Server gestellt sondern es findet einAuswahlverfahren statt: Enthält die „Resourcengruppe Webserver“ mindestens einen Server? Falls nicht, wird ein Server von einer „Webserver-Vorlage“ gestartet und in dieResourcengruppe aufgenommen Welcher Server hat noch Kapazität frei? Weiterleitung der Anfrage an diesen Server Falls kein Server eine Kapazität von X zur Verfügung stellen kann Weiteren Server von einer „Webserver-Vorlage“ starten und in dieResourcengruppe aufnehmenWeb Engineering IIDuale Hochschule Baden-Württemberg106
Lastenverteilung mit Elastic Load Balancer Der Load-Balancer kann die bereitgestellte Leistung (mögliche „Anfragen/Sekunde“)selbstständig skalieren Das „Auto-Scaling“ von Servergruppen stellt eine schnelle Beantwortung vonAnfragen bereit Auto-Scaling kann auch Server herunterfahren und löschen, falls diese nichtausreichend ausgelastet werden Diese Grenzen können vom Administrator definiert werdenWeb Engineering IIDuale Hochschule Baden-Württemberg107
Elastic Load Balancer Im Beispiel des SaaS Der Load-Balancer stellt sicher das Web-Server die Anfragen von einem Clientbeantwortet werden können Teilt die Anfragelast zwischen vorhanden Webservern aufWeb Engineering IIDuale Hochschule Baden-Württemberg108
SaaS mit Cloud Infrastruktur: Web-Servertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg109
Beantwortung von Anfragen: Webserver Der Webserver kann Informationen von anderen Servern oder Diensten abrufen,aufbereiten und eine gewünschte Information zurückgeben Statistikdaten aus einer Datenbank Grafiken von der Festplatte Layout und Design Ausführung von dynamischen Quellcode (bspw. PHP) Kombination der Ergebnisse wird als Webseite zurückgegebenWeb Engineering IIDuale Hochschule Baden-Württemberg110
Webserver Im Beispiel des SaaS Wickelt die Authentifizierung des Anfragenden ab Legt einen neuen Arbeitsauftrag an Speichert Informationen zu dem Vorgang in der Datenbank und Dateisystem ab Keine Speicherung auf dem Webserver, da nicht garantiert werden kann, dassdieser Server die nächste Anfrage übernimmt!Web Engineering IIDuale Hochschule Baden-Württemberg111
SaaS mit Cloud Infrastruktur: Application-Servertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg112
Abarbeitung der Anfrage Der Webserver kommuniziert mit der hinterliegenden Infrastruktur Datenbankserver (Daten und Cache-Datenbanken) Anwendungsserver Cache DatenspeicherWeb Engineering IIDuale Hochschule Baden-Württemberg113
Anwendungsserver Im Beispiel des SaaS Vorgeschalteter Load-Balancer sorgt für genügend Kapazität Datenbank (Amazon RDS-Dienst) speichert Arbeitsauftrag PDF-Datei für die Verarbeitung wird in Amazon S3 „Bucket“ gespeichert(Festplattenspeicher) Für den Verarbeitungsprozess der Datei wird ein Prozess auf einem separatenServer gestartet Sollten weitere Ressourcen notwendig sein, werden weitere Server bereitgestelltWeb Engineering IIDuale Hochschule Baden-Württemberg114
SaaS mit Cloud Infrastruktur: S3 Speichertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg115
Speicherung der Daten im S3-Bucket Der S3-Bucket ist ein Datenspeicher für Dateien bis zu einer Dateigröße von 5 TB Alle Amazon-Resourcen können auf einen S3-Bucket und dessen Inhalt zugreifen Es ist der zentrale Speicherort für Logs, Anwendungsdateien, Konfigurationsdateien Die Daten in einem Bucket müssen manuell gelöscht werden(Server haben einen temporären Speicher)Web Engineering IIDuale Hochschule Baden-Württemberg116
S3-Speicher Im Beispiel des SaaS Beinhalten Log-Dateien, Konfigurationsdateien und die „Eingabedatei“ Server holen sich die Ressourcen und legen das Ergebnis im Bucket abWeb Engineering IIDuale Hochschule Baden-Württemberg117
SaaS mit Cloud Infrastruktur: Webservertr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg118
Aktualisierung der Informationen in der Datenbank Amazon AWS bietet NoSQL-Datenbanken und relationale Datenbanksysteme an Die Lese- und Schreibgeschwindigkeit kann für jede Tabelle granular definiertwerden Datenbanken können per Knopfdruck zwischen verschiedenen AmazonRechenzentren synchronisiert werdenWeb Engineering IIDuale Hochschule Baden-Württemberg119
Datenbanken Im Beispiel des SaaS Aktualisieren des Kundenprofils innerhalb der Datenbank Speicherung der Metriken Wie lange wurde die Datei verarbeitet? Aktualisierung des Kundenkontos (eCommerce)Web Engineering IIDuale Hochschule Baden-Württemberg120
Bereitstellung der Datei Im Beispiel des SaaS Datei wird nach der Verarbeitung in einem gesonderten S3-Bucket abgelegt undkann von dem Client heruntergeladen werdenWeb Engineering IIDuale Hochschule Baden-Württemberg121
Zusätzliche AWS-Dienste CloudFront Content Distribution Network statische Websitedaten (Grafiken, CSS/Javascriptdateien) einem Client besondersschnell zum Abruf anbieten Spezielle Caching-Optionen Im SaaS-Beispiel: Bilder, CSS und Javascriptdateien der Website speichernWeb Engineering IIDuale Hochschule Baden-Württemberg122
Zusätzliche AWS-Dienste Elastic Beanstalk AWS Infrastruktur basierend für ein Quellcode-Repository bereitstellen Live-Umgebung und Staging-Umgebung für Tests Migration von Staging-Umgebung mit einem Klick in ProduktivumgebungWeb Engineering IIDuale Hochschule Baden-Württemberg123
Zusätzliche AWS-Dienste Glacier preisweiter Langzeit Archivspeicher Kosten für Restore: Je nach Zeitraum der Wiederherstellung wenige Stunden bis hin zu mehreren Tagen WartezeitWeb Engineering IIDuale Hochschule Baden-Württemberg124
Amazon AWS Datenzentrentr.im/amznWeb Engineering IIDuale Hochschule Baden-Württemberg125
Vorteile Hohe Ausfallsicherheit Keine Vorhaltung von redundanter Hardware Keine Vorhaltung von georedundanter Hardware Produkt kann „klein beginnen“ und skaliert mit der Anwenderzahl mit Umsetzung von „Big-Data“ ProjektenWeb Engineering IIDuale Hochschule Baden-Württemberg126
Nachteile komplexes Abrechnungsmodell(Einheiten, Stunden, Datentransfer, Grundgebühren u.v.m.) Projekt muss für Cloud-Dienste optimiert werden horizontale Skalierbarkeit der Aufgabe (Aufgabe muss in Teilprobleme aufgeteiltwerden können) Wechsel zu einer anderen Plattform mit sehr hohem Aufwand verbunden Nutzung von anbieterspezifischen Diensten(bspw. Amazon eigene Datenbank „DynamoDB“) Migration und TestsWeb Engineering IIDuale Hochschule Baden-Württemberg127
Skalierung der Dienste am Beispiel Netflixtr.im/netflixWeb Engineering IIDuale Hochschule Baden-Württemberg128
Netflix setzt auf die Amazon AWS Infrastruktur für die Datendienste führt dauerhaft in der Produktivumgebung Tests durch eigener Bot „Chaos-Monkey“ zerstört rund um die Uhr Produktivserver pro Jahr um die 65.000 Serverinstanzen während des normalen Streamingbetriebszerstört und der Failoverbetrieb getestet Andere Monkeys testen Latenzen Sicherheit Aufräumarbeiten (Clean-Ups) vieles mehrWeb Engineering IIDuale Hochschule Baden-Württemberg129
Caching mit RedisErgebnisse zwischenspeichern
Cache Ein Cache speichert Informationen für einen schnelleren (wiederholten) Zugriff Diese Informationen können vorab dynamisch generiert worden sein Aufbereitete Informationen aus einer Datenbank Ausgabe eines Interpreters einer dynamischen Skriptsprache (bspw. PHP) Teilinhalte einer Website die sich nur gelegentlich ändern (bspw. Infoseite) Im Webbereich sind Caches üblicherweise dateibasiert (Ablage der Datei auf der Festplatte) datenbankbasiert (NoSQL Datenbank) „In Memory“ gecached oder ein hybrid: „In-Memory Datenbank“Web Engineering IIDuale Hochschule Baden-Württemberg131
Redis Ist eine open source In-Memory Datenbank Basiert auf einem „Key-Value-Store“, wie bspw. Hashtabellen (nicht relational) bietet sich für einfache Datenstrukturen an Ein beliebiger Wert wird unter Angabe eines Schlüssels eingetragen Dieser Wert kann unter Angabe des Schlüssels wieder abgerufen werden Sehr performant bis zu 80.000 Lesevorgänge pro Sekunde bis zu 100.000 Schreibvorgänge pro Sekunde auf herkömmlicher HardwareWeb Engineering IIDuale Hochschule Baden-Württemberg132
Wo kann gecached werden? Nginx kann als Reverse Proxy betrieben werden und speichert so Webinhaltezwischen, bzw. ruft diese von internen Systemen ab Auch Datenbankabfragen können mit Redis zwischengespeichert werden, bspw. Komplexe Auswertungen Abfragen die eine hohe Auslastung des Servers bezwecken Abfragen von Werten, die sich nicht verändern (aggregierte Umsatzzahlen derVorwoche)Web Engineering IIDuale Hochschule Baden-Württemberg133
Cache Gültigkeit Die Dauer der Gültigkeit muss durch den Entwickler festgelegt werden Definierte Zeitspanne Neustart des Systems (ggf. Verlust des Caches) Löschen des Caches nach Aktualisierung der Daten durch externen Prozess Manuelles Löschen des CachesWeb Engineering IIDuale Hochschule Baden-Württemberg134
Cachen mit Redis - keine Daten im CacheClientWeb Engineering II5) Daten abrufen8) /index cachenServer6) Ergebnis erhalten1) GET /index9) AntwortSQL-Datenbank3) Nicht gefunden2) /index gecached?Redis Cache4) Seite generierennginx WebserverNode Prozess7) HTML zurückgebenDuale Hochschule Baden-Württemberg135
Cachen mit Redis - Daten im Cache3) Gefunden2) /index gecached?Redis CacheSQL-DatenbankServer1) GET /index4) Antwortnginx WebserverNode ProzessClientWeb Engineering IIDuale Hochschule Baden-Württemberg136
Vorteile des Caching Anfragen an den Webserver werden schneller beantwortet Jede zwischengespeicherte Information muss nicht generiert werden, was dieAuslastung des Servers vermindert pro Webserver können mehr Anfragen beantwortet werden Bei rechenintensiven Datenbankabfragen weniger Last auf dem Datenbankserver schnellere Antwortzeiten bei anderen parallelen AbfragenWeb Engineering IIDuale Hochschule Baden-Württemberg137
Nachteile des Caching Die Gültigkeit des Caches muss gewartet werden Informationen die nicht mehr Up2Date sind, müssen entfernt oder aktualisiertwerden Kein Cachen bei der Verwendung von Cookies möglich Nicht alle Bereiche einer Webseite sollten gecached werden Echtzeitstatistiken Interne Bereiche einer WebseiteWeb Engineering IIDuale Hochschule Baden-Württemberg138
Übersicht der WebsprachenAktuelle Sprachen und deren Verteilung
Übersicht über aktuelle GitHub Repositoriestr.im/githutWeb Engineering IIDuale Hochschule Baden-Württemberg140
Aktuelle TSpracheWeb Engineering IIDuale Hochschule Baden-Württemberg141
JavaScript Client oder serverbasiert (bspw. jQuery / Node.JS) Plattformunabhängig Windows, Mac, div. Linux-Distributionen, Embedded & Internet of Things// Kommentartextfunction eineFunktion() {var autoName "BMW";}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg142
Java Java Web-Applications (J2EE) Plattformunabhängig Windows, Mac, div. Linux-Distributionenpublic void startDocument()throws SAXException{nl();nl();emit("START DOCUMENT");nl();emit(" ?xml version '1.0' encoding 'UTF-8'? ");nl();}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg143
Python Plattformunabhängig Windows, Mac, div. Linux-Distributionen # Python 3: Fibonacci series up to ndef fib(n):a, b 0, 1while a n:print(a, end ' ')a, b b, a bprint()fib(1000)! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg144
PHP In Version 5 auch objektorientiert (v4 nur prozedural) Plattformunabhängig Windows, Mac, div. Linux-Distributionenpublic function execute( handlers, path, method, data '', headers array()) { config this- apiContext- getConfig(); httpConfig new PPHttpConfig(null, method); httpConfig- setHeaders( headers array('Content-Type' 'application/json'));return response;}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg145
Ruby Modular mit „Gems“ Bekannte MVC-Bibliothek ist „Ruby on Rails“ Online Beispiel auf tryruby.org Plattformunabhängig Windows, Mac, div. Linux-Distributionendef welcome(name)puts "howdy #{name}"endwelcome("nana")# inside double quotes, #{ } will evaluate the variable# traditional parens! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg146
ASP.NET Modular mit „NuGet Packages“ Plattformabhängig Windows, andere Plattformen mit Monopublic class IntroParams{[Params(100, 200)]public int A { get; set; }[Params(10, 20)]public int B { get; set; }public void Benchmark(){Thread.Sleep(A B 5);}}! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg147
Webserver Marktanteiletr.im/netcraftWeb Engineering IIDuale Hochschule Baden-Württemberg148
Web ServicesREST und SOAP
Anwendungsgebiet: Web ServicesBusinesslogikDatenmodelleDatenbankenWeb ServiceiPhone App Android App PC App Mac App WebseiteWeb Engineering IIDuale Hochschule Baden-WürttembergDrittanbieter150
Was sind Web Services? eine im Internet veröffentlichte Software die über Standardschnittstellenangesprochen werden kann Interaktion zwischen Client und Server geschieht durch den Austausch von XMLbasierten Nachrichten über Internetprotokolle die Technologien hinter Web Services sind plattformunabhängig mit Web Services können eigene Dienste bereitgestellt werden, die Informationenfür Webseiten, Apps und Anwendungen gleichzeitig bereitstellenWeb Engineering IIDuale Hochschule Baden-Württemberg151
SOAP: Allgemeines SOAP steht für Simple Object Access Protocol ist ein Netzwerkprotokoll mit dessen Hilfe Daten zwischen Systemen ausgetauschtwerden können oder entfernte Prozeduren aufgerufen werden können ist ein industrieller Standard des World Wide Web Consortiums (W3C) Basiert auf XML Plattformunabhängig Programmiersprachenunabhängig Es existiert kein bestimmtes Transportprotokoll, üblicherweise wird HTTP benutztWeb Engineering IIDuale Hochschule Baden-Württemberg152
SOAP: Anwendungsoptionen RPC (Remote Procedure Call) Es wird eine Methode des Servers per Web Service aufgerufen Funktionsname und Namen werden in der SOAP-Nachricht an den Serverübertragen Dokumentbasiert Es werden strukturierte Informationen versendet Der Webserver verarbeitet diese Informationen und sendet das Ergebnis sofortoder zeitlich versetzt zum Server zurückWeb Engineering IIDuale Hochschule Baden-Württemberg153
Aufbau einer SOAP-NachrichtTransport Header Transport Header üblicherweise HTTP Optionales Element Beinhaltet Anwendungsspezifische InformationenSOAP HeaderSOAP BodySOAP Umschlag/EnvelopeWeb Engineering II Enthält Informationen für den eigentlichen Empfänger Kann auch Informationen für entfernten Prozeduraufrufenthalten Informationen sind durch den Empfänger zu interpretierenund zu verarbeiten Umschlag ist der Container zur Einbettung von DatenDuale Hochschule Baden-Württemberg154
Struktur von SOAP-NachrichtenPOST /soapnachrichtenendpunkt HTTP/1.1Content-Type: application/soapTransport Header ?xml version "1.0"? s:Envelope xmlns:s „http://www.w3.org/2003/05/soap-envelope" s:Header . . . /s:Header SOAP Header s:Body . . . /s:Body SOAP BodySOAP Umschlag /s:Envelope ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg155
SOAP-Envelope Grundgerüst einer SOAP-Nachricht Ist ein Behälter vergleichbar mit einem Briefumschlag In dem SOAP-Envelope ist der SOAP-Header und der SOAP-Body enthalten ?xml version "1.0"? s:Envelope xmlns:s „http://www.w3.org/2003/05/soap-envelope“ !—- optionaler SOAP-Header —- !—- SOAP-Body —- /s:Envelope ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg156
SOAP-Header Optionaler Bestandteil falls vorhanden, muss der SOAP-Header vor dem Body stehen inhaltsunabhängige Daten und anwendungsspezifische Angaben x:ersterBlock xmlns:x „http://example.com“ !—- Variablen —- /x:ersterBlock ! /dpetrasch/DHBWWeb Engineering IIDuale Hochschule Baden-Württemberg157
SOAP-Body Beinhaltet die eigentliche Nachricht Keine festgelegte Struktur Muss im XML-Format geschrieben werden Bei RPC enthält er Informationen zum Funktionsaufruf Methodenname Parameterliste Rückgabewert Optional: Attachment Keine Beschränkung für das Dateiformat Zum Anhängen von DokumentenWeb Engineering IIDuale Hochschule Baden-Württemberg158
SOAP-Fault Wird verwendet um Informationen über aufgetretene Fehler zu übermitteln SOAP-Fault ist ein Unterelement des Bodys Besteht aus den Unterelementen Code: Fehlerklassifizierung Reason: dient der menschenlesbaren Fehlerbeschreibung Optional: Beschreibung wo genau der Fehler aufgetreten ist:Node, Role und DetailWeb Engineering IIDuale Hochschule Baden-Württemberg159
RPC-Nachricht ?xml version '1.0' encoding "UTF-8? env:Envelope xmlns:env "http://www.w3.org/2003/05/soap-envelope" env:Header m:reservation xmlns:m "http://travelcompany.org/reservation"env:role "env:mustUnderstand "true" m:reference uuid:093a2da1-q345-739r-ba5d /m:reference m:date 2004-05-10 /m:date /m:reservation /env:Header env:Body p:itinerary xmlns:p "http://travelcompany.org/reservation/travel" Endpunkt für den Webservice p:setReservation Funktionsaufruf der Funktion p:departing Duesseldorf /p:departing p:arriving Muenchen /p:arriving „setReservation“ p:departureDate 2004-05-29 /p:departureDate Parameter: p:departureTime mid-morning /p:departureTime Departing, Arriving, departureDate, p:class business /p:class departureTime,clas
Coldfusion Java-Servlets und JSP Node.JS Serverseitige Programmierung. Web Engineering II Duale Hochschule Baden-Württemberg 89 . Amazon AWS - Dienstübersicht. Web Engineering II Duale Hochschule Baden-Württemberg 102 tr.im/amzn SaaS mit Cloud Infrastruktur: DNS.