Freigeben über


Dieser Artikel wurde maschinell übersetzt.

Windows Phone 7-Anwendungen

Erstellen Sie datengesteuerte Anwendungen mit Windows Azure und Windows Phone 7

Danilo Diaz

In den letzten 30 Jahren haben wir eine Explosion in der Hardware-Computerindustrie gesehen. Von Mainframes auf Desktopcomputern, handheld-Geräte hält die Hardware leistungsfähigere abrufen, auch wenn es verkleinert wird. Entwickler haben, zu einem gewissen Grad, sind ein wenig spoiled durch diese Konstante Anstieg der Rechenleistung und erwarten nun unbegrenzte Computerressourcen auf jedes Gerät, für das Sie Anwendungen schreiben. Viele jünger Entwickler haben keinen Speicher einer Zeit, wenn die Größe und die Effizienz des Codes wichtige Faktoren wurden.

Der neueste Trend in der Entwicklung befindet sich in der Anstieg in der großen Beliebtheit von Smartphones begrüßen. Beim Codieren für Smartphone-Geräte haben viele Entwickler, um die Tatsache anzupassen, heutigen Telefone äußerst leistungsfähige sind, zwar im Vergleich zu Geräten von vor ein paar Jahren diese Einschränkungen konfrontiert. Diese Einschränkungen beziehen sich auf die Größe, die Prozessorleistung, Arbeitsspeicher und Konnektivität. Sie müssen verstehen, wie diese Einschränkungen zu umgehen, beim Erstellen von mobile Anwendungen gute Leistung und die bestmögliche Benutzererfahrung zu gewährleisten.

Mögliche Gründe für eine weniger optimale Anwendung Leistung kann vom Entwickler direkt auf eine schlechte Entscheidungen zugeschrieben werden. Allerdings sind in anderen Fällen einige dieser Faktoren nicht direkt im Steuerelement des Entwicklers. Eine schlechte Leistung Anwendung kann ein Symptom für eine langsame oder offline Drittanbieterdienst, verworfene mobile Breitbandverbindungen oder die Art der Daten, denen Sie bearbeiten (z. B. die streaming-Media-Dateien oder große Datenmengen) sein.

Alles, was die Ursache sein kann, muss sich die Leistung durch die Endbenutzer der Anwendung wahrgenommen zu einer der wichtigsten Aspekte der Softwareentwickler sein. In diesem Artikel werden einige allgemeinen Überlegungen zum Entwerfen von robuster, datengesteuerte Windows Telefon 7 Anwendungen in einer Weise, die ordnungsgemäß skalieren und bieten eine hervorragende Benutzerfreundlichkeit können behandelt.

Let’s zuerst einen Moment in Anspruch nehmen und richten Sie ein Szenario, in dem wir einige Entwurf und die Codierung Auswahlmöglichkeiten untersuchen können. Beispielsweise werden wir mit einer fiktiven Reisen Informationen-Anwendung arbeiten, die Informationen über die vom Benutzer ausgewählte Fluggesellschaft Flüge bereitstellt. Wie in Abbildung 1 zeigt den Hauptbildschirm der Anwendung eine Reihe von Datenelementen, einschließlich der aktuellen Wetter und Flug-Status. Sie können sehen, dass Anwendungen mehr Ausdruckskraft und datenzentrische werden, Entwickeln Sie etwas schwieriger wird. Es gibt einfach weitere Bereiche, in denen Ihr Code kurz liegen kann.

image: The Flight Information Sample App

Abbildung 1 der Flight Information-Beispiel App

Blockieren von UI-Thread

Let’s anhand der Benutzeroberfläche zu starten. Es ist leicht zu verstehen des Musters falsch durch entwerfen, die die Anwendung als, ob Sie für den Desktop Codierung sind also let’s nutzen einen Blick auf einige Telefon-spezifische Benutzeroberfläche Probleme.

Wenn eine Anwendung nicht wie erwartet auf Benutzerbefehle antwortet, kann die Auswirkungen auf die allgemeine Benutzerfreundlichkeit erheblich sein. Langsame Reaktion auf swipe, tippen oder pinch kann nachteilige für das gesamte Publikum der Anwendung sein. Dies sind jedoch ziemlich einfach Probleme vorhersehen und beheben, wie Sie sehen werden.

