ABP微服务系列学习-搭建自己的微服务结构(二)

本文介绍如何使用ABP CLI创建微服务模块,详细讲解了搭建AdministrationService、IdentityService和LoggingService的过程,包括依赖关系配置、数据库上下文、模块安装、JWT和Swagger配置、日志服务的实现,并探讨了将日志模块独立为服务的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在解决方案根目录添加common.props,这个文件的作用是可以配置项目文件全局的一些属性,如忽略警告,全局PackageReference,语言版本等。

<Project>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
    <Version>1.0.0</Version>
    <NoWarn>$(NoWarn);CS1591</NoWarn>
	  <AbpProjectType>ms</AbpProjectType>
  </PropertyGroup>

  <Target Name="NoWarnOnRazorViewImportedTypeConflicts" BeforeTargets="RazorCoreCompile">
    <PropertyGroup>
      <NoWarn>$(NoWarn);0436</NoWarn>
    </PropertyGroup>
  </Target>

  <ItemGroup>
    <PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
    <PackageReference Include="Fody" Version="6.5.3">
      <PrivateAssets>All</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

搭建服务#

这里我们用ABP Cli来创建module模板,为什么用module模板呢,因为module模板最干净,没有别的依赖,app模板默认会添加ABP的基础模块,需要做删减,而module模板只需要添加需要的模块即可。

abp new FunShow.AdministrationService -t module --no-ui
abp new FunShow.IdentityService -t module --no-ui

创建完后删除多余的项目,authserver,DbMigrator, installer, mongoDb等,以及多余的文件,dockerfile,database目录,nuget.config,common.props等。
然后再把HttpApi.Host移到src目录。
最终结构如下


AdministrationService#

首先我们先确定一下AdministrationService需要哪些ABP基础模块功能。
一个是Permission,一个是Feature,一个是Setting,还有Tenant。这里没包含审计日志是因为后续计划把日志模块独立一个服务。
我们按照模块依赖关系安装对应的模块包,以及在Module中DependsOn对应的模块

FunShow.AdministrationService.Domain.Shared#

编辑项目文件,添加依赖

<Project Sdk="Microsoft.NET.Sdk">

	<Import Project="..\..\..\..\common.props" />

	<PropertyGroup>
		<TargetFramework>netstandard2.0</TargetFramework>
		<RootNamespace>FunShow.AdministrationService</RootNamespace>
		<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
	</PropertyGroup>

	<ItemGroup>
		<PackageReference Include="Volo.Abp.Validation" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.PermissionManagement.Domain.Shared" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.FeatureManagement.Domain.Shared" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.SettingManagement.Domain.Shared" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.TenantManagement.Domain.Shared" Version="7.0.0" />
	</ItemGroup>

	<ItemGroup>
		<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="7.0.1" />
	</ItemGroup>

	<ItemGroup>
		<EmbeddedResource Include="Localization\AdministrationService\*.json" />
		<Content Remove="Localization\AdministrationService\*.json" />
	</ItemGroup>

</Project>

在Module添加模块依赖

using Volo.Abp.PermissionManagement;
using Volo.Abp.FeatureManagement;
using Volo.Abp.SettingManagement;

[DependsOn(
    typeof(AbpPermissionManagementDomainSharedModule),
    typeof(AbpFeatureManagementDomainSharedModule),
    typeof(AbpSettingManagementDomainSharedModule),
    typeof(AbpValidationModule)
)]
public class AdministrationServiceDomainSharedModule : AbpModule

FunShow.AdministrationService.Domain#

编辑项目文件,添加依赖

<Project Sdk="Microsoft.NET.Sdk">

	<Import Project="..\..\..\..\common.props" />

	<PropertyGroup>
		<TargetFramework>net7.0</TargetFramework>
		<RootNamespace>FunShow.AdministrationService</RootNamespace>
	</PropertyGroup>

	<ItemGroup>
		<PackageReference Include="Volo.Abp.Ddd.Domain" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.Identity.Domain" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.PermissionManagement.Domain" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.FeatureManagement.Domain" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.SettingManagement.Domain" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="7.0.0" />
		<PackageReference Include="Volo.Abp.TenantManagement.Domain" Version="7.0.0" />
		<ProjectReference Include="..\FunShow.AdministrationService.Domain.Shared\FunShow.AdministrationService.Domain.Shared.csproj" />
	</ItemGroup>

</Project>

在Module添加模块依赖

using Volo.Abp.Domain;
using Volo.Abp.Modularity;
using Volo.Abp.FeatureManagement;
using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.PermissionManagement.OpenIddict;
using Volo.Abp.SettingManagement;
using Volo.Abp.TenantManagement;
using Volo.Abp.Identity;

[DependsOn(
    typeof(AbpDddDomainModule),
    typeof(AbpIdentityDomainModule),
    typeof(AdministrationServiceDomainSharedModule),
    typeof(AbpPermissionManagementDomainModule),
    typeof(AbpTenantManagementDomainModule),
    typeof(AbpFeatureManagementDomainModule),
    typeof(AbpSettingManagementDomainModule),
    typeof(AbpPermissionManagementDomainOpenIddictModule),
    typeof(AbpPermissionManagementDomainIdentityModule)
)]
public class AdministrationServiceDomainModule : AbpModule
{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值