32
Luku 5 – Tietojen hakeminen sovelluksiin

Luku 5 – Tietojen hakeminen sovelluksiin

  • Upload
    neila

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

Luku 5 – Tietojen hakeminen sovelluksiin. Sisältö❷❸. Tietosidonnan perusteet Verkosta tulevan tiedon hyödyntäminen SQL-tietokannat Mikä on OData ? Tehtäviä Kysymyksiä ja vastauksia. Tietosidonnan tarve. Kaikkein yksinkertaisin tapa esittää tietoja ruudulla on vakiotiedon esittäminen - PowerPoint PPT Presentation

Citation preview

Page 1: Luku 5 – Tietojen hakeminen sovelluksiin

Luku 5 – Tietojen hakeminen sovelluksiin

Page 2: Luku 5 – Tietojen hakeminen sovelluksiin

Sisältö ❷❸• Tietosidonnan perusteet• Verkosta tulevan tiedon hyödyntäminen• SQL-tietokannat• Mikä on OData?• Tehtäviä• Kysymyksiä ja vastauksia

Page 3: Luku 5 – Tietojen hakeminen sovelluksiin

Tietosidonnan tarve• Kaikkein yksinkertaisin tapa esittää tietoja

ruudulla on vakiotiedon esittäminen– Tätä kutsutaan myös staattisen tiedon esittämiseksi

• Tämä yksinkertainen tapa sopii joihinkin sovelluksiin, kuten esimerkiksi e-kirjojen lukuohjelmiin tai joihinkin yksinkertaisiin peleihin

• Laajasti ajatellen tällaiset sovellukset eivät ole kovin monipuolisia

Page 4: Luku 5 – Tietojen hakeminen sovelluksiin

Tietosidonnan perusteet• Tietosidonta (engl. data binding) on keskeinen

menetelmä Windows 8 -sovellusten tietojen esittämisessä

• Voitkin aina kirjoittaa ohjelmakoodia, joka asettaa jonkin käyttöliittymäkomponentin näyttämän tekstin ohjelmallisesti, mutta laajemmissa sovelluksissa tämä käy työlääksi

Page 5: Luku 5 – Tietojen hakeminen sovelluksiin

Tietosidonta ja XAML• Tietosidonnan avulla voit helpottaa kahta asiaa– Tietojen esittämistä ruudulla (koodista ruudulle) – Tilannetta, jossa käyttäjä muokkaa ruudulla näkyviä

tietoja vaikkapa TextBox-komponentin avulla (ruudulta koodiin)

• Tietosidonta tehdään ohjelmakoodissa olevien luokkien ja XAML-kielisten määritysten yhteistyönä

Page 6: Luku 5 – Tietojen hakeminen sovelluksiin

Lähtökohta: C#-luokka ”Oppilas”public class Oppilas{ public int Opiskelijanumero { get; set; } public string Nimi { get; set; } public string Henkilötunnus { get; set; } public string Sähköposti { get; set; }}

Page 7: Luku 5 – Tietojen hakeminen sovelluksiin

XAML-määritykset• Oikeanlainen XAML-määritys vaatii tietoa kahdesta

asiasta1. Mistä lähdetiedon ominaisuudesta (engl. property)

haluttu tieto pitäisi lukea (engl. source)2. Minkä käyttöliittymäkomponentin mihin

kohdeominaisuuteen (engl. property) lähdetieto tulisi kytkeä (engl. destination)

• Esimerkiksi– Oppilas.Nimi --> TextBlock.Text

Page 8: Luku 5 – Tietojen hakeminen sovelluksiin

XAML-syntaksi• Tietosidonnan tunnistaa XAML-kielisissä

käyttöliittymissä aaltosulkeista { }, joiden sisällä on sana ”Binding”

• {Binding} -määritys tehdään siihen kohdekomponentin ominaisuuteen, josta tulee tietosidonnan kohde (engl. destination)

Page 9: Luku 5 – Tietojen hakeminen sovelluksiin

