Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen.

Ähnliche Präsentationen


Präsentation zum Thema: "Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen."—  Präsentation transkript:

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 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 https://www.playframework.com/

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

15

16 Bestandteile

17 Projekt in Eclipse öffnen

18 Activator UI Verändern von Model, View, Controller im Browser Automatisches Kompilieren

19

20

21

22

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 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 statt Result wiedergeben

27 Actions werden immer asynchron behandelt Auch hier wird Result intern in ein Promise verpackt Intern werden also Promise 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

29

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

31

32

33

34

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: Beginn eines dynamischen Ausdrucks Template Parameter Iteration

36 Anforderungen an die Seitengestaltung Unterschiedliche Inhalte in gleiche Vorlagen einbauen Vorlagen-Bausteine unabhängig anpassen Gleiche Inhalte in unterschiedlichen Vorlagen nutzen  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)

38

39 Model View Controller (MVC) Model View Controller User nutzt sieht Verändern, bearbeiten Aktualisieren View Controller

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 Inhaltsseiten 80+ PDF Dokumente 100+ Produktsteckbriefe 150+ Referenzbeispiele 500+ Glossarbegriffe Blogeinträge Community-Funktionen -Visitenkarte -Vernetzung der Mitglieder -Forum und Blog -Linklisten -Projektdatenbank Verschiedene Anwender -Nutzer -Mitglieder -Partnerhochschulen -Redakteure -Landesportale

42 Angepasst an die verschiedenen Nutzer e-teaching.org

43 Angepasst an die verschiedenen Nutzer Community-Mitglieder Hochschul-Redakteure e-teaching.org-Redaktion Landesportal e-teaching.org

44 Angepasst an die verschiedenen Nutzer Community-Mitglieder Hochschul-Redakteure e-teaching.org-Redaktion Landesportal e-teaching.org

45 Angepasst an die verschiedenen Nutzer Community-Mitglieder Hochschul-Redakteure e-teaching.org-Redaktion Landesportal e-teaching.org

46 Angepasst an die verschiedenen Nutzer Community-Mitglieder Hochschul-Redakteure e-teaching.org-Redaktion Landesportal e-teaching.org

47 Sichten auf spezielle Inhaltstypen ProduktsteckbriefeReferenzbeispiele Veranstaltungen Weiterbildung ProjektdatenbankCommunity-EventsE-TeacherAudio-Pod e-teaching.org

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 Model View Controller Externe Module Eigene Module Öffentliche Dateien: JavaScript, CSS, Bilder… 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 Aktualisierung von Seitenteilen statt Ganzer Seiten Asynchrone Verarbeitung auch auf dem Server

58 Ausblick Visuelle Programmierung Entwurfmuster (Softwaredesign)


Herunterladen ppt "Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen."

Ähnliche Präsentationen


Google-Anzeigen