Beste Möglichkeit zum verwalten der Netzwerk-Status in Windows Mobile
Habe ich eine .NET Compact Framework 3.5-Programm, das verwendet wird als eine "Gelegentlich Verbunden' line of business (LOB) Anwendung. Wenn Sie es sehen können ein online webservice, es wird verwendet, dass für die Daten zugreifen, aber wenn Netzwerkverbindung verloren, wird die Verwendung eines lokalen cache.
Was ist der beste Weg, um mit all den Anschlussmöglichkeiten und der Zustand ändert?
- OpenNetCF die ConnectionManager-Klasse?
- Microsoft.WindowsBile.Zustand.SystemState?
- - API-Aufrufe?
Wie schaffst du es, zu verstehen den Unterschied zwischen WLAN, eine docking-Station, GPRS-und die beste Methode zur Verfügung?
Jemand eine Anleitung hierzu?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Sie einfach erstellen Sie eine einfache shared-Klasse, kann ich rufen wie diese:
Dann alle meine aktuellen business-Klassen/Funktionen verwenden können, dies zu verbergen, diese Gemeinheiten aus dem UI-code.
Den MyConnectionClass' Eigenschaft IsConnected, wäre so etwas wie dieses:
Es wird auch empfohlen, dass Sie die Umfrage zum status der Verbindung mit einem hintergrund-thread und dann Feuer ein Ereignis zurück zu der Haupt-app-thread, wenn sich der Status ändert. Hier ist der ausführliche Kommentar:
Testen und die Reaktion auf Netzwerk-verbindungen in den .NET Compact Framework
EDIT:
Nun, für GPRS Unterstützung:
Wenn Sie der Verwendung von Web-Anfragen oder Web-Services, die Rahmen um die Verbindung für Sie. Wenn Sie Tauchen tiefer in TCPClient oder UDPClient, müssen Sie behandeln Sie mit dem Verbindungs-manager-API, die sich etwa so:
Nehmen und zu nutzen, dies zu tun:
Diese wurde von Anthony Wong blog hier:
Anthony Wong
Und denken Sie daran, Sie müssen nur dieses für die untere Ebene TCP-oder UDP-Zeug. HTTPRequests brauche das nicht.
Was über die Verwendung der SystemState - Klasse im Microsoft.WindowsMobile.Status namespace? Überwachen Sie den aktuellen Zustand des Systems und erhalten Benachrichtigungen, wenn sich der Zustand ändert. Sehen Sie diese post für etwas code.
SystemState ist nur über den status der verbindungen. Sie können eine spezielle Verbindung über den ConnectionManager. Ich empfehle die Lektüre dieser Artikel. Wenn Sie verwenden .NET Compact Framework 3.5, eine verwaltete API enthalten ist. Sie können auch OpenNetCF ConnectionManager.
Ich versuche zu schreiben, Mobile apps, so dass Sie gar nicht wissen, es gibt ein Netzwerk eingebunden. Ich halte gut-genug-Validierung Daten lokal und dann schreiben-Transaktionen, um eine lokale queue, die klärt, während verbunden; der queue-reader beinhaltet einen timer zu wiederholen, wenn nicht angeschlossen. Queue-Nachrichten sind bidirektional, so dass lokale erfrischt geliefert werden kann als gut. Basic Message-Queue-Muster.
Dies ermöglicht es mir, behandeln Sie die Netzwerk-Verbindung auf einfachste Weise die Verwendung der basic-socket-open/close/read/write/ioctl Logik, die ' s sehr portabel; und Ihre verbindungen müssen nicht anhalten, jede bedeutende Zeit. (Ich würde es hassen zu denken, was erforderlich wäre, um zu bleiben in-sync mit allen MS-Architektur-Varianten im Laufe der letzten Jahre - die immer noch nicht entschieden aus IMHO.)
Fand ich, dass das Microsoft.WindowsMobile.Zustand.SystemState reporting von Netzwerk-verbindungen werden unzuverlässig. Dies war 6.0 und früher. Ich nicht umfassend getestet, aber es wurde aufgegeben, als würde es sagen, es gab keine Verbindung, wenn es war.