Windowsapp store应用和原生桌面应用之间的通信

为了简化事情,我将Windows Store应用程序 (也称为Metro或Modern UI)称为“应用程序”,并将其作为“应用程序”引用到常见的桌面应用程序中!

我相信对于已经在市场上build立了应用程序的开发者来说,这仍然是关于应用程序开发的最不清楚但重要的问题之一:如何在Windows 8系统上pipe理应用程序和应用程序之间的通信? (请不要在原则上进行辩论 – 真的需要这么多的用例!)

我基本上读了过去几天的文章,但仍然不清楚如何从第一次开始。 主要是因为我发现了几个冲突的信息。 有了我的问题,我想从最终的Windows 8可能性的angular度来重新解决这个问题。

给定情况:

  • 应用程序和应用程序在同一个系统上
  • 1:1沟通
  • 应用程序是原生的(用Delphi写的)
  • pipe理员或者甚至系统权限可用于应用程序
  • 在90%的用例中,应用程序请求应用程序执行一个操作,并接收一些文本结果。 该应用程序不应该被冻结或冻结!
  • 在10%的应用程序执行一个动作(由某个事件触发)并通知应用程序 – 结果可能是:显示瓷砖上的某些信息或在已经运行和活动的应用程序,或者如果可能的话运行应用程序/将其带到前台。

现在“简单”的问题是,如何做到这一点?

  • 实际上是否允许本地networking服务器访问? (我相信这是不是很长一段时间,但现在是最终版本以来)
  • WCF? ( – >显然MS不build议了 )
  • 本地REST / SOAP服务器上的HTTP请求?
  • WinRT联合API ? (另一种使用RSS / atom响应的web服务访问forms)
  • WebSockets (如MessageWebSocket )?
  • 一些其他forms的TCP / IP通信?
  • 共享一个文本文件的input和输出(实际上只是想到这个伤害,但至less这是一个可能性MS不能阻止…)
  • 命名pipe道是不允许的,对吧?

在这里有一些关于这个话题的讨论,但是大多数都不是最新的,因为在发布最终版本的Windows 8之前,MS发生了很大的变化。我不想混淆新旧信息,为我和所有其他Windows应用程序和应用程序开发人员find一个明确和最新的答案。 谢谢!

如果您正在讨论进入商店的应用程序,则不允许通过任何机制与本地系统进行通信。 在某些调试场景中支持与本地系统的通信,以便于开发应用程序。

您可以使用文件或协议处理程序从Windows应用商店应用程序启动桌面应用程序,但没有直接通信。

所以,重申一点… WinRT和桌面之间的通信不允许发布的Windows应用商店。 只有在调试时才允许两个环境之间的通信。

PG已经在不同的地方发布了为什么不允许通信的原因,从安全到WinRT生命周期(即,你的应用程序被暂停 – 如何处理资源,套接字,远程应用程序等等) )和Store应用程序不能依赖外部程序的事实(例如,我需要您的本地桌面应用程序/服务来运行应用程序,但是如何安装您的应用程序/服务?您无法集成到Store应用程序,您可以提供另一个Store桌面应用程序条目,但这是一个糟糕的用户体验。)当然,这些是高层次的摘要。