Esimerkki<TextBlock x:Name="OpiskelijaNumeroTextBlock" Text="{Binding Opiskelijanumero}" ... <TextBlock x:Name="NimiTextBlock”Text="{Binding Nimi}" ...<TextBlock x:Name="HenkilötunnusTextBlock" Text="{Binding Henkilötunnus}" ...<TextBlock x:Name="SähköpostiTextBlock" Text="{Binding Sähköposti}" ...

Page 10: Luku 5 – Tietojen hakeminen sovelluksiin

Tietosisällön määrittäminen• Kun XAML-käyttöliittymän tietosidonta on

määritelty edellä kuvatulla tavalla, jää vielä tehtäväksi kertoa ohjelmakoodissa, mihin olion ilmentymään (engl. object instance) tietosidonta kytketään

• Tämä tehdään käyttämällä XAML-sivun (engl. page) ominaisuutta nimeltä DataContext

Page 11: Luku 5 – Tietojen hakeminen sovelluksiin

Olion instanssin luonti• Tyypillisesti olion tiedot haetaan

tietokannasta, luetaan verkosta tai ne muodostuvat laskennan tuloksena

• Voit myös käyttää staattista oliota, tämä on helppo tapa kokeilla tietosidonnan toimintaa

Page 12: Luku 5 – Tietojen hakeminen sovelluksiin

EsimerkkiOppilas o = new Oppilas(){ Opiskelijanumero = 12345, Nimi = "Olli Opiskelija", Henkilötunnus = "010290-123A", Sähköposti = "[email protected]"};

Page 13: Luku 5 – Tietojen hakeminen sovelluksiin

DataContext-ominaisuuden kytkentä

• Sivun DataContext-ominaisuuteen voit kytkeä minkä tahansa olion

• Tietosidonnan XAML-kieliset määritykset alkavat etsiä annetusta oliosta määritysten mukaisia ominaisuuksia

• Esimerkki– this.DataContext = o;

Page 14: Luku 5 – Tietojen hakeminen sovelluksiin

Verkosta tulevan tiedon hyödyntäminen

• Windows 8 -sovelluksesi heräävät eloon, kun yhdistät ne verkosta tulevaan tietoon

• Verkosta tuleva tieto voi olla monen tyyppistä– Vaikkapa käyttäjän Twitter-syöte, päivän

uutisotsikot rss-muodossa, jonkin taustajärjestelmän tuottama xml-muotoinen tieto, jne.

Page 15: Luku 5 – Tietojen hakeminen sovelluksiin

Monipuoliset mahdollisuudet• Windows 8 -sovelluksissa on monipuoliset

mahdollisuudet verkosta tulevan tiedon hyödyntämiseen

• Yleisimmin tieto haetaan http-protokollan avulla– Voit kuitenkin käyttää myös socket- eli tcp/ip –

rajapintoja tai vaikkapa ftp:tä

Page 16: Luku 5 – Tietojen hakeminen sovelluksiin

HttpClient-luokka• Windows 8 -sovellusten käytettävissä on luokka

nimeltä HttpClient– Löytyy nimiavaruudesta (engl. namespace)

Windows.Web.Http• Luokka toimii asynkronisesti– Sovellus ei pysähdy odottamaan tietojen lataamista

verkosta, vaan käyttäjä voi jatkaa sovelluksen käyttöä• Tukee myös salattuja yhteyksiä https-protokollan

avulla

Page 17: Luku 5 – Tietojen hakeminen sovelluksiin

EsimerkkiHttpClient client = new HttpClient();Uri uri = new Uri("http://www.bing.com/");string data = await client.GetStringAsync(uri);

Page 18: Luku 5 – Tietojen hakeminen sovelluksiin

Sovellusesimerkki: RSS-lukija• Tarkastellaan esimerkkisovellusta, joka lukee

Yleisradion pääuutisten virtaa RSS-syötteen kautta– RSS eli Really Simple Syndication

• Tiedot voidaan ladata http-protokollan avulla, ja muodoltaan RSS-muotoinen tieto perustuu xml-kieleen

Page 19: Luku 5 – Tietojen hakeminen sovelluksiin