Sollten Sie ein Listenfeld. Wenn ein ItemTemplate ist das Laden von Daten aus einen Feed oder Bilder enthält, ist eine sehr gute Möglichkeit, die im UI-Thread blockiert wird und die Benutzeroberfläche wird angehalten, bis die Anfragen oder Berechnungen durchführen. Daher bei der Entwicklung die Benutzeroberfläche ein Ansatz ist für lange Berechnungen – einschließlich WebRequests – vom UI-Thread ab. Tatsächlich ist dies ein guter Ansatz für jede Anwendung, die mobile oder nicht.

Ein weiteres Problem, das möglicherweise Leistungsprobleme zu erstellen ist, wenn Sie eine Vielzahl von Elementen der ItemSource gebunden sind ohne Beschränkung Injection in das ListBox-Steuerelement. Ein besserer Ansatz wäre ein ObservableCollection-Objekt zu binden, und füllen Sie nur wenige Elemente in die Auflistung alle 20-30-ms. Dies hebt den UI-Thread für den Benutzer reagieren.

Im Fall von unserer Beispielanwendung sind wir auch die häufige Verwendung von Bildern auf dem Bildschirm vornehmen. Das Listenfeld-Steuerelement muss das Bild tatsächlich zu downloaden, um die Daten anzeigen. Während dies OK scheint, würde dieser Arbeit auf dem Benutzeroberflächenthread Stiftbewegung Eingaben den Benutzer blockieren. Laden von Bildern in einem Hintergrundthread löst eine Reihe von Problemen sowohl hinsichtlich der Anforderungen hinsichtlich des Arbeitsspeichers und Freigeben von UI-Thread, während gleichzeitig die Anwendung schneller machen.

Alle Informationen, die wir dem Benutzer anzeigen muss dargestellt werden. Wiedergabe erfordert Layouts, der Ausrichtung und Berechnung korrekt angezeigt. Weitere Ebenen der Benutzeroberfläche hinzugefügt werden, die der Berechnung und Darstellung der gesamten Erhöhung der Kosten. Obwohl Silverlight bereits die Benutzeroberfläche virtualisiert, nicht die Daten virtualisiert werden, die gebunden wird. Dies bedeutet, dass 10.000 Elemente an das ListBox gebunden, wenn wir Silverlight alle 10.000 ListItems instanziieren würde, bevor diese gerendert wurden.

Achten Sie darauf, für was Sie die Datenbindung und gebundenen so gering wie möglich zu halten. Wenn Sie große Mengen von Datenbindung zwischen Elementen behandeln müssen, sollten Sie dynamisch behandeln die Wiedergabe im Hintergrund. Dies gilt auch, Desktopanwendungen natürlich – die Auswirkungen dieser Entscheidungen ist nur auf einem Telefon ausgeweitet.

ValueConverters möglicherweise eine drastische Auswirkungen auf die Renderingleistung des, da Sie definiert sind, mithilfe von benutzerdefiniertem Code und die Wiedergabe nicht pre-determined und vor der tatsächlichen Element-Rendering und Layout zwischengespeichert.

Umgang mit Daten

Als Nächstes müssen wir über die Datenspeicherung in Windows Telefon 7 zu sprechen. Let’s einfach Abrufen auf den geraden: Es ist kein Modul für relationale Datenbanken Entwicklern zur Verfügung. SQL Server Compact (SQL CE) mit dem Windows-Telefon 7 Betriebssystem installiert ist, aber derzeit ist keine API, die Entwicklern zur Verfügung. So erstellen eine Datenbank zum Speichern von Anwendungsdaten, bringen Sie in unserem Beispiel Informationen – wird nicht funktionieren soll.

Andererseits ist es eine Vielzahl von Optionen zum Abrufen von Daten in und aus unserer Anwendung. Ein allgemeiner Ansatz besteht darin, einen Cloud-Dienst wie z. B. Windows Azure für die Dauerhaftigkeit der Daten verwenden. Viele der Technologien sind für die Erstellung der Dienstschicht der REST und SOAP-werden die am häufigsten verwendeten Anwendung verfügbar. SOAP ist die erste Wahl für viele Entwickler, aber wir glauben, dass REST einer-Methode effizienter und einfacher zu implementieren, die Datenanforderungen von bereitstellt.

