C#

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

发布于 2021-02-02 16:06:00

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

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

感谢Visual Studio团队的Pavel Minaev,他在此处的注释中提供了一些初始信息,并引用了:

根据马丁·洛夫(Martyn
Lovell)的说法,没有任何故意的机制,有意使用的机制受到有意限制。例如,命名管道不存在,内存映射文件也不存在。有套接字(包括服务器套接字),但是当连接到本地主机时,您只能连接到同一应用程序。您可以在共享的“已知文件夹”之一中使用普通文件(“文档”,“图片”等),但这是一个相当粗糙的技巧,需要轮询并且对用户可见。-
帕维尔Minaev评论这个问题

因此,如果无法使用常规方法,我会考虑使用Web服务或对数据库进行读/写操作,以实现某种形式的通信,而当进程在同一台计算机上运行时,这两种方法似乎都显得过分了。

我在这里尝试的是有意义的吗?我可以看到需要将Metro应用程序作为桌面上运行的现有服务的前端UI。还是将WPF用于在桌面上运行的前端UI(即非地铁应用程序)会更好。

关注者
0
被浏览
83
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我现在将现有项目移植到Win8。它由Windows服务和托盘应用程序组成,它们通过NamedPipes
    WCF相互通信。您可能已经知道Metro不支持命名管道。我最终使用TcpBinding进行全双工连接。

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

    Metro客户端可以使用的WCF服务器示例在
    此处

    另外请记住,您不能在Metro中使用同步WCF。您将必须使用仅基于异步的基于任务的包装器。

    并感谢您的提问。我对我来说是个好起点:)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看