Eaf.Middleware.Core
9.1.0
Prefix Reserved
dotnet add package Eaf.Middleware.Core --version 9.1.0
NuGet\Install-Package Eaf.Middleware.Core -Version 9.1.0
<PackageReference Include="Eaf.Middleware.Core" Version="9.1.0" />
<PackageVersion Include="Eaf.Middleware.Core" Version="9.1.0" />
<PackageReference Include="Eaf.Middleware.Core" />
paket add Eaf.Middleware.Core --version 9.1.0
#r "nuget: Eaf.Middleware.Core, 9.1.0"
#:package Eaf.Middleware.Core@9.1.0
#addin nuget:?package=Eaf.Middleware.Core&version=9.1.0
#tool nuget:?package=Eaf.Middleware.Core&version=9.1.0
Eaf.Middleware.Core
Descrição Técnica
O Eaf.Middleware.Core é a camada de domínio central do Enterprise Application Foundation (EAF). Este módulo fornece as entidades, serviços, configurações, autorização, auditoria e funcionalidades base do framework, servindo como fundação para todos os outros módulos do EAF.
Este módulo implementa os padrões de Domain-Driven Design (DDD) e segue a arquitetura em camadas do ASP.NET Boilerplate (ABP).
Relação com o EAF e ASP.NET Boilerplate
Integração com ABP
- Abp.ZeroCore: Fornece infraestrutura para multi-tenancy, usuários, roles e permissões
- Abp.AutoMapper: Configuração automática de mapeamento de objetos
- Abp.MailKit: Integração para envio de emails
- Abp.HangFire.AspNetCore: Processamento de jobs em background
Dependências do EAF
- Eaf.Middleware.AzureActiveDirectory: Integração com Azure AD para autenticação externa
- Eaf.Middleware.Ldap: Autenticação via LDAP/Active Directory
Principais Componentes
Autorização
- Gerenciamento de permissões e roles
- Autorização baseada em claims
- Integração com Azure AD e LDAP
Auditoria
- Rastreamento automático de operações
- Logs de alterações de entidades
- Histórico de ações dos usuários
Configurações
- Sistema de configurações multi-tenant
- Definições de features
- Gerenciamento de edições
Chat e Amizades
- Sistema de chat em tempo real
- Gerenciamento de amizades entre usuários
- Integração com SignalR
Hangfire
- Configuração avançada de jobs com seleção automática de storage
- Suporte a SQL Server, Redis (
Hangfire.Redis.StackExchange) e InMemory - Enum
HangfireStorageTypepara identificação do tipo de armazenamento - Logging aprimorado com Hangfire.Console
- Heartbeat para monitoramento
Guia de Instalação
Pré-requisitos
- .NET 10.0 SDK ou superior
- ASP.NET Boilerplate 10.4.0
Instalação via NuGet
dotnet add package Eaf.Middleware.Core --version 10.4.0
Instalação via Referência de Projeto
Adicione a referência ao seu arquivo .csproj:
<ProjectReference Include="..\Eaf.Middleware.Core\Eaf.Middleware.Core.csproj" />
Exemplo Básico de Uso
1. Registrando o Módulo
No seu módulo principal, herde de MiddlewareCoreModule:
[DependsOn(
typeof(MiddlewareCoreModule),
typeof(AbpAutoMapperModule),
typeof(AbpHangfireAspNetCoreModule)
)]
public class MyApplicationModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}
2. Usando Serviços de Domínio
public class MyService : ApplicationService
{
private readonly ISettingManager _settingManager;
private readonly IPermissionManager _permissionManager;
public MyService(
ISettingManager settingManager,
IPermissionManager permissionManager)
{
_settingManager = settingManager;
_permissionManager = permissionManager;
}
public async Task<string> GetSettingValueAsync(string settingName)
{
return await _settingManager.GetSettingValueAsync(settingName);
}
public async Task<bool> CheckPermissionAsync(string permissionName)
{
return await _permissionManager.IsGrantedAsync(permissionName);
}
}
3. Usando Configurações de Chat
public class ChatService : ApplicationService, IChatService
{
private readonly IChatMessageManager _chatMessageManager;
public ChatService(IChatMessageManager chatMessageManager)
{
_chatMessageManager = chatMessageManager;
}
public async Task SendMessageAsync(SendChatMessageInput input)
{
await _chatMessageManager.SendMessageAsync(
Session.UserId,
input.TenantId,
input.TargetUserId,
input.Message
);
}
}
4. Configurando Hangfire com Console
O módulo já inclui configuração aprimorada para Hangfire:
public override void PreInitialize()
{
Configuration.BackgroundJobs.UseHangfire(configuration =>
{
configuration.UseSqlServerStorage("Default");
configuration.UseConsole(); // Logging aprimorado
configuration.UseHeartbeat(); // Monitoramento
});
}
Estrutura do Módulo
Eaf.Middleware.Core/
├── Auditing/ # Configurações de auditoria
├── Authorization/ # Sistema de autorização e permissões
├── Cache/ # Configurações de cache
├── Chat/ # Sistema de chat
├── Configuration/ # Sistema de configurações
├── Editions/ # Gerenciamento de edições
├── Features/ # Sistema de features
├── Friendships/ # Gerenciamento de amizades
├── Hangfire/ # Configuração de Hangfire
├── Identity/ # Configurações de identidade
├── Localization/ # Arquivos de localização
├── MultiTenancy/ # Configurações multi-tenant
├── Net/ # Utilitários de rede
└── Extensions/ # Extensões do framework
Configurações Opcionais
Configuração de Serilog
public override void PreInitialize()
{
Configuration.BackgroundJobs.UseHangfire(configuration =>
{
configuration.UseSerilogLogProvider(); // Integração com Serilog
});
}
Configuração de Email
public override void PreInitialize()
{
Configuration.ReplaceService<IEmailSender, CustomEmailSender>(DependencyLifeStyle.Transient);
}
Testes
Os testes para este módulo estão localizados em:
test/Eaf.MiddlewareCore.Tests/
Para executar os testes:
dotnet test test/Eaf.MiddlewareCore.Tests/Eaf.MiddlewareCore.Tests.csproj
Licença
Este projeto faz parte do Enterprise Application Foundation (EAF) e está licenciado sob os mesmos termos do projeto principal.
Suporte
Para issues e perguntas, consulte o repositório principal do EAF: https://github.com/afonsoft/EAF
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Abp (>= 10.4.0)
- Abp.AutoMapper (>= 10.4.0)
- Abp.HangFire.AspNetCore (>= 10.4.0)
- Abp.MailKit (>= 10.4.0)
- Abp.Zero.Common (>= 10.4.0)
- Abp.ZeroCore (>= 10.4.0)
- AutoMapper (>= 14.0.0)
- Castle.Windsor.MsDependencyInjection (>= 5.0.0)
- Eaf.Middleware.AzureActiveDirectory (>= 9.1.0)
- Eaf.Middleware.Ldap (>= 9.1.0)
- Hangfire.Console (>= 1.4.3)
- Hangfire.Heartbeat (>= 0.6.0)
- Hangfire.MemoryStorage (>= 1.8.1.2)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.8)
- Microsoft.AspNetCore.Authentication.MicrosoftAccount (>= 10.0.8)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.3)
- Microsoft.Extensions.Configuration.Json (>= 10.0.3)
- Microsoft.Extensions.Configuration.UserSecrets (>= 10.0.3)
- Microsoft.Extensions.Hosting (>= 10.0.3)
- Microsoft.IdentityModel.JsonWebTokens (>= 8.18.0)
- Microsoft.IdentityModel.Protocols.OpenIdConnect (>= 8.18.0)
- MimeKit (>= 4.16.0)
- Serilog.AspNetCore (>= 9.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- TimeZoneConverter (>= 7.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.