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

Cod*_*deX 21 windows communication microsoft-metro windows-runtime

!为简化起见,我将Windows应用程序(也称为Metro或Modern UI)称为"app",将常用桌面应用程序称为"应用程序"!

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

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

鉴于情况:

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

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

  • 现在实际允许本地Web服务器访问吗?(我相信它不是很长一段时间,但现在是最终版本)
  • WCF?( - >显然MS不再推荐了)
  • 本地REST/SOAP服务器上的HTTP请求?
  • WinRT联合API?(使用RSS/atom响应的另一种web服务访问形式)
  • WebSockets(如MessageWebSocket)?
  • 其他形式的TCP/IP通信?
  • 共享输入和输出的文本文件(实际上只是想到这种伤害,但至少MS可能无法阻止......)
  • 命名管道是不允许的,对吧?

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

Jef*_*and 11

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

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

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

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

  • 它可以通过一个文件来完成 - 这个文件没有被阻止.不是说它漂亮,但它是可能的.我也知道一个命名管道会起作用,但我不确定. (2认同)