Technologia Programowania 2016/2017 Wykªad 10

Podobne dokumenty
Technologia Programowania 2016/2017 Wykªad 9

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Podstawy wzorca MVC MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe - laboratorium

Java a dost p do Internetu.

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Aplikacje internetowe i rozproszone - laboratorium

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Aplikacje WWW - laboratorium

MVC w praktyce tworzymy system artykułów. cz. 1

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Ajax a bezpieczeństwo aplikacji webowych. Jakub Wierzgała

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Zaawansowane aplikacje WWW - laboratorium

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Tworzenie aplikacji webowych w oparciu o framework ObjectLedge

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Enterprise JavaBeans (EJB)

Aplikacje RMI Lab4

Kurs języka Ruby. Ruby on Rails ActionPack

Podstawy modelowania w j zyku UML

Tworzenie i wykorzystanie usług sieciowych

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Programowanie zespołowe

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Język programowania Scala + aktorzy Akka

Aplikacja wielow tkowa prosty komunikator

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie obiektowe

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Praca Dyplomowa Magisterska

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Wzorce prezentacji internetowych

Programowanie wielowarstwowe i komponentowe

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Aplikacje internetowe i rozproszone - laboratorium

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

DESlock+ szybki start

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Instalacja i konfiguracja serwera FTP w systemie Windows Server 2008 / 2008 R2 / 2012

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

W wyświetlonym okienku New Web Server Application wybierz opcję Web App Debugger Executable, a w polu Class Name wpisz: P1.

Zaawansowane aplikacje internetowe laboratorium REST

INFORMATOR TECHNICZNY WONDERWARE

Wybrane działy Informatyki Stosowanej

Forum Client - Spring in Swing

MVC w praktyce tworzymy system artykułów. cz. 2

