Mit første Windows Phone 7 app-udviklingsprojekt

På trods af min bekymring besluttede jeg at prøve Windows Phone 7-udviklingen. Oplevelsen var dårlig på måder, som jeg ikke forventede, og god på nogle områder, som jeg havde været bekymret for.

Den gode

Overgangen til Silverlight

Først og fremmest tog jeg forkert for noget, som jeg havde været meget åbenlyst om: Silverlight er for det meste ikke det svage punkt i udviklingskæden; Silverlight-oplevelsen var faktisk acceptabel. Er det perfekt? Nej. Er jeg nu Silverlight-ekspert? Ikke på nogen måde. Men jeg har lært de sidste uger, at den mængde Silverlight, der er nødvendig for at hash sammen typiske forretningsapplikationer, er minimal.

Kommer fra en WinForms-baggrund (med kun en mindre WPF-app under mit bælte) er overgangen til Silverlight ikke dårlig - du kan endda stadig følge WinForms-paradigmet, hvis du vælger. Kort sagt er Silverlight-økosystemet fyldt med folk, der virkelig kan lide at tale mønstre og praksis, og fra at læse deres ting lyder det som at bruge Silverlight uden at følge ting som MVVM vil dræbe dig. Virkeligheden er, at den ikke gør det.

Silverlight's understøttende teknologier At arbejde med Silverlight's understøttende teknologier, såsom RIA Services og WCF, er ikke så slemt, som jeg troede, det ville være baseret på de live demoer, jeg havde set om teknologierne. Tak til TechRepublic læser Terje Bergesen, der satte mig lige med sin øverste flyvevejledning om brug af datatjenester fra Silverlight. Silverlight-værktøjer i Visual Studio 2010

Silverlight-værktøjerne i Visual Studio 2010 kombineret med Windows Phone 7-udviklingsværktøjer var glatte og fungerede helt fint. Før jeg installerede Windows Phone 7-værktøjerne, var jeg bekymret over, at det ville installere Express-versioner af Blend og Visual Studio, selvom jeg havde fulde versioner af begge produkter. Heldigvis opdagede det mine eksisterende installationer og installerede ikke Express-versionerne side om side. Dette skal afklares på webstedet med udviklingsværktøjer.

Desværre er det her, de gode nyheder slutter.

Den dårlige

API'erne

Det første problem, jeg stød på, var, at API'erne mangler evnen til at gøre mange nyttige ting. For at være ærlig, stinker API'erne. Jeg var virkelig begejstret for min originale applikationsidee, fordi den adresserede mit behov for en autosvar for tekstbeskeder, der også ville deaktivere telefonens lydstyrke, mens den var tændt. Det får mig til at narre, når folk sender tekstbeskeder, mens jeg kører, fordi jeg er fristet til at læse og besvare meddelelserne, men jeg ved, at det er virkelig farligt. Jeg var sikker på, at dette kunne gøres, fordi jeg havde været i Windows Mobile 6.5-præsentationer, der viste, hvordan man sendte og læste tekstbeskeder, arbejdede med telefonens indstillinger osv. Mens Windows Phone 7 er en ny platform, kunne jeg ikke forestille mig, at det ville være mindre kapabelt end Windows Mobile 6.5.

Det er ikke en telefonplatform

