Verwenden von OData unter Windows Phone 7

Meine ersten Erfahrungen mit der Entwicklung von Windows Phone 7 waren gemischt. Eines der Dinge, die ich als große Enttäuschung empfand, waren die Einschränkungen der APIs und Bibliotheken, die dem Entwickler zur Verfügung standen. Trotzdem gefällt mir die Windows Phone 7-Entwicklung, weil ich damit meine vorhandenen .NET- und C # -Fähigkeiten nutzen und mich in der Visual Studio 2010-Umgebung halten kann, die mir über die Jahre sehr angenehm war. Trotz meiner anfänglich schlechten Erfahrungen mit Windows Phone 7 war ich bereit, noch ein paar Versuche zu unternehmen.

Eine der Apps, die ich machen wollte, war eine einfache Anwendung, um die lokalen Kriminalitätsraten anzuzeigen. Die Regierung hat diese Daten auf Data.gov, aber sie waren nur als Datenextrakt verfügbar, und ich hatte wirklich keine Lust, einen Webdienst um einen Datensatz herum aufzubauen, also habe ich die Idee zurückgestellt. Aber dann stellte ich fest, dass das "Dallas" -Projekt endlich abgeschlossen war und der Azure Marketplace DataMarket live war. Leider sind momentan nur wenige Datensätze darauf verfügbar, aber einer davon war zufällig der von mir gewünschte Datensatz und war kostenlos verfügbar. Sprechen Sie über viel Glück! Ich habe schnell eine neue Windows Phone 7-Anwendung erstellt und versucht, die Referenz hinzuzufügen, um dann in meinen Tracks mit dem folgenden Fehler gestoppt zu werden: "Dieser Dienst kann vom aktuellen Projekt nicht verwendet werden. Überprüfen Sie, ob das Projektziel-Framework diesen Diensttyp unterstützt . "

Es stellte sich heraus, dass Windows Phone 7 ohne den Zugriff auf WCF-Datendienste gestartet wurde. Ich bin mir nicht sicher, wer diese Entscheidung getroffen hat, da Windows Phone 7 hervorragend zu Azure Marketplace DataMarket passt, ziemlich nützlich von Webdiensten ist, um etwas Nützliches zu tun, und Microsoft versucht, WCF Data Services voranzutreiben. Meine ersten Untersuchungen ergaben, dass ab März 2010 nur ein CTP diese Informationen liefert. Ich habe mich umgehört und herausgefunden, dass der Code dafür kürzlich bei PDC angekündigt wurde und kostenlos auf CodePlex verfügbar ist.

Beachten Sie, dass Windows Phone 7-Anwendungen bei der Verarbeitung reagieren müssen und das Abbrechen von "lang laufenden" Prozessen unterstützen müssen. Nach meiner Erfahrung mit dem Antragszertifizierungsprozess wurde eine App abgelehnt, weil sie die Stornierung nicht unterstützte, obwohl die Bearbeitung höchstens drei Sekunden dauern würde. Daher bin ich jetzt sehr vorsichtig, um sicherzustellen, dass meine Anwendungen die Stornierung unterstützen.

Die Verwendung der OData-Bibliothek (Open Data Protocol) ist ein Kinderspiel. Folgendes habe ich getan, um einen OData-Dienst aus meiner Windows Phone 7-Anwendung verwenden zu können:

  1. Laden Sie die Datei ODataClient_BinariesAndCodeGenToolForWinPhone.zip herunter.
  2. Entpacke es.
  3. Wechseln Sie im Windows Explorer zur Seite Eigenschaften für jede der DLLs und klicken Sie auf die Schaltfläche Entsperren.
  4. Fügen Sie in meiner Windows Phone 7-Anwendung in Visual Studio 2010 einen Verweis auf die Datei System.Data.Services.Client.dll hinzu, die ich entpackt habe.
  5. Öffnen Sie eine Eingabeaufforderung und navigieren Sie zum Verzeichnis der entpackten Dateien.
  6. Führen Sie den folgenden Befehl aus: DavaSvcUtil.exe / uri: UrlToService / out: PathToCSharpFile (in meinem Fall habe ich https://api.datamarket.azure.com/Data.ashx/data.gov/Crimes für die URL und . \ DataGovCrime verwendet .cs für meine Ausgabedatei). Dadurch wird eine stark typisierte Proxy-Klasse für den Datendienst erstellt.
  7. Ich habe diese Datei in das Verzeichnis meiner Visual Studio-Lösung kopiert und sie dann der Lösung hinzugefügt.
  8. Ich habe meinen Code für Stornierung und Ausführung erstellt. Da ich nichts besonders Kompliziertes mache und die OData-Komponente bereits die asynchrone Verarbeitung unterstützt, habe ich der Einfachheit halber einen Backdoor-Hack-Ansatz gewählt. Ich habe nur Boolesche Werte, die den Status "Laufen" und "Abgebrochen" anzeigen. Wenn der Ereignishandler für den Abschluss der Serviceanforderung feststellt, dass die Anforderung abgebrochen wurde, wird nichts unternommen.

Es gab ein großes Problem: Die OData-Clientbibliothek unterstützt keine Authentifizierung, zumindest nicht auf einer leicht zugänglichen Ebene. Glücklicherweise gibt es mehrere Problemumgehungen.

  • Die erste Option wurde bei PDC empfohlen: Erstellen Sie die URL, um die Daten manuell abzufragen, und verwenden Sie das WebClient-Objekt, um die XML-Daten herunterzuladen und anschließend manuell zu analysieren (z. B. mithilfe von LINQ to XML). Dies gibt Ihnen die ultimative Kontrolle und ermöglicht Ihnen jede Art von Authentifizierung, die Sie möchten. Sie geben jedoch Dinge wie stark typisierte Proxy-Klassen auf, es sei denn, Sie möchten den Code dafür selbst schreiben (viel Spaß).
  • Die zweite Alternative, die der Benutzer sumantbhardvaj in der Diskussion für die OData-Clientbibliothek vorgeschlagen hat, besteht darin, sich in das SendingRequest-Ereignis einzuhängen und die Authentifizierung hinzuzufügen. Sie finden seinen Beispielcode auf der CodePlex-Site. Ich persönlich habe dies nicht versucht, daher kann ich nicht für das Ergebnis bürgen, aber es scheint mir ein sehr vernünftiger Ansatz zu sein.
  • Eine andere Alternative, die mir vorgeschlagen wurde, ist die Verwendung der Hängemattenbibliothek.

Für einfache Datensätze ist die WebClient-Methode wahrscheinlich der einfachste Weg, dies schnell und ohne neue Kenntnisse zu erledigen.

Es ist zwar bedauerlich, dass die sofort einsatzbereite Erfahrung mit der Arbeit mit OData nicht so ist, wie sie sein sollte, aber es gibt genügend Optionen, die Sie nicht im Dunkeln lassen müssen.

Weitere Informationen zu Windows Phone 7 auf TechRepublic

  • Mein erstes Windows Phone 7 App-Entwicklungsprojekt
  • Das Windows Phone 7 App Hub-Erlebnis
  • Optimieren Sie den Datenzugriff für Handy-Apps
  • Windows Phone 7 mit den Augen eines Entwicklers
  • Samsung Focus, ein Kraftpaket für Windows Phone 7
  • Die Windows Phone 7-Fokus-Seite von TechRepublic

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