Mitt første Windows Phone 7 app-utviklingsprosjekt

Til tross for min bekymring, bestemte jeg meg for å prøve Windows Phone 7-utviklingen. Opplevelsen var dårlig på måter som jeg ikke forventet, og god på noen områder som jeg hadde vært opptatt av.

Det gode

Overgangen til Silverlight

Først og fremst tok jeg feil med noe jeg hadde vært veldig uttalt om: Silverlight er for det meste ikke svakhetspunktet i utviklingskjeden; Silverlight-opplevelsen var faktisk tålelig. Er det perfekt? Nei. Er jeg nå Silverlight-ekspert? Ikke på noen måte. Men jeg har lært de siste ukene at mengden Silverlight som trengs for å hasjere sammen typiske forretningsapplikasjoner, er minimal.

Overgangen til Silverlight kommer fra en WinForms-bakgrunn (med bare en mindre WPF-app under beltet) - du kan til og med fortsatt følge WinForms-paradigmet hvis du velger. I et nøtteskall er Silverlight-økosystemet fylt med folk som virkelig liker å snakke mønstre og praksis, og fra å lese tingene dine høres det ut som å bruke Silverlight uten å følge ting som MVVM vil drepe deg. Realiteten er at den ikke vil det.

Silverlights støtteteknologier Det er ikke så ille å jobbe med Silverlights støtteknologier, som RIA Services og WCF, som jeg trodde det ville være basert på live-demoene jeg hadde sett om teknologiene. Takk til TechRepublic-leseren Terje Bergesen, som stilte meg rett med sin toppstudie for flyging av bruk av datatjenester fra Silverlight. Silverlight-verktøy i Visual Studio 2010

Silverlight-verktøyene i Visual Studio 2010, kombinert med utviklingsverktøyene for Windows Phone 7, var jevne og fungerte helt fint. Før jeg installerte Windows Phone 7-verktøyene, var jeg bekymret for at det ville installere Express-versjoner av Blend og Visual Studio, selv om jeg hadde fullversjoner av begge produktene. Heldigvis oppdaget de eksisterende installasjoner og installerte ikke Express-versjonene side om side. Dette må avklares på nettstedet for utviklingsverktøy.

Dessverre er det der den gode nyheten slutter.

Det dårlige

APIene

Det første problemet jeg møtte var at APIene mangler evnen til å gjøre mange nyttige ting. For å være ærlig, stinker API-ene. Jeg var virkelig spent på den originale applikasjonsideen min, fordi den adresserte behovet mitt for en autosvarer for tekstmeldinger som også ville deaktivere volumet mens telefonen var på. Det får meg til å bli nøtt når folk sender tekstmeldinger mens jeg kjører, fordi jeg er fristet til å lese og svare på meldingene, men jeg vet at det er veldig farlig. Jeg var sikker på at dette kunne gjøres fordi jeg hadde vært på Windows Mobile 6.5-presentasjoner som viste hvordan jeg skulle sende og lese tekstmeldinger, jobbe med telefonens innstillinger og så videre. Mens Windows Phone 7 er en ny plattform, kunne jeg ikke forestille meg at den ville være mindre kapabel enn Windows Mobile 6.5.

Det er ikke en telefonplattform

Det viser seg at jeg tok feil. Fra utviklerens ståsted er ikke Windows Phone 7 en telefonplattform. Det er en Silverlight-klient (mangler mye av Silverlight sin nåværende funksjonalitet) med tilgang til telefonens sensorer (kompass, mikrofon, akselerometer, GPS). Noe av det som en knytter til en mobiltelefon (annet enn vibrasjonsenheten) er utilgjengelig for applikasjonen din. I stedet for å ha et API for å faktisk jobbe med tekstmeldinger, kontaktlisten, kameraet, telefonsamtaler og så videre, har du muligheten til å starte applikasjonene og noen ganger få resultater tilbake fra dem etter at brukeren har gjort noe.

For eksempel kan ikke applikasjonen din sende en tekstmelding, men den kan starte tekstmeldingsprogrammet og forhåndsutfylle "Til" og "Kroppen" for meldingen (så vidt jeg kan si, det er ingen måte å sende bilder eller filmer - også de støttes av telefonen). Eller for å jobbe med kameraet, kan du starte kameraapplikasjonen, og hvis brukeren tar et bilde, får applikasjonen din bildeinformasjon i etterkant. Denne begrensningen utelukker hele applikasjonskategorier - hvilke typer applikasjoner som utnytter de medfødte egenskapene til en telefon .

