Estenda seu aplicativo com serviços, extensões e pacotes

O Windows disponibiliza várias tecnologias que permitem que a sua aplicação forneça funcionalidades a outras aplicações ou consome complementos de terceiros. Este artigo compara as opções de extensibilidade disponíveis para aplicações de ambiente de trabalho do SDK de Aplicações Windows.

Visão geral das opções de extensibilidade

Tecnologia Description A identidade do pacote é necessária OS mínimo
Serviços de aplicação Comunicação de pedido/resposta entre aplicações via AppServiceConnection Yes Windows 10 1607
Extensões de aplicações Modelo de plug-in — a aplicação anfitriã descobre conteúdos de pacotes de extensão Yes Windows 10 1607
Extensões de pacotes Extensibilidade mais ampla ao nível do pacote com uap17:PackageExtension Yes Windows 11
Pacotes opcionais Pacotes de conteúdo adicionais que complementam uma aplicação principal Yes Windows 10 1709
Pacotes de recursos Ativos de língua, escala e acessibilidade separados por mercado Yes Windows 10

Escolher a tecnologia certa

Utilize serviços de aplicações quando

  • Precisas de comunicação bidirecional entre aplicações separadas.
  • A aplicação de consumo envia um pedido e espera por resposta.
  • Queres expor uma interface semelhante a uma API para outras aplicações.

Exemplo: Um serviço de tradução que outras aplicações podem usar para traduzir texto.

Usar extensões de aplicação quando

  • A sua aplicação precisa de um modelo de plug-ins onde terceiros forneçam conteúdo, temas ou complementos.
  • As extensões são descobertas em tempo de execução a partir dos pacotes instalados.
  • As extensões fornecem dados ou configuração, não código executável (a execução de código deve usar serviços de aplicação).

Exemplo: Um editor de imagens que descobre pacotes de filtros a partir de pacotes de extensão instalados.

Use extensões de pacote quando

  • É preciso uma extensibilidade mais ampla ao nível dos pacotes no Windows 11.
  • As extensões precisam de acesso a mais conteúdo do pacote do que o PublicFolder modelo permite.

Utilize pacotes opcionais quando

  • Tens conteúdo adicional (DLC, funcionalidades premium) distribuído em pacotes separados.
  • O conteúdo é escrito pela mesma editora.

Padrões de arquitetura

Serviço de aplicação com descoberta de extensões

Combine extensões de aplicação com serviços de aplicação para uma arquitetura completa de plug-ins:

  1. A sua aplicação anfitriã usa AppExtensionCatalog para descobrir as extensões instaladas.
  2. Cada extensão declara propriedades que descrevem as suas capacidades.
  3. Quando o utilizador ativa uma extensão, a aplicação anfitriã liga-se ao serviço de aplicação da extensão para comunicação bidirecional.
┌─────────────────┐      ┌──────────────────┐
│   Host app       │      │  Extension app    │
│                  │      │                   │
│ AppExtension     │◄────►│ AppExtension      │
│   Catalog        │      │   declaration     │
│                  │      │                   │
│ AppService       │◄────►│ AppService        │
│   Connection     │      │   provider        │
└─────────────────┘      └──────────────────┘

Apenas extensão de conteúdo

Para cenários mais simples onde as extensões fornecem conteúdo estático (temas, modelos, ficheiros de dados):

  1. A aplicação anfitriã deteta extensões através de AppExtensionCatalog.
  2. Lê ficheiros da extensão PublicFolder.
  3. Não é necessário nenhum serviço de aplicação.

Diferenças em relação à extensibilidade do UWP

As tecnologias de extensibilidade aqui descritas funcionam da mesma forma nas aplicações de ambiente de trabalho do SDK de Aplicações Windows como no UWP, com um requisito: identidade de pacote MSIX. Todas as funcionalidades de extensibilidade dependem do manifesto do pacote para declarações e do catálogo de pacotes para descoberta.

Se a sua aplicação de ambiente de trabalho não estiver empacotada, não pode usar estas tecnologias de extensibilidade. Considere abordagens alternativas tais como:

  • Interfaces de plug-in baseadas em COM
  • Descoberta de extensões baseada em sistema de ficheiros
  • Tubos nomeados ou outros mecanismos de IPC