Ćwiczenie dotyczące platformy Java EE zostało przygotowane z myślą o środowisku NetBeans w wersji 7.3 (do pobrania z

Git, Bitbucket, IntelliJ IDEA

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie rozproszone w języku Java

Instrukcja laboratoryjna

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Google Web Toolkit Michał Węgorek ZPO 2009

Terytorialna analiza danych

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Spring MVC Andrzej Klusiewicz 1/18

Aplikacje WWW - laboratorium

Programowanie telefonów z Windows Phone 7, cz. 4

Technologia Programowania 2016/2017 Wykªad 13 Android. Jakub Lemiesz

Podstawy modelowania w j zyku UML

Scala - programowanie obiektowo-funkcyjne

Wybrane działy Informatyki Stosowanej

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Kompozycja i dziedziczenie klas

Lekcja 12 - POMOCNICY

Wprowadzenie. 1. Terminal WebRTC. LABORATORIUM 5: WebRTC komunikacja między terminalami.

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Aplikacje RMI

Katalog książek cz. 3: Web Service

Programowanie w Ruby

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Języki i metody programowania Java. Wykład 2 (część 2)

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Transkrypt:

Technologia Programowania 2016/2017 Wykªad 10 Akka, Jakub Lemiesz

Plan 1 Omówienie przykªadowej aplikacji Akka (aprokysmacja liczby pi) 2 Wprowadzenie framework'a webowego (wspóªpracuj cego z Akka) 3 Przykªadowa aplikacja w (podstawa do przerobienia go na aplikacj webow ) 2 / 23

Przykªadowa aplikacja przybli»anie liczby pi Wzór Leibniz'a: Im wi cej wyrazów uwzgl dnimy tym lepsze przybli»enie π = 3, 141592653589793... Zadanie ªatwo jest przyspieszy, mo»emy podzieli sumowanie na kilka niezale»nych zada«, wykona te zadania równolegle i poª czy wyniki Plik pom.xml dla aplikacji Pi, uruchamiamy: mvn compile exec:java -Dexec.mainClass="$package$.Pi" 3 / 23

Jaka liczba Workerów w PiSystem jest optymalna? 4 / 23

Podsumowuj c, co robimy? 1 Deniujemy niezmienne (ang. immutable) klasy wiadomo±ci - wszystkie pola sa nal. 2 Deniujemy aktorów (extends UntypedActor) oraz przesªaniamy metod onrecive(...), która okre±la akcje w zale»no±ci od rodzaju wiadomo±ci 3 Okre±lamy hierarchie aktorów (kto kogo tworzy) 4 Aktorzy komunikuj si wysyªaj c wiadomo±ci: polecenie tell() oraz metoda OnRecive() (nie powinno by innych publicznych metod) 5 / 23

Akka ma bardzo dobr dokumentacj http://doc.akka.io/docs/akka/2.4/java.html (uwaga na wersj ) 6 / 23

Framework 1 Open-source'owy framework do tworzenia aplikacji webowych (jak to brzmi po polsku?) 2 Oparty na Akka (wydajno± ) i ªatwy w obsªudze (próba zrobienia Ruby on Rails dla Java/Scala??) 3 Šatwy w obsªudze convention over conguration domy±lnie: model-view-controller pattern piszesz i widzisz 7 / 23

Framework piszesz i widzisz Problem wielu frameworków jest skomplikowana procedura wdra»ania na serwerze aplikacji W ka»da zmiana w kodzie jest widoczna po przeªadowaniu strony: automatyczna prekompilacja ¹ródeª i informacje o bª dach Analizujemy przykªad: websocket-logger.zip (jest na mojej stronie) 8 / 23

Jak zacz : www.playframework.com Inne ¹ródªa: Typesafe Activator? Sporo ksi»ek, samouczków ( Framework Cookbook) Niezªe szkolenie na Youtube 9 / 23

Jak uruchomi aplikacj? Unikaj ±cie»ek z polskimi znakami lub spacjami! 1 Pobierz (program testowaªem na ver. 2.2.1) 2 Upewnij si,»e polecenie play dziaªa w konsoli (np. dopisz ±cie»k do zmiennej systemowej Path) 3 W konsoli wejd¹ do katalogu, do którego rozpakowaªe± przykªadowy program 4 Wywoªaj polecenie: play run, które powinno uruchomi program (czyli serwer) 5 W przegl darce otwórz kilka okien i adres localhost:9000 6 Mo»emy analizowa komunikacja mi dzy klientami - jakie ramki id od i do klientów (np. w Chrome Narz dzia dla programistów Network Websockets). 10 / 23

schemat dziaªania 11 / 23

Push vs. Poll (poll odpytywa ) Polling klient okresowo odpytuje serwer Pushing serwer 'wypycha' informacje (streaming - np. Web Sockets) HTTP dziaªa na zasadzie» danie-odpowied¹ (polling), serwer nie inicjuje komunikacji 12 / 23

Wykorzystamy WebSocekts do komunikacji klient-aktor 13 / 23

Web Sockets 1 Stosunkowo nowy standard (2011) wprowadzaj cy do sieci WWW trwaª, dwukierunkow komunikacj czasu rzeczywistego (chat, gry,...) 2 Serwer mo»e sam inicjowa komunikacj 3 Po stronie przegl darki wykorzystuje JavaScript, wymaga przegl darek obsªuguj cych HTML 5 4 Najpierw HTTP handshake przywitanie po HTTP i ustalenie kanaªu (sockets) mi dzy klientem a 'zasobem' na serwerze, potem komunikacja po TCP 14 / 23

Web Socket handshake Podgl d ramek na»ywo w Google Chrome: 15 / 23

Web Socket po stronie przegl darki 1 Po stronie przegl darki JavaScript: var Socket = new WebSocket(adres_gniazda); 2 Metody Socket.send(data) - wysyªanie danych do serwera Socket.close() - zamykanie poª czenia 3 Zdarzenia Event EventHandler open (uzyskanie poª czenia) Socket.onopen message (nowe dane z serwera) Socket.onmessage error (bª d w komunikacji) Socket.onerror close (zamkni cie poª czenia) Socket.onclose 16 / 23

Do przesyªania komunikatów: JavaScript Object Notation XML <menu value="file"> <items> <item value="open" id="1" /> <item value="close" id="2" /> </items> </menu> JSON {"menu": { "value": "File", "items": { "item": [ {"value": "Open", "id": "1"}, {"value": "Close", "id": "2"} ] }}} 17 / 23

struktura projektu 18 / 23

View Scala Templates 1 do generowania widoków (stron) wykorzystuje ScalaTemplates (ST) 2 ST zawiera kod Scali i HTML z którego generowane s strony (poza nagªówkiem wszytko mo»e by HTML'em, od naszej znajomo±ci Scali zale»y ile jej u»yjemy) 3 @ - oznaczaja pocz tek kodu Scala, np. <h1>welcome @\{customer.name\}!</h1> 19 / 23

View Scala Templates Plik 1 Je±li zdeniujesz plik views/xxx.scala.html zostanie wygenerowana funkcja views.html.xxx(...) 2... i mo»emy w dowolnym miejscu wywoªa views.html.info(customer, orders) app/views/info.scala.html @(customer: Customer, orders: Seq[Order]) <h1> Welcome @customer.name! </h1> <ul> @orders.map { order => <li> @order.title </li> } </ul> 20 / 23

Controller pow zanie kontrolera i zapyta«plik conf/routes # This file defines all application routes # Higher priority routes first GET / controllers.application.index() GET /room controllers.application.chatroom(username: String?= null) GET /room/chat controllers.application.chat(username) 21 / 23

Controller app/controllers/application.java 1 Ka»da publiczna statyczna metoda kontrolera jest zwi zana z pewnym» daniem HTTP (GoF:Facade) public static Result index() { return ok(index.render()); 2 Mog zwraca stron lub np. WebSocket public static WebSocket<JsonNode> chat(stri { return new WebSocket<JsonNode>() {...} 3 W kodzie JavaScript wysªanym do klienta = new WebSocket("@routes.Application.chat(user). websocketurl(request)") 22 / 23

Model wykorzystanie systemu Akka class Human extends UntypedActor {... class Table extends UntypedActor {... public class Move {//message final int X; final int Y; //player sends a Move table.tell(new Move(X,Y), getself()); //Table send confirmation getsender().tell(new Ack(),getSelf()); 23 / 23