Windows应用商店应用与本机桌面应用之间的通信

时间:2012-09-09 18:26:01

标签: windows microsoft-metro windows-runtime communication

!为简化起见,我将 Windows应用程序(也称为Metro或现代UI)称为“app”,将常见的桌面应用程序称为“应用程序”!

我认为对于已经在市场上建立应用程序的开发人员来说,这仍然是关于应用程序开发的最不明确但最重要的问题之一: 如何管理Windows 8系统上的应用程序和应用程序之间的通信? (请不要开始就原则进行辩论 - 真的需要这么多用例!)

我在过去几天里基本上阅读了文章的内容,但仍然不清楚如何从第一次开始就这样做。主要是因为我发现了几个相互矛盾的信息。 在这里我的问题,我想从最终的Windows 8可能性的角度重新解决这个问题。

鉴于情况:

  • 应用程序和应用程序在同一系统上运行
  • 1:1沟通
  • 应用程序是本机的(用Delphi编写)
  • 管理员或必要时甚至系统权限可用于应用程序
  • 在90%的用例中,应用程序请求应用程序执行操作并接收一些文本结果。该应用程序不应该被留下或冻结!
  • 10%的应用程序执行操作(由某个事件触发)并通知应用程序 - 结果可能是:在磁贴或已经运行且活动的应用程序中显示某些信息,或者如果可能,运行应用程序/带来它到前台。

现在“简单”的问题是,如何实现这一目标?

  • 现在是否允许本地网络服务器访问? (我相信它不是很长一段时间,但现在是最后一次发布)
  • WCF? ( - >显然MS doesn't recommend that anymore
  • 本地REST / SOAP服务器上的HTTP请求?
  • WinRT syndication API? (使用RSS / atom响应的另一种web服务访问形式)
  • WebSockets(如MessageWebSocket)?
  • 其他形式的TCP / IP通信?
  • 分享输入和输出的文本文件(实际上只是想到这种伤害,但至少MS可能无法阻止...)
  • 不允许使用命名管道,对吗?

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

1 个答案:

答案 0 :(得分:11)

如果您正在谈论进入商店的应用程序,则不允许通过任何机制与本地系统进行通信。在某些调试方案中支持与本地系统的通信,以使应用程序开发更容易。

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

因此,重申一点......发布的Windows应用商店应用程序不允许WinRT与桌面之间的通信。仅在调试时允许两个环境之间的通信。

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