Web 2.0 ja uudet sovellustekniikat

Samankaltaiset tiedostot
Web 2.0 ja uudet sovellustekniikat

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Järjestelmäarkkitehtuuri (TK081702)

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Taustaa. CGI-ohjelmointi

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

Digitaalisen median tekniikat. Luento 4: JavaScript

Johdatusta selainohjelmointiin

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Sovellukset Internetissä

Web Service torilla tavataan!

2. PEHMEÄ XHTML XRAJAHTML

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

3 Verkkosaavutettavuuden tekniset perusteet

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Digitaalisen median tekniikat. JSP ja XML

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

JWT 2017 luento 10. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Sovellukset Internetissä

Code Camp for Girls. Sanna Nygård. Lokakuussa

XML, XHTML ja CSS. T Hypermediadokumentin laatiminen. Mikko Pohja

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Sosiaalihuollon asiakastiedon arkiston validointipalvelu. Käyttöohje

Digitaalisen median tekniikat xhtml - jatkuu

ETÄTERMINAALIYHTEYS SELAIMELLA

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Digitaalisen median tekniikat xhtml - jatkuu

MITÄ JAVASCRIPT ON?...3

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

TIEDEJUTTUKURSSI FM VILLE SALMINEN

Sovellusarkkitehtuurit

Sovellukset Interne.ssä

Sosiaalihuollon asiakastiedon arkiston validointipalvelu

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

Tiedonsiirto- ja rajapintastandardit

HSMT Web-sovellustekniikoista

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

DOM ja Ajax. Jaana Holvikivi Metropolia. J.Holvikivi

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

Pedacode Pikaopas. Web-sovelluksen luominen

XML johdanto, uusimmat standardit ja kehitys

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1

Digitaalisen median tekniikat. Palvelinohjelmointi

Tikon Web-sovellukset

Visma Software Oy

Avoin metsätieto - Rajapintapalvelut

in condition monitoring

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat

WWW-Sivustojen suunnittelu

REST an idealistic model or a realistic solution?

OSI ja Protokollapino

Viimeinen rajoite (hypermedia as the engine of application state) tarkoittaa käytännössä sitä, että palvelimelta saadut vastaukset sisältävät URIt

REST rajapintana mobiilikehityksessä

OPPITUNTI 3 Ensimmäinen skripti

HTML 5 Johdanto. Mikä on HTML 5

Olio-ohjelmointi Javalla

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

HSMT J2EE & EJB & SOAP &...

Visma Nova Webservice Versio 1.1 /

ICT1TN004. Lomakkeet. Heikki Hietala

Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi

Verkkosivut perinteisesti. Tanja Välisalo

Digitaalisen median tekniikat Luento 1: Intro

Loppuraportti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

XML / DTD / FOP -opas Internal

10 Nykyaikainen WWW-arkkitehtuuri

A TIETORAKENTEET JA ALGORITMIT

W3C-teknologiat ja yhteensopivuus

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Internetsivujen perusrakenne. Html-dokumentin keskeiset elementit ja attribuutit

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Helsinki Testbedin säätuotteet tänään ja tulevaisuudessa

sertifikaattiratkaisu Apitamopki

ATK yrittäjän työvälineenä

M. Merikanto 2012 XML. Merkkauskieli, osa 2

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

CSS - tyylit Seppo Räsänen

HTTP-välityspalvelimen käyttö tapahtumien keräämiseen

Tikon Web-sovellukset

Mainonnanhallinta Käyttöopastus. Tekniikka. Olli Erjanti Mediareaktori

Alkuun HTML5 peliohjelmoinnissa

HOJ J2EE & EJB & SOAP &...

Tietokannan webbikytkentä. Janne Petäjä

TermBase NET versio (Beta)

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

HTML perusteita (ei julkiseen jakeluun)

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

Ylläpitodokumentti. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Transkriptio:

Web 2.0 ja uudet sovellustekniikat Otto Seppälä (kalvot pääosin: Tancred Lindholm) osin myös Ville Karavirta T-110.2100 Johdatus tietoliikenteeseen kevät 2013

