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

dod*_*der 119 c# wpf winapi windows-8 windows-runtime

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

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

感谢Visual Studio团队的Pavel Minaev,他在评论中提供了一些初步信息,引用:

根据Martyn Lovell的说法,没有任何有意识的机制,可以用于它的一些机制是故意限制的.例如,命名管道不在那里,也不是内存映射文件.有套接字(包括服务器套接字),但是当连接到localhost时,您只能连接到同一个应用程序.您可以在其中一个共享的"已知文件夹"(文档,图片等)中使用普通文件,但这是一个相当粗糙的黑客,需要轮询并且对用户可见.- Pavel Minaev 就此问题发表评论

因此,我正在考虑使用Web服务或读取/写入数据库,以便进行某种形式的通信,当进程在同一台机器上运行时,这两种方式都显得过于苛刻.

我在这里尝试是否有意义?我可以看到Metro应用程序需要成为桌面上运行的现有服务的前端UI.或者将WPF用于桌面上运行的前端UI(即非城域应用程序)更好.

exp*_*ert 54

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

这篇文章描述了支持哪些功能.

该地铁客户端可能会消耗我的WCF服务器的样本是在这里.

另请注意,您无法在Metro中使用同步WCF.您将不得不使用仅基于任务的包装器,它只是异步的.

谢谢你的问题.我对我来说是一个很好的起点:)

  • 谢谢你...这是一个很好的帮助.很高兴看到一个实际的答案而不是被告知它不应该/不能完成. (7认同)
  • 如果这是规则,我认为可以引用**"3.9所有应用程序逻辑必须源自并驻留在您的应用程序包中您的应用程序不得尝试通过任何形式的动态包含来更改或扩展打包的内容代码或数据,用于更改应用程序与Windows运行时的交互方式,或者与存储策略相关的行为.例如,不允许下载远程脚本并随后在应用程序包的本地上下文中执行该脚本.** (6认同)
  • 我怀疑这样的应用程序会通过商店认证. (3认同)

Kat*_*ory 38

在我参加的//构建/会话结束时,有很多这样的问题.执行其中一次大型会议的执行官阿莱什·霍尔切克(AlešHoleček)走出了观众席来处理他们.即使您不是C++开发人员,也要下载该会话并观看问答.http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-789C

Metro应用程序无法依赖计算机上安装的桌面应用程序或服务.桌面应用程序不能指望运行Metro应用程序,因为它们可以随时暂停.你需要开始以不同的方式思考.听听Aleš这个.

  • 这个确切的问题似乎在视频中的47:20被问到. (6认同)
  • 在我看来,根据已安装的桌面应用或服务,侧载LOB Metro应用程序没有任何问题.我很难相信这种非常实际的情况不会得到支持.使用Silverlight,我们看到桌面/本机互操作能力逐渐增加......我非常确定这些场景(命名管道,内存映射文件或其他东西......)将受到支持(使用指导文档)在将来. (4认同)
  • ......还有一个人在55:00.一般来说,答案似乎是"你不能这样做". (3认同)
  • 有趣的是,内部支持通过[共享合同]在两个城域应用之间进行通信(http://www.zdnet.com/blog/microsoft/microsofts-new-windows-8-contracts-the-debut-of-the -developer-clipboard/10750)但这似乎与剪贴板的使用类似,并且用于将单向从源应用程序传输到目标应用程序,而不是用于实现双向通信协议. (2认同)

ig2*_*g2r 11

请注意,使用Windows 8.1 Update,Windows Store应用程序和用C#for .NET 4.5+编写的桌面组件之间的通信现在正式支持企业方案中的侧载应用程序:

为侧面加载的Windows应用商店应用程序打破了Windows运行时组件

报价:

认识到关键业务功能和规则体现在现有软件资产中,并且企业具有各种新应用程序风格高效的方案,Windows 8.1更新包括一个名为Brokered Windows Runtime Components的新功能,用于侧载应用.我们使用术语IPC(进程间通信)来描述在一个进程(桌面组件)中运行现有桌面软件资产的能力,同时在Windows应用商店应用中与此代码进行交互.这是企业开发人员熟悉的模型,因为数据库应用程序和使用Windows中的NT服务的应用程序共享类似的多进程体系结构.

虽然最初实现这种方法有点复杂,但它允许跨Windows Store和桌面组件进行深度集成.请记住,目前它不会通过公共Windows Store认证.


tro*_*nda 5

InfoQ上有一篇关于如何使用协议处理程序构建松散耦合的Metro应用程序的文章.这是Windows长期以来支持的东西,人们可以预见桌面应用程序将自己注册为协议处理程序,也许metro应用程序可以通过这种机制进行通信.

我不知道这是否可能,但结账可能会很有趣.


归档时间:

查看次数:

39869 次

最近记录:

9 年,9 月 前