Wir verwenden ein paar Methoden, die Daten für die Anwendung bereitstellen und wir können mithilfe von REST-Ausdrücke, wie diese zugreifen:

/Trip/Create/PHL-BOS-SEA/xxxx/2010-04-10
/Flight/CheckStatus/US743

REST kann wir XML- oder JSON für ein Nachrichtenformat verwenden.

Aus Web-Front-End-Sicht haben wir das ASP.NET MVC Framework (Asp. NET/Mvc) da es uns ermöglicht, verarbeitet die Anforderung und alle Arten von Markup mithilfe einer benutzerdefinierten Ansicht zurückzukehren.

Unserer Beispielanwendung muss sowohl die Tour Flug Informationen zu verarbeiten, damit wir erstellen einen FlightController und eine TripController, die Anforderungen für diese Informationen abfangen:

// GET: /Flight/CheckStatus/US743
public ActionResult CheckStatusByFlight(
  string flightNumber) {
  return CheckStatus(flightNumber, DateTime.Now);
}

// GET: /Flight/RegisterInterest/US743/2010-04-12
public ActionResult CheckStatus(
  string flightNumber, DateTime date) {
  Flight f = new Flight(flightNumber, date);
  GetFlightStatus(f);
  return new XmlResultView<Flight>(f);
}

Ist Datum, Vereinfachter Zugriff auf Methoden und Bandbreite, ein paar Bytes zu speichern, ist das Datum heute wir eine Tastenkombination zum Abrufen dieser Daten ohne Angabe implizit heute entwerfen können.

Zwischengespeicherte und persistente Daten

Flug-Status-Dienst ist ein Element in unserer Anwendung, die nicht in das Steuerelement, und daher werden Teil des Rätsels Leistung. Da eine beträchtliche Anzahl von Anforderungen von erfolgreichen Anwendung angezeigt werden kann, ist es wichtig, über eine Zwischenspeicherungsstrategie nachzudenken.

In der Regel, je näher der Flug Abreisedatum eingibt, kann je höher die Anzahl der Anforderungen für seine Informationen erwartet. Höhere Zahlen in der Nähe der gleichzeitigen Anforderungen können nicht nur die Leistung der Anwendung, sondern auch die Kosten im Zusammenhang mit speichern und Bearbeiten von Daten auswirken. Im allgemeinen Windows Azure Anwendungen antizipieren Bandbreite Zuschläge auf Anforderung und Rückgabe und Informationsdiensten Flug könnten auch Zugriff Gebühren anfallen. Die Menge der zurückgegebenen Daten müssen nicht mehr als die von der Anwendung erforderlich sein.

Die Plattform Windows Azure bietet ein breites Spektrum an Optionen für die Speicherung von Daten – aus Tabellen, blobs und relationalen Datenbank-wie Speicher über SQL Azure Warteschlangen. Wir haben beschlossen, SQL Azure zu verwenden, da es bekannte Programmiertechniken für SQL Server verwendet und kann wir einfach speichern und permanente Reise Informationen und die zwischengespeicherten Flug-Daten zugreifen.

Abbildung 2 zeigt die einfache Speicherschicht, die wir mit Entity Framework entworfen.

image: Flight Data Storage Schema

Abbildung 2 Flight Data Storage Schema

Zurückgeben von Daten

Wir zurück über unsere benutzerdefinierte Ansicht Daten an den Client. Da ASP.NET MVC verwendet wird, muss jede Ansicht von ActionResult ableiten und ExecuteResult implementieren.

Wie bereits erwähnt, stellen wir oder JSON als auch XML-Darstellungen der Fluginformationen über unsere REST-Dienst bereit. Let’s sehen Sie sich die Option XML-erste. Das Serialisierungsprogramm zum Erzeugen von XML ist einen Typ, erstellen wir eine Generika-Klasse wie in Abbildung 3 erforderlich.

Abbildung 3 XML serialisieren

public class XmlResultView<T> : ActionResult {
  object _model = null;
  public XmlResultView(object model) {
    this._model = model;
  }

