我相信这仍然是一个关于已经在市场上建立应用程序的开发人员应用程序开发的最不清楚但重要的问题之一:
如何在Windows 8系统上管理应用程序和应用程序之间的通信? (请不要开始关于原则的辩论 – 有很多用例真的需要!)
在过去的几天里,我基本上都读过这些文章,但仍然不清楚如何从第一次开始吧。主要是因为我发现了几个冲突的信息。
有了我的问题,我想从最终Windows 8的可能性的角度重新解决这个问题。
给定情况:
>应用程序和应用程序在同一系统上运行
> 1:1通讯
>应用程序是native(用Delphi编写的)
>管理员,或者如果需要,即使系统特权也可用于应用程序
>在90%的用例中,应用程序请求由应用程序执行的操作,并收到一些文本结果。该应用程序不应该留下或冻结为此!
>在10%的应用程序执行一个动作(由某些事件触发)并通知应用程序 – 结果可能是:显示在瓦片上或在已运行和活动的应用程序中的某些信息,或者如果可能,运行该应用程序/将其带入前景。
现在“简单”的问题是,怎么实现呢?
>现在本地网络服务器访问实际上是允许的? (我相信这是不是很长时间,但现在是从最后的版本)
> WCF? ( – >显然是MS doesn’t recommend that anymore)
>本地REST / SOAP服务器上的HTTP请求?
> WinRT syndication API? (使用RSS / atom响应的webservice访问的另一种形式)
> WebSockets(如MessageWebSocket)?
>其他一些形式的TCP / IP通信?
>共享用于输入和输出的文本文件(实际上只是想到这个伤害,但至少这是MS无法阻止的可能性)
>命名管道是不允许的,对吧?
在这方面有一些关于这个主题的讨论,但是大多数人在发布Windows 8的最终版本之前MS已经改变了很多,但是它们中的大部分都不是最新版本。而不是混淆旧的和新的信息,我想为我和所有其他Windows应用程序和应用程序开发人员找到一个确定的和当前的这个问题的答案。谢谢!
您可以使用文件或协议处理程序从Windows Store应用程序启动桌面应用程序,但没有直接的通信。
所以,重申一点:WinRT和桌面之间的通信不允许发布Windows Store应用程序。两种环境之间的通信只允许在调试中使用。
PG已经在不同的地方发布为什么不允许通信的原因,从安全性到WinRT生命周期(即,您的应用程序被暂停 – 如何处理:资源,套接字,远程应用程序等) – 批次的失败点)以及Store应用程序不能依赖于外部程序(即我需要您的本地桌面应用程序/服务来运行应用程序),但是如何安装应用程序/服务?您无法集成到商店应用程序,您可以提供另一个Store桌面应用程序条目,但这是一个糟糕的用户体验。)当然是高级摘要。