TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb

Relevanta dokument
TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb AJAX. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet. Anders Fröberg Institutionen för Datavetenskap (IDA)

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

E12 "Evil is going on"

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

TDDD80. Mobila och sociala applikationer Introduktion HTTP,SaaS. Anders Fröberg Institutionen för Datavetenskap (IDA)

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Introduktion till molntjänster Tekniken bakom molntjänster och legala utmaningar

Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster

"HTML5 och relaterade API:er"

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Modern webbutveckling. av Robert Welin-Berger

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

JavaScript in SharePoint and not just for Apps. Wictor Wilén

E12 "Evil is going on"

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Rätt säkerhet Outsourcing

Elektronisk publicering TNMK30

Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

Smartare affärer med det bästa från molnet

Windows 8 och det nya arbetslivet. Magnus Holmér IT strategisk rådgivare

Avancerade Webbteknologier

Webbprogrammering. Sahand Sadjadee

Vad är molnet? Vad är NAV i molnet? Vem passar NAV i molnet för? Fördelar med NAV i molnet Kom igång snabbt...

Webbprogrammering TDDD52

JHS 179 Planering och utveckling av en övergripande arkitektur Bilaga 9. Virtualisering och molntjänster i planering av teknologiarkitektur

SÅ LYCKAS DU MED DIN MOLNSTRATEGI. Frukostseminarium 7 februari 2017

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

TRENDERNA SOM FORMAR DIN VERKLIGHET 2014 ÅRETS IT AVDELNING

A metadata registry for Japanese construction field

DGC IT Manual Citrix Desktop - Fjärrskrivbord

Projekt Foreläsning VI

Plattform as a Service, leverantör tillhandahåller plattformen, jag tillhandahåller applikation och ansvarar för denna.

Creo Customization. Lars Björs

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Webbreg öppen: 26/ /

Webbservrar, severskript & webbproduktion

TDP025. Entreprenöriell programmering. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Förra gången. jquery Lab 4 Muddy Cards resultat.

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning

Moderna Jfokus, Stockholm Monday, February 4, 13

Diagnostisktprov Utveckla i Azure

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

DIG IN TO Nätverksadministration

Kursplanering Utveckling av webbapplikationer

Daniel Akenine, Teknikchef, Microsoft Sverige

Middleware vad, hur, varför när?

QC i en organisation SAST

Molntjänster. Översikt. Lektion 1: Introduktion till molntjänst. Introduktion till molntjänst. Vilka tjänster finns? Säkerhet.

Tentamen på kursen Webbdesign, 7,5 hp

E13 "Behind the Wild"

Datasäkerhet och integritet

Webbregistrering pa kurs och termin

Säkerhet i molnet krav och standarder

SAS VIYA JOHAN ELFMAN ROLAND BALI

8% 6% 4% 2% 0% -2% -4% -6% -8% p. BNP IT-budget

MVC med Javascript och Ajax. Filip Ekberg

Webbprogrammering, grundkurs 725G54

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Användarhandledning. edwise Webbläsarinställningar

Innehåll Molntjänster... 4 Vad är detta?... 5 Cirkeln sluts... 6 The Cloud... 7 The Cloud (forts.)... 8 Definition av molntjänster...

A" utveckla kartor med responsiv design. Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad

On-line produktion TDDC61

Pulsen IAM: Del 2 Trender och teknik för morgondagens utmaningar. Tobias Ljunggren, PULSEN

Introduktion till migrering till molnet. Introduktion

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Laboration 3 i kursen Produktion för tryckta medier och webb: Webbplatsproduktion med ett publiceringssystem

Molntjänster -- vad är molnet?

Programvaruteknik, hp

Installation av VDI för PC TIPS! Skriv ej ut använd hellre ipad. Nya lathundar publiceras regelbundet Version 1.0

TDP003 Projekt: Egna datormiljön

Installationsanvisningar. till IST Analys

Introduktion Till WordPress

Services + REST och OAuth

Welcome. to the world of Jeeves. Copyright 2011 Jeeves Information Systems AB

Vägen till det Hybrida molnet Hur byggde vi vårt hybrida moln och vad säger kunderna som har tagit steget? Jonas Emilsson Anders Jansson