  public override void ExecuteResult(ControllerContext context) {
    // Create where to write 
    MemoryStream mem = new MemoryStream();

    // Pack characters as compact as possible, 
    // remove the decl, do not indent.
XmlWriterSettings settings = new XmlWriterSettings() { 
      Encoding = System.Text.Encoding.UTF8, 
      Indent = false, OmitXmlDeclaration = true };
    XmlWriter writer = XmlTextWriter.Create(mem, settings);
    
    // Create a type serializer
    XmlSerializer ser = new XmlSerializer(typeof(T));

    // Write the model to the stream
    ser.Serialize(writer, _model);

    context.HttpContext.Response.OutputStream.Write(
      mem.ToArray(), 0, (int)mem.Length);
  }
}

Wir könnten genauso leicht mit JSON für unsere Daten arbeiten. Das einzige Element der unsere Lösung, die ändern würde, wäre der Inhalt der ExecuteResult-Methode. JsonResult können wir die JSON-Rückgabe aus unserem Dienst in nur wenigen Codezeilen erzeugt:

// Create the serializer
var result = new JsonResult();
// Enable the requests that originate from an HTTP GET
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
// Set data to return
result.Data = _model;
// Write the data to the stream
result.ExecuteResult(context);

Speichern von Daten mit dem tatsächlichen Gerät was? Es würde nicht sinnvoll, die Anwendung Daten aus dem Dienst zu erzwingen, jedes Mal, wenn der Benutzer Zugriff auf die Reise Informationen benötigt. Es gibt zwar keine relationalen Datenspeicher in Windows Telefon 7, haben Entwickler Zugriff auf ein Feature namens Isolated Storage. Dies funktioniert genau wie Silverlight 4 isolierten Speicher, aber ohne eine Größenbeschränkung.

Es gibt zwei Hauptmethoden, die müssen Sie das Speichern und Abrufen von Daten auf dem Telefon: SaveData und GetSavedData. Beispiele, die anzeigt, wie wir dies für die Anwendung der Flug-Informationen verwenden würden werden Abbildung 4 angezeigt.

Abbildung 4 Speichern und Abrufen von lokale Daten

public static IEnumerable<Trips> GetSavedData() {
  IEnumerable<Trips> trips = new List<Trips>();
  try {
    using (var store = 
      IsolatedStorageFile.GetUserStoreForApplication()) {
      string offlineData = 
        Path.Combine("TravelBuddy", "Offline");
      string offlineDataFile = 
        Path.Combine(offlineData, "offline.xml");

      IsolatedStorageFileStream dataFile = null;

      if (store.FileExists(offlineDataFile)) {
        dataFile = 
          store.OpenFile(offlineDataFile, FileMode.Open);
        DataContractSerializer ser = 
          new DataContractSerializer(
          typeof(IEnumerable<Trips>));

        // Deserialize the data and read it 
        trips = 
          (IEnumerable<Trips>)ser.ReadObject(dataFile);
        dataFile.Close();
      }
      else
        MessageBox.Show("No data available");
    }
  }

  catch (IsolatedStorageException) {
    // Fail gracefully
  }

  return trips;
}

public static void SaveOfflineData(IEnumerable<Trips> trip) {
  try {
    using (var store = 
      IsolatedStorageFile.GetUserStoreForApplication()) {

      // Create three directories in the root.
store.CreateDirectory("TravelBuddy");

      // Create three subdirectories under MyApp1.
string offlineData = 
        Path.Combine("TravelBuddy", "Offline");

      if (!store.DirectoryExists(offlineData))
        store.CreateDirectory(offlineData);

      string offlineDataFile = 
        Path.Combine(offlineData, "offline.xml");
      IsolatedStorageFileStream dataFile = 
        dataFile = store.OpenFile(offlineDataFile, 
        FileMode.OpenOrCreate);

      DataContractSerializer ser =
        new DataContractSerializer(typeof(IEnumerable<Trip>));
      ser.WriteObject(dataFile, trip);
                   
      dataFile.Close();
    }
  }

  catch (IsolatedStorageException) {
    // Fail gracefully
  }
}

Im Zusammenhang mit der Netzwerk-Fehler

