Windows 8 Metro Enterprise Apps

Metro wurde von Microsoft ganz klar für Consumer konzipiert. Es geht um Unterhaltung, um Spiele, um Nachrichten und das möglichst attraktiv.

Enterprise Apps stehen da zunächst etwas zurück. Obwohl es Wege geben wird Apps im Unternehmen zu installieren, ohne über den Store zu gehen, hat Metro einige Einschränkungen. Eine davon ist, dass Metro-Apps und Desktop-Applikationen nicht direkt miteinander kommunizieren können. (Beispielsweise per API) Und das es erstmal nicht möglich ist direkt auf SQL Server zuzugreifen.

Einen möglichen Weg zur Kommunikation habe ich eben erfolgreich getestet. Da die Metro-Apps Internetzugriff haben, können sie mit Webservices interagieren. Die gute Nachricht: Es ist möglich einen Webservice in einer Desktop-Applikation laufen zu lassen, welcher auf einen bestimmten Port horcht und diesen dann aus der Metro App heraus über localhost abzufragen. Dadurch können, wenn auch umständlich, Metro Apps mit Desktop-Apps kommunizieren. Auch reines TCP soll möglich sein, was noch performanter sein könnte.

Zum Test habe ich mir Node.js runtergeladen und das Beispiel der Webseite mit Node.js ausgeführt. Dies ist ein Webserver, der „Hello World“ zurückliefert. Anschließend habe ich eine neue Grid App in VS 2012 erzeugt und dort in einen der Event-Handler folgenden Code eingefügt:

Dim client As HttpClient = New HttpClient()
Dim s As String = Await client.GetStringAsync("http://127.0.0.1:1337")
Debug.WriteLine(s)

Wichtig ist dabei noch, dass der Event-Handler das Keyword Async bekommen muss, damit Await funktioniert. Der HttpClient befindet sich unter System.Net.Http.
Ergebnis war, dass „Hello World“ ausgegeben wurde. Die Türe zwischen Desktop-Applikationen und Metro steht also offen.

Advertisements