Luennon sisältö Web 2.0 Luku/kirjoitus nettiselailu ja sosiaaliset mediat Nettiselailu hajautettuna järjestelmänä HTTP rajapintana viestien lähettämiseen Nettiselailun kielet: HTML, XML, JavaScript JavaScript-ohjelmointia selaimessa Tästä eteenpäin: Client/Server, P2P, AJAX, REST

Web 2.0 Netin (eli the World Wide Web, WWW) alkuperäinen idea oli tutkimusmateriaalin jakaminen tutkijoiden kesken 90-luvun netissä kuitenkin vain muutama tiedon julkaisija verrattuna tiedon kuluttajiin 2000-luvun alussa käsite Web 2.0 loppukäyttäjä tuottaa ja jakaa tietoa (sekä lukee että kirjoittaa Netissä) Selaimessa näkyvä sivu on ennemminkin interaktiivinen sovellus kuin staattinen sivu

Web 2.0 Viime aikoina sosiaaliset mediat nousseet suosioon Sosiaalisen median pääpirteet Yksityishenkilö julkaisijana Tiedon julkaisu ei vaadi erityistaitoja Reaaliaikaista tai lähes reaaliaikaista Pysyvyys vaihtelee Wikipedia Blogit Facebook Twitter

Entä miten Facebook toimii? Miten Web 2.0 tyylinen sovellus selaimessa (esim Facebook) toimii? Tästä puhutaan tänään Miten selain toimii? Miten web-sovelluksia ohjelmoidaan? Minkä muotoista dataa? Entä tarvittava infrastruktuuri, ns. palvelin?

Hajautettu järjestelmä Hajautettu järjestelmä koostuu Solmuista, joissa suoritetaan laskentaa (computational node) Tietoliikenneverkosta, joka välittää viestejä solmujen välillä Viesti Solmu Verkko

Selain ja Nettipalvelin Esimerkki hajautetusta järjestelmästä www-sivun esittämiseen tarvittavaa suoritusta tehdään sekä palvelimella suoritettavassa palvelinohjelmassa että loppukäyttäjän selaimessa asiakas/palvelin-malli (selaimet ja nettipalvelin) todellisuudessa joka pyynnön käsittelyyn osallistuu usein joukko erilaisia palvelimia www.aalto.fi

Selain ja Nettipalvelin Nettisivun osoitteen (URI) muodoksi sovittu [protokolla]://[palvelinosoite]/[sivu] esim. http://cse.aalto.fi/news/ Sivulle tarkempi termi on resurssi (resource) Kun menet sivulle http://x/y 1. Selain lähettää http-protokollalla viestin palvelinsolmulle x, jossa pyydetään sivua y 2. Palvelin x lähettää vastauksen jossa sivun y sisältö 3. Selain näyttää sivun sisällön.. ja usein myös suorittaa sivun sisältämää koodia

Selain ja Nettipalvelin Tyypillisesti sivun näyttäminen vaatii muiden resurrsien noutamista kuvat, muotoilutiedostot, skriptit 4. Selain jatkaa resurssien noutamista kunnes kaikki sivun elementit on saatu kasaan

Selaimen viestirajapinta Lähtevä viesti Vastaanottaja: www.cse.tkk.fi Viesti: GET /fi/index.html Saapuva viesti Vastaanottaja: selain Viesti: <html>hello world... SELAIMEN RAJAPINTA: VIESTIN LÄHETYS JA VASTAANOTTO HTTP

HTTP viestirajapintana Dokumenttien hakeminen tehdään HTTP-standardin mukaisilla viesteillä HTTP = Hypertext transfer protocol (RFC 2616) Viestissä komento ja resurssi Myös selaimeen liittyvää tietoa otsakkeissa (headers) Paluuviestissä tilannekoodi (status code) ja resurssin sisältö Myös otsakkeita joissa resurssin metadataa Tärkein viesti on GET + resurssi

HTTP Yleisimmät komennot GET x: hae resurssi x sisältö PUT x,y: tallenna data y resurssiin x POST x,y: kirjoita resurssiin x liittyen data y (lomakkeen lähetys) GET voidaan toistaa useamman kerran ilman sivuvaikutuksia, muita ei GET ja POST tuettuina selaimissa

