Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługi App Services umożliwiają aplikacji udostępnianie usług innym aplikacjom. Usługa App Service działa jako zadanie w tle w osobnym procesie i uwidacznia kanał komunikacyjny żądania/odpowiedzi. Inne aplikacje łączą się z usługą przy użyciu połączenia AppServiceConnection.
Ważna
Usługi aplikacji wymagają tożsamości pakietu MSIX. Zarówno aplikacja dostawcy, jak i aplikacja konsumenta muszą być spakowane. Niepakietowane aplikacje klasyczne nie mogą obsługiwać usług aplikacji ani nawiązywać z nimi połączeń.
Note
Aplikacje Zestaw SDK do aplikacji systemu Windows mogą obsługiwać usługę aplikacji wyłącznie jako zadanie działające poza procesem w tle.
Microsoft.UI.Xaml.Applicationnie udostępnia przesłonięcia OnBackgroundActivated, a element ExtendedActivationKind nie obejmuje rodzaju aktywacji usługi aplikacji, więc aplikacja Zestaw SDK do aplikacji systemu Windows nie może odbierać aktywacji usługi aplikacji bezpośrednio we własnym procesie w taki sposób, w jaki mogła to robić aplikacja UWP. Aby uzyskać szczegółowe informacje, zobacz Usługi aplikacji w procesie nie są obsługiwane .
Jak działają usługi aplikacji
Usługa App Service składa się z następujących elementów:
- Aplikacja dostawcy , która deklaruje i implementuje usługę.
- Aplikacja konsumenta , która łączy się z usługą i wysyła żądania.
Komunikacja używa obiektów ValueSet na potrzeby danych żądania i odpowiedzi.
Utwórz dostawcę usługi aplikacji
Krok 1: Zadeklaruj usługę aplikacji w manifeście
Dodaj rozszerzenie appService do aplikacji dostawcy Package.appxmanifest i określ punkt wejścia projektu zadania w tle, który implementuje usługę:
<Extensions>
<uap:Extension Category="windows.appService">
<uap:AppService Name="com.example.myappservice"
EntryPoint="MyAppService.ServiceTask" />
</uap:Extension>
</Extensions>
Krok 2. Implementowanie usługi
Utwórz oddzielny projekt środowisko wykonawcze systemu Windows Component i zaimplementuj element IBackgroundTask. Zadanie w tle jest uruchamiane poza procesem, więc ten wzorzec działa niezależnie od tego, czy aplikacja dostawcy została utworzona przy użyciu Zestaw SDK do aplikacji systemu Windows, czy platformy UWP:
// 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();
}
}
Korzystanie z usługi App Service
W aplikacji konsumenta utwórz żądania AppServiceConnection i wyślij je:
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();
}
Wskazówka
PackageFamilyName Znajdź aplikację dostawcy, uruchamiając polecenie Get-AppxPackage -Name *ProviderApp* w programie PowerShell lub sprawdź manifest pakietu aplikacji dostawcy.
Dlaczego usługa musi działać poza procesem
Zadanie w tle usługi App Service zawsze jest uruchamiane we własnym procesie (lub w procesie aplikacji dostawcy tylko dla dostawców platformy UWP). W przypadku aplikacji dostawcy Zestaw SDK do aplikacji systemu Windows zadanie w tle musi działać poza procesem aplikacji, ponieważ nie ma obsługiwanego sposobu, aby własny proces aplikacji odbierał aktywację przez usługę aplikacji. Aby uzyskać więcej informacji, zobacz Usługi aplikacji w procesie nie są obsługiwane.