Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

05 Jul 2020

UWP文档笔记:AppService

App Service

Create and consume an app service

支持AppService的应用必须先部署才能获取其Package family name。通过designer view打开Package.appxmanifest,可以在Packaging 一栏查看其Package family name。

调试App Service:

  • 确认AppService所在项目已经部属
  • 在Solution Explorer,打开项目属性,在Debug 标签把Start action改成Do not launch, but debug my code when it starts(对于C++项目,在Debugging 把Launch Application改成No)
  • 加一个断点到OnRequestReceived。
  • 以F5启动AppService所在项目
  • 从非Visual Studio启动客户端

调试客户端:

  • 按上面列出的步骤准备好服务端
  • 从非Visual Studio启动客户端
  • 在VisualStudio中通过Debug > Attach to Process,附着到调试对象,注意不是ApplicationFrameHost.exe

如果尝试连接AppService失败,并且遇到AppUnavailable ,可以检查以下内容:

  • 确认所在项目已经部属
  • 确认App正确引用异进程幕后任务所在项目
  • 确认Package.appxmanifest 声明正确
  • 确认客户端使用的是正确的AppServiceName和PackageFamilyName
  • 确认异进程幕后任务在Package.appxmanifest 中的EntryPoint 正确

调试问题:

  • 确定所调试项目为启动项目,另外对于C++项目,其Launch Application被设置为No。

Convert an app service to run in the same process as its host app

鉴于同进程AppService的引入,两个前台运行的App之间可以直接通过AppService通信。

将跨进程AppService转为同进程,需要两步。第一步是修改manifest:

<Package
   ...
  <Applications>
      <Application Id=...
          ...
          EntryPoint="...">
          <Extensions>
              <uap:Extension Category="windows.appService">
                  <uap:AppService Name="InProcessAppService" />
              </uap:Extension>
          </Extensions>
          ...
      </Application>
  </Applications>

第二步是将逻辑移到OnBackgroundActivated()。

(本篇完)

comments powered by Disqus