HTTP Yleisiä statuskoodeja 200 OK: kaikki meni hyvin 404 Not found: resurssia ei löydy 302 Moved temporarily: resurssi löytyy uudesta osoitteesta Yleisiä otsakkeita Content-Length: resurssin koko tavuina (vastausviestin alussa) Muita määritetty RFC 2616

HTTP Esimerkki Parametri Englanniksi Arvo Komento Method GET Resurssi Resource /fi/index.html Selain User-Agent Mozilla/1.0 selaimen lähettämä pyyntö (request) Parametri Englanniksi Arvo palvelimen lähettämä vastaus (response) Tilakoodi Status Code 200 OK Pituus Content-Length 11 Sisältö Content Hello World Huom: tässä mielletään viestit tietorakenteina eikä mietitä missä muodossa ne esitetään siirtokerroksella. Tästä lisää ensi viikolla

Selaimen käyttämät kielet Sivukuvauskieli Tärkein HTML, Hypertext Markup Language Myös XML-pohjaiset kielet XHTML, SVG (vektorigrafiikka), MathML (matemaattiset kaavat) Laajennuksina sivuun upotetut apuohjelmat, jotka näyttävät muita datamuotoja Adobe Flash Java Applets Ohjelmointi JavaScript (Jscript), VB,... JavaScript ohjelmakoodi HTML sivukuvauksen seassa

HTML Sivukuvauskieli, jossa tekstin ladonta (formatointi) ilmoitetaan tekstin seassa olevien tägien (tag) avulla Ladotun tekstin lähdekoodi. TeX/LaTeX toinen esimerkki tästä Tägi muotoa <tag>...</tag>, ja se vaikuttaa alku- ja lopputägien väliseen tekstiin Tägiin voi liittää erinimisiä attribuutteja, joilla voi olla arvoja <tag attrib1="value1" attrib2="value2"...> Tägin sisällä voi olla muita alku-/lopputägipareja Tämä on väärin: <i><b>hello</i></b> (<i> sisällä ei ole tägipari) Standardoitu W3C:ssä HTML 4.01 Specification"-dokumentissa Kirjava historia, Netscape ja Microsoft browser war, myöhemmin jonkinlainen yhteinen määritelmä

HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>html Esimerkki</title> </head> <body> <h1>html Esimerkki</h1> Tämä on <a href="http://www.w3c.org/tr/html"> HTML</a> esimerkki, jossa on <b>yksinkertaista</b> <i>formatointia</i>.<p> <!-- Tämä on HTML-kommentti. Alla on taulukko --> <table> <tr><th>hedelmä</th><th>hinta</th></tr> <tr><td>omena</td><td>0.46</td></tr> <tr><td>appelsiini</td><td>0.67</td></tr> </table> </body> </html>

Tämä oli Web 1.0 Seuraat linkkiä/kirjoitat osoitteen www.aalto.fi/index.html 1. Selain lähettää viestin GET index.html palvelimelle www.aalto.fi 2. Palvelin www.aalto.fi lähettää paluuviestin, jossa index.html-sivun HTML-koodi 3. Selain tulkitsee HTML koodin ja näyttää sivun

HTML:stä XML:ään Selaimet hyväksyvät rikkinäiset HTML-sivut joissa on kielioppivirheitä Paljon HTML:ää jossa virheitä (kun kerran ei tarkisteta) Eri selaimissa eri virhetilanteiden käsittely, rikkinäiset sivut näkyvät eri lailla HTML koettiin helpoksi Tarve kuvata muuta dataa kuin tekstiä Voisiko kuvata yleistä dataa HTML:n helppoudella, mutta ilman moniselitteisyyttä?

HTML:n ongelmia <table summary="example table containing unexpected elements" border="1"> <tr> <td>column 1 Row 1</td> <p><code>p</code> in row 1 between column 1 and 2</p> <td>column 2 Row 1</td> <p><code>p</code> in row 1 after column 2</p> </tr> <p><code>p</code> element between row 1 and row 2</p> <tr> <td>column 1 Row 2</td> <td>column 2 Row 2</td> </tr> </table> IE Firefox Lähde: http://www.illumit.com/products/weblight/samples/markup_problems.shtml

