6.7 KiB
Módulo de Gerenciamento de Inquilinos
O Multi-Tenancy é uma das principais características do ABP Framework. Ele fornece a infraestrutura fundamental para construir sua própria solução SaaS (Software-as-a-Service). O sistema de multi-tenancy do ABP abstrai onde seus inquilinos são armazenados, fornecendo a interface ITenantStore. Tudo que você precisa fazer é implementar essa interface.
O módulo de gerenciamento de inquilinos é uma implementação da interface ITenantStore. Ele armazena inquilinos em um banco de dados. Ele também fornece uma interface de usuário para gerenciar seus inquilinos e suas funcionalidades.
Por favor, consulte a documentação do Multi-Tenancy para entender o sistema de multi-tenancy do ABP Framework. Este documento se concentra no módulo de gerenciamento de inquilinos.
Sobre o Módulo SaaS Comercial do ABP
O Módulo SaaS é uma implementação alternativa deste módulo com mais funcionalidades e possibilidades. Ele é distribuído como parte da assinatura do ABP Commercial.
Como Instalar
Este módulo vem pré-instalado (como pacotes NuGet/NPM) quando você cria uma nova solução com o ABP Framework. Você pode continuar a usá-lo como pacote e obter atualizações facilmente, ou pode incluir seu código-fonte em sua solução (consulte o comando get-source da CLI) para desenvolver seu próprio módulo personalizado.
O Código Fonte
O código-fonte deste módulo pode ser acessado aqui. O código-fonte é licenciado com MIT, então você pode usá-lo e personalizá-lo livremente.
Interface de Usuário
Este módulo adiciona o item de menu "Administração -> Gerenciamento de Inquilinos -> Inquilinos" ao menu principal do aplicativo, que abre a página mostrada abaixo:
Nesta página, você vê todos os inquilinos. Você pode criar um novo inquilino conforme mostrado abaixo:
Neste modal;
- Nome: O nome único do inquilino. Se você usar subdomínios para seus inquilinos (como https://algum-inquilino.seu-domínio.com), este será o nome do subdomínio.
- Endereço de E-mail do Administrador: Endereço de e-mail do usuário administrador para este inquilino.
- Senha do Administrador: A senha do usuário administrador para este inquilino.
Quando você clica no botão Ações próximo a um inquilino, você verá as ações que pode realizar:
Gerenciando as Funcionalidades do Inquilino
A ação Funcionalidades abre um modal para habilitar/desabilitar/configurar funcionalidades para o inquilino relacionado. Aqui, um exemplo de modal:
Gerenciando as Funcionalidades do Host
O botão Gerenciar Funcionalidades do Host é usado para configurar as funcionalidades do lado do host, se você usar as funcionalidades do seu aplicativo também no lado do host.
Eventos Distribuídos
Este módulo define os seguintes ETOs (Event Transfer Objects) para permitir que você se inscreva em alterações nas entidades do módulo;
TenantEtoé publicado em alterações feitas em uma entidadeTenant.
Exemplo: Receber uma notificação quando um novo inquilino for criado
public class MeuManipulador :
IDistributedEventHandler<EntityCreatedEto<TenantEto>>,
ITransientDependency
{
public async Task HandleEventAsync(EntityCreatedEto<TenantEto> eventData)
{
TenantEto tenant = eventData.Entity;
// TODO: ...
}
}
TenantEto é configurado para publicar automaticamente os eventos. Você deve configurar-se para os outros. Consulte o documento Distributed Event Bus para aprender detalhes dos eventos pré-definidos.
A inscrição nos eventos distribuídos é especialmente útil para cenários distribuídos (como arquitetura de microsserviços). Se você estiver construindo um aplicativo monolítico ou ouvindo eventos no mesmo processo que executa o Módulo de Gerenciamento de Inquilinos, então a inscrição nos eventos locais pode ser mais eficiente e fácil.
Internos
Esta seção pode ser usada como referência se você quiser personalizar este módulo sem alterar seu código-fonte.
Camada de Domínio
Agregados
Tenant
Repositórios
ITenantRepository
Serviços de Domínio
TenantManager
Camada de Aplicação
Serviços de Aplicação
TenantAppService
Permissões
AbpTenantManagement.Tenants: Gerenciamento de inquilinos.AbpTenantManagement.Tenants.Create: Criar um novo inquilino.AbpTenantManagement.Tenants.Update: Editar um inquilino existente.AbpTenantManagement.Tenants.Delete: Excluir um inquilino existente.AbpTenantManagement.Tenants.ManageFeatures: Gerenciar as funcionalidades dos inquilinos.
Integração com o Entity Framework Core
TenantManagementDbContext(implementaITenantManagementDbContext)
Tabelas do Banco de Dados:
AbpTenantsAbpTenantConnectionStrings
Integração com o MongoDB
TenantManagementMongoDbContext(implementaITenantManagementMongoDbContext)
Coleções do Banco de Dados:
AbpTenants(inclui também a string de conexão)
Avisos
O ABP Framework permite usar a abordagem banco de dados por inquilino, que permite que um inquilino tenha um banco de dados dedicado. Este módulo possui a infraestrutura fundamental para tornar essa implementação possível (consulte seu código-fonte), no entanto, ele não implementa a camada de aplicação e as funcionalidades de interface do usuário para fornecê-lo como uma implementação pronta para uso. Você pode implementar esses recursos por conta própria ou considerar o uso do Módulo SaaS Comercial do ABP, que o implementa completamente e fornece muito mais recursos de negócios.



