De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar.

Verwante presentaties


Presentatie over: "Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar."— Transcript van de presentatie:

1 Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar

2 Inhoud •Stateful web •AJAX, JSON •(HTML5) developments •Trends

3 Websockets •(HTML5) Standaard voor meerdere full-duplex communicatiekanalen via één TCP poort (80) •Omzeilen van blokkades van andere poorten •En voor webapps met persistent tweeweg behoefte! •HTTP-compatible handshake •Upgrade mechanisme naar Websocket protocol •Websocket frames over dezelfde TCP connectie •Feitelijk een ander application layer protocol •JavaScript API; event driven •Protocol: IETF RFC6455; API: W3C

4 Websockets •Geïnitieerd door de client; long-polling alternatief •Same Origin Policy niet persé afgedwongen •Vergelijkbaar met CORS •ws:// en wss:// URI schemes •Vergt uiteraard wel een Websocket aware server GET /ws HTTP/1.1 Host: ws.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Origin: http://ws.example.com Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= var myWebSocket = new WebSocket("ws://ws.example.com/ws"); myWebSocket.send("Hello World!"); myWebSocket.close(); myWebSocket.addEventListener("message", function(e) { alert("Received Message: " + e.data);}, false); function sendText() { var msg = { type: "message", text: document.getElementById("text").value, id: clientID, date: Date.now() }; mySocket.send(JSON.stringify(msg)); }

5 Web workers •(HTML5) Standaard voor langlopende JavaScripts die draaien in de achtergrond •Heavy-weight, batch processing •Losstaand van JavaScript voor UI afhandeling •Geen DOM access, maar communicatie via messages •Twee types: dedicated en shared workers •Werking van cross-document messaging, SSE, websockets en web workers lijkt op elkaar •Event driven, non-blocking var worker = new Worker("worker.js"); worker.addEventListener("message", function(e) { document.getElementById("result").textContent = e.data; } worker.postmessage("Your workday has begun!"); worker.terminate(); var n = 1; search: while (true) { n += 2; for (var i = 2; i <= Math.sqrt(n); i += 1) if (n % i == 0) continue search; // found a prime! postMessage(n); }

6 Application cache •HTML5 standaard voor offline application cache •Downloaden van een versie die offline draait •Op basis van een cache manifest file •Offline browsing, snelheid, server resources •CACHE MANIFEST, NETWORK, FALLBACK •Let op: caching is permanent •Tot het expliciet opschonen van de cache •Tot het wijzigen van de cache manifest file •Tweemaal laden voor een actuele versie... Hello World... CACHE MANIFEST # 2014-03-26 v1.0.0 /theme.css /logo.png /main.js NETWORK: login.asp FALLBACK: /video/ /offline.html

7 Stateful web, developments, trends 7 Webtechnologie Lennart Herlaar

8 Gartner Hype Cycle

9 Node.js •JavaScript "framework" voor internet applicaties •Met name webservers (server side JavaScript!) •Minimale overhead, maximale scalability •Event driven, non-blocking; real-time applicaties •JavaScript engine en diverse ingebouwde libraries •Socket.IO •Module voor Node.js voor Websockets, inclusief cross-browser fallbacks (flash, long-polling, iframe) •Heeft ook een client component •"jQuery voor Websockets" http.createServer( function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); } ).listen(8000); console.log('Server running at http://localhost:8000/'); var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); var socket = io.connect('http://example.com'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); });

10 NoSQL •Verzamelterm voor DBMSen die bepaalde relationele aspecten loslaten •NoREL is een betere naam •Geen SQL, geen schema, geen joins, geen ACID •Horizontale schaalbaarheid •Key-value stores, document stores,... •Past soms beter bij 't soort data en 't real-time aspect •CouchDB •Opslag van JSON documenten •Views als JavaScript functies •HTTP API

11 HTML5 Canvas, SVG, WebGL •Canvas is een HTML5 element voor het dynamisch renderen van 2D-vormen en bitmaps •Scriptable vanuit JavaScript •Flash killer? •Canvas versus Scalable Vector Graphics (SVG) •SVG betreft vector graphics •Een SVG afbeelding is een XML document •SVG is "higher level": scene graph, event handlers •WebGL: JavaScript API voor native 3D graphics •Maakt gebruik van het canvas element (maar...) This text is displayed if your browser does not support HTML5 Canvas. var example = document.getElementById('example'); var context = example.getContext('2d'); context.fillStyle = 'red'; context.fillRect(30, 30, 50, 50); <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>

12 Mobile web •"Het web voor mobieltjes loopt 5 jaar achter" •Matige ondersteuning standaarden, geen JavaScript •Nu: full browser, 4-core processor, retina display •Van native apps naar HTML5? •Fundamentele verschillen •Touch; moeizame keyboard input •Screen real-estate; ontbreken meerdere windows •Bandbreedte, en vooral: datalimieten! •Location awareness •Steeds minder technologie gerelateerd; usability


Download ppt "Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar."

Verwante presentaties


Ads door Google