UWP和非UWP应用之间的通信

问题描述 投票:10回答:4

是否可以在uwp和非uwp应用程序之间进行通信。我的非uwp是一个提供服务的后台任务。我想在uwp应用程序中调用非uwp服务。

怎么打电话? AppServiceConnection类是否在非uwp应用程序中可用?

uwp windows-10 win-universal-app windows-10-universal desktop-bridge
4个回答
13
投票

是的,非UWP应用程序可以使用AppServices与UWP应用程序进行通信。

这里有一个样本:https://github.com/Microsoft/DesktopBridgeToUWP-Samples/blob/master/Samples/AppServiceBridgeSample_C%2B%2B/cs/Win32Process_CPP/Win32Process_CPP.cpp


0
投票

我想我有你的答案。

首先,如果你想要像UWP一样容易设计的典型win32功能,你应该选择WPF,它几乎使用相同的设计框架,但它可以支持UWP所做的所有事情,比如传统的Wndproc循环和WPF可以支持向其他应用程序发送消息。

现在,在UWP上进行跨应用程序通信的方法是通过从名称中取代U,如果你想继续使用它,它将不再是通用的。

在我深入了解其原因之前,我应该解释整个Appservice的工作原理。

Appservice是一个后台服务,可以从其他应用程序调用,它在Backgroundhost.exe下托管,因此这可以确保它在与应用程序不同的线程上运行,从而保留了沙箱,正如我所说它可以由另一个应用程序启动,它很多就像您的程序中的类/方法可以被外部的东西激发一样,您仍然可以使用它们更改appfolder设置,这样您就可以让主应用程序知道此通信中发生了什么。

因此,为了获得其他应用程序,要访问此应用程序服务,他们必须知道它的地址,并且为了知道这一点,您必须对自己进行硬编码并将其包含在您的文件夹中以及通过您的主APP发布它,这只能在桌面版本的UWP上使用,所以你看,无论如何最好使用WPF。

如果Windows商店是您想要使用UWP的原因,那么请查看有关如何将传统dekstop应用程序迁移到Windows商店的指南。 https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root

此外,如果你对像UWP只支持的紧凑叠加这样闪亮的新api感兴趣,你不应该,因为有一些方法可以让它在普通的桌面应用程序上运行。


0
投票

一种简单的方法是使用WCF服务或其他RPC框架(我使用WAMP Sharp)创建Windows服务(但是阅读它们的限制)并从UWP应用程序或Win32应用程序调用它。我认为这不是最好的做法,但对于我们的情况,它就像一个魅力。另外,不要忘记打开UWP应用程序的环回。


-1
投票

UWP应用程序与桌面应用程序通信的一种方法是使用命名管道。但由于UWP应用程序无法通过命名管道直接通信,因此您可以使用代理组件来实现此目的。您可以在此处获取有关如何创建代理组件的更多详细信息:https://docs.microsoft.com/en-us/windows/uwp/winrt-components/brokered-windows-runtime-components-for-side-loaded-windows-store-apps

© www.soinside.com 2019 - 2024. All rights reserved.