Modelos de Projeto

O PowerPortalsPro traz dois modelos de projeto que estruturam um portal completo — conectividade, autenticação, manipuladores de segurança, localização e páginas de identidade pré-construídas — prontos para rodar em minutos. Um aplicativo React de página única (recomendado) e um aplicativo web Blazor estão ambos disponíveis, e o conjunto de recursos PowerPortalsPro é idêntico em ambos. Escolha a stack de front-end que se encaixe no seu time.

Instalação dos Templates

Instale o pacote PowerPortalsPro.AspNetCore.Templates do NuGet usando a CLI .NET. Ambos os templates vêm neste único pacote:

Escolhendo um Modelo

Uma vez instalado, crie um projeto a partir da CLI .NET ou do diálogo "Novo Projeto" do Visual Studio (procure por "Power Portals Pro"). Dois modelos estão disponíveis — escolha aquele que combina com sua pilha front-end:

React (recomendado)

Um host ASP.NET Core combinado com um aplicativo de página única React + Vite + TypeScript construído no Fluent UI React. Recomendado para novos portais — ferramentas modernas de front-end, um ciclo de desenvolvimento rápido com recarga a quente e o conjunto de componentes mais amplo.

Blazor

Um aplicativo web ASP.NET Core Blazor construído sobre o Fluent UI Blazor, com um modo de renderização que você escolhe no momento do andaime via --interactivity. É um ótimo encaixe quando sua equipe trabalha principalmente em C# e prefere ficar totalmente na pilha de interface do .NET.

Recomendado

Ambos os templates expõem as mesmas capacidades do PowerPortalsPro — grades, editores, segurança, localização e identidade. Sugerimos o React para novos projetos, a menos que sua equipe tenha um motivo específico para permanecer totalmente em C#, caso em que o template do Blazor é totalmente suportado.

O Modelo React

O powerportalspro-react template gera dois projetos que rodam juntos:

Modos de Interatividade Blazor

O template Blazor também aceita --interactivity Server, --interactivity WebAssembly, ou --interactivity Auto escolher seu modo de renderização (o template React é sempre um aplicativo de página única, então não tem opção equivalente). Escolher um modo logo de cara só afeta o layout do projeto gerado — o próprio PowerPortalsPro roda corretamente nos três. Veja a página Blazor Interactivity para uma comparação completa.

Dica

A --interactivity bandeira corresponde à bandeira do template padrão dotnet new blazor com o mesmo nome, então tudo que você já sabe sobre os modos de renderização do Blazor é mantido.

Opções de Modelo

Ambos os templates expõem dotnet new opções para que você possa personalizar o projeto gerado desde o início. Passe-os na linha de comando ou escolha na tela de criação de projetos do Visual Studio (e na dotnet new interface interativa). As opções mais úteis:

Por exemplo, um portal Blazor auto-renderizado para ambos os públicos, com login do Google e tradução automática do Azure:

Dica

Execute dotnet new powerportalspro -h (ou dotnet new powerportalspro-react -h) para listar todas as opções e seu padrão. No Visual Studio, eles aparecem como caixas de seleção e menu suspenso na tela de criação de projetos.

O que está incluído

O modelo gera um projeto de portal totalmente funcional com o seguinte:

Entendendo Program.cs

O Program.cs arquivo é onde todos os serviços são registrados e o pipeline de aplicação é configurado. Aqui está uma divisão de cada seção:

Modelo React

O guia abaixo descreve o modelo Program.csBlazor . O host do template React registra os mesmos serviços centrais — AddPowerPortalsProWebServer(), o Dataverse ConnectionOptions, localização, manipuladores de segurança e e-mail — mas omite o registro específico AddPowerPortalsProWebBlazorFluentUI() do Blazor, serve o React SPA e expõe os endpoints de autenticação via MapAuthEndpoints<PortalUser>() em vez de MapAdditionalIdentityEndpoints().

Cache distribuído

O template registra um cache distribuído baseado em memória. Em produção, substitua isso por um cache persistente como Redis ou SQL Server para melhor desempenho em múltiplas instâncias.

Registro Fluent UI

AddPowerPortalsProWebBlazorFluentUI() registra todos os componentes do Fluent UI Blazor usados pelos editores, grids e componentes de layout do PowerPortalsPro.

Serviços de servidor

AddPowerPortalsProWebServer() registra os serviços principais do lado do servidor, incluindo a camada de acesso a dados do Dataverse, aplicação de segurança, pipeline de interceptores e carregamento de localização.

Conexão Dataverse

A ConnectionOptions configuração especifica como o portal se autentica com o Dataverse. O modelo utiliza autenticação por Segredo do Cliente com credenciais armazenadas em appsettings.json ou Segredos de Usuário.

Dica

Para melhores práticas de segurança, armazene suas credenciais em Segredos de Usuário durante o desenvolvimento e no Azure Key Vault ou variáveis de ambiente em produção. Nunca comprometa segredos com o controle de versão.

Configuração de Localização

AddLocalizationDirectory registram diretórios contendo arquivos JSON de localização. Por padrão LocalizeAllAvailableTables é true, então rótulos, nomes de colunas e nomes de visualização são retirados automaticamente de todas as tabelas do Dataverse. Defina para false e use AddTableToLocalize / AddTablesToLocalize para restringir a localização a uma lista explícita.

Opções de Identidade

A IdentityOptions seção configura ASP.NET configurações de Identidade Central, como exigir confirmação por e-mail antes do login.

Tradução Automática (opcional)

Gerar o projeto para --IncludeMachineTranslation conectar a tradução automática para o painel de arquivos Translate na página de Administração de Localização. O modelo adiciona abaixo o pacote do PowerPortalsPro.Web.Server.Translation.* provedor escolhido e seu registro; escolha o provedor com --MachineTranslationProvider: Azure (o padrão), DeepL, ou Google. Forneça a chave do provedor via configuração / secretos de usuário sob Azure:Translation:Key, DeepL:Translation:Key, ou Google:Translation:Key para corresponder.

Dica

Sem essa opção, a página de Administrador de Localização ainda funciona — a visão geral do pipeline e os downloads por fonte/mesclados não são afetados; Apenas o painel de tradução permanece oculto, e o registro é enviado conforme as orientações comentadas para que você possa ativar manualmente depois.

Registro de Manipuladores de Segurança

Os manipuladores de permissão são registrados no contêiner DI para controlar o acesso CRUD para cada tabela. O modelo inclui handlers para Conta (acesso total) e Contato (somente leitura com atualizações baseadas no proprietário).

Configuração do E-mail

Ele EmailServiceOptions configura o endereço de e-mail do remetente usado para confirmação de conta e redefinição de senha. Isso é enviado pelo serviço de e-mail Dataverse.

Autenticação Microsoft (Opcional)

O modelo inclui código comentado para adicionar autenticação Microsoft Entra ID (Azure AD). Descomente e configure seu ID de Cliente e seu Segredo para habilitar login externo via contas Microsoft.

Middleware Pipeline

UsePowerPortalsProWebServer() adiciona o middleware PowerPortalsPro. UseLocalization() Habilita o sistema de localização. MapAdditionalIdentityEndpoints() registra o endpoint de login baseado em cookies usado pelas páginas de identidade.

Autenticação em Dois Fatores (Opcional)

O modelo inclui código comentado para habilitar a Autenticação de Dois Fatores usando códigos baseados em e-mail. Descomente a AuthenticatorTokenProvider opção e a AddDefaultTokenProviders() chamada para ativá-la.

Customizações Comuns

Após a estrutura do projeto, aqui estão os próximos passos comuns: