Mein erstes Windows Phone 7 App-Entwicklungsprojekt

Trotz meiner Bedenken habe ich beschlossen, die Windows Phone 7-Entwicklung auszuprobieren. Die Erfahrung war schlecht in einer Weise, die ich nicht erwartet hatte, und gut in einigen Bereichen, um die ich mir Sorgen gemacht hatte.

Der gute

Der Übergang zu Silverlight

In erster Linie habe ich mich in etwas geirrt, über das ich sehr offen gesprochen hatte: Zum größten Teil ist Silverlight nicht die Schwachstelle in der Entwicklungskette; Das Silverlight-Erlebnis war tatsächlich erträglich. Ist es perfekt Bin ich jetzt ein Silverlight-Experte? Auf keinen Fall. Aber ich habe in den letzten Wochen gelernt, dass die Menge an Silverlight, die benötigt wird, um typische Geschäftsanwendungen zusammenzufügen, minimal ist.

Ausgehend von einem WinForms-Hintergrund (mit nur einer kleinen WPF-App) ist der Übergang zu Silverlight nicht schlecht - Sie können sogar dem WinForms-Paradigma folgen, wenn Sie dies wünschen. Kurz gesagt, das Silverlight-Ökosystem ist voll von Leuten, die wirklich gerne über Muster und Praktiken sprechen, und wenn man ihre Sachen liest, klingt es so, als würde man Silverlight verwenden, ohne Sachen wie MVVM zu folgen, die einen töten. Die Realität ist, es wird nicht.

Silverlights unterstützende Technologien Die Arbeit mit den unterstützenden Technologien von Silverlight wie RIA Services und WCF ist nicht so schlecht, wie ich dachte, dass sie auf den Live-Demos basieren würden, die ich über die Technologien gesehen hatte. Vielen Dank an TechRepublic-Leserin Terje Bergesen, die mich mit seinem erstklassigen Tutorial zur Verwendung von Datendiensten von Silverlight klargestellt hat. Silverlight-Tools in Visual Studio 2010

Die Silverlight-Tools in Visual Studio 2010 waren in Kombination mit den Windows Phone 7-Entwicklungstools reibungslos und funktionierten einwandfrei. Bevor ich die Windows Phone 7-Tools installiert habe, befürchtete ich, dass Express-Versionen von Blend und Visual Studio installiert werden, obwohl ich Vollversionen beider Produkte hatte. Glücklicherweise wurden meine vorhandenen Installationen erkannt und die Express-Versionen nicht nebeneinander installiert. Dies muss auf der Website der Entwicklungstools erläutert werden.

Leider endet hier die gute Nachricht.

Das Schlechte

Die APIs

Das erste Problem, auf das ich stieß, war, dass die APIs nicht in der Lage sind, viele nützliche Dinge zu tun. Um ehrlich zu sein, stinken die APIs. Ich war sehr aufgeregt über meine ursprüngliche Anwendungsidee, da sie meinen Bedarf an einem Autoresponder für Textnachrichten befriedigte, der auch die Lautstärke des Telefons deaktivieren würde, während es eingeschaltet war. Es macht mich verrückt, wenn Leute mir während der Fahrt Textnachrichten senden, weil ich versucht bin, die Nachrichten zu lesen und zu beantworten, aber ich weiß, dass das wirklich gefährlich ist. Ich war mir sicher, dass dies möglich war, da ich an Windows Mobile 6.5-Präsentationen teilgenommen hatte, in denen gezeigt wurde, wie Textnachrichten gesendet und gelesen werden, mit den Einstellungen des Telefons gearbeitet wird usw. Obwohl Windows Phone 7 eine neue Plattform ist, konnte ich mir nicht vorstellen, dass es weniger leistungsfähig ist als Windows Mobile 6.5.

Es ist keine Telefonplattform

Es stellt sich heraus, dass ich falsch lag. Aus Entwicklersicht ist Windows Phone 7 keine Telefonplattform. Es handelt sich um einen Silverlight-Client (dem viele aktuelle Funktionen von Silverlight fehlen) mit Zugriff auf die Sensoren des Telefons (Kompass, Mikrofon, Beschleunigungsmesser, GPS). Alle Dinge, die man mit einem Mobiltelefon verbindet (außer dem Vibrationsgerät), sind für Ihre Anwendung nicht zugänglich. Anstatt über eine API zum tatsächlichen Arbeiten mit Textnachrichten, der Kontaktliste, der Kamera, Telefonanrufen usw. zu verfügen, können Sie diese Anwendungen starten und manchmal Ergebnisse von ihnen zurückerhalten, nachdem der Benutzer eine Aktion ausgeführt hat.

Beispielsweise kann Ihre Anwendung keine Textnachricht senden, aber sie kann die SMS-Anwendung starten und die "An" und "Text" der Nachricht vorab ausfüllen (soweit ich das beurteilen kann, gibt es keine Möglichkeit, Bilder oder Nachrichten zu senden Filme - auch diese werden vom Telefon unterstützt). Um mit der Kamera zu arbeiten, können Sie die Kameraanwendung starten. Wenn der Benutzer ein Bild aufnimmt, erhält Ihre Anwendung anschließend die Bildinformationen. Diese Einschränkung schließt ganze Kategorien von Anwendungen aus - die Arten von Anwendungen, die die angeborenen Eigenschaften eines Telefons nutzen .