Die von mobilen Geräten verwendeten Netzwerke können weit Variable Konnektivität haben – manchmal immer vollständig aufgrund von Standort, Überlastung oder auch manuell trennen Benutzer nicht verfügbar (im Fall von Flugzeug-Modus beispielsweise). Sie müssen dies als eine Tatsache Of Life akzeptieren. Als Entwickler von mobilen Anwendungen müssen wir dies berücksichtigen beim Erstellen von Anwendungen.

Eine andere Art von Netzwerkfehlern ist Layer-Dienstfehler. Viele mobile Anwendungen belegen Daten von Fremdanbieter-Dienste. Diese Dienste können nicht mit Service Level-Vereinbarungen, die an der abhängig von der Anbieter die Anwendung lässt stammen. Mit anderen Worten, es befindet sich außerhalb des Steuerelements und müssen Sie für den Umgang mit Ausfälle vorbereitet sein.

Unabhängig von der Quelle im Netzwerk vorliegt müssen Sie dennoch die bestmögliche Benutzererfahrung mit möglichen bereitzustellen. Sie müssen bieten einige Funktionen im Falle eines beliebigen Typs im Netzwerk vorliegt. Für unsere Anwendung für Flugsimulatoren Status bedeutet dies, dass so viele Informationen wie möglich zugreifen, auch wenn die Netzwerkverbindung getrennt von dem Server oder der Client-Seite wird dem Benutzer ermöglicht werden soll.

Es gibt zahlreiche Möglichkeiten, dies zu erreichen. Im Moment konzentrieren wir auf drei einfache Möglichkeiten, das in denen dies erreichen kann: Rufen Sie die Daten ein, während Sie die Daten lokal zwischenspeichern können, und Zwischenspeichern von Daten auf einem Server, die Sie steuern.

Mithilfe von Push-Benachrichtigungen

Der Benutzer Informationen für die Reise in die Anwendung ein, werden die Informationen zu einem Dienst Wolke hochgeladen werden. Der Dienst wird dann die verschiedenen Dienste abrufen zu halten, die zugehörigen Daten Flug und Wetterberichte bereitstellen. Sucht auch nach Änderungen an den Daten im Laufe der Zeit wie eine Statusänderung Flug oder am Flughafen eine Verzögerung meldet.

Wenn eine Änderung gefunden wird, erhalten Sie diese Informationen an die Benutzer schnell und effizient wie möglich werden soll. Eine Möglichkeit, dies ist für den Dienst, die Informationen an die Clientanwendung zu übertragen. Dies stellt den Benutzer den Zugriff auf die aktuellsten verfügbaren Daten im Moment bereit, wenn, den die Daten zur Verfügung steht. Da die Daten an den Client abgelegt wurde, sind die Daten verfügbar, selbst wenn der Benutzer seine Netzwerkverbindung verliert.

Wir erreichen mit unserem Windows Azure Service dies mithilfe von Windows Telefon Push-Benachrichtigung. Das Feature Windows Telefon Push Notification besteht aus drei Komponenten: Überwachen von Diensten, die Push-Benachrichtigungsdienst von Microsoft und eine Methode für die Nachrichtenverarbeitung.

Ein Monitor-Dienst ist ein Dienst Wolke, der ständig neue Informationen für unsere Anwendung aussieht. Später werden wir dies näher erläutert.

Push-Benachrichtigungsdienst ist Teil von Microsoft gehosteten Dienste, die zum relay von Nachrichten an Windows Telefon 7-Geräte verwendet werden. Dieser Dienst ist für alle Windows-Telefon 7 app-Entwickler verfügbar.

Die Handlermethode Nachricht verfügt wie der Name bereits sagt: Er empfängt lediglich Nachrichten von Push-Benachrichtigungsdienst.

Es gibt drei Typen der Standard-Benachrichtigung in Windows Telefon 7: Kachel, Push und Toast-Benachrichtigungen. Benachrichtigungen sind ein wichtiger Bestandteil der Benutzererfahrung und Ihre Verwendung sorgfältig beachtet werden muss. Sich wiederholende oder Eindringversuch Benachrichtigungen beeinträchtigt von der Anwendung und andere auf dem Gerät die Leistung. Sie können Benutzern auch ärgern. Betrachten Sie die Häufigkeit aus, an die Benachrichtigungen gesendet werden und welche Arten von Ereignissen, die die Aufmerksamkeit der Benutzer abgerufen werden soll.

