21

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

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

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

给定情况:

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

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

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

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

4

1 回答 1

11

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

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

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

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

于 2012-09-09T19:50:35.903 回答