首页 文章

UWP App与Windows服务的通信

提问于
浏览
6

我们正在修复重新构建应用程序,并且正在讨论是否可以使用UWP而不是普通的WPF应用程序 .

我们的应用程序需要能够访问整个文件系统和所有系统资源 . 这是一个问题,因为UWP应用程序是沙箱 . 但是,我们试图通过尝试以这种方式处理它来绕过该问题:

  • Windows Service - >始终在系统上运行 . 这将在访问和修改系统资源时承载核心功能 .

  • UWP Application - >由于UWP是沙箱,UWP应用程序会将所有系统请求转发给Windows服务,这将完成所有主要工作并返回输出 .

我们可以简单地在WPF中执行此操作,但我们希望使用UWP以利用WPF缺少的一些新的Windows 10核心功能,例如live tiles和Cortana .

你认为我们的方法是否可行?我们的一个不确定因素是我们如何让UWP应用程序与Windows服务进行通信 - 我们已经研究过SignalR和Desktop Bridge这样的东西,但不确定哪种方法可能是我们方案的最佳方法 .

谢谢!

1 回答

  • 3

    您认为我们的方法是否可行?

    我们无法在UWP应用程序中直接使用Windows服务 . 为了在Win32应用程序和UWP应用程序之间 Build IPC,这里可能有用的是使用新的Capability <rescap:Capability Name="runFullTrust" /> ,并启用由 FullTrustProcessLauncher API启动的Win32应用程序来实现使用WinRT API的高级应用程序安全上下文 . 但正如您在此处看到 rescap ,这意味着此UWP应用程序无法在Store中发布 .

    你可以参考官方的AppService Bridge Sample . 您可以尝试首先创建一个传统的桌面应用程序,它使用App service(可以与WPF和UWP应用程序通信,而不是传统的Windows服务)并使用WinRT API,在构建此应用程序后(不运行它),.exe文件将生成 . 但是这个应用程序无法运行,因为它使用WinRT API,然后您可以创建您的UWP应用程序以使此桌面应用程序可执行 .

    我们已经研究过SignalR和Desktop Bridge之类的东西,但不确定哪种方法可能是我们方案的最佳方法 .

    所以我认为桌面桥可能是最好的方法 .

相关问题