Extensible Markup Language (XML) W3C esitti 1998 XML-kielen (pohjautuu SGML:ään) HTML-tyyliset tägit, jossa tägien merkitys vaihtelee sovelluksen mukaan XML:ssä sovittu että kielioppivirheitä ei hyväksytä XML nykyään jonkinlainen datan yleinen esityskieli Tekstipohjainen, tägien nimet helpottavat ymmärtämistä Jokaisella alalla tarvitaan kuitenkin sopimus tägien merkityksestä (semantiikasta) esim. tekstinkäsittelystä: ODT, Open Document Text file, KML karttapisteiden merkitsemiseen XML-kieli jossa on HTML:n tägit (ja merkitys) on nimeltään XHTML. Nykyajan selaimet tukevat tätä HTML:n rinnalla.

XML Esimerkki <?xml version="1.0" encoding="utf-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>tietotekniikan talo</name> <description>tietotekniikan talo</description> <Point> <coordinates> 24.82248931417436, 60.18696957477843,0 </coordinates> </Point> </Placemark> </kml> http://g.co/maps/r8ejx

JavaScript Haluttiin dynaamisia elementtejä nettisivuihin Netscape kehitti 1995 JavaScript-nimisen kielen, ja lisäsi Netscapeselaimeen sille tulkki HTML-kieleen lisättiin <script> tägi, jonka sisällä olevaa JavaScriptkoodia selain suorittaa JavaScriptillä ei ole mitään tekemistä Javan kanssa, nimi valittiin markkinointisyistä Microsoft esitti tämän jälkeen Jscript-kielen jossa (lähes?) identtinen kielioppi C-tyylinen kielioppi Ajonaikainen tyypitys ( duck typing if it quacks like a duck...)

JavaScript Esimerkki <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>javascript Esimerkki</title> </head> <body> <script> var lasku = 2*137+200/3; alert('tulos on ' + lasku); </script> </body> </html>

JavaScript ja Selain JavaScriptillä pystyy manipuloimaan HTML-sivun rakennetta Näin saadaan dynaamisesti muuttuva sivu! JavaScriptissä HTML-sivu manipuloidaan DOM (Document Object Model) rajapinnan avulla HUOM: Seuraavassa jonkin verran koodia. Tärkein tässä on ajatus, eli koodin upottaminen HTML-sivuun, JavaScript kielioppi ei ole tärkeä. DOM = oliomalli HTML-sivulle Oliomallin pikakurssi o.m(p1,p2,...) => sovella metodi m oliolle o parametreillä p1,p2,... Esim. document.write('hello World') => Kirjoita (write) teksti "Hello World" (parametri) olioon document (HTML sivu joka selain näyttää)

