Hei.
Olemme tehneet isännöintialalle työprosessin hallinta - ohjelmiston, jolla mm. jaetaan asuntojen huoltotyöt.
Huoltotyöt sijaitsevat Linux palvelimella MySQL tietokannassa, töitä hallinnoidaan pääasiassa web käyttöliittymän kautta.
Töitä kannassa on nyt jo yli 14000, päivittäin tulee uusi keskimäärin noin 50-70 kpl.
Nyt olen tehnyt huoltomiehille Lumia 800 matkapuhelimiin ohjelmiston jolla huoltomiehet voivat kentältä käsin selata omia avoimia huoltotöitä.
Palvelinpuoli luo dynaamisesti kaksi xml tiedostoa, toinen sisältää usean tai yksittäisen työn tiedot, toinen tiedosto listaa kaikki huoltomiehet.
Pähkinäkuoressa ohjelmisto hakee xml datan WebClient:in avulla ja parsii tuloksen XElement kirjastolla ohjelmiston eri näkymä osiin.
Onko toista selkeästä järkevämpää tapaa hakea XML dataa suoraan esim ListBox:iin tai ApplicationBar:iin.
Alla esimerkki jolla tällä hetkellä haen ja lisään huoltomiehet ApplicationBar:iin.
public void haeHuoltomiehet() { try { String url = "http://xxxxxx.fi/xxx/huoltomiehet.php"; var wc = new WebClient(); wc.DownloadStringCompleted += (sender, e) => { XElement xml = XElement.Parse(e.Result as String); foreach (XElement mies in xml.Elements("huoltomies")) { ApplicationBarMenuItem menuItem = new ApplicationBarMenuItem(); menuItem.Text = mies.Element("id").Value + " - " + mies.Element("nimi").Value; menuItem.Click += new EventHandler(vaihdaHuoltomies); ApplicationBar.MenuItems.Add(menuItem); } }; wc.DownloadStringAsync(new Uri(url)); } catch (Exception ex) { MessageBox.Show("Tietoja ei voitu hakea, ota yhteyttä ylläpitoon."); } }
No itse tekisin ne kyllä webservicenä. Käytännössähän siinäkin data menee XML-muodossa http(s) kanavassa, mutta koska siinä on standardinmukainen määrittely (wsdl-kielellä) ei koodarin tarvitse kiinnittää asiaan oikeastaan mitään huomiota.
Eli palvelimen pään projektiin lisää normaalin funktion, joka ottaa halutut parametrit ja palauttaa vaikka listan huoltomiesolioita. Työkalu tekee tästä automaattisesti wsdl-kuvauksen. Sitten kun clienttikoodille antaa sen wsdl:n niin se tekee automaattisesti tarvittavat koodit ja sitä voi kutsua kuin se olisi paikallinen funktio. Yhteyksien avaukset ja (de)serialisoinnit hoituu automaattisesti.
Tietty riippuu työkaluista. Esim. ne Webservice työkalut mitä olen PHP:lle löytäneet on ollut ihan käsittämätöntä kuraa, mutta onneksi ei kovin paljoa tarvitse PHP:llä koodata.
tai WCF Servicellä: http://www.codeproject.com/Articles/196996/
joka tapauksessa on mukavampaa käsitellä valmiita objekteja jotka palvelusta palautuu, kuin suoraa xml:ää.
En kyllä osaa sanoa onko tuohon windows phonelle hyviä kirjastoja, mutta entäs JSON XML tilalle
Aihe on jo aika vanha, joten et voi enää vastata siihen.