Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az appszolgáltatások lehetővé teszik, hogy az alkalmazás szolgáltatásokat nyújtson más alkalmazásoknak. Az app service háttérfeladatként fut egy külön folyamatban, és közzét tesz egy kérés-válasz kommunikációs csatornát. Más alkalmazások az AppServiceConnection használatával csatlakoznak a szolgáltatáshoz.
Important
Az appszolgáltatásokhoz MSIX-csomagdentitás szükséges. A szolgáltatói és a fogyasztói alkalmazásokat is csomagolni kell. A csomagolatlan asztali alkalmazások nem üzemeltethetők és nem csatlakozhatnak az alkalmazásszolgáltatásokhoz.
Note
Windows App SDK alkalmazások csak folyamaton kívüli háttérfeladatként üzemeltethetnek appszolgáltatást.
Microsoft.UI.Xaml.Application nem biztosít OnBackgroundActivated felülbírálást, és az ExtendedActivationKind nem tartalmaz alkalmazásszolgáltatás-aktiválási módot, így egy Windows App SDK-alkalmazás nem fogadhat közvetlenül alkalmazásszolgáltatás-aktiválást a saját folyamatában, ahogyan egy UWP-alkalmazás teheti. A részletekért lásd: A folyamatban lévő alkalmazásszolgáltatások nem támogatottak .
Az App Services működése
Az app service a következőkből áll:
- Egy szolgáltatói alkalmazás , amely deklarálja és megvalósítja a szolgáltatást.
- Egy fogyasztói alkalmazás , amely csatlakozik a szolgáltatáshoz, és kéréseket küld.
A kommunikáció ValueSet-objektumokat használ a kérelem- és válaszadatokhoz.
Az appszolgáltató létrehozása
1. lépés: Az app service deklarálása a jegyzékben
Adjon hozzá egy bővítményt appService a szolgáltatói alkalmazáshoz Package.appxmanifest, és adja meg a szolgáltatást megvalósító háttérfeladat-projekt belépési pontját:
<Extensions>
<uap:Extension Category="windows.appService">
<uap:AppService Name="com.example.myappservice"
EntryPoint="MyAppService.ServiceTask" />
</uap:Extension>
</Extensions>
2. lépés: A szolgáltatás megvalósítása
Hozzon létre egy különálló Windows-futtatókörnyezet-összetevőprojektet, és implementálja a(z) IBackgroundTask elemet. A háttérfeladat folyamaton kívül fut, így ez a minta működik, hogy a szolgáltatói alkalmazás a Windows App SDK vagy az UWP használatával készült-e:
// MyAppService.ServiceTask, in a separate Windows Runtime Component project
public sealed class ServiceTask : IBackgroundTask
{
private BackgroundTaskDeferral _deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
taskInstance.Canceled += OnTaskCanceled;
var details = taskInstance.TriggerDetails as AppServiceTriggerDetails;
if (details != null)
{
details.AppServiceConnection.RequestReceived += OnRequestReceived;
}
}
private async void OnRequestReceived(AppServiceConnection sender,
AppServiceRequestReceivedEventArgs args)
{
var deferral = args.GetDeferral();
var response = new ValueSet();
response.Add("result", "Hello from the service!");
await args.Request.SendResponseAsync(response);
deferral.Complete();
}
private void OnTaskCanceled(IBackgroundTaskInstance sender,
BackgroundTaskCancellationReason reason)
{
_deferral?.Complete();
}
}
Az alkalmazásszolgáltatás használata
A fogyasztói alkalmazásból hozzon létre egy AppServiceConnection elemet, és küldjön kéréseket:
using Windows.ApplicationModel.AppService;
using Windows.Foundation.Collections;
private async Task CallAppServiceAsync()
{
var connection = new AppServiceConnection
{
AppServiceName = "com.example.myappservice",
PackageFamilyName = "ProviderApp_1234567890abc"
};
var status = await connection.OpenAsync();
if (status != AppServiceConnectionStatus.Success)
{
// Handle connection failure
return;
}
var request = new ValueSet
{
{ "command", "add" },
{ "a", 5 },
{ "b", 3 }
};
var response = await connection.SendMessageAsync(request);
if (response.Status == AppServiceResponseStatus.Success)
{
int result = (int)response.Message["result"];
// result is 8
}
connection.Dispose();
}
Tip
Keresse meg a szolgáltatói alkalmazás PackageFamilyName elemét a(z) Get-AppxPackage -Name *ProviderApp* PowerShellben történő futtatásával, vagy ellenőrizze a szolgáltatói alkalmazás csomagjegyzékfájlját.
Miért kell a szolgáltatásnak a folyamaton kívül futnia?
Az App Service háttérfeladata mindig a saját folyamatában fut (vagy csak az UWP-szolgáltatók esetében a szolgáltatói alkalmazás folyamatában). Egy Windows App SDK szolgáltatói alkalmazás esetében a háttérfeladatnak folyamaton kívül kell futnia, mert az alkalmazás saját folyamata nem támogatja az app-szolgáltatás aktiválását. További információ: A folyamaton belüli alkalmazásszolgáltatások nem támogatottak.
Kapcsolódó tartalom
Windows developer