In Windows 7 Telefon sind Benachrichtigungen per Batchverarbeitung, übermittelt, die Transaktion möglicherweise nicht Sofortnachrichten. Die Aktualität der Benachrichtigung ist nicht gewährleistet, und die Entscheidung, wie die Benachrichtigung an den Client übermittelt wird durch den Dienst;der Dienst wird am besten bestimmen, wie schnell es die Nachricht an das Telefon übermitteln.

Der Workflow für Pushbenachrichtigungen ist:

  1. Clientanwendung fordert eine Channel-Verbindung mit Push-Benachrichtigungsdienst.
  2. Push-Benachrichtigungsdienst antwortet mit der Channel-URI.
  3. Die Clientanwendung sendet eine Nachricht an den Überwachungsdienst mit der Push-Benachrichtigungsdienst-Channel-URI als auch eine Nutzlast.
  4. Der Überwachungsdienst eine Änderung von Informationen (Flug absagen, Flug Verzögerungen oder Wetter-Warnungen in unserer Beispielanwendung) erkennt beendet eine Nachricht an den Push-Benachrichtigungsdienst.
  5. Push-Benachrichtigungsdienst überträgt die Nachricht an das Gerät von Windows Telefon 7.
  6. Nachrichten-Handler verarbeitet die Nachricht auf dem Gerät.

Lokales Zwischenspeichern von Daten

Eine weitere Möglichkeit, um Daten für Ihre Anwendung verfügbar zu machen, besteht darin, lokal zwischengespeichert, damit in der Benutzeroberfläche immer einige Daten ist. Dann können Sie anderweitig im Hintergrund verwenden (sofern möglich) die lokalen Daten aktualisieren. Der Vorteil dieser Methode ist die Anwendung laden und verwendet werden schnell selbst wenn Informationen aktualisiert, hat hinter den Kulissen asynchron erfolgen kann.

Kurz gesagt, verwenden Sie isolierten Speicher, um die aktuellsten Daten gespeichert. Beim Öffnen der Anwendung es sofort holt alle Daten im lokalen isolierten Speicher verfügbar und rendert ihn. In der Zwischenzeit Ruft die Anwendung den Windows-Dienst Azure aktualisierte Informationen. Wenn neue Informationen gefunden wird, hat es serialisiert und an das Gerät übertragen, isolierte Speicherung aktualisiert wird und die Benutzeroberfläche erneut mit aktualisierten Informationen zu rendern. Für eine bessere Benutzerfreundlichkeit sollten Sie in der Benutzeroberfläche anzuzeigen, Uhrzeit und Datum der Informationen aktualisiert wurde.

Auf eine Randnotiz bei Verwendung die Anwendung des Entwurfsmusters Model-View-ViewModel (MVVM) kann die Aktualisierung der Benutzeroberfläche über Silverlight-Datenbindungs-Features geschieht automatisch. Weitere Informationen über MVVM und Silverlight finden Sie unter msdn.microsoft.com/magazine/ff798279-Robert-McCarter-Artikel “ Probleme und Lösungen mit Model-View-ViewModel, ”.

Zwischenspeichern von Daten auf dem Server

Ist ein Boden Mitte zwischen Daten direkt in Ihre Anwendung zu pushen, sobald Sie verfügbar sind und Speichern von Daten auf dem Gerät sind: Daten von Fremdanbieterdiensten Grabbing und in Ihrer Anwendung Wolke Zwischenspeichern, bis die Anwendung Windows Telefon 7 es anfordert.

Dieses Verfahren erfordert eine neue Ebene der Abstraktion in Ihrer Anwendung. Im Wesentlichen ist das Ziel die Abhängigkeit von einem Fremdanbieter-Dienst aus der Anwendung entfernen. Ihr Dienst abruft und speichert die Daten für alle Fremdanbieter-Dienstabhängigkeiten. Wenn der Drittanbieter-Dienst ausfällt, haben zumindest einige Daten im Cache Sie, die Sie für die Anwendung auf Geräten bereitstellen können.

Ein Dienst wie dies leicht geklonten oder um erweiterte Pull Daten aus verschiedenen, daher Diensten verringert werden konnte die Abhängigkeit von jeder einen Kreditor oder die Datenquelle, die Änderung Kreditoren wesentlich erleichtert wird.

