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()。
(本篇完)