//Build News: Von App zu App zu App zu App: App-To-App Kommunikation mit Windows 10
Welche Möglichkeiten hat eine App auf Windows 8 oder 8.1 Daten mit einer anderen App auszutauschen oder mit dieser kommunizieren? Nicht allzu viele. Der Hintergrund ist, dass sich die App im Container befindet und per Definition sichergestellt werden soll, dass die App keinen Schaden auf dem System anrichten kann. Die guten Neuigkeiten: Es sind mit Windows 10 neue Möglichkeiten hinzugekommen, die sinnvoll und spannend für Entwickler sind.
Also, mal überlegen, was in der Vergangenheit mit Windows 8.1 schon so alles möglich war:
Share Contract
Beim Share Contract handelt es sich um einen Charm, der durch Benutzerinteraktion aktiviert wird. Der Anwender gibt dadurch aktiv dem System zu verstehen, dass er Daten aus Anwendung A an Anwendung B weitergeben will. Welche Daten das sind, entscheidet im Detail die Anwendung – meist sind es die, die ohnehin gerade zu sehen sind. Die Zielanwendung wählt der Anwender ebenso selbst aus, sie ist abhängig von den zur Verfügung gestellten Daten.
https://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx#share_contract
File Open Picker Contract
Der File Picker Contract erlaubt es Apps in anderen Apps nach Daten zu suchen. Eine App kann auf diese Weise die eigenen Daten für den File Picker "freigeben". Zugriff erfolgt aber immer nur durch Benutzerinteraktion.
https://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx#file_open_picker_contract
Launch URI
Mittels Launch URI kann eine App eine andere App starten. Das war's auch schon.
https://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx#_uri_activation___extension_
Brokered Components (Der Holzhammer)
Über Brokered Components kann man viele Dinge tun, die das Sicherheitskonzept ein Stück weit unterlaufen. Deshalb funktioniert das auch nur im Unternehmensumfeld. Zugriff auf Daten "fremder" Apps ist nicht möglich, dafür aber der Zugriff auf die volle Power des Systems.
Das war ein kurzer Rückblick auf Windows 8(.1). Was ist jetzt neu mit Windows 10 hinzugekommen?
Neu hinzugekommen sind folgende Methoden
Launch specific app
Es ist jetzt möglich nicht nur eine App auf Basis eines URI-Schemas zu starten, sondern auch ganz gezielt eine bestimmte App anzusprechen. Zuvor hat immer die "Gefahr" bestanden, dass eine falsche App zufällig das gleiche URI-Scheme definiert hat. Über die Angabe des PackageFamilyNames ist jetzt für Eindeutigkeit gesorgt.
Send file token & data
Es ist möglich von einer App an die andere App ein Token für den Zugriff auf Dateien weiterzugeben und damit Daten direkt auszutauschen. Das heißt zusätzlich zum Starten der App kann z.B. auch angegeben werden, welche Datei in der App geöffnet werden soll.
Launch for Results
Es ist jetzt möglich mittels "Launch for Results" eine andere App "nur mal kurz" zu starten. Das bedeutet, man startet die andere App, macht darin z.B. eine Berechnung und navigiert dann zurück zur ursprünglichen App. Die Idee ist hier, dass mehrere Apps auf diese Weise sinnvoll zusammen Arbeiten können. App A startet also App B. Während B läuft kann auf App A nicht zugegriffen werden. App B macht irgendwas (z.B. eine Berechnung) und übergibt das Ergebnis zurück an App A. Bevor die Frage kommt: Es ist auch möglich solche Aktivitäten zu kaskadieren, das heißt App B könnte auch noch App C starten und so weiter.
App Services
App Services greifen eine ähnliche Idee auf, wie Launch for Results: EIne App stellt die eigenen Funktionen anderen Apps zur Verfügung. Dafür definiert sie einen sogenannten App Service. Der wesentliche Unterschied zu "Launch for Results" ist, dass der App Service im Hintergrund läuft. Wenn App A also den Service von App B aufruft, wird App B nicht sichtbar.
Shard App Folders
Eine spannende und sehr einfache Idee Daten zwischen Apps auszutauschen bietet die Möglichkeit als App-Hersteller (Publisher) "Shared Folders" zu definieren. Man kann es den eigene Apps ermöglichen auf den gleichen Shared Folder zuzugreifen – den sehen dann ausschließlich die eigenen Apps, niemand sonst. Wer also gleich mehrere Apps am Start hat (kleine Tools, zum Beispiel) die sich ein paar grundlegende Daten teilen sollen – für den ist das super.
Drag & Drop
Es ist jetzt möglich von einer App in die andere App per Drag & Drop Daten zu ziehen. Natürlich müssen die Entwickler der Apps das unterstützen. Für den Endanwender sicherlich angenehm, ich bin sicher nicht der einzige, der das vermisst hat.
Die Informationen sind in der MSDN Library noch nicht vollständig, die Build Sessions und die MVA geben aber einen guten Überblick:
https://channel9.msdn.com/events/Build/2015/3-765
https://channel9.msdn.com/Series/Developers-Guide-to-Windows-10-Preview/10