Nyttjande av kartor och kartteknik hur ser framtiden ut? Jonas Bäckström, Sokigo AB

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

Distribuerade affärssystem

1. HandsPointer? Viewer. Viewing Viewing Document Viewer. Document Streaming & Page Management. Thin Client Viewer. My PC Access ,, P2P

Webbprogrammering 725G54

Instruktion för användande av Citrix MetaFrame

Molnet - en fluga eller här för att stanna. Lars Backhans vice VD Radar Group International.

Authentication Context QC Statement. Stefan Santesson, 3xA Security AB

Instruktion. Datum (12) Coverage Dokument id Rev Status? Godkänd. Tillhör objekt -

Stad + Data = Makt. Kart/GIS-dag SamGIS Skåne 6 december 2017

Laboration 1 XML, XPath, XSLT och JSON

Projektanvisning. Webbsideprojekt. Författare: Johan Leitet Version: 2 Datum:

Android översikt. TDDD80 Mobila och sociala applikationer

Taking Flight! Migrating to SAS 9.2!

Designprinciper för säkerhet och Epilog. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Uppdaterad: Lathund. Anslagstavlan

EDS1130 IP-kamera. Snabbguide. Svenska Version 1.0

Installationsguide för mysql och OLA Server/OLA Klient

Tentamen etjänster och webbprogrammering

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Övning 1: Skapa virtuell maskin för utveckling.

Transkript:

Tenta TDP013 Webbprogrammering och interaktivitet AJAX, CORS,jQuery, PaaS, Projektet Anders Fröberg Institutionen för Datavetenskap (IDA) Efter UKÄs utvärdering: För lite böcker för mycket URL:er För lite tentor 3 böcker till tentan Kap 1-4 Clean Code Kap 5-9 i B.C Hela Hackers Delight 2 Innan AJAX Ett synkront webb Med AJAX Ett Asynkront webb 1. Användaren klickar länk, formulär, bild etc 2. Anrop till servern sker Server 1. Användaren klickar länk, formulär, bild etc 2. Anrop till servern sker Server 4. Servern returnerar svar 3. Servern agerar på förfrågan Klicka, dra, byt bild, skriv vidare, etc. användaren kan fortsätta använda webbplatsen 4. Servern returnerar svar 3. Servern agerar på förfrågan 3 5. Webbläsaren laddar om hela sidan Användaren måste vänta på svar, kan inte göra något annat. 4 5. Webbläsaren laddar om delar av sidan Användaren kan göra annat i väntan på svar från servern. Endast de påverkade delarna av sidan ändras.

