(linkedin) (delicious)

    WinForms-WebService-projektin esittely

    Mainitsin aiemmassa blogi-kirjoituksessani ( Liukuva WPF-paneeli WinForms-sovellukseen ) työn alla olevasta Windows-sovellusprojektista, jonka tavoitteena oli luoda pienimuotoinen sovelluskokonaisuus tämän sivuston vieraskirja-osiossa olevien viestien hallintaan suoraan oman Windows-järjestelmän työpöydältä. Tässä postauksessa tarkoitukseni on esitellä kyseiseen projektiin liittyvät keskeiset seikat. Vuorossa on siis pieni esittely siitä, miten sain tämän sivuston MySql-tietokannan ja C#-kielellä luodun WinForms-sovelluksen kommunikoimaan keskenään. Lisäksi suurennuslasin alla on luodun WinForms-sovelluksen käyttöliittymä, jonka pyrin luomaan testimielessä hieman perinteistä staattista Windows-käyttöliittymää joustavammaksi.

    WebServicen luonti

    Lähtökohdiltaan projektin aihe oli varsin mielenkiintoinen ja haastava, sillä ajattelin toteuttaa järjestelmän tietokannan ja client-ohjelman välisen yhteydenpidon perinteisen WebService-rajapinnan avulla. Tämän sivuston vieraskirja-osion, kuten myös koko muun sivuston, toiminnallisuus on toteutettu PHP-kielen avulla, joten luonnollisesti tarkoituksena oli, että myös sivustoon kehitettävä WebService luotaisiin PHP:n avulla. Lähdin siis liikkeelle projektin toteutuksessa yksinkertaisesti siitä, miten PHP-kielellä on ylipäätään mahdollista luoda WebService-rajapinta. Aiempaa kokemusta minulla ei ollut PHP:n osalta aiheen tiimoilta, mutta toki tiesin, että WebService-rajapinnan luonti aivan alusta alkaen on melko kivulias prosessi, jos käytössä ei ole mitään luontiin tarkoitettuja aputyökaluja, kuten Visual Studiota, tai kolmannen osapuolen tarjoamaa valmista palvelua. Olin tutustunut WebService-teknologiaan aiemmin .NET-tekniikoiden puolella, joten perusteet asiasta olivat selvillä.

    Lähdin etsimään PHP:lle tarkoitettua valmista kolmannen osapuolen tarjoamaa palvelua, jonka avulla voisin luoda tarvittavan WebServicen. Pienimuotoisen kenttätutkimuksen jälkeen päädyin valinnassani NuSoap-nimiseen avoimen lähdekoodin palveluun, jonka avulla voidaan kehittää PHP-WebService-rajapintoja, jotka perustuvat WSDL 1.1, SOAP 1.1 ja HTTP 1.0/1.1 standardeihin. Palvelun lataussivustolta on mahdollista ladata myös NuSoap-kirjaston käyttöön liittyvä dokumentaatio. Lisäksi palvelun käytöstä on käyty lukuisia keskusteluja, joiden avulla on helppoa sisäistää sen hyödyntämiseen liittyvät perustason seikat.


    Kuvaus

    1. Client lähettää pyynnön jonkin web-metodin suorittamisesta WebService:lle, joka vastaanottaa tunnistuksessa käytettävät salasanat ja tunnistusavaimen sekä muut parametrit.
    2. WebService suorittaa pyynnön autentikoinnin.
    3. Autentikointi onnistui, joten WebService suorittaa pyydetyn toiminnon mukaisen SQL-kyselyn tietokantaan.
    4. Tietokantamoottori palauttaa SQL-kyselystä palautuneet tiedot WebService:lle.
    5. WebService kokoaa kutsujalle palautettavat tiedot palveluun rekisteröityihin tietotyyppeihin.
    6. WebService lähettää kootut tiedot client-ohjelmalle.

    Koska WebService-rajapintaa voidaan pitää periaatteessa julkisena, tarkoituksenani oli luoda palveluun jonkinmoinen käyttäjän tunnistustoiminto. Palvelun jokainen SOAP-kutsu autentikoidaan siis erikseen kahden epämääräisen salasanan ja yhden vaihtuvan tunnistusavaimen avulla. Kyseiset tunnukset on lisäksi suojattu tiivisteiden avulla, kun käyttäjä lähettää ne SOAP-kutsussa verkon yli WebService:lle.

    Haastavimmaksi ongelmaksi WebServicen luonnissa koitui tarvittavien tietotyyppien rekisteröinti palveluun. Ajatuksena oli siis luoda rajapintaan ilmentymä käsiteltävien tietokannan taulujen riveistä. Näiden tietotyyppien avulla siten kuljetetaan tietokannasta palautuneet rivit client-ohjelmalle tai esimerkiksi päivityskyselyn johdosta päivitettävä rivi client-ohjelmasta tietokantaan. SOAP-standardi kutsuu tämänkaltaisen toiminnallisuuden mahdollistavia tietotyyppejä nimellä “complex data type”. Käytännössä tämän tyypin tietotyyppi voi siis olla joko struktuuri (struct) tai taulukko (array). Luonnollisesti yhteen array-tietotyyppiin voidaan sijoittaa perus tietotyyppien (simple types) lisäksi esimerkiksi joukko struct-tyyppejä, jonka avulla on siis mahdollista kuljettaa esimerkiksi joukko tietokannan rivi-ilmentymiä yhdessä kokoelmassa haluttuun kohteeseen.

    Client-ohjelman käyttöliittymä

    (Voit avata kuvat klikkamalla hiirellä niistä. Voit löytää selvitykset kustakin näkymästä kuvien kuvateksteistä.)


    Kayttoliittyma

    Käyttöliittymän ulkoasu on tummanpuhuva. Ulkoasussa kiinnitettiin huomiota erityisesti tekstien fonttityyppiin ja -kokoon. Microsoftin perus fontti “Sans Serif” sais siis väistyä ja “Seqoe UI” otettiin tilalle. Fontin oletuskokoa kasvatettiin 10 pisteeseen. Päivämääriä käsitellään perinteisen Windows-kalenterikomponentin avulla, jonka kokoa on myös hieman kasvatettu alkuperäisestä.


    Kayttoliittyma

    Uusi vastaus kirjoitetaan erillisessä ikkunassa, jotta itse viestiä, johon vastataan, voidaan tarkastella samanaikaisesti.


    Kayttoliittyma

    Kun tunnistetiedot tallennetaan sovellukseen, ne tallettuvat samalla sovelluksen muistiin pysyvästi, jolloin niitä ei tarvitse antaa aina uudelleen, kun sovellusta käytetään myöhemmässä vaiheessa.


    Kayttoliittyma

    Sovelluksen muisti voidaan luonnollisesti tyhjentää, jolloin muistista poistetaan sinne tallennetut tunnistetiedot ja WebServicen kautta haetut tietokannan tiedot. Kun sovelluksessa ei ole hallittavaa tietoa saatavilla, käyttöliittymän tekstikentät menevät piiloon käyttäjältä. Tekstikentät menevät piiloon myös, mikäli yhtään viestiä ei ole aktivoitu käsiteltäväksi.

    Noniin..ja palautetta sovelluksen ulkoasusta ja käyttöliittymän toiminnallisuudesta saa antaa. Omasta mielestäni esimerkiksi käyttöliittymän värit ovat hyvin mielikuvituksettomat (mustaa ja harmaata). Jos haluat antaa vinkkiä esimerkiksi värien käytöstä normaaleissa työpöytä-sovelluksissa, niin kommentoinnin sana on vapaa. Myös jos tiedät jotain hyviä kirjoja värien käytöstä kyseisen aiheen saralla, niin ehdotuksia voi antaa.

    Yhden asian haluan vielä nostaa esille kehitetyn sovelluksen käyttöliittymästä, joka koskee myös yleisesti kaikkien Windows-sovellusten kehittämistä. Mielestäni siis Windows-käyttöjärjestelmien tarjoama oletus fonttikoko on aivan liian pieni. Miksi käyttäjien silmiä pitää siis rasittaa pienellä tekstillä? Jos olet sovelluskehittäjä, niin toivottavasti tiedostat ongelman ja et käytä pienikokoisia fontteja omassa sovelluksessasi. Itse en ainakaan tule enää niin tekemään.

    Versio 2.0

    Mikäli jatkan vielä kyseisen projektin parissa “tuusaamista”, niin ajatuksena on ollut, että toteuttaisin sovellukseen vielä vieraskirja-tietokannan varmuuskopiointi-ominaisuuden. Ominaisuus olisi siis mahdollista toteuttaa mitä luultavammin esimerkiksi .NET:n sarjallistamis-tekniikoiden avulla. Tällöin tietokannan palauttaminen voitaisiin hoitaa luonnollisesti siirtämällä aiemmin sarjallistettu tieto takaisin tyhjennettyyn vieraskirja-tietokantaan.

    Toiminnon toteuttaminen voisi olla hyvin mielenkiintoinen operaatio sekin, mutta nähtäväksi jää löydänkö motivaation kipinän vielä itsestäni tämän osan tekemiseksi. Itselleni on siis tavanomaista, että en koske enää uudelleen valmiiksi saamiini projekteihin, vaan siirrän ne bittiarkistojen kätköihin pölyyntymään.

    aihe: Projektit

    “WinForms-WebService-projektin esittely” (Ei kommentteja)

    Kommentoi

    • (hymiot)Näytä Hymiöt
    •  

     
    | Takaisin ylös |
    Blogimoottori: WordPress
    Ulkoasu, Sisältö: © Timo Kallio, 2009-2012 - Savonia-ammattikorkeakoulu