58
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.

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

Embed Size (px)

Citation preview

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

Paradigmen der Programmierung NebenläufigkeitProf. Dr. Christian KohlsInformatik, 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.

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

akka.io

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

Akka

• Actor-Framework für Java und Scala• Ersetzt die bisherigen Actors in Scala

– Funktioniert konzeptionell genau wie bisher gesehen

– Etwas aufwändigere Einarbeitung:http://doc.akka.io/docs/akka/2.3.8/intro/getting-started.html

– Effizienter und robuster

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

Hello Wordmit alten (deprecated) Scala Actors

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

Hello Wordmit akka (von Typesafe Website)

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

Receive Methode

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

Become

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

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

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

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

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

Actors Hierarchie

system.actorOf() -> erzeugt Kind von usercontext.actorOf() -> erzeugt Kind innerhalb eines Actors

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

Play web-site

https://www.playframework.com/

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

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

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

Beispiel: Extreme Collaboration

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

Play Framework• Optimiert für asynchrone Programmierung

• Nicht-blockierendeVerarbeitung von AnfragenI/O Operationen

• Unterstützung asynchroner Kommunikation mit Clients mit WebSockets

• Unterstützung asynchroner Verarbeitung serverseitig

• Gute Template-Lösung

• Kosequente Umsetzung desModel View Controller Ansatzes

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

Bestandteile

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

Projekt in Eclipse öffnen

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

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

Page 19: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 20: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 21: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 22: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 23: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen

Actions und ControllerRequests werden von einer Aktion beantwortetAktionen 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

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

Resultate

RedirectsAuch Redirects sind Resultate

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

Asynchrone Controller mit Promise

Jeder Request wird asynchron und nicht-blockierend behandeltController sollten möglichst auch asynchron arbeitenAction 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

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

Promise<Result> statt Result wiedergeben

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

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 Resultdas Versprechen schneller eingelöst wird.

In jedem Fall wird das Resultat asynchron empfangen

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

Von Routes zu Controller-Actions Von Controller-Actions zu Views

…und mittendrin das Datenmodell

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

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

Page 31: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 32: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 33: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 34: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen
Page 35: Paradigmen der Programmierung Nebenläufigkeit Prof. Dr. Christian Kohls Informatik, Soziotechnische Systeme 4. Frameworks für nebenläufige Anwendungen

Views erzeugen mit TemplatesScala Templates sind Textdateien mit kleinen Scala Code-BlöckenErzeugt werden textbasierte Formate, z.B. HTML, XML, CSV,…

Beispiel-Template:

Beginn einesdynamischen Ausdrucks

Template Parameter

Iteration

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

Anforderungen an die Seitengestaltung

Unterschiedliche Inhaltein gleiche Vorlagen einbauen

Vorlagen-Bausteineunabhängig anpassen

Gleiche Inhaltein unterschiedlichenVorlagen nutzen

Trennung von Inhalt und Layout ist erforderlich!

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

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)

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

Model View Controller (MVC)

Model

ViewController

User

nutzt sieht

Verändern,bearbeiten

Aktualisieren

ViewView

View

ControllerController

Controller

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

Vorteile MVC

• Ermöglicht Wartung und Entwicklung des Designsunabhä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

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

Fallbeispiel: e-teaching.orgUmfangreiche Inhalte1200+ Inhaltsseiten80+ PDF Dokumente 100+ Produktsteckbriefe150+ Referenzbeispiele500+ Glossarbegriffe2000+ Blogeinträge

Community-Funktionen-Visitenkarte-Vernetzung der Mitglieder-Forum und Blog-Linklisten-Projektdatenbank

Verschiedene Anwender-Nutzer-Mitglieder-Partnerhochschulen-Redakteure-Landesportale

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

Angepasst an die verschiedenen Nutzer

e-teaching.org

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

Angepasst an die verschiedenen Nutzer

Community-Mitglieder Hochschul-Redakteure

e-teaching.org-Redaktion Landesportal

e-teaching.org

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

Angepasst an die verschiedenen Nutzer

Community-Mitglieder Hochschul-Redakteure

e-teaching.org-Redaktion Landesportal

e-teaching.org

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

Angepasst an die verschiedenen Nutzer

Community-Mitglieder Hochschul-Redakteure

e-teaching.org-Redaktion Landesportal

e-teaching.org

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

Angepasst an die verschiedenen Nutzer

Community-Mitglieder Hochschul-Redakteure

e-teaching.org-Redaktion Landesportal

e-teaching.org

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

Sichten auf spezielle Inhaltstypen

Produktsteckbriefe Referenzbeispiele Veranstaltungen Weiterbildung

Projektdatenbank Community-Events E-Teacher Audio-Pod

e-teaching.org

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

Realisierung e-teaching.org mit Plone / ZOPE und Python

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

Webframework basierend auf JavaScript

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

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

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

Struktur

ModelView

Controller

Externe Module

Eigene Module Öffentliche Dateien: JavaScript, CSS, Bilder…

Hauptanwendung

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

Single Thread Event Loops

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

Server starten

> node myappserver.js

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

Programm-Logik

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

Clientseitiges Javascript

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

IdeaWall.js (client-seitig)

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

Synchroner vs. asynchroner Seitenaufbau

Web-Server

Benutzeraktionen ändern die Seite ohne Zugriff auf den Server

Web-ServerXjdooi dofOidufio df

pifdp

Aktualisierung von Seitenteilen stattGanzer Seiten

Asynchrone Verarbeitungauch auf dem Server

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

Ausblick

Visuelle Programmierung

Entwurfmuster (Softwaredesign)