Windows 8中的Metro应用程序如何与同一台计算机上的后台桌面应用程序通信?

9 浏览
0 Comments

Windows 8中的Metro应用程序如何与同一台计算机上的后台桌面应用程序通信?

在这种情况下,您的UI前端使用Windows 8的新Metro风格的应用程序构建,并希望它与在同一台本地计算机上运行的.NET应用程序(例如Windows服务应用程序)通信。

Metro应用程序和桌面应用程序之间有哪些进程间通信形式可用?

感谢Visual Studio团队的Pavel Minaev,在评论中提供了一些初始信息,如下所述:

根据Martyn Lovell的说法,没有任何特定的机制可以用于此目的,并且有些特定于此目的的机制是有意受到限制的。例如,没有命名管道,也没有内存映射文件。有套接字(包括服务器套接字),但在连接到本地主机时,您只能连接到相同的应用程序。您可以在共享的“已知文件夹”(文档,图片等)之一中使用普通文件,但这是一种相当粗略的方法,必须轮询,并且对用户可见。--Pavel Minaev这个问题上发表评论

因此,如果正常方法失败,我在考虑使用Web服务或读/写数据库以获取某种形式的通信,这两种方法都感觉过于复杂,因为进程在同一台计算机上运行。

我在尝试什么,这有意义吗? 我可以看到Metro应用程序需要成为正在运行于桌面上的现有服务的前端UI。 还是最好使用WPF作为运行在桌面上的前端UI(即非Metro应用程序)?

admin 更改状态以发布 2023年5月23日
0
0 Comments

在我参加的一个//build/会议的最后,有很多类似这样的问题。执行一些大局观会话之一的Aleš Holeček从观众中站起来处理它们。即使您不是C++开发人员,也可以下载该会话并观看Q&A。 http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-789C

Metro应用程序不能指望桌面应用程序或服务已安装在计算机上。由于可以随时暂停,因此桌面应用程序不能指望Metro应用程序运行。您需要开始以不同的方式思考。听Aleš讲解这一点。

0
0 Comments

我正在将我的现有项目移植到Win8。它由通过NamedPipes WCF相互通信的窗口服务和托盘应用程序组成。正如你可能已经知道的那样,Metro不支持命名管道。我最终使用TcpBinding实现了全双工连接。

这篇文章描述了支持的功能。

我的WCF服务器样例可以被Metro客户端使用,在这里

同时请记住,你无法在Metro中使用同步的WCF。你必须使用基于Task的包装器,它只是异步的。

感谢你的问题。对我来说是一个很好的起点 🙂

0