项目

ABP Studio:运行应用程序

使用解决方案运行器轻松运行你的应用程序并设置基础设施。你可以根据需要和团队创建不同的配置文件来组织项目。只需导航至左侧菜单中的解决方案运行器面板。

solution-runner

项目结构可能因你的选择而异。例如,MVC 微服务项目如下所示。你可以根据需要编辑树形结构。

解决方案运行器包含 4 种不同的类型来定义树形结构。

  • 配置文件:我们可以根据需要创建不同的配置文件来管理树形结构。例如,我们可以为 team-1team-2 创建 2 个不同的配置文件。team-1 希望仅看到管理身份服务,team-2 看到Saas审计日志服务。通过这种方式,每个团队只看到他们需要运行的服务。在此示例中,创建项目时会默认提供Default配置文件 Acme.BookStore(默认)
  • 文件夹:我们可以使用文件夹类型来组织应用程序。在此示例中,我们为微服务项目将服务保存在 services 文件夹中。如果需要,我们还可以使用嵌套文件夹,appsgatewaysservices 是当前(Default)配置文件中的文件夹。
  • C# 应用程序:我们可以从解决方案资源管理器添加任何 C# 应用程序。如果应用程序不在我们的解决方案中,我们可以通过提供 .csproj 文件路径来外部添加。 .NET 图标表示该应用程序是 C# 项目。例如,Acme.BookStore.AuthServerAcme.BookStore.WebAcme.BookStore.WebGateway 等都是 C# 应用程序。
  • CLI 应用程序:我们可以添加 powershell 命令来准备一些环境或运行 C# 以外的其他应用程序类型,例如 angular。
  • Docker 容器:我们可以添加 Docker 容器文件以在 UI 上控制它们,单独启动/停止容器。

配置文件

我们可以为每个团队或场景创建不同的配置文件,这使我们能够根据需要组织树形结构。通过这种方式,每个配置文件都包含自己的文件夹和应用程序树形结构。我们可以使用上下箭头图标折叠或展开整个树。创建项目时附带默认配置文件,包含树中的所有项目以便一次性管理。你可以在组合框中查看所有配置文件并更改当前配置文件。要编辑,请点击右侧的齿轮图标。

solution-runner-edit

它会打开管理运行配置文件窗口。你可以编辑/删除现有配置文件或添加新的配置文件。

manage-run-profiles

当你点击添加新配置文件时,会打开创建新配置文件窗口。你可以提供任意配置文件名称,该名称在所有配置文件中应是唯一的。此外,名称应仅包含字母、数字、下划线、破折号和点。创建新配置文件时,它会将 JSON 文件存储在指定的路径。你可以指定路径 abp-solution-path/etc/abp-studio/run-profiles 用于微服务项目,或 abp-solution-path/etc/run-profiles 用于其他项目类型以遵循标准格式。你还可以定义元数据密钥键值对。点击 确定 按钮保存配置文件。

create-new-profile

当编辑或删除正在运行某些应用程序的配置文件时,这些应用程序将被停止。但是,在不同配置文件下运行的应用程序将继续运行,不受影响。最后,如果我们添加新的配置文件,现有配置文件下运行的所有应用程序都将被停止。

使用配置文件

选择当前配置文件(即预配置的默认配置文件)后,我们可以利用树形项。这使我们能够执行集体命令,并根据我们的特定需求创建各种树形结构。你可以浏览树的根目录并右键单击以查看上下文菜单,其中包括以下选项:全部启动全部停止生成添加管理启动操作

profile-root-context-menu

全部启动/停止