AJAX AJAX Skapa XMLHttpRequest Hela processen styrs av JavaScript Görs lite olika beroende på vilken webbläsare som används Oftast så använder man ett färdigt bibliotek (t ex jquery) för att använda AJAX så man slipper bry sig om detaljerna för olika webbläsare Det som kommer tillbaka från servern (istället för en helt ny sida) kan variera, men oftast JSON eller XML (i denna kursen använder vi bara JSON) var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); 5 6 AJAX Skicka request AJAX Skicka request med GET data var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( GET, http://www.example.com/service, true); xmlhttprequest.send(); xmlhttprequest.open( GET, http://www.example.com/service?a=b, true); xmlhttprequest.send(); true gör anropet asynkront 7 8

AJAX Skicka request med POST data AJAX Response var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( POST, http://www.example.com/service, true); xmlhttp.setrequestheaders( Content-Type, application/x-wwwform-urlencoded ); xmlhttprequest.send( a=b ); var xmlhttprequest; if(window.xmlhttprequest) { //IE7+, Firefox, Chrome, Opera, Safari xmlhttprequest = new XMLHttpRequest(); else { //IE6, IE5 xmlhttprequest = new ActiveXObject( Microsoft.XMLHTTP ); xmlhttprequest.open( GET, http://www.example.com/service?a=b, true); xmlhttprequest.send(); xmlhttprequest.onreadystatechange = function() { if(xmlhttprequest.readystate == 4 && xmlhttprequest == 200) { document.getelementbyid( content ).innerhtml = xmlhttprequest.responsetext; 9 10 AJAX - jquery Cross-Domain Scripting & CORS var callback = function(data) { $( #content ).text = data; $.ajax({ url: http://localhost:8888/, type : POST, data : { name : Marcus, filter : Employee, success : callback ); Titta i dokumentationen för fler alternativ när man använder jquery s AJAX bibliotek En restriktion som finns på AJAX är att anropen måste göras till exakt samma domän som klienten kör på. Finns er sida på http:// example.com så får man endast anropa tjänster på http://example.com/ Anledningen till denna restriktion är av säkerhetskäl, och den intresserade kan läsa om cross-domain scripting För att komma runt detta har man börjat använda CORS (Cross-Origin Resource Sharing) där servern kan ge rättigheter åt olika domäner. (OBS fungerar inte i alla webbläsare) Vi kommer inte fördjupa oss i alla detaljer kring detta, utan endast bry oss om hur vi implementerar det 11 12

CORS OPTIONS CORS Response headers Innan GET/POST anropet skickas ett OPTIONS anrop till servern Om rätt headers returneras så tillåter webbläsaren att man genomför GET/POST Ett relativt snyggt sätt att göra det på, som minimerar allt för mycket kodförändingar i existerande system var headers = {; headers[ Access-Control-Allow-Origin ] = * ; headers[ Access-Control-Allow-Methods ] = POST, GET, OPTIONS ; res.writehead(200, headers); res.end(); I Node.js så lägger man till detta på alla utgående response som man vill göra tillgänliga. OBS: Vi väljer att sätta * vilket tillåter alla klienter att anropa, det kanske man inte vill göra i en produktionsmiljö. 13 14 CORS Response headers CORS Response headers Kan vara smart att göra något för att snabba upp processen: Express.js if(req.method == OPTIONS ) { var headers = {; headers[ Access-Control-Allow-Origin ] = * ; headers[ Access-Control-Allow-Methods ] = POST, GET, OPTIONS ; res.writehead(200, headers); res.end(); else { app.use(function(req, res, next) { res.header("access-control-allow-origin", "*"); res.header("access-control-allow-headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); ); //Om det är POST, GET etc så gör något annat lite mer avancerat som tar tid, //men headers måste ändå sättas! 15 16

Utan CORS Nu lite fluff Ett alternativ är att använda en proxy som hanterar alla anrop till domänen (detta gör vi inte i denna kurs), att använda en proxy kan ha andra fördelar så som caching och att det fungerar med alla webbläsare. Hur ser framtiden ut (redan idag) Anropen sker till samma domännamn så det tillåts av alla webbläsare. Men proxyn omfördelar till olika servrar. Anropar www.example.com/index.html DNS www.example.com Proxy Apacheserver Anropar www.example.com/service Django server 17 18 Vad är (ett) problem(en) Skalbara applikationer Hur hanterar vi framtida behov/kostnader? Vem ska köpa och installera våra servrar? Vem ser till att underhålla och driftsätta våra system? Traditional Infrastructure Model Forecasted Infrastructure Demand Capital Time 19

Acceptable Surplus Forecasted Infrastructure Demand Surplus Capital Capital Actual Infrastructure Demand Time Time Unacceptable Surplus Unacceptable Deficit Deficit Surplus Capital Capital Time Time

Utility Infrastructure Model Cloud Flavors? Capital Time Actual Infrastructure Demand SaaS Software as a Service IaaS Infrastructure as a Service PaaS Platform as a Service BaaS Backend as a Service (DaaS Desktop as a Service) What is Software as a Service? (SaaS) SaaS is a software delivery methodology that provides licensed multi-tenant access to software and its functions remotely as a Web-based service. Usually billed based on usage Usually multi tenant environment Highly scalable architecture 27

SaaS Examples Infrastructure as a Service (IaaS) IaaS is the delivery of technology infrastructure as an on demand scalable service Usually billed based on usage Usually multi tenant virtualized environment Can be coupled with Managed Services for OS and application support IaaS is not Managed Hosting IaaS Examples Traditional managed hosting is a form of web hosting where a user chooses to lease entire server(s) housed in an offsite data center. Term based contracts based on projected resource requirements

Platform as a Service (PaaS) PaaS Examples PaaS provides all of the facilities required to support the complete life cycle of building and delivering web applications and services entirely from the Internet. Typically applications must be developed with a particular platform in mind Multi tenant environments Highly scalable multi tier architecture Deployment Models OpenShift Public cloud Public cloud (off-site and remote) describes cloud computing where resources are dynamically provisioned on an on-demand, self-service basis over the Internet, via web applications/web services, open API, from a thirdparty provider who bills on a utility computing basis. PaaS demo openshift.ida.liu.se Private cloud A private cloud environment is often the first step for a corporation prior to adopting a public cloud initiative. Corporations have discovered the benefits of consolidating shared services on virtualized hardware deployed from a primary datacenter to serve local and remote users. Hybrid cloud A hybrid cloud environment consists of some portion of computing resources on-site (on premise) and off-site (public cloud). By integrating public cloud services, users can leverage cloud solutions for specific functions that are too costly to maintain on-premise such as virtual server disaster recovery, backups and test/development environments. Community cloud A community cloud is formed when several organizations with similar requirements share common infrastructure. Costs are spread over fewer users than a public cloud but more than a single tenant. 36

Projektet TDP013 in a nutshell I högskoleförordningen står det under mål för kandidatexamina bland annat att: För kandidatexamen skall studenten - visa förmåga att söka, samla, värdera och kritiskt tolka relevant information i en problemställning samt att kritiskt diskutera företeelser, frågeställningar och situationer, - Högskoleförordningen (1993:100) 37 2 Projektet Projektet - Kortfattat Projektet genomförs i par enligt webreg. För godkänt skall de grundläggande kraven vara uppfyllda. För betyg 4 finns ytterligare ett krav med WebSockets. För betyg 5 finns ytterligare två krav (webworkers och ett valbart). Det skall finnas en webbplats som är navigerbar och använder antingen Bootstrap,jQuery UI, eller liknande för layout. Webbplatsen skall använda sig av god interaktionsdesign och vara användarvänlig. Beslut kring interaktion och design skall grundas i relevant dokumentation eller informationskällor. Testning av användargränssnitt skall ske med Selenium, testning av backend skall ske med Mocha. Endast den nya informationen som efterfrågas av användaren skall uppdateras, minsta möjliga del av webbplatsen skall laddas om när användaren efterfrågar ny information. Användare skall kunna registrera sig, logga in på en personlig sida samt logga ut. Användare skall kunna söka efter andra användare. Användare skall kunna lägga till andra användare som "vänner". Användare skall kunna se en lista över sina vänner. Användare skall kunna se sina vänners sidor. Användare skall kunna posta meddelanden på sina vänners sidor. 3 4

Projektet Högre betyg Projektet Redovisning Krav - Betyg 4 Möjlighet för vänner att chatta med varandra i realtid. Detta skall ske med HTML5 WebSockets, och socket.io plugin till Node.js Skriftlig redovisning Som i laborationerna Muntlig redovisning Varje student ska förbereda en 15 minuters screencast där både systemet och tekniken bakom demonstreras. Den som ser filmen ska kunna se vad för system ni har byggt och hur ni byggt det. Krav - Betyg 5 I JavaScript finns inte trådar, och förr har man använt timeouts för att bygga funktioner som behövde detta. I HTML5 standarden introduceras WebWorkers. Använd WebWorkers för att automatiskt uppdatera meddelanden på den sida man tittar på. Välj en av nedanstående: Möjlighet att ladda upp bilder till sin sida samt låta vänner bläddra sig igenom dessa. Möjlighet att ladda upp video till sin sida samt låta vänner titta på dessa. Vidareutveckla chatten från betyg 4 med möjlighet för gruppkonversationer (mer än 2 personer). 5 6 jquery UI AngularJs Ett JavaScript bibliotek (innehåller lite CSS och bilder) som ger utvecklare standard komponenter för utveckling. 44 7

8 React.js Knockout.js 45 46 Node.js Bootstrap Ramverk Express Derby Meteor Flatrion SocketStream SailJS Tower Mojito RailwayJS Många fler Ett CSS bibliotek som ger utvecklare ett ramverk för webbsidor. https://docs.google.com/spreadsheet/ccc?key=0ain0qfbtppocddfjwlm0eu1ra21xanzkekxgbja2wwc 47

www.liu.se www.liu.se