项目整体架构构建

Administrator 8 2023-09-23

1.先在cmd命令中安装abp CLI:

dotnet tool install -g Volo.Abp.Cli

2.创建项目文件夹WeifuwuDemo ,然后在文件夹顶部地址栏执行cmd命令,进入cmd命令界面,进行项目解决方案WeifuwuDemo的创建,不同的版本号对应的框架版本也不一样,可在官网进行查看:

abp new WeifuwuDemo -t console -o WeifuwuDemo -v 5.3.5

结果如图:

3.进入到项目文件夹,创建微服务模块:

abp new WeifuwuDemo.Order -t module --no-ui --dbms mysql -o moduls\WeifuwuDemo.Order -v 5.3.5
abp new WeifuwuDemo.Product -t module --no-ui --dbms mysql -o moduls\WeifuwuDemo.Product -v 5.3.5
abp new WeifuwuDemo.Payment -t module --no-ui --dbms mysql -o moduls\WeifuwuDemo.Payment -v 5.3.5
abp new WeifuwuDemo.User -t module --no-ui --dbms mysql -o moduls\WeifuwuDemo.User -v 5.3.5
abp new WeifuwuDemo.Seckill -t module --no-ui --dbms mysql -o moduls\WeifuwuDemo.Seckill -v 5.3.5

创建完成后,目录结构如下:

4.创建微服务层:在WeifuwuDemo文件夹下新建microservices文件夹,并把模块层中的host文件夹下的*.HttpApi.Host文件夹拷贝到microservices文件夹中;

5.打开项目解决方案,创建对应的解决方案文件夹moduls和microservices,并且在moduls解决方案文件夹下将每个模块单独创建一个文件夹,然后将模块中的项目引入;在microservices项目文件夹下把microservices中的项目引入;

6.创建api网关层:在解决方案中创建解决方案文件夹gateways,在项目文件夹中创建gateways文件夹,然后分别创建中台和后台的webapi项目MiddleApiGateway和BackendApiGateway;

7.创建中台层(聚合层):在解决方案和项目文件夹中新增middles文件夹,然后分别创建两个聚合接口的webapi项目SeckillAggregate和AdminAggregate

8.创建基础设施层:在解决方案和项目文件夹中新增frameworks文件夹,并且新增一个控制台应用程序WeifuwuDemo.Commons;

9.创建前台层:创建前端文件夹fronts;

10.运行:(1).将微服务层microservices里的项目报错的引用删掉,重新添加项目引用;

(2).在项目文件的HttpApiHostModule中把报红的代码注释掉,目前用不着;

(3).uget获取mysql驱动:Volo.Abp.EntityFrameworkCore.MySQL,并注释掉原来的sqlserver,使用mysql数据库

Configure<AbpDbContextOptions>(options =>
        {
            //替换掉使用的数据库
            //options.UseSqlServer();
            options.UseMySQL();
        });

(4).在appsetings.json中把数据库连接更改过来:

  "ConnectionStrings": {
    "Default": "Server=localhost;Port=3306;Database=Order;Uid=root;Pwd=anran9359;",
    "Order": "Server=localhost;Port=3306;Database=Order;Uid=root;Pwd=anran9359;"
  },

(5).数据库迁移部分:HttpApiHostMigrationsDbContextFactory文件中,将默认的sqlserver替换为mysql:

public OrderHttpApiHostMigrationsDbContext CreateDbContext(string[] args)
    {
        var configuration = BuildConfiguration();

        //var builder = new DbContextOptionsBuilder<OrderHttpApiHostMigrationsDbContext>()
        //    .UseSqlServer(configuration.GetConnectionString("Order"));

        var builder = new DbContextOptionsBuilder<OrderHttpApiHostMigrationsDbContext>()
            .UseMySql(configuration.GetConnectionString("Order"),MySqlServerVersion.LatestSupportedServerVersion);


        return new OrderHttpApiHostMigrationsDbContext(builder.Options);
    }

(6).注释掉目前不需要的东西,然后运行起来:

typeof(AbpAuditLoggingEntityFrameworkCoreModule),
    typeof(AbpPermissionManagementEntityFrameworkCoreModule),
    typeof(AbpSettingManagementEntityFrameworkCoreModule),

(7).其他项目同理,进行调整;