JavaScript DOM-esimerkki... <body> <script> function buttonpressed() { // Date-olio jonka arvo on tämä hetki var presstime = new Date(); // luo uusi <p> tägi var paragraph = document.createelement( p'); // <p> tägin sisälle tekstiä var paragraphtext = document. createtextnode('nyt on ' + presstime); // Lisää uusi tägi dokumenttiin paragraph.appendchild(paragraphtext); var divnode = document.getelementbyid('messages'); divnode.appendchild(paragraph); } </script> <h1>javascript Esimerkki 2</h1> <form> <input type="button" onclick="buttonpressed();" value="näytä aika"> </form> <div id='messages'> <! lisätään aikaleimat tähän tägiin sisään --> </div> </body> </html>

JavaScript ja HTTP viestit JavaScriptillä voi lähettää palvelimelle HTTP-pyyntöjä ja käyttää vastausta sivun päivittämiseen Tämä on Web 2.0 perustekniikoita Huom: perinteisesti (Web 1.0) HTTP-pyyntöjä ainoastaan kun siirryttiin sivusta toiseen Sivua päivitettiin lataamalla se kokonaan uudelleen palvelimelta Hidasta, huono käytettävyys, resurssien tuhlausta Toisaalta, paljon helpompi malli ohjelmoida

Esimerkki: Staattiset resurssit... <body> <script> function getfreememory() { return 678433120; // Palvelin täytti tämän kun sivua haettiin } function buttonpressed() { var paragraph = document.createelement('<p>'); // luo kappale var paragraphtext = document.createtextnode('vapaata muistia ' + getfreememory()); paragraph.appendchild(paragraphtext); var divnode = document.getelementbyid('messages'); divnode.appendchild(paragraph); } </script> <h1>javascript Esimerkki: Staattinen muistikulutus</h1> <form> <input type="button" onclick="buttonpressed();" value="näytä muistitilanne"> </form> <div id='messages'> <!-- Muistiviestit tänne --> </div> </body> </html>

Esimerkki: Dynaamiset resurssit... <script> function getfreememory() { var xhr = new XMLHttpRequest(); xhr.open('get', '/statz', false); xhr.send(null); return xhr.responsetext; } function buttonpressed() { var paragraph = document.createelement('<p>'); // luo kappale var paragraphtext = document.createtextnode('vapaata muistia ' + getfreememory()); paragraph.appendchild(paragraphtext); var divnode = document.getelementbyid('messages'); divnode.appendchild(paragraph); } </script> <h1>javascript Esimerkki: Dynaaminen muistikulutus</h1> <form> <input type="button" onclick="buttonpressed();" value="näytä muistitilanne"> </form> <div id='messages'> <!-- Muistiviestit tänne --> </div> </body> </html>

Etäkutsut (RPC) ja kolmannen osapuolen palveluntarjonta Edellisissä esimerkeissä ainoa ero oli getfreememory()- metodin toteutus Hajautetussa järjestelmässä mahdollista että tavallinen metodi on toteutettu verkkoviesteillä Tällöin on kyseessä ns. etäkutsu (remote procedure call) Jotkut palveluntarjoajat (esim Google) tarjoavat JavaScript-rajapinnan, jonka alla on etäkutsut kyseiseen palveluun (esim. nettihaku) <script src="http://www.google.com/jsapi" type="text/javascript"></script> <script> var searchcontrol = new google.search.searchcontrol() searchcontrol.execute("hakusana"); // Näytä tuloksia </script>

Esimerkki: Dynaamiset resurssit 2 <form method="post" action="."> </form> <ol id="tweets"></ol> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></s cript> <! käytetään jquery kirjastoa apuna <script> $(document).ready(function() { $("form").submit(function(event) { event.preventdefault(); // estetään formin lähetys oikeasti // haetaan search.twitter.com palvelimelta hakusanaa // vastaava resurssi $.getjson("http://search.twitter.com/search.json?q=" + $("#sana").val() + "&callback=?", function(data) { var r = data.results; // lisätään dokumenttiin uusin hakutulos $("#tweets").append("<li>" + r[0].from_user + ": + r[0].text + "</li>"); }); }); }); </script>

Kertaus: Web 2.0 Seuraat linkkiä/kirjoitat maps.google.com/index.html 1. Selain lähettää viestin GET index.html palvelimelle maps.google.com 2.... Selain tulkitsee HTML koodin ja näyttää sivun 3. Käytät maps.google.com sivun interaktiivisia toimintoja, esim painat "Satellite" nappia, josta käynnistyy 4. sivussa olevaa JavaScript-koodia, joka hakee etäkutsuina sivulle uutta sisältöä (esim. satelliittikartta) Web 1.0

HTTP Palvelin Entäs palvelin, miten se toimii? Yleiskäyttöinen ohjelmisto joka tulkitsee sisääntulevat viestit ja muuttaa ne ohjelmakielen tietorakenteiksi Palveluntarjoaja kirjoittaa ohjelman joka käsittelee sisääntulevat viestit tietorakenteina Java-kielellä yksi yleinen palvelinohjelmisto on Java Servlets

HTTP palvelin, esimerkki void doget(httpservletrequest httpservletrequest, HttpServletResponse response) { String freemem = Runtime.getRuntime().freeMemory(); response.setheader("content-length", freemem.length()); response.setheader("content-type", "text/plain"); dataout.write(freemem); } *) Tässä jätetty pois muutama tyyppimuunnos

Maatuska (матрёшка) Jatkokurssia... Ohjelmia jotka kirjoittavat ohjelmia Tavallista nettisovelluskehityksessä Vaikeuttaa ymmärtämistä Perinteisesti ohjelmia, jotka käsittelevät dataa Nettimaailma: ohjelmia, jotka käsittelevät dataa, joka on toisen ympäristön ohjelmaa ja dataa, joka on toisen ympäristön ohjelmaa ja dataa... Esim: Java-palvelinkoodi, jonka sisällä HTML, jonka sisällä JavaScript, jonka sisällä HTML out.print( <script>node.innerhtml = 'It\\'s a link \\<a href=\ http://www.example.com\ \\>'; );

Näillä eväillä... Asiakas/palvelin hajautettu järjestelmä Muut viestintätopologiat, P2P Selaimen ohjelmointia AJAX Palvelinohjelmointia JSP, Ruby on Rails, Cloud computing Palveluiden suunnittelu Internet-ympäristöön REST-arkkitehtuurityyli

Vertaisverkot (P2P) Asiakas/Palvelin (client/server) - nettiselailussa on monta asiakasta (client) jotka ottavat yhteyttä yhteen palvelimeen (server) Vertaisverkko (peer-to-peer) - toinen tapa toteuttaa hajautettu järjestelmä on käyttää monta samankaltaista solmua (peer) jotka keskustelevat toistensa kanssa ilman tiettyä topologiaa Näistä parhaiten tunnettuja ovat tiedostojen jakamiseen tarkoitetut ohjelmistot kuten BitTorrent Vertaisverkoissa ei tarvita kallista palvelininfrastruktuuria

AJAX AJAX = Asynchronous Javascript and XML Nimitys tekniikalle jolla toteutetaan dynaamiset sivut Esimerkkinä Facebook, sekä useimmat modernit sivustot Perusteet tästä nähtiin dynaamisessa resurssikulutusesimerkissä Tämän lisäksi Asynkronisuus = suoritetaan Javascript-koodia reaktiona siihen että vastaus saapuu, eikä jäädä odottamaan vastausta (kuten esimerkissä) Käytetään XML (ja myös usein ns. JSON) -muotoista dataa vastauksessa (esimerkissä ei-rakenteellinen merkkijono

Palvelinohjelmointia Internet on suuri ja paha paikka Miten kirjoittaa palvelinohjelmisto joka käsittelee 100.000 hakua/s? Miten kirjoittaa palvelin s.e. ainoastaan oikeilla käyttäjillä on pääsy sivustoon? Miten hallita ja päivittää järjestelmä, joka pitää toimia 24/7, ja joka käyttää jatkuvasti muuttuvia kolmannen osapuolen palveluja?

REST Osittaisen vastauksen antoi Roy Fielding väitöskirjassaan Internet-järjestelmien arkkitehtuurissa noudatetaan muutamaa hyväksi todettua rajoitetta Viestitään täydellisiä tiloja avoimissa muodoissa (esim. kokonainen dokumentti XML:nä eikä dokumentin osia suljetussa formaatissa) (Representational State) Yhdenmukainen rajapinta (Uniform Interface) Muita (Layering, Caching, Code-on-demand) Nämä rajoitteet tunnetaan nimellä REST (Representational State Transfer)

Yhteenveto Hajautettu järjestelmä josta tärkeä esimerkki netti Nettiselaimen ohjelmointikielet ja ohjelmointi Hajautettu ohjelmointi, josta tärkeä esimerkki AJAX Nettipalvelin Perusymmärrys muutamasta hypesanasta Voidaan kertoa omalle koiralle/kissalle miten Facebook toimii

Ensi luennolla Tämän päivän rajapinta: viestit Mitä löytyy toiselta puolelta? Vastaanottaja: www.cse.tkk.fi Viesti: GET /fi/index,html Vastaanottaja: selain Viesti: <html>hello world... SELAIMEN RAJAPINTA: VIESTIN LÄHETYS JA VASTAANOTTO