我们可以使用这些选项启动/停止应用程序。转到树的根目录并右键单击以查看上下文菜单:

  • 全部启动:启动所有(CLI、C#)应用程序。
  • 全部停止:停止所有(CLI、C#)应用程序。

你可以在上一个配置文件的应用程序正在运行时更改当前配置文件。应用程序将继续在上一个配置文件下运行。例如,如果我们在当前配置文件为 team-1 时启动 Acme.BookStore.AdministrationServiceAcme.BookStore.IdentityService 应用程序,然后在将当前配置文件更改为 team-2 后,这些应用程序将继续在 team-1 下运行。

生成

我们可以在此选项中使用常见的 dotnet 命令。转到树的根目录并右键单击以查看上下文菜单,在此示例中 Acme.Bookstore(默认) -> 生成,有 4 个可用选项:

profile-root-context-menu-build

  • 全部生成:生成每个 C# 应用程序。
  • 图生成:使用 graphBuild 选项生成每个 C# 应用程序。
  • 还原:还原 C# 应用程序的依赖项。
  • 清理:清理 C# 应用程序上一次生成的输出。

由于解决方案运行器可能包含大量 C# 项目,生成 选项使用 后台任务,确保在使用 ABP Studio 时获得无缝体验。

添加

我们可以向配置文件添加 3 种不同的项类型来定义树形结构。这些选项是 C# 应用程序CLI 应用程序文件夹

profile-root-context-menu-add

C# 应用程序

当我们转到树的根目录并右键单击时,在此示例中 Acme.BookStore(默认) -> 添加 -> C# 应用程序,它会打开添加应用程序窗口。有两种添加应用程序的方法:此解决方案外部。要通过此解决方案选项卡添加,请按照以下步骤操作:

profile-root-add-csharp-application

  • 选择应用程序:首先我们必须选择一个应用程序,你可以选择多次添加同一个应用程序。
  • 名称:指定任意名称以在解决方案运行器中显示。此名称对于每个配置文件应是唯一的,即使所选应用程序已存在。
  • 启动 URL:是当我们想要浏览时的 URL。
  • Kubernetes 服务:如果你不使用 Kubernetes 面板,请留空。这对于浏览是必需的,当我们连接到 kubernetes 集群时,我们应该浏览 kubernetes 服务而不是 启动 URL。在微服务模板中,此选项已配置,你可以从所选应用程序的属性中复制现有的正则表达式模式。如果你创建自定义 helm 图表,你还可以提供与 helm 图表 kubernetes 服务名称匹配的正则表达式模式。

你可以点击 确定 按钮将 C# 应用程序添加到配置文件。

C# 项目不必在当前解决方案资源管理器中,它甚至可以在外部。而且项目类型可以是任何类型,例如控制台应用ASP.NET Core Razor Pages 等。要添加它,请点击添加应用程序窗口中的外部选项卡。

profile-root-add-external-csharp-application

  • 路径:提供要添加的 .csproj 文件的路径。该路径将被规范化,只要可从当前 ABP 解决方案访问,项目位置可以灵活。
  • 名称:指定任意名称以在解决方案运行器中显示。此名称对于每个配置文件应是唯一的。
  • 启动 URL:这是当我们想要浏览时的 URL。但如果添加的项目没有启动 URL,我们可以留空。
  • Kubernetes 服务:如果你不使用 Kubernetes 面板,请留空。但如果添加的应用程序有 helm 图表,我们应该给出正确的正则表达式模式。这对于浏览是必需的,当我们连接到 kubernetes 集群时,我们应该浏览服务而不是 启动 URL。提供与 helm 图表 kubernetes 服务名称匹配的正则表达式模式。

你可以点击 确定 按钮将 C# 应用程序添加到配置文件。

CLI 应用程序

我们可以添加任何 powershell 文件以从解决方案运行器执行。凭借这种灵活性,我们可以准备基础设施环境,例如 Docker-Dependencies 或运行不同的应用程序类型,如 Angular。你可以通过树的根目录并右键单击来添加 CLI 应用程序,在此示例中 Acme.BookStore(默认) -> 添加 -> CLI 应用程序

profile-root-add-cli-application

  • 名称:指定任意名称以在解决方案运行器中显示。此名称对于每个配置文件应是唯一的。
  • 工作目录:提供启动和停止命令的文件目录路径。该路径将被规范化,只要可从当前 ABP 解决方案访问,文件夹位置可以灵活。
  • 启动命令:指定当我们点击运行 -> 启动时要执行的 powershell 文件名。如果 powershell 文件目录在 工作目录 中,我们应该以本地路径前缀 ./ 开头,或者如果它在嵌套文件夹中,我们可以提供类似 ./子路径/start.ps1 的路径。我们还可以提供参数,如 ./start.ps1 -parameter value -parameter2 value2
  • 停止命令:如果存在不同的停止命令,例如用于 docker 的 up.ps1down.ps1 命令。我们应该指定当我们点击运行 -> 停止时要执行的停止 powershell 文件名。如果 powershell 文件目录在 工作目录 中,我们应该以本地路径前缀 ./ 开头,或者如果它在嵌套文件夹中,我们可以提供类似 ./子路径/stop.ps1 的路径。我们还可以提供参数,如 ./stop.ps1 -parameter value -parameter2 value2
  • 启动 URL:如果此启动过程结束时有一个启动 URL,例如 angular 项目在 http://localhost:4200 发布应用程序,为了启用浏览选项,我们应该提供启动 URL

如果未提供停止命令,则启动过程会在执行的启动命令完成后自动结束。但是,如果启动命令持续运行,例如像 yarn start 这样的命令,它将一直运行,直到我们手动点击运行 -> 停止

你可以点击 确定 按钮将 CLI 应用程序添加到配置文件。

文件夹

当直接将应用程序添加到树的根目录时,可能会变得混乱,尤其是在项目众多的情况下。利用文件夹结构使我们能够更有效地组织应用程序。此方法允许在指定文件夹内执行集体命令。当我们转到树的根目录并右键单击时,在此示例中 Acme.BookStore(默认) -> 添加 -> 文件夹,它会打开新建文件夹窗口。

profile-root-add-folder

  • 文件夹名称:指定我们希望在解决方案运行器中看到的文件夹名称。我们可以使用 / 字符创建嵌套文件夹。这是一个解决方案运行器配置文件的文件夹,因此它不会创建真实的文件夹。确保每个文件夹名称对于每个配置文件都是唯一的。

你可以点击 确定 按钮将文件夹添加到配置文件。

其他事项

  • 你可以拖放文件夹和应用程序到文件夹中以进行组织。点击并按住一个项目,然后将其拖到所需的文件夹中。
  • 我们可以通过点击左侧的播放图标来启动所有应用程序,类似地,我们可以通过点击左侧的停止图标来停止所有应用程序。
  • 要从树中移除应用程序,请右键单击该应用程序打开上下文菜单并选择移除
  • 要从树中移除文件夹,请右键单击该文件夹打开上下文菜单并选择删除
  • 当启动应用程序时,它们会持续重启,直到应用程序正常启动。要在尝试重启应用程序时停止重启过程,请点击左侧的图标。此外,你可以查看日志以了解应用程序为何无法正常启动。

管理启动操作

此命令将打开一个对话框,你可以在其中设置子应用程序和子文件夹的启动操作和启动顺序。

manage-start-actions

你可以通过拖动第一列中的图标来对应用程序排序。在上面的屏幕截图中,应用程序和文件夹的顺序如下:基础设施下的应用程序 > 服务下的应用程序 > 网关下的应用程序 > AuthServer > Angular。你还可以通过在每个文件夹上执行右键单击 > 管理启动操作来为每个文件夹设置启动顺序和其他操作。

  • 操作:有两个选项:启动不启动。如果你想从批量启动中排除应用程序,这很有用。
  • 生成:此选项允许在启动应用程序之前禁用/启用生成。如果你正在处理单个应用程序,可以排除其他应用程序的生成以节省时间。此选项也可以通过应用程序的右键单击 > 属性来设置。
  • 监视:启用后,你的代码更改将被监视,dotnet 将热重载应用程序或在需要时重新启动它。此选项也可以通过应用程序的右键单击 > 属性来设置。

文件夹

我们在上一节已经了解了为什么需要文件夹,我们可以在此文件夹项内使用集体命令。为此,转到文件夹并右键单击打开上下文菜单,其中包括 5 个选项 启动停止生成添加管理启动操作重命名删除

folder-context-menu

启动/停止

你可以通过右键单击文件夹看到上下文菜单。它将启动/停止该文件夹下的所有应用程序。

生成

文件夹 -> 生成 上下文菜单,其选项与 Acme.BookStore(默认) -> 生成 选项相似,有 4 个可用选项。它们之间的唯一区别是它将在所选文件夹中执行。

folder-context-menu-build

添加

文件夹 -> 添加 上下文菜单,其选项与 Acme.BookStore(默认) -> 添加 选项相同,有 3 个可用选项。唯一的区别是,它会将项添加到所选文件夹。

folder-context-menu-add

其他事项

  • 你可以使用文件夹 -> 重命名重命名文件夹。
  • 你可以使用文件夹 -> 删除删除文件夹。

C# 应用程序

.NET 图标表示该应用程序是 C# 项目。在我们向树的根目录或文件夹添加 C# 应用程序后,我们可以转到任何 C# 应用程序并右键单击以查看上下文菜单:启动生成浏览请求异常日志复制 URL属性移除

csharp-application-context-menu

启动

启动所选应用程序。一旦启动,停止重新启动选项将可用。

当你启动 C# 应用程序时,你应该在应用程序名称旁边看到一个链条图标,这意味着已启动的应用程序已连接到 ABP Studio。C# 应用程序即使在 ABP Studio 环境之外运行时也可以连接到 ABP Studio,例如使用 Visual Studio 进行调试。如果应用程序是从 ABP Studio 环境外部运行的,它将在链条图标旁边显示 (external) 信息。

生成

其选项与树的根目录选项相似。它们之间的唯一区别是它将在所选应用程序上执行。

csharp-application-context-menu-build

监控

当 C# 应用程序连接到 ABP Studio 时,它开始发送遥测信息以便在一个地方查看。我们可以轻松点击这些选项查看详情:浏览请求异常日志

csharp-application-context-menu-monitor

  • 浏览:ABP Studio 包含用于访问网站和运行应用程序的浏览器工具。你可以点击此选项在 ABP Studio 浏览器中查看应用程序。但是,仅当应用程序已启动时才能访问此选项。
  • 健康状态 :如果定义了健康检查端点,它允许你浏览健康 UI 并查看最新的健康检查响应。
  • 请求:它打开 HTTP 请求 选项卡并添加所选应用程序过滤器。你可以查看应用程序收到的所有 HTTP 请求
  • 异常:我们可以在此选项卡上显示所有异常。它打开带有选定应用程序的 异常 选项卡。
  • 日志:点击此选项将打开 日志 选项卡并添加所选应用程序过滤器。

属性

我们可以打开应用程序属性窗口以更改启动 URL健康检查端点Kubernetes 服务运行信息。要访问应用程序属性窗口,请导航到 C# 应用程序,右键单击以查看上下文菜单,然后选择属性选项。

solutioın-runner-properties

  • 健康检查端点:用于定期控制应用程序健康状态的端点。如果应用程序没有健康检查端点,你可以输入 / 以使用应用程序的主页作为健康检查端点。
  • 健康 UI 端点:应用程序健康 UI 页面的端点。
  • 启动前跳过生成:启用后,应用程序将在不生成的情况下启动,从而使启动更快。当你处理多个应用程序中的单个应用程序时,这很有用,因此你不需要每次都生成其他应用程序。
  • 运行时监视更改:启用后,你应该在应用程序名称旁边看到一个眼睛图标。

csharp-application-context-menu-run-connection

其他事项

  • 我们可以使用复制 URL 复制所选应用程序的浏览 URL。它复制的是浏览 URL 而不是启动 URL,因为我们可能连接到 Kubernetes 服务。
  • 你可以通过右键单击所选应用程序并更改目标框架选项来更改目标框架。如果项目具有多个目标框架(例如 MAUI 应用程序),则此选项可见。
  • 要从树中移除应用程序,请右键单击该应用程序打开上下文菜单并选择移除

CLI 应用程序

CLI 应用程序使用 powershell 命令。通过这种方式,我们可以启动和停止任何我们想要的东西。在我们向树的根目录或文件夹添加 CLI 应用程序后,我们可以转到任何 CLI 应用程序并右键单击以查看上下文菜单。

cli-application-context-menu

  • 启动:启动应用程序。一旦启动,启动重新启动选项将可用。
  • 浏览:当添加 CLI 应用程序时指定了启动 URL,此选项可用。它打开浏览选项卡,可以在应用程序运行时点击。
  • 日志:它打开 日志 选项卡,我们可以看到 启动停止 命令的日志。
  • 复制 URL:此选项复制所选应用程序的启动 URL。如果指定了启动 URL,则此选项可见。
  • 移除:此选项允许你删除所选应用程序。

当 CLI 应用程序启动时,链条图标将不可见,因为只有 C# 应用程序可以连接 ABP Studio。

Docker 容器

每个 Docker 容器代表一个 .yml 文件。每个文件可以在 UI 上单独运行。一个文件可能包含一项或多项服务。要单独启动/停止每项服务,我们建议将服务保存在单独的文件中。

一个示例 rabbitmq.yml 容器文件:

volumes:
  bookstore_rabbitmq:
networks:
  bookstore:
    external: true

services:
  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3.12.7-management-alpine
    volumes:
      - bookstore_rabbitmq:/var/lib/rabbitmq
    networks:
      - bookstore
    ports:
      - "15672:15672"
      - "5672:5672"

注意:我们建议在你的服务中使用 container_name 属性。否则,在某些情况下可能无法跟踪容器。

要将此文件添加到 containers,我们可以使用 添加 Docker 容器 菜单:

docker-container-example-add

它将打开一个带有文件选择器的简单对话框:

docker-container-example-add-dialog

然后我们在 Studio UI 的容器下有 rabbitmq

docker-container-example-rabbitmq

yml 文件的名称在 UI 中用作标签,因此我们建议使用内部服务的名称创建文件。

如果 yml 文件包含多个服务,它们将表示为具有文件名的单个容器。在这种情况下,当我们启动/停止它时,文件内的所有服务都将被启动/停止。

如果服务在外部关闭,它将在 UI 中显示为 已停止。在这种情况下,你可以再次启动它们。如果它不断停止,yml 文件中可能存在问题。

如果镜像不存在,可能需要一段时间下载,导致状态卡在 正在启动

当容器内的服务在外部停止时,会显示警告图标。在这种情况下,你可以在 Studio UI 上重启应用程序:

docker-container-warning

属性

docker-container-properties

在属性对话框中,你可以设置容器的 docker compose 堆栈名称。在上面的示例中,它设置为 BookStore-Containers。在 Docker Desktop UI 中,容器堆叠在该名称下。示例:

docker-container-stack

Docker Compose

你可以使用 Docker Compose 手动运行应用程序。这使得多容器 Docker 应用程序的设置和管理变得容易。要开始使用,请确保你的机器上安装了 Docker 和 Docker Compose。

请参阅使用 Docker Compose 部署文档,了解如何使用 docker-compose 配置和运行应用程序的详细说明。

注意:Docker Compose 在 ABP Studio 界面中不可用。


在本文档中