Präsentation herunterladen
Veröffentlicht von:Heiko Weisiger Geändert vor über 9 Jahren
1
Paradigmen der Programmierung Nebenläufigkeit
Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen Actors mit akka Play Framework Node.js HINWEIS: Die Inhalte dieser Folien sind NICHT klausurrelevant. Sie dienen der Anregung, sich mit diesen Frameworks zu beschäftigen.
2
akka.io
3
Actor-Framework für Java und Scala
Akka Actor-Framework für Java und Scala Ersetzt die bisherigen Actors in Scala Funktioniert konzeptionell genau wie bisher gesehen Etwas aufwändigere Einarbeitung: Effizienter und robuster
4
Hello Word mit alten (deprecated) Scala Actors
5
Hello Word mit akka (von Typesafe Website)
6
Receive Methode
7
Become
8
Akka: Robuster und effizienter
ActorSystem und Actors Actor System ist schwergewichtig und verwaltet 1..N Threads Mehrere Actor Systeme gleichzeitig möglich, ein System ist eine logische Einheit Actors sind leichtgewichtig und teilen sich Threads Standardmäßig verhalten sich akka Actors wie die react Methode Ereignis-gesteuerte Schleife: Nachrichten werden verteilt wenn sie eintreffen Millionen von Actors gleichzeitig möglich (Overhead pro Actor ca. 300 Bytes) Jeder Actor wird durch eine ActorReference gekapselt Hierarchie von Actors Actors gehören immer zu einem übergeordneten Actor Actors können auf Fehler ihrer Kind-Actors reagieren „Let it crash“ Modell: System kann sich selbst heilen
9
Actors in akka Zu einem akka Actor gehören:
Actor Reference: kapselt den eigentlichen Actor State: interner Zustand Behavior: Verhalten Mailbox: Verschiedene Strategien (FIFO, Priorität) möglich Children: untergeordnete Actors Supervisor Strategy: Übergeordneter Actor muss sich um Fehlerbehandlung kümmern Strategien für übergeordneten Actor: Untergeordneten Actor wieder anstoßen und akkumulierten internen Zustand beibehalten Untergeordneten Actor neu starten und akkumulierten internen Zustand verwerfen Untergeordneten Actor dauerhaft aufgeben Fehler eskalieren, d.h. selbst scheitern
10
Actors Hierarchie system.actorOf() -> erzeugt Kind von user
context.actorOf() -> erzeugt Kind innerhalb eines Actors
11
Play web-site
12
Play Framework Framework für Webanwendungen
Direkte Unterstützung für Java und Scala Basiert auf akka Leichtgewichtige, zustandslose Architektur Geringe Ressourcennutzung (CPU, Speicher, Anzahl Threads) Typsicherheit bei der Datenverarbeitung Große Entwicklercommunity Viele erfolgreiche Anwendungen
13
Beispiel: Extreme Collaboration
14
Play Framework Optimiert für asynchrone Programmierung
Nicht-blockierende Verarbeitung von Anfragen I/O Operationen Unterstützung asynchroner Kommunikation mit Clients mit WebSockets Unterstützung asynchroner Verarbeitung serverseitig Gute Template-Lösung Kosequente Umsetzung des Model View Controller Ansatzes
16
Bestandteile
17
Projekt in Eclipse öffnen
18
Activator UI Verändern von Model, View, Controller im Browser Automatisches Kompilieren
23
Actions und Controller
Requests werden von einer Aktion beantwortet Aktionen sind Java Methoden, die - Request Paramter erhalten und verarbeiten - Ein Resultat an den Client zurücksenden Mehrere Aktionen werden zu Controllern zusammengefasst Controller Action Result
24
Resultate Redirects Auch Redirects sind Resultate
25
Asynchrone Controller mit Promise
Jeder Request wird asynchron und nicht-blockierend behandelt Controller sollten möglichst auch asynchron arbeiten Action Code sollte nicht blockieren Kritische Beispiele: Datenbankaufrufe, Abrufen von Daten via Web Services, lange Berechnungen Statt eines Resultats wird das Versprechen auf ein Resultat geliefert: Promise <Result> Das Versprechen auf ein Resultat wird später eingelöst - Das Resultat wir dann an den Client geschickt wenn es vorliegt - Der Action-Code ist längst abgearbeitet und hat nicht blockert Beim Warten auf das Ergebnis wird nur der Web-Client blockiert, nicht der Server
26
Promise<Result> statt Result wiedergeben
27
Actions werden immer asynchron behandelt
Auch hier wird Result intern in ein Promise verpackt Intern werden also Promise<Result> und Result gleich behandelt Man könnte sagen, dass beim direkten zurückgeben von Result das Versprechen schneller eingelöst wird. In jedem Fall wird das Resultat asynchron empfangen
28
Von Routes zu Controller-Actions
Von Controller-Actions zu Views …und mittendrin das Datenmodell
30
Controller und Views HTTP Request ist ein Event
Routes leiten die Anfrage an einen Action-Handler eines Controller weiter Action-Handler verändert gffs. das Datenmodel Weitergeleitet wird an einen View Views können unabhängig voneinander existieren und verschiedene Sichten auf die gleichen Daten liefern
35
Views erzeugen mit Templates
Scala Templates sind Textdateien mit kleinen Scala Code-Blöcken Erzeugt werden textbasierte Formate, z.B. HTML, XML, CSV,… Beispiel-Template: Template Parameter Beginn eines dynamischen Ausdrucks Iteration
36
Anforderungen an die Seitengestaltung
Vorlagen-Bausteine unabhängig anpassen Gleiche Inhalte in unterschiedlichen Vorlagen nutzen Unterschiedliche Inhalte in gleiche Vorlagen einbauen Trennung von Inhalt und Layout ist erforderlich!
37
Das Modell Business-Logik in package model festlegen
Playframework ist zustandslos Persistente Datenhanltung über Datenbank Cache (möglicher Datenverlust) Flash/Session Scrope (via Cookies, daher nur Strings und max 4KB)
39
Model View Controller (MVC)
Verändern, bearbeiten Aktualisieren Controller View Controller View Controller Controller View View nutzt sieht User
40
Vorteile MVC Ermöglicht Wartung und Entwicklung des Designs unabhängig von der Codebasis Emöglicht schrittweisen Aufbau einer Webanwendung Ermöglicht neue Repräsentation der gleichen Daten Ermöglicht Arbeitsteilung im Projekt Ermöglicht die Wiederverwendung von Funktionalitäten einer Webanwendung Ermöglicht Skalierbarkeit
41
Fallbeispiel: e-teaching.org
Umfangreiche Inhalte 1200+ Inhaltsseiten 80+ PDF Dokumente 100+ Produktsteckbriefe 150+ Referenzbeispiele 500+ Glossarbegriffe 2000+ Blogeinträge Community-Funktionen Visitenkarte Vernetzung der Mitglieder Forum und Blog Linklisten Projektdatenbank Verschiedene Anwender Nutzer Mitglieder Partnerhochschulen Redakteure Landesportale
42
e-teaching.org Angepasst an die verschiedenen Nutzer
43
e-teaching.org Angepasst an die verschiedenen Nutzer
Community-Mitglieder Hochschul-Redakteure Community-Mitglieder haben mehr Möglichkeiten und Rechte... e-teaching.org-Redaktion Landesportal
44
e-teaching.org Angepasst an die verschiedenen Nutzer
Community-Mitglieder Hochschul-Redakteure ...Hochschulredakteure haben darüber hinaus die Möglichkeit, Informationen zu Ihrer Hochschule zu bearbeiten... e-teaching.org-Redaktion Landesportal
45
e-teaching.org Angepasst an die verschiedenen Nutzer
Community-Mitglieder Hochschul-Redakteure ...die e-teaching.org Redakteure arbeiten normal in e-teaching.org-Redaktion Landesportal
46
e-teaching.org Angepasst an die verschiedenen Nutzer
Community-Mitglieder Hochschul-Redakteure Nach dem Joachim Wedekind und zuletzt auch der Direktor unseres Institutes hoffentlich anschaulich gemacht haben, worum es uns bei der Konzeption des Portals geht, möchte ich ihnen den aktuellen Stand des Portals präsentieren. e-teaching.org-Redaktion Landesportal
47
e-teaching.org Sichten auf spezielle Inhaltstypen Produktsteckbriefe
Referenzbeispiele Veranstaltungen Weiterbildung Projektdatenbank Community-Events E-Teacher Audio-Pod
48
Realisierung e-teaching.org mit Plone / ZOPE und Python
49
Webframework basierend auf JavaScript
50
Node.js und Express Framework
Serverseitige Plattform für Netzwerkanwendungen Basiert auf der JavaScript Laufzeitumgebung „V8“ Ereignisgesteuerte Architektur Optimiert für verteilte, daten-intensive Echtzeitanwendung
51
Struktur Eigene Module Öffentliche Dateien: JavaScript, CSS, Bilder…
Externe Module Model View Controller Hauptanwendung
52
Single Thread Event Loops
53
Server starten > node myappserver.js
54
Programm-Logik
55
Clientseitiges Javascript
56
IdeaWall.js (client-seitig)
57
Synchroner vs. asynchroner Seitenaufbau
Web-Server Benutzeraktionen ändern die Seite ohne Zugriff auf den Server Web-Server Xjdooi dof Oidufio df pifdp Asynchrone Verarbeitung auch auf dem Server Aktualisierung von Seitenteilen statt Ganzer Seiten
58
Ausblick Visuelle Programmierung Entwurfmuster (Softwaredesign)
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.