Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulama hizmetleri, uygulamanızın diğer uygulamalara hizmet sağlamasına olanak sağlar. Uygulama hizmeti ayrı bir işlemde arka plan görevi olarak çalışır ve istek/yanıt iletişim kanalını kullanıma sunar. Diğer uygulamalar AppServiceConnection kullanarak hizmete bağlanır.
Important
Uygulama hizmetleri MSIX paket kimliği gerektirir. Hem sağlayıcı hem de tüketici uygulamaları paketlenmelidir. Paketlenmemiş masaüstü uygulamaları, uygulama hizmetlerini barındıramaz veya bu hizmetlere bağlanamaz.
Note
Windows Uygulama SDK'sı uygulamalar bir uygulama hizmetini yalnızca işlem dışı bir arka plan görevi olarak barındırabilir.
Microsoft.UI.Xaml.Application, OnBackgroundActivated geçersiz kılmasını sağlamaz ve ExtendedActivationKind, uygulama hizmeti etkinleştirme türünü içermez; bu nedenle bir Windows Uygulama SDK'sı uygulaması, bir UWP uygulamasının yapabildiği gibi, uygulama hizmeti etkinleştirmesini doğrudan kendi işlemi içinde alamaz. Ayrıntılar için bkz. İşlem içi uygulama hizmetleri desteklenmez .
Uygulama hizmetleri nasıl çalışır?
Uygulama hizmeti şunlardan oluşur:
- Hizmeti bildiren ve uygulayan bir sağlayıcı uygulaması.
- Hizmete bağlanan ve istek gönderen bir tüketici uygulaması.
İletişim, istek ve yanıt verileri için ValueSet nesnelerini kullanır.
App Service sağlayıcısını oluşturma
1. Adım: Bildirimde uygulama hizmetini bildirme
Sağlayıcı uygulamasının appServiceöğesine bir Package.appxmanifest uzantı ekleyin ve hizmeti uygulayan arka plan görev projesinin giriş noktasını belirtin:
<Extensions>
<uap:Extension Category="windows.appService">
<uap:AppService Name="com.example.myappservice"
EntryPoint="MyAppService.ServiceTask" />
</uap:Extension>
</Extensions>
2. Adım: Hizmeti uygulama
Ayrı bir Windows Çalışma Zamanı Bileşeni projesi oluşturun ve uygulayınIBackgroundTask. Arka plan görevi işlem dışı çalıştığından, sağlayıcı uygulamasının Windows Uygulama SDK'sı veya UWP ile derlenmiş olması fark etmeksizin bu düzen çalışır:
// 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();
}
}
App Service'i kullanma
Tüketici uygulamasından bir AppServiceConnection oluşturun ve istek gönderin:
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();
}
Tavsiye
PackageFamilyName PowerShell'de çalıştırarak Get-AppxPackage -Name *ProviderApp* sağlayıcı uygulamasını bulun veya sağlayıcı uygulamasının paket bildirimini denetleyin.
Hizmetin neden işlem dışı olması gerekiyor?
Bir uygulama hizmetinin arka plan görevi her zaman kendi işleminde (veya yalnızca UWP sağlayıcıları için sağlayıcı uygulamasının işleminde) çalışır. Windows Uygulama SDK'sı sağlayıcı uygulaması için, uygulamanın kendi işleminin uygulama hizmeti etkinleştirmesini almasının desteklenen bir yolu olmadığından arka plan görevinin işlem dışı çalışması gerekir. Daha fazla bilgi için bkz. İşlem içi uygulama hizmetleri desteklenmiyor.
İlgili içerik
Windows developer