Dépendance modulaire de l'ABP mince

Assassin souriant d 2021-08-19 21:58:20 阅读数:792

pendance modulaire abp mince

ABP Le module est très pratique pour nous d'étendre ou d'utiliser ABP Fonctions du module fournies ,PourABP Pensez aux dépendances entre les modules que vous fournissez , Et essayez de démonter les modules inutiles , Trouver les modules de base . Cette fois, c'est AspNetBoilerplate.

Téléchargement du code source

DeGithubTéléchargerABPCode sourceAprès,EntréesrcDossiers, La plupart des modules fournis sont ici . Beaucoup d'outils ABPEncapsulation, Personnellement, il est facile d'intégrer et d'intégrer ABPCe cadre.

Photos

src Il existe plusieurs types de bibliothèques de classe dans un dossier, comme .net standard( Pour la compatibilité .net framework)、.net 5 、.net frameworkDe.

Mon idée est la plus petite référence de module , Par conséquent, les deux conditions suivantes s'appliquent:

  • Supprimer.net frameworkDe, Se concentrer uniquement sur .net core Nécessaire .
  • SupprimerZeroModule.

Modules minces

C'est tout ce qui reste. , Il y a encore beaucoup de modules. , Mais pour la plupart d'entre eux, il s'agit plutôt d'encapsuler certains outils. , Par exemple, SignalR,AutoMapper,Log4Net,Dapper,EFCoreAttendez un peu!.

Photos

En triant les dépendances entre ces bibliothèques de classe ,( Supprimé de cette image Dapper、NHibernate、MemoryDBEtMongoDb), De cette façon, la classification est beaucoup plus claire , Vous pouvez le reconnaître en un coup d'oeil Abp Ce module de base . Quels modules fournissent quelles fonctions , C'est facile à voir. .

Photos

Créons un autre projet pour faire référence directement à cette partie de la Bibliothèque de classe , Au lieu de partir. Nuget La façon dont les paquets . S'appuyer d'abord sur les modules de base requis ,Par exemple,Abp、Abp.WebCommonEtAbp.AspNetCore Attendez quelques modules. , Capacité de répondre aux demandes les plus élémentaires , Même ceux qui lisent la base de données ORM Les outils ne sont pas inclus .

Photos

Dépendance vis - à - vis des modules de base

Ici Log4Net Inclure comme module requis ,Parce queAbp Les classes d'implémentation correspondantes sont nécessaires lors de l'enregistrement des journaux dans certaines parties du Centre. , Bien sûr, vous pouvez également utiliser d'autres composants de journalisation tels que NLogAttendez., Mais il faut le faire. Abp Classe abstraite encapsulée moyenne , Voir le lien suivant :https://www.cnblogs.com/donaldtdz/p/8213440.html

Créer une nouvelle solution vide AbpIntegrationDemo.sln

  • Créer unmodule Les dossiers sont utilisés pour placer les modules de base ci - dessus .
  • Créer unsrc Utilisé pour construire une hiérarchie dans un dossier .

Photos

Poursrc Les éléments dont dépend chaque niveau sont hiérarchisés et dépendants , Dont la couche centrale DomainDépendanceAbpModule,ApplicationEtInfrastructure Tout dépend du noyau. Abp Le module a des dépendances .

Photos

Et ainsi de suite., Les dépendances les plus élémentaires sont faites , Ajouter les couches correspondantes Module,SelonAbp Une approche modulaire de la construction les traverse .Par exemple,AbpIntegrationDemo.Admin, Module dépendant , Besoin d’injection 、 Les configurations sont ajoutées , Cette section est directement tirée de Abp start up Il a déménagé ici. , Ça pourrait être plus simple. , Une partie du contenu n'est pas actuellement utilisée .

[DependsOn(
typeof(AbpIntegrationApplicationModule),
typeof(AbpIntegrationInfrastructureModule),
typeof(AbpAspNetCoreModule)
)]
public class AbpIntegrationAdminModule : AbpModule
{
private readonly IWebHostEnvironment _env;
private readonly IConfiguration _appConfiguration;
public AbpIntegrationAdminModule(IWebHostEnvironment env, IConfiguration appConfiguration)
{
_env = env;
_appConfiguration = appConfiguration;
}
public override void PreInitialize()
{
Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(AbpIntegrationDomainConsts.ConnectionStringName);
Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = false;
}
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(typeof(AbpIntegrationAdminModule).GetAssembly());
}
public override void PostInitialize()
{
IocManager.Resolve<applicationpartmanager>()
.AddApplicationPartsIfNotAddedBefore(typeof(AbpIntegrationAdminModule).Assembly);
}
public override void Shutdown()
{
base.Shutdown();
}
}

Sur cette base, Modules selon les besoins ,Par exemple:EF Core、Redis、Hangfire、AutoMapperAttendez un peu!, Il suffit de le citer. , Au moins jusqu'à présent ,PourAbp Les dépendances du module et du module le plus central devraient être claires , Et pour voir beaucoup de gens dire Abp Une déclaration lourde , Le sentiment personnel est - il de voir trop de modules dépendants et d'avoir un sentiment de complexité? , En fait, il y a beaucoup de modules d'outils , Même si elle n'est pas utilisée Abp, Il est également utilisé dans le développement réel .
https://gitee.com/530521314/Partner.TreasureChest/tree/master/AbpIntegrateDemo

2021-08-19, J'espère qu'une fois la technologie terminée, je reviendrai voir mes pas.

Copyright:Cet article est[Assassin souriant d]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819215723164s.html