Det er virkelig ironisk at Microsoft skyver det reaktive systemet for Windows Phone 7, og bruker det som den foretrukne måten å jobbe med sensorene på. Det ville være en ideell måte å jobbe med telefonsamtaler, tekstmeldinger og andre systemhendelser for å sette sammen noen fremragende applikasjoner ... hvis bare telefonen tillater deg å gjøre det, og hvis den var multitrådd slik at du kan ha applikasjoner som kjører i bakgrunnen.

Hvis du planlegger å bygge en Windows Phone 7-app som er avhengig av telefonfunksjonalitet, foreslår jeg at du virkelig studerer API-dokumentasjonen før du forplikter deg til prosjektet. Sjansen er stor for at du ikke kan skrive appen du ønsker.

Utvikler Windows Phone 7-appen min

Jeg hadde det travelt med å i det minste skrive noe, men jeg visste at jeg måtte avskalere planene mine dramatisk, så jeg satte kursen mot Data.gov for å se om jeg kunne finne noen datatjenester jeg kunne bygge en applikasjon på. Jeg hadde ikke tid eller ressurser (nemlig serverressursene) til å sette sammen en webtjeneste som gjorde noe nyttig på serversiden. Jeg fant en webtjeneste for å få status som amerikanske flyplasser, og den så lett ut å jobbe med til jeg traff nok en gang: Silverlight fungerer veldig bra med SOAP Web-tjenester, men ikke så bra med REST.

Da jeg undersøkte bruken av REST i Silverlight, sa alt jeg fant at jeg trengte å få en forbindelse til tjenesten og manuelt analysere XML og se etter hva jeg trengte. For å legge til fornærmelse mot skade, støtter ikke Windows Phone 7 WCF Data Services-ting ut av esken! Det er et anstendig OData-kapabelt bibliotek på CodePlex; dessverre har den en stor mangel: Den støtter ikke autentisering. Siden det ikke er mange webtjenester som er utsatt for Internett som ikke krever autentisering, gjør det det ubrukelig i altfor mange omstendigheter, og du er i kulden.

For applikasjonen min bestemte jeg meg for å spille den raskt og skitten og bruke WebClient til å laste ned dataene, pop dem inn i et XDocument-objekt (det ville aldri være for stort, maksimalt 2 KB), og bruke LINQ for å få det jeg trengte av det. Og jeg slo enda en ulempe . Det viser seg at noen hos Microsoft bestemte "du skal ringe nettverkstjenestene dine asynkront." Jeg får det til - de vil ikke at noen skal ha fast telefonen i 30 sekunder og venter på at serveren skal ta time-out, eller noen minutter å laste ned en stor fil - men jeg mener at avgjørelsen bør være opp til applikasjonsutvikleren og ikke operativsystem. I stedet for å bruke en enkel samtale til WebClient.DownloadString (), ble jeg tvunget til å bruke den mindre direkte asynkrone modellen, som virkelig gjør koden stygg og vanskeligere å feilsøke og vedlikeholde. For å gjøre vondt verre, ville de reaktive tingene vært fantastiske her, men det fungerer bare med noen av sensorene for øyeblikket, så det var ute av bildet.

En annen advarsel: Windows Phone 7-utviklingsmalene er ekstremt konservative i standardreferansene i et prosjekt sammenlignet med WPF- eller WinForms-applikasjoner for å spare ressurser. Noen ganger er det uklart om du ikke kan jobbe med et forventet stykke funksjonalitet på grunn av en manglende referanse, eller fordi Windows Phone 7 bare ikke støtter den funksjonaliteten. Dokumentasjonen er din venn her.

Når jeg har overvunnet disse mindre hindringene, var applikasjonen min Airport Status Checker enkel å trekke sammen. Jeg la ut Airport Status Checker-applikasjonen under MIT-lisensen, slik at du kan se på koden.

I den andre delen av denne to-delte serien, vil jeg diskutere hvordan det er å jobbe i Windows Phone 7-økosystemet med tanke på å få støtte og få applikasjonen din publisert.

Mer om Windows Phone 7-utvikling på TechRepublic

  • Windows Phone 7 gjennom utviklerens øyne
  • Avstemning: Trenger du en tredje stor mobilutviklingsplattform?
  • Microsofts kritiske feiltrinn med utviklingen av Windows Phone 7
  • Avstemning: Kan Windows Phone 7 konkurrere med iPhone og Android?
  • Jobbmarkedet er varmt for utvikling av mobile forretningsapper

J.Ja

Avsløring av Justin's tilknytning til industrien: Justin James har en kontrakt med Spiceworks for å skrive produktkjøpsguider; han har en kontrakt med OpenAmplify, som eies av Hapax, for å skrive en serie blogger, opplæringsprogrammer og artikler; og han har en kontrakt med OutSystems om å skrive artikler, eksempelskode, etc.

© Copyright 2021 | pepebotifarra.com