Det viser sig, at jeg tog fejl. Ud fra udviklerens synspunkt er Windows Phone 7 ikke en telefonplatform. Det er en Silverlight-klient (mangler en masse af Silverlight's nuværende funktionalitet) med adgang til telefonens sensorer (kompas, mikrofon, accelerometer, GPS). Enhver af de ting, som man forbinder med en mobiltelefon (bortset fra vibrationsenheden), er utilgængelige for din applikation. I stedet for at have en API til faktisk at arbejde med tekstbeskeder, kontaktlisten, kameraet, telefonopkald osv., Har du muligheden for at starte disse applikationer og undertiden få resultater tilbage fra dem, når brugeren har taget nogle handlinger.

F.eks. Kan din ansøgning ikke sende en tekstbesked, men den kan starte tekstmeddelelsesapplikationen og forudfylde meddelelsen "Til" og "Krop" i meddelelsen (så vidt jeg kan fortælle, er der ingen måde at sende billeder eller film - også dem understøttes af telefonen). Eller for at arbejde med kameraet kan du starte kameraapplikationen, og hvis brugeren tager et billede, får din applikation billedoplysningerne bagefter. Denne begrænsning udelukker hele kategorier af applikationer - den slags applikationer, der udnytter en medfødt egenskab ved en telefon .

Det er virkelig ironisk, at Microsoft skubber det reaktive system til Windows Phone 7 og bruger det som den foretrukne måde at arbejde med sensorerne på. Det ville være en ideel måde at arbejde med telefonopkald, tekstbeskeder og andre systembegivenheder til at sammensætte nogle fremragende applikationer ... hvis kun telefonen tillader dig at gøre det, og hvis det var multitrådede, så du kunne have programmer, der kører baggrunden.

Hvis du planlægger at bygge en Windows Phone 7-app, der afhænger af telefonfunktionalitet, foreslår jeg, at du virkelig studerer API-dokumentationen, før du forpligter dig til projektet. Chancerne er, at du ikke kan skrive den app, du ønsker.

Udvikling af min Windows Phone 7-app

Jeg havde travlt med i det mindste at skrive noget, men jeg vidste, at jeg var nødt til at afskalere mine planer dramatisk, så jeg tog kursen mod Data.gov for at se, om jeg kunne finde nogen datatjenester, som jeg kunne bygge en applikation på. Jeg havde ikke tid eller ressourcer (nemlig serverressourcerne) til at sammensætte en webtjeneste, der gjorde noget nyttigt på serversiden. Jeg fandt en webtjeneste til at få status som amerikanske lufthavne, og det så let ud at arbejde med, indtil jeg ramte endnu en ulempe: Silverlight fungerer rigtig godt med SOAP-webtjenester, men ikke så godt med REST.

Da jeg undersøgte, hvordan jeg brugte REST i Silverlight, sagde alt, hvad jeg fandt, at jeg var nødt til at få en forbindelse til tjenesten og manuelt analysere XML og kigge efter, hvad jeg havde brug for. For at tilføje fornærmelse mod kvæstelser understøtter Windows Phone 7 ikke WCF Data Services-ting ud af kassen! Der er et anstændigt OData-kapabelt bibliotek på CodePlex; desværre har det en stor mangel: Det understøtter ikke godkendelse. Da der ikke er mange webtjenester, der udsættes for internettet, som ikke kræver godkendelse, gør det nytteløst i alt for mange omstændigheder, og du er i kulden.

Til min applikation besluttede jeg at afspille dem hurtigt og beskidt og bruge WebClient til at downloade dataene, pop dem ind i et XDocument-objekt (det ville aldrig være for stort, 2 KB max) og bruge LINQ til at få det, jeg havde brug for fra det. Og jeg ramte endnu en ulempe . Det viser sig, at nogen hos Microsoft besluttede "du skal kalde dine netværkstjenester asynkront." Jeg får det til - de vil ikke have nogen, der sætter telefonen fast i 30 sekunder, og venter på, at en server skal udløbe, eller et par minutter at downloade en stor fil - men jeg mener, at denne beslutning burde være op til applikationsudvikleren ikke operativ system. I stedet for at bruge et simpelt opkald til WebClient.DownloadString () blev jeg tvunget til at bruge den mindre direkte asynkrone model, som virkelig gør koden grim og vanskeligere at fejlsøge og vedligeholde. For at gøre tingene værre, ville de reaktive ting have været fantastisk her, men det fungerer kun med nogle af sensorer i øjeblikket, så det var ude af billedet.

En anden advarsel: Windows Phone 7-udviklingsskabeloner er ekstremt konservative i standardreferencerne i et projekt sammenlignet med WPF- eller WinForms-applikationer for at spare ressourcer. Det er undertiden uklart, om du ikke kan arbejde med et forventet stykke funktionalitet på grund af en manglende reference, eller fordi Windows Phone 7 bare ikke understøtter denne funktionalitet. Dokumentationen er din ven her.

Når jeg besejrede disse mindre forhindringer, var min Airport Status Checker-applikation let at trække sammen. Jeg indsendte applikationen Airport Status Checker under MIT License, så du kan se på koden.

I den anden del af denne to-dels-serie skal jeg diskutere, hvordan det er at arbejde i Windows Phone 7-økosystemet med hensyn til at få support og få din ansøgning offentliggjort.

Mere om Windows Phone 7-udvikling på TechRepublic

  • Windows Phone 7 gennem en udviklers øjne
  • Afstemning: Har du brug for en tredje større mobiludviklingsplatform?
  • Microsofts kritiske fejlagtige fejl med udviklingen af ​​Windows Phone 7
  • Afstemning: Kan Windows Phone 7 konkurrere med iPhone og Android?
  • Jobmarkedet er varmt til udvikling af mobil forretningsapp

J.Ja

Videregivelse af Justin's brancheforhold: Justin James har en kontrakt med Spiceworks om at skrive guider til produktkøb; han har en kontrakt med OpenAmplify, som ejes af Hapax, om at skrive en række blogs, tutorials og artikler; og han har en kontrakt med OutSystems om at skrive artikler, prøvekode osv.

© Copyright 2021 | pepebotifarra.com