Übertragen von Nachrichten in der UWP-App
Die Übertragung von Nachrichten erfolgt in den folgenden Schritten:
1.Die Daten werden von der UWP-App an die (in einem SolutionView-Steuerelement der UWP-Seite angezeigte) Lösung übertragen.
2.Die Lösung sendet die Daten an den Workflow der Lösung auf MobileTogether Server, wo die Lösung auf die übliche Art und Weise verarbeitet wird.
3.Die Ergebnisse werden an das SolutionView-Steuerelement retourniert, wo sie (i) als Teil der Lösung angezeigt werden können und/oder (ii) an die UWP-App zurück übergeben werden, um dort angezeigt oder weiter verarbeitet zu werden.
Nachrichtenübertragungsmechanismus
Eine Nachricht, die von einer UWP-App an den Server gesendet wird, wird als eingebettete Nachricht bezeichnet. Dafür werden drei MobileTogether-Funktionalitäten verwendet:
•Das BeiEingebetteterNachricht-Ereignis, das als Seitenereignis zur Verfügung steht;
•Die $MT_EMBEDDEDMESSAGE-JSON-Seitenquelle, die automatisch generiert wird, wenn für die Ereignisbehandlung von BeiEingebetteterNachricht mindestens eine Aktion definiert ist.
•Die Eingebettete Nachricht zurück-Aktion, die einen serialisierten JSON-String als Rückmeldung sendet;
Diese Funktionalitäten werden in der UWP-App folgendermaßen für die Nachrichtenübertragung verwendet:
•Das SolutionView-Steuerelement hat nun eine Methode ProcessEmbeddedMessage(msg), die (i) die $MT_EMBEDDEDMESSAGE JSON-Seitenquelle befüllt und (ii) das Seitenereignis BeiEingebetteterNachricht auslöst.
•Das SolutionView-Steuerelement hat nun ein Ereignis namens EmbeddedMessage, das ausgelöst wird, wenn in der gehosteten Lösung die Aktion Eingebettete Nachricht zurück ausgeführt wird. Dieses Ereignis kann synchron oder asynchron verarbeitet werden, z.B. mit Hilfe des unten aufgelisteten Standard-UWP-Rückstellungsmechanismus.
void EmbeddedMessage(object sender, EmbeddedMessageEventArgs e)
{
var deferal = e.GetDeferral();
... Do some parallel processing of e.Message ...
deferal.Complete();
}
Nachrichtenübertragung: Schritt für Schritt
Unten wird ausführlich Schritt für Schritt beschrieben, wie die Nachrichtenübertragung abläuft.
UWP-App an die Lösung auf dem MT-Server
1.Mit Hilfe der ProcessEmbeddedMessage(msg)-Methode in Ihrem Code können Daten von der UWP-App an das SolutionView-Steuerelement übertragen werden. Die Daten müssen als serialisiertes JSON-Objekt gesendet werden. (Wenn diese Daten im XML-Format sind, muss das XML-Dokument in ein JSON-Objekt verpackt sein.)
2.Die Ziellösung muss ein BeiEingebetteterNachricht-Ereignis haben, für das mindestens eine Aktion definiert ist. Wenn in diesem Fall eine eingebettete Nachricht von der Lösung empfangen wird, wird automatisch eine $MT_EMBEDDEDMESSAGE-JSON-Seitenquelle erstellt und befüllt. Diese Seitenquelle hat ein Root-Element namens json, während der Inhalt ihrer Struktur aus der eingebetteten Nachricht stammt.
3.Am Server kann die $MT_EMBEDDEDMESSAGE-JSON-Seitenquelle über Aktionen des BeiEingebetteterNachricht-Ereignisses oder auf eine beliebige andere Art verarbeitet werden. Damit ist die erste Hälfte der Übertragung - von der UWP-App an MobileTogether Server abgeschlossen. Die verarbeiteten Daten können nun an die Lösung zurückgesendet werden.
MT-Server an die Lösung in der UWP-App
4.Die Eingebettete Nachricht zurück-Aktion sendet eine Antwortnachricht in Form eines serialisierten JSON-String an das SolutionView-Steuerelement. Wenn Sie die Aktion definieren, können Sie festlegen, welche Nachricht gesendet werden soll. So sehen Sie z.B. in der Abbildung unten, dass in der Aktion definiert ist, dass die zurückzusendende Nachricht die gesamte in der $MT_EMBEDDEDMESSAGE-JSON-Seitenquelle gespeicherte Datenstruktur ist, d.h. der json-Node der Struktur und sein Inhalt.
5.Wenn die Eingebettete Nachricht zurück-Aktion der Lösung ausgeführt wird, wird das EmbeddedMessage-Ereignis des SolutionView-Steuerelements ausgelöst. Die vom SolutionView-Steuerelement erhaltene eingebettete Nachricht kann nun vom Code Ihrer UWP-App verarbeitet werden.