Weitere Informationen über das Einrichten von Daten konzentriert Lösungen in Windows Azure finden Sie unter “ Fueling your's Engine mit Windows Azure Anwendungsspeicher ” von Kevin Hoffman und Nathan Dudek (msdn.microsoft.com/magazine/ee335721 ). Darüber hinaus ist zwar nicht direkt auf Windows Telefon 7 Szenarien konzentriert sich Paul-Stubb-Artikel “ Create a Silverlight 4 Web Part für SharePoint 2010, ” gute Lesen auf datengebundenen Entwurf für Silverlight und Web Services (msdn.microsoft.com/magazine/ff956224 ).

Überwachen des Dienstes

Wie bereits erwähnt, ist das Feature zur Benachrichtigung über ein wichtiger Bestandteil unserer Flug-Status-Anwendung. Dieses Feature ist die tatsächlich mehrere verschiedene Dienste innerhalb der Anwendung aus. Vielleicht die Nützlichkeit der Anwendung am wichtigsten, der Überwachungsdienst regelmäßig abfragt Fremdanbieter-Datendienste und überträgt Informationen wie Flug Verzögerungen, Flughafen Verzögerungen und Wetter Benachrichtigungen an das Gerät zurück.

In unserer Anwendung der Überwachungsdienst liest die aktuelle Liste der Flüge und Flughafen Codes und verwendet diese Informationen, um relevante Daten zu sammeln. Diese Informationen werden dann wieder in die Datenbank SQL Azure als ein Eintrag im Cache gespeichert, so, dass es von dem zuvor gezeigten /Flight/CheckStatus-Dienst abgerufen werden kann. Unsere Überwachungsdienst wird mit einer Windows Azure Worker-Funktion implementiert. Das Hauptziel für diese Rolle Worker ist beim Abrufen von Statusinformationen zu Flug Verzögerungen und Flughafen Status für jeden Benutzer Flug-Auflistung. Die Häufigkeit des Pull-Update wird erhöht, da es den geplanten Flug Abflugszeit nähert.

Für einige Ideen dazu, wie einen solcher Dienst implementiert werden kann, müssen Sie checken Sie das Projekt veröffentlichen Azure-abonnieren auf CodePlex (azurepubsub.codeplex.com ) oder Blogbeitrag Joseph-Fultz, “ Migrating Windows-Dienst für Azure Worker-Rolle: Bild mit Storage Konvertierungs-Beispiel ” (bit.ly/aKY8iv ).

Zusammenfassung

Hoffentlich haben wir Ihnen eine umfassende Übersicht über die Probleme gegeben beim Entwerfen einer datengesteuerten Anwendung von Windows Telefon 7 berücksichtigt werden müssen. Spielen Reaktionsfähigkeit der Benutzeroberfläche sowie die Zeit Zugriff auf Ihre Datenquellen, die für Ihre Anwendung eine hervorragende Benutzerfreundlichkeit.

Beginnen Sie mit Joshua-Partlow-Artikel “ erste Schritte mit Windows-Telefon Entwicklungstools ” (msdn.microsoft.com/magazine/gg232764 ), wenn Sie um etwas tiefer zu untersuchen. Sie auch sollten, finden im Artikel “ Entwickeln und Bereitstellen von Windows Azure Anwendungen in Visual Studio 2010, ” von Jim Nakashima, Hani Atassi und Danny Thorpe (msdn.microsoft.com/magazine/ee336122 ).

Entwicklung von Windows Azure und Windows Telefon 7 zusammengestellt, betrachten Sie Artikel Ramon Arjona, “ Windows Telefon- und die Wolke – Einführung ” (msdn.microsoft.com/magazine/ff872395 ).

Danilo Diaz is a developer evangelist for the Microsoft Mid-Atlantic State district. In dieser Rolle hilft er Entwicklern, die Microsoft-Produktangebote und Strategie kennen.

Max Zilberman is an architect evangelist in the NYC and Mid-Atlantic States districts. Vor zur Teilnahme an Microsoft beitrat Zilberman verschiedene leitender technischer auf einer oberen Ebene Zustand Insurer.

Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel: Ramon Arjona