Skip to content

Commit

Permalink
Merge pull request #1067 from feijie999/dev
Browse files Browse the repository at this point in the history
完善单体服务的支持
  • Loading branch information
colinin authored Jan 10, 2025
2 parents d0b3e83 + 87b068b commit b89febe
Show file tree
Hide file tree
Showing 379 changed files with 27,621 additions and 5,465 deletions.
13 changes: 13 additions & 0 deletions README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,19 @@ This is a [vue-vben-admin](https://github.com/anncwb/vue-vben-admin) -based Abp

[![Build](https://github.com/colinin/abp-next-admin/actions/workflows/build.yml/badge.svg)](https://github.com/colinin/abp-next-admin/actions/workflows/build.yml)

## Deployment Options

### Monolithic Service Deployment

If you don't need a microservices architecture, you can choose the monolithic service deployment option. Monolithic services are characterized by simple deployment and easy maintenance.

- [Monolithic Service Startup Guide](./docs/startup-aio-readme.en.md)
- [单体服务启动说明](./docs/startup-aio-readme.md)

### Microservices Deployment

If you need higher scalability and a more flexible service architecture, you can choose the microservices deployment option.

## Quick Start

### 0、Configurate hosts
Expand Down
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

[English](./README.en.md) | 简体中文

[更新说明](./RELEASE.md) 更新说明
Expand All @@ -11,6 +10,18 @@

[![Build](https://github.com/colinin/abp-next-admin/actions/workflows/build.yml/badge.svg)](https://github.com/colinin/abp-next-admin/actions/workflows/build.yml)

## 部署方案

### 单体服务部署

如果您不需要微服务架构,可以选择单体服务部署方案。单体服务具有部署简单、维护方便的特点。

- [单体服务启动说明](./docs/startup-aio-readme.md)
- [Monolithic Service Startup Guide](./docs/startup-aio-readme.en.md)

### 微服务部署

如果您需要更高的可扩展性和更灵活的服务架构,可以选择微服务部署方案。

## 快速搭建微服务启动项目

Expand Down
3,833 changes: 1,934 additions & 1,899 deletions aspnet-core/LINGYUN.MicroService.SingleProject.sln

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ public string GetUsageInfo()
sb.AppendLine("Options:");
sb.AppendLine("");
sb.AppendLine("-pk|--package <package-name> (default: app)");
sb.AppendLine("-t|--template <template-name> (default: lam)");
sb.AppendLine("-t|--template <template-name> (default: lam), optional:lam、laa");
sb.AppendLine("-d|--database-provider <database-provider> (if supported by the template)");
sb.AppendLine("-o|--output-folder <output-folder> (default: current folder)");
sb.AppendLine("-v|--version <version> (default: latest version)");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ await TryReplacePackageAndCompanyNameWithProjectFile(
projectFiles,
createArgs.PackageName,
createArgs.SolutionName.CompanyName,
createArgs.DatabaseManagementSystem);
dbm);

Logger.LogInformation("Rewrite appsettings.json.");
await TryReplaceAppSettingsWithProjectFile(
Expand All @@ -96,6 +96,13 @@ await TryReplaceAppSettingsWithProjectFile(
createArgs.SolutionName.CompanyName,
createArgs.SolutionName.ProjectName,
createArgs.ConnectionString);

// Logger.LogInformation("Rewrite scripts.");
// await TryReplaceScriptProjectFile(
// projectFiles,
// createArgs.PackageName,
// createArgs.SolutionName.CompanyName,
// dbm);

Logger.LogInformation("Rewrite application url.");
await TryReplaceApplicationUrlWithProjectFile(
Expand All @@ -112,7 +119,8 @@ await TryReplaceVersionWithProjectFile(
await TryReplacePackageAndCompanyNameWithProjectFolder(
projectFiles,
createArgs.PackageName,
createArgs.SolutionName.CompanyName);
createArgs.SolutionName.CompanyName,
dbm);

Logger.LogInformation($"'{createArgs.SolutionName.ProjectName}' has been successfully created to '{createArgs.OutputFolder}'");
}
Expand Down Expand Up @@ -203,32 +211,53 @@ protected async virtual Task TryReplaceAppSettingsWithProjectFile(
await ReplaceFileTextAsync(projectFile, defaultConnectionString, connectionString);
}
}

//
// protected async virtual Task TryReplaceScriptProjectFile(
// List<FindFile> projectFiles,
// string packageName,
// string companyName,
// string dbm = "MySQL")
// {
// var canReplaceFiles = projectFiles.Where(f => !f.IsFolder && f.Name.EndsWith(".bat", StringComparison.OrdinalIgnoreCase) ||
// f.Name.EndsWith(".sh", StringComparison.OrdinalIgnoreCase) ||
// f.Name.EndsWith(".ps1", StringComparison.OrdinalIgnoreCase));
// foreach (var projectFile in canReplaceFiles)
// {
// await ReplaceFileTextAsync(projectFile, "PackageName", packageName);
// await ReplaceFileTextAsync(projectFile, "CompanyName", companyName);
//
// await ReplaceFileTextAsync(projectFile, "DatabaseManagementName", dbm);
// }
// }

protected async virtual Task TryReplacePackageAndCompanyNameWithProjectFile(
List<FindFile> projectFiles,
string packageName,
string companyName,
DatabaseManagementSystem database = DatabaseManagementSystem.NotSpecified)
string dbm = "MySQL")
{
var canReplaceFiles = projectFiles.Where(f => !f.IsFolder && !f.Name.Contains("appsettings"));
foreach (var projectFile in canReplaceFiles)
{
await ReplaceFileTextAsync(projectFile, "PackageName", packageName);
await ReplaceFileTextAsync(projectFile, "CompanyName", companyName);
await ReplaceFileTextAsync(projectFile, "DatabaseManagementName", dbm);
}
}

protected virtual Task TryReplacePackageAndCompanyNameWithProjectFolder(
List<FindFile> projectFiles,
string packageName,
string companyName)
string companyName,
string dbm = "MySQL")
{
var canReplaceFiles = projectFiles
.OrderByDescending(f => f.Depth)
.OrderByDescending(f => !f.IsFolder);
foreach (var projectFile in canReplaceFiles)
{
var replaceFileName = projectFile.Name.Replace("PackageName", packageName).Replace("CompanyName", companyName);
var replaceFileName = projectFile.Name.Replace("PackageName", packageName).Replace("CompanyName", companyName).Replace("DatabaseManagementName", dbm);

if (File.Exists(projectFile.Name))
{
Expand All @@ -238,7 +267,7 @@ protected virtual Task TryReplacePackageAndCompanyNameWithProjectFolder(
}

var canReplacePaths = projectFiles
.Where(projectFile => projectFile.Name.Contains("PackageName") || projectFile.Name.Contains("CompanyName"))
.Where(projectFile => projectFile.Name.Contains("PackageName") || projectFile.Name.Contains("CompanyName") || projectFile.Name.Contains("DatabaseManagementName"))
.OrderByDescending(f => f.Depth)
.OrderByDescending(f => f.IsFolder);
foreach (var projectFile in canReplacePaths)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
"LINGYUN.Abp.Cli": {
"commandName": "Project",
//"commandLineArgs": "generate-view -t vben-view -m auditing -o D:\\Projects\\Development\\view-script -url http://127.0.0.1:30000/"
"commandLineArgs": "generate-proxy -t flutter -asp rest-service -u http://127.0.0.1:30000 -m notifications -o D:\\Projects\\Development\\flutter-script -skip-cli-version-check"
// "commandLineArgs": "generate-proxy -t flutter -asp rest-service -u http://127.0.0.1:30000 -m notifications -o D:\\Projects\\Development\\flutter-script -skip-cli-version-check"
"commandLineArgs": "create MyCompanyName.MyProjectName -t lam -pk MyPackageName -o /Users/feijie/Projects/Tests --dbms MySql --cs \"Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None\" --no-random-port"
}
}
}
7 changes: 7 additions & 0 deletions aspnet-core/framework/cli/LINGYUN.Abp.Cli/README.zh-Hans.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@
dotnet tool install --global LINGYUN.Abp.Cli
```

打包项目为LINGYUN.Abp.Cli.8.3.0.nupkg

```shell
dotnet pack -o ./nupkg
dotnet tool install -g LINGYUN.Abp.Cli --version 8.3.0 --add-source ./nupkg
```

## 使用方法

```shell
Expand Down
33 changes: 33 additions & 0 deletions aspnet-core/framework/cloud-aliyun/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# LINGYUN.Abp.Aliyun 模块概述

## 简介
LINGYUN.Abp.Aliyun 模块集成了阿里云的 SDK,提供了对阿里云服务的全面支持,包括认证、短信服务和对象存储等功能。

## 包含的项目列表
- **LINGYUN.Abp.Aliyun**
- **LINGYUN.Abp.Aliyun.Features**
- **LINGYUN.Abp.Aliyun.SettingManagement**

## 每个项目的主要功能概述

### LINGYUN.Abp.Aliyun
- 提供阿里云服务的基础 SDK 集成。
- 支持阿里云 RAM 认证和 STS Token 访问。
- 支持短信服务和对象存储。
- 提供分布式缓存支持。

### LINGYUN.Abp.Aliyun.Features
- 提供阿里云服务的功能定义和管理。
- 支持启用/禁用阿里云服务功能。
- 与 ABP 功能管理系统集成。

### LINGYUN.Abp.Aliyun.SettingManagement
- 提供阿里云服务配置的查询接口。
- 通过 API 接口获取阿里云配置信息。
- 与 ABP 设置管理系统集成。

## 模块的整体用途和重要性
该模块为开发者提供了与阿里云服务的无缝集成,简化了云服务的使用和管理,提升了应用程序的灵活性和可扩展性。

## 如何使用或集成该模块
在项目中引用相应的模块,并根据需要配置阿里云的相关参数。确保与 ABP 框架的其他模块配合使用,以实现最佳效果。
42 changes: 42 additions & 0 deletions aspnet-core/framework/cloud-tencent/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# LINGYUN.Abp.Tencent 模块概述

## 简介
LINGYUN.Abp.Tencent 模块集成了腾讯云的各项服务,提供了对腾讯云服务的全面支持,包括对象存储、短信服务、QQ 互联和语音合成等功能。

## 包含的项目列表
- **LINGYUN.Abp.Tencent**
- **LINGYUN.Abp.BlobStoring.Tencent**
- **LINGYUN.Abp.Sms.Tencent**
- **LINGYUN.Abp.Tencent.QQ**
- **LINGYUN.Abp.Tencent.SettingManagement**
- **LINGYUN.Abp.Tencent.TTS**

## 每个项目的主要功能概述

### LINGYUN.Abp.Tencent
- 提供腾讯云 SDK 客户端工厂,支持动态创建腾讯云各项服务的客户端。
- 支持多租户配置和多语言本地化。
- 提供统一的腾讯云服务配置管理。

### LINGYUN.Abp.BlobStoring.Tencent
- 支持腾讯云对象存储服务,自动创建存储桶。
- 支持多区域配置和文件大小限制。

### LINGYUN.Abp.Sms.Tencent
- 支持腾讯云短信服务的发送功能,支持多手机号批量发送。
- 内置错误处理和日志记录。

### LINGYUN.Abp.Tencent.QQ
- 支持 QQ 互联快速登录,支持多租户配置。

### LINGYUN.Abp.Tencent.SettingManagement
- 提供腾讯云服务的配置管理界面,支持全局和租户级别的配置管理。

### LINGYUN.Abp.Tencent.TTS
- 支持腾讯云语音合成服务,提供 TTS 客户端工厂。

## 模块的整体用途和重要性
该模块为开发者提供了与腾讯云服务的无缝集成,简化了云服务的使用和管理,提升了应用程序的灵活性和可扩展性。

## 如何使用或集成该模块
在项目中引用相应的模块,并根据需要配置腾讯云的相关参数。确保与 ABP 框架的其他模块配合使用,以实现最佳效果。
59 changes: 59 additions & 0 deletions aspnet-core/framework/common/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# common 模块概述

## 模块简介
`common`模块是ABP框架的基础模块,提供了一系列通用功能和服务,旨在支持各种应用程序的开发和扩展。该模块包含多个子模块,每个子模块实现了特定的功能,帮助开发者快速构建高效的应用程序。

## 包含的项目列表
1. **LINGYUN.Abp.Aliyun.Authorization**
- 提供阿里云基础认证功能,支持AppKeyId和AccessKeySecret的配置。

2. **LINGYUN.Abp.AspNetCore.HttpOverrides**
- 实现HTTP传输标头的重写,支持获取反向代理中的真实客户地址。

3. **LINGYUN.Abp.AspNetCore.Mvc.Client**
- 提供可配置的用户配置缓存时间,支持多租户接口。

4. **LINGYUN.Abp.BackgroundJobs.Hangfire**
- 基于Hangfire实现的后台作业模块,支持即时、延迟和周期性任务。

5. **LINGYUN.Abp.ExceptionHandling**
- 提供统一的异常处理和通知机制,支持自定义异常处理程序。

6. **LINGYUN.Abp.Location**
- 提供地理编码、反向地理编码和IP地理位置解析功能。

7. **LINGYUN.Abp.IdGenerator**
- 实现分布式唯一ID生成器,支持雪花算法。

8. **LINGYUN.Abp.Wrapper**
- 统一包装API返回结果和异常处理。

## 每个项目的主要功能概述
- **阿里云认证模块**: 提供阿里云的认证功能,简化了对阿里云服务的访问。
- **HTTP重写模块**: 处理HTTP请求中的标头,确保获取真实的客户端地址。
- **MVC客户端模块**: 提供用户配置缓存,支持多租户架构。
- **后台作业模块**: 支持任务的调度和执行,确保后台任务的可靠性。
- **异常处理模块**: 处理应用中的异常,提供统一的通知机制。
- **位置服务模块**: 提供地理位置相关的功能,支持地址与坐标之间的转换。
- **ID生成模块**: 生成分布式唯一ID,确保在高并发环境下的唯一性。
- **包装器模块**: 统一处理API的返回结果和异常,提升API的可用性。

## 模块的整体用途和重要性
`common`模块为ABP框架提供了基础设施,支持开发者在构建应用时快速集成常用功能,减少重复工作,提高开发效率。通过这些模块,开发者能够更专注于业务逻辑的实现,而无需担心底层的实现细节。

## 如何使用或集成该模块的简要说明
在项目中使用`common`模块时,只需在模块类中添加相应的依赖项,并在`ConfigureServices`方法中进行必要的配置。例如:

```csharp
[DependsOn(typeof(LINGYUN.Abp.Aliyun.Authorization))]
public class YourProjectModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
// 配置服务
}
}
```

## 提示
本项目中的README是由AI模型分析代码逻辑后自动生成的,如有误,请提issues或PR。
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
<Content Include="appsettings.PostgreSql.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Remove="appsettings.json" />
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
Expand All @@ -46,6 +50,7 @@
<ProjectReference Include="..\..\modules\platform\LINGYUN.Abp.UI.Navigation.VueVbenAdmin\LINGYUN.Abp.UI.Navigation.VueVbenAdmin.csproj" />
<ProjectReference Include="..\LY.MicroService.Applications.Single.EntityFrameworkCore.PostgreSql\LY.MicroService.Applications.Single.EntityFrameworkCore.PostgreSql.csproj" />
<ProjectReference Include="..\LY.MicroService.Applications.Single.EntityFrameworkCore.MySql\LY.MicroService.Applications.Single.EntityFrameworkCore.Mysql.csproj" />
<ProjectReference Include="..\LY.MicroService.Applications.Single.EntityFrameworkCore.SqlServer\LY.MicroService.Applications.Single.EntityFrameworkCore.SqlServer.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
using LINGYUN.Abp.UI.Navigation.VueVbenAdmin;
using Microsoft.Extensions.DependencyInjection;
using LY.MicroService.Applications.Single.EntityFrameworkCore.PostgreSql;
// using LY.MicroService.Applications.Single.EntityFrameworkCore.MySql;
using LY.MicroService.Applications.Single.EntityFrameworkCore.MySql;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;

namespace LY.MicroService.Applications.Single.DbMigrator;

[DependsOn(
typeof(AbpUINavigationVueVbenAdminModule),
typeof(SingleMigrationsEntityFrameworkCorePostgreSqlModule),
// typeof(SingleMigrationsEntityFrameworkCoreMySqlModule),
// typeof(SingleMigrationsEntityFrameworkCorePostgreSqlModule),
typeof(SingleMigrationsEntityFrameworkCoreMySqlModule),
typeof(AbpAutofacModule)
)]
public partial class SingleDbMigratorModule : AbpModule
Expand Down
Loading

0 comments on commit b89febe

Please sign in to comment.