title: How can a Metro app in Windows 8 communicate with a backend desktop app on the same machine?
body: <p>In a situation where you have the UI frontend built using the new Metro style of apps for windows 8, and would like it to communicate with a .NET application running on the desktop on the same local machine (e.g. a windows service app).</p>
  
  <p>What forms of interprocess communication are available between the metro app and the desktop app?</p>
  
  <p>Thanks to Pavel Minaev of the Visual Studio team, who has provided some initial info here in a comment, quoted:</p>
  
  <blockquote>
    <p>According to Martyn Lovell, there isn't any deliberate mechanism for
    that, and some that could be used for it are intentionally restricted.
    Named pipes aren't there, for example, nor are memory mapped files.
    There are sockets (including server sockets), but when connecting to
    localhost, you can only connect to the same app. You could use normal
    files in one of the shared "known folders" (Documents, Pictures etc),
    but that is a fairly crude hack that necessitates polling and is
    visible to the user. -- <a href="https://stackoverflow.com/users/111335/pavel-minaev">Pavel Minaev</a> commenting on <a href="https://stackoverflow.com/questions/7416826/how-does-the-new-windows-8-runtime-compare-to-silverlight-and-wpf">this issue</a></p>
  </blockquote>
  
  <p>So failing normal approaches I was thinking of using web services or reading/writing to a database in order to get some form of communication happening, both of which seem like overkill when the processes are running on the same machine.</p>
  
  <p>Is what I'm attempting here making sense? I can see a need for a metro app to be the frontend UI for an existing service which is running on the desktop. Or is it better to just use WPF for the frontend UI running on the desktop (i.e. a non-metro app).</p>