RSS-tiedon lataaminen HTTP:lläHttpClient client = new HttpClient();Uri uri = new Uri( "http://yle.fi/uutiset/rss/paauutiset.rss");string data = await client.GetStringAsync(uri);XmlDocument xml = new XmlDocument();xml.LoadXml(data);

Page 20: Luku 5 – Tietojen hakeminen sovelluksiin

RSS-tiedon title-elementit

Page 21: Luku 5 – Tietojen hakeminen sovelluksiin

Otsikoiden hakeminen RSS-tiedosta

• Edellä olleessa esimerkissä verkosta tulleet RSS-muotoiset tiedot luettiin xml-komponenttiin

• Tällaisen komponentin avulla xml-muotoisesta tiedosta voidaan etsiä tiettyjä elementtejä xml-tiedoston puurakenteen perusteella

Page 22: Luku 5 – Tietojen hakeminen sovelluksiin

XML-komponentin käyttö• Title-elementtien etsiminen– XmlNodeList nodes =

xml.SelectNodes("//channel/item/title");• Title-elementtien sisältöjen, eli

uutisotsikoiden, muodostaminen listaksi– List<string> titles = nodes.Select(n =>

n.InnerText).ToList();

Page 23: Luku 5 – Tietojen hakeminen sovelluksiin

SQL-tietokannat• SQL on varsinkin tietokantojen tärkein kyselykieli, jolla

voidaan hakea ja päivittää tietokannassa olevia tietoja– Lyhenne sanoista Structured Query Language

• SQL-tietokantojen tietoihin päästään käsiksi useilla tavoilla– Lähiverkon tietokannat tyypillisiä, mutta paljon käytetään myös

pilvipohjaisia SQL-tietokantoja• Jos sovellus on tarkoitettu käytettäväksi yritysverkon

ulkopuolella, muodostetaan tietokantayhteys yleensä web-tekniikoita käyttäen avoimen internetin ylitse

Page 24: Luku 5 – Tietojen hakeminen sovelluksiin

Tapoja päästä käsiksi tietoihinWeb-rajapinnat

Socket-yhteydet

(tcp/ip)

Paikallinen asennus

Välityspalvelimet

SQL-tietokanta

Page 25: Luku 5 – Tietojen hakeminen sovelluksiin

Vaihtoehdot pähkinänkuoressa• Yksinkertaisin vaihtoehto on asentaa sql-

tietokanta itse sovelluksen yhteydessä samalle laitteelle

• Tyypillisempää on, että jollakin laitteella pyörivä Windows 8 -sovellus ottaa verkon ylitse yhteyttä johonkin erilliseen järjestelmään

Page 26: Luku 5 – Tietojen hakeminen sovelluksiin

Yhteystapoja• Perinteiset, lähiverkoissa toimivat tietokannat

voivat vaatia niin sanottujen socket-yhteyksien käyttöä

• Modernimmat, pilvipalvelu-aikakauden tietokannat sallivat yhteyden muodostamisen http-protokollan avulla

• Http-protokollan avulla voit olla yhteydessä tietokantaan myös Internetin kautta

Page 27: Luku 5 – Tietojen hakeminen sovelluksiin

OData• OData eli Open Data on Microsoftin ja muiden

alan toimijoiden alullepanema standardi• ODatan avulla voidaan kuljettaa Internetissä

tietokantamuotoista dataa (eli ”SQL-dataa”)• Erityisesti OData-standardi on ajateltu

toimivaksi http-protokollan sekä XML- ja JSON-tietomuotojen kanssa

Page 28: Luku 5 – Tietojen hakeminen sovelluksiin

ODatan alustatuki• OData-standardin uusin versio on 3.0• Standardia tukevat jo monet erilaiset alustat– Itse standardi on kuitenkin alusta- ja välineriippumaton

• Tuettuja alustoja ovat esimerkiksi Windows, Mac OS X sekä Linux

• ODataa tukevia ohjelmistoja ovat esimerkiksi Excel, PHP, Ruby sekä tietysti Microsoftin .NET ja C# (ja täten Windows 8 -sovellukset)

Page 29: Luku 5 – Tietojen hakeminen sovelluksiin

Tehtäviä• Listaa ainakin kolme erilaista tapaa tallentaa tietoja

