我们正在修复重新构建应用程序,并且正在讨论是否可以使用UWP而不是普通的WPF应用程序 .
我们的应用程序需要能够访问整个文件系统和所有系统资源 . 这是一个问题,因为UWP应用程序是沙箱 . 但是,我们试图通过尝试以这种方式处理它来绕过该问题:
-
Windows Service - >始终在系统上运行 . 这将在访问和修改系统资源时承载核心功能 .
-
UWP Application - >由于UWP是沙箱,UWP应用程序会将所有系统请求转发给Windows服务,这将完成所有主要工作并返回输出 .
我们可以简单地在WPF中执行此操作,但我们希望使用UWP以利用WPF缺少的一些新的Windows 10核心功能,例如live tiles和Cortana .
你认为我们的方法是否可行?我们的一个不确定因素是我们如何让UWP应用程序与Windows服务进行通信 - 我们已经研究过SignalR和Desktop Bridge这样的东西,但不确定哪种方法可能是我们方案的最佳方法 .
谢谢!
1 回答
我们无法在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应用程序以使此桌面应用程序可执行 .
所以我认为桌面桥可能是最好的方法 .