Es ist wirklich ironisch, dass Microsoft das Reactive-System für Windows Phone 7 vorantreibt und es als bevorzugte Methode für die Arbeit mit den Sensoren verwendet. Es wäre eine ideale Möglichkeit, mit Telefonanrufen, Textnachrichten und anderen Systemereignissen zu arbeiten, um einige herausragende Anwendungen zusammenzustellen ... wenn nur das Telefon dies zulässt und wenn es Multithread-fähig ist, damit Anwendungen ausgeführt werden können der Hintergrund.

Wenn Sie vorhaben, eine Windows Phone 7-App zu erstellen, die von der Telefonfunktionalität abhängt, empfehlen wir Ihnen, die API-Dokumentation wirklich zu studieren, bevor Sie sich für das Projekt entscheiden. Möglicherweise können Sie die gewünschte App nicht schreiben.

Entwicklung meiner Windows Phone 7 App

Ich hatte es eilig, zumindest etwas zu schreiben , aber ich wusste, dass ich meine Pläne drastisch reduzieren musste, und ging zu Data.gov, um zu sehen, ob ich Datendienste finden konnte, auf denen ich eine Anwendung aufbauen konnte. Ich hatte weder Zeit noch Ressourcen (nämlich die Serverressourcen), um einen Webdienst zusammenzustellen, der auf der Serverseite etwas Nützliches tat. Ich habe einen Webdienst gefunden, um den Status von US-Flughäfen zu erhalten, und es sah einfach genug aus, damit zu arbeiten, bis ich einen weiteren Haken traf: Silverlight funktioniert wirklich gut mit SOAP-Webdiensten, aber nicht so gut mit REST.

Als ich einige Nachforschungen über die Verwendung von REST in Silverlight anstellte, sagte alles, was ich fand, dass ich eine Verbindung zum Service herstellen und das XML manuell analysieren und nach dem suchen musste, was ich brauchte. Um die Verletzung noch schlimmer zu machen, unterstützt Windows Phone 7 die sofort einsatzbereiten WCF-Datendienste nicht ! Auf CodePlex gibt es eine anständige OData-fähige Bibliothek. Leider hat es ein großes Manko: Es unterstützt keine Authentifizierung. Da es nicht viele Webdienste gibt, die dem Internet ausgesetzt sind und keine Authentifizierung erfordern, wird es unter viel zu vielen Umständen unbrauchbar und Sie sind in der Kälte.

Für meine Anwendung habe ich mich entschieden, sie schnell und schmutzig abzuspielen und die Daten mit WebClient herunterzuladen, in ein XDocument-Objekt einzufügen (es wäre niemals zu groß, maximal 2 KB) und LINQ zu verwenden, um das zu erhalten, was ich brauchte. Und ich habe noch einen Haken getroffen . Es stellt sich heraus, dass jemand bei Microsoft entschieden hat, "dass Sie Ihre Netzwerkdienste asynchron aufrufen sollen". Ich verstehe - sie wollen nicht, dass jemand das Telefon 30 Sekunden lang blockiert und darauf wartet, dass ein Server ausfällt oder ein paar Minuten lang eine große Datei herunterlädt - aber ich glaube, dass die Entscheidung beim Anwendungsentwickler liegen sollte, nicht beim Betriebssystem. Anstatt einen einfachen Aufruf von WebClient.DownloadString () zu verwenden, musste ich das weniger direkte asynchrone Modell verwenden, was den Code wirklich hässlich und schwieriger zu debuggen und zu warten macht. Um die Sache noch schlimmer zu machen, wäre das reaktive Zeug hier großartig gewesen, aber es funktioniert im Moment nur mit einigen Sensoren, also war es nicht im Bilde.

Ein weiterer Warnhinweis: Die Windows Phone 7-Entwicklungsvorlagen sind in den Standardreferenzen in einem Projekt im Vergleich zu WPF- oder WinForms-Anwendungen äußerst konservativ, um Ressourcen zu sparen. Es ist manchmal unklar, ob Sie aufgrund einer fehlenden Referenz nicht mit einer erwarteten Funktionalität arbeiten können oder ob Windows Phone 7 diese Funktionalität einfach nicht unterstützt. Die Dokumentation ist dein Freund hier.

Nachdem ich diese kleinen Hürden überwunden hatte, war meine Airport Status Checker-Anwendung einfach zusammenzuführen. Ich habe die Airport Status Checker-Anwendung unter der MIT-Lizenz veröffentlicht, damit Sie sich den Code ansehen können.

In der zweiten Folge dieser zweiteiligen Serie werde ich erläutern, wie es ist, im Windows Phone 7-Ökosystem zu arbeiten, um Unterstützung zu erhalten und Ihre Anwendung zu veröffentlichen.

Weitere Informationen zur Windows Phone 7-Entwicklung in TechRepublic

  • Windows Phone 7 mit den Augen eines Entwicklers
  • Umfrage: Benötigen Sie eine dritte große mobile Entwicklungsplattform?
  • Die kritischen Fehltritte von Microsoft bei der Entwicklung von Windows Phone 7
  • Umfrage: Kann Windows Phone 7 mit iPhone und Android konkurrieren?
  • Der Arbeitsmarkt ist heiß für die Entwicklung mobiler Geschäftsanwendungen

J.Ja.

Offenlegung von Justins Branchenzugehörigkeiten: Justin James hat einen Vertrag mit Spiceworks abgeschlossen, um Produktkaufhandbücher zu schreiben. Er hat einen Vertrag mit OpenAmplify, das Hapax gehört, über das Schreiben einer Reihe von Blogs, Tutorials und Artikeln. und er hat einen Vertrag mit OutSystems, um Artikel, Beispielcode usw. zu schreiben.

© Copyright 2020 | mobilegn.com