Windows 8 -sovelluksesta. Mitä hyötyjä ja haittoja kussakin keksimässäsi tavassa on?

• Pohdi, miten voit rakentaa sovelluksia, jotka ovat käytettävissä silloinkin, kun Internet-yhteyttä ei ole saatavilla.

• Mitä hyötyä on ODatan kaltaisista, avoimista standardeista tietojen välittämiseen? Mitä muita tiedonsiirron standardeja osaat nimetä?

Page 30: Luku 5 – Tietojen hakeminen sovelluksiin

Kysymyksiä ja vastauksia 1Sovellukseni tarvitsee vain yksinkertaista tiedon tallennusta. Mitä tallennusmenetelmiä minun kannattaisi käyttää?• Yksinkertaisiin sovelluksiin voi riittää hyvin esimerkiksi sovellukseen kuuluva

paikallinen xml-tiedosto. Windows 8 -sovelluksia voit käsitellä xml-tiedostoja esimerkiksi XmlDocument-luokan avulla, joka löytyy nimiavaruudesta Windows.Data.Xml.Dom.

• Voit myös käyttää joitakin sql-pohjaisia kevyttietokantoja. Tällainen tietokanta on esimerkiksi SQLite. Tämän tietokannan käyttöönotto omassa sovelluksessa tapahtuu helpoiten niin sanotun NuGet-paketin avulla. Hae sitä Visual Studiosta nimellä ”SQLite for Windows Runtime”.

• Tutustu myös uuteen Windows Azure Mobile Services -palveluun, jonka avulla voit hyvin nopeasti toteuttaa web-taustajärjestelmän sovelluksellesi.

Page 31: Luku 5 – Tietojen hakeminen sovelluksiin

Kysymyksiä ja vastauksia 2Olen suunnittelemassa Windows 8 -sovellusta ja kirjoitan koodin Visual Studiolla. Sovelluksen on tarkoitus kommunikoida http-tekniikalla taustajärjestelmän kanssa. Pitääkö minun tehdä myös taustajärjestelmä Visual Studiolla?• Avoimien tekniikoiden (kuten http) etuna on, että käytetyillä kehitysvälineillä ei

ole merkitystä niin kauan kun standardeja noudatetaan. Niinpä voit kirjoittaa Windows 8 -sovelluksen käyttöliittymän Visual Studiolla ja taustajärjestelmän vaikkapa Pythonilla tai PHP:llä.

• Jos kuitenkin kirjoitat myös taustajärjestelmän Visual Studiolla, saat paljon etuja, sillä sinun ei tarvitse käyttää kahta tai useampaa kehitysvälinettä. Lisäksi voit kätevästi hyödyntää esimerkiksi ODatan kaltaisia tehokkaita tapoja tiedonvälitykseen.

• Tutustu Microsoftin ASP.NET-tekniikoihin. Niitä voit ohjelmoida esimerkiksi C#-kielellä.

Page 32: Luku 5 – Tietojen hakeminen sovelluksiin

Kysymyksiä ja vastauksia 3Olen kuullut että moniin taustajärjestelmiin on hyökätty ja varastettu käyttäjätunnuksia ja salasanoja. Miten vältän itse tällaiset virheet?• Tämä on monitahoinen kysymys, mutta silti hyvin tärkeä. Varsinkin suosittujen

sovellusten suuret taustajärjestelmät ja tietokannat ovat rikollisille herkullisia kohteita.

• Tärkeää on, että käyttäjien tunnukset ja salasanat on salattu asianmukaisesti. Kaikki salaustavat eivät ole yhtä hyviä, joten on tärkeää valita riittävän tehokkaat salausmenetelmät. Monet muutkin asiat vaikuttavat taustajärjestelmien tietoturvaan, ja asiasta on kirjoitettu monia kirjoja.

• Voit tutustua esimerkiksi Microsoftin kehittäjä-sivuilta löytyvään kirjaan nimeltä ”Building Secure ASP.NET Applications”. Se löytyy osoitteesta http://msdn.microsoft.com/en-us/library/ff649100.aspx.