微服务教程第三部分:构建目录服务
在上一部分中,我们创建了一个名为 Catalog 的新微服务。本部分我们将构建在系统中创建和管理产品的功能。
在本部分中,我们将使用 ABP Suite 自动生成所有必需的代码。因此,您将看到如何在微服务解决方案中使用 ABP Suite。在接下来的部分中创建 Ordering 微服务时,我们会手动完成所有操作,以便您更好地了解细节。我们建议在可能的情况下使用 ABP Suite,因为它可以节省大量时间。然后,您可以研究 ABP Suite 所做的更改,以了解它生成了什么。
打开 ABP Suite
首先,停止 ABP Studio 解决方案运行器 面板中的所有应用程序,因为 ABP Suite 会对解决方案进行更改,并且在某些步骤中也需要构建解决方案。运行解决方案会阻止构建。
现在,在主菜单中选择 ABP Suite -> 打开 命令来打开 ABP Suite:
它会询问您要使用哪个模块:
CloudCrm 微服务解决方案包含不止一个 .NET 解决方案。通常,每个 ABP Studio 模块代表一个独立的 .NET 解决方案(请参阅 概念 文档)。ABP Suite 在单个 .NET 解决方案上工作以生成代码,因此我们应该在这里选择一个模块。
选择 CloudCrm.CatalogService 模块并单击 确定 按钮。它将打开 ABP Suite,如下图所示:
生成产品页面
在下一节中,我们将使用 ABP Suite 通过 ABP Suite 创建一个功能齐全的 CRUD 页面。UI 部分将位于主 Web 应用程序( CloudCrm.Blazor )中,应用程序服务和其他部分将生成在目录微服务中。
配置产品实体信息
在 名称 字段中输入 Product,其他选项保持默认。ABP Suite 会自动为您计算合适的值:
配置产品实体的属性
打开 属性 选项卡,并创建下图所示的属性:
具体细节如下:
Name是必填项,最小长度为2,最大长度为120。Description不是必填项,它是 文本区域,不可筛选,不在列表页面显示。StockCount的 默认值 为0,最小值为0,最大值为999999。ReleaseDate是 可空 的。
您可以保持其他配置为默认设置。
生成代码
就是这样。您可以点击 保存并生成 按钮开始代码生成过程。
ABP Suite 将为您生成必要的代码。完成该过程需要一些时间。过程完成后,您将看到成功消息,点击 确定 按钮。
现在,我们可以通过点击 解决方案运行器 面板中的 启动 按钮(或者直接点击 运行 图标)来启动 CloudCrm.CatalogService 应用程序。
应用程序启动后,您可以右键单击并在 CloudCrm.CatalogService 应用程序上选择 浏览,在 ABP Studio 预集成的浏览器中打开它。您可以在 Swagger UI 中看到 Products 控制器。
生成 UI 代理
现在,我们需要为 UI 项目生成 静态 API 代理。右键单击 CloudCrm.Blazor 包 并选择 ABP CLI -> 生成代理 -> C# 命令:
它将打开 生成 C# 代理 窗口。选择 CloudCrm.CatalogService 应用程序,它将自动填充 URL 字段。选择 catalog 模块,将服务类型设置为 应用程序,并勾选 不带合约 复选框,因为 CloudCrm.Blazor 项目已经依赖于 CloudCrm.CatalogService.Contracts 包:
要能够选择 应用程序,您必须事先 启动 相关的应用程序。您可以使用 解决方案运行器 来启动应用程序,如前几部分所述。
运行应用程序
现在,停止 解决方案运行器 面板中正在运行的任何应用程序,然后通过点击 解决方案运行器 面板中根项目上的 全部启动 按钮来运行应用程序:
应用程序启动后,您可以右键单击并在 CloudCrm.Blazor 应用程序上选择 浏览,在 ABP Studio 预集成的浏览器中打开它:
如果看不到 Products 菜单项,您需要将
CatalogService的 Product 权限授予 admin 角色。您可以通过导航到 身份管理 -> 角色 并编辑 admin 角色来完成此操作。或者,您可以重新启动 CloudCrm.AdministrationService 应用程序以自动为 admin 角色填充所有权限。
当我们创建
Catalog微服务时,如果选择了“启用集成”选项,CatalogServiceAPI 范围也会自动创建。您可以在CloudCrm.IdentityService模块(.NET 解决方案)中的CloudCrm.IdentityService项目的OpenIddictDataSeeder类的CreateApiScopesAsync方法中验证新的范围。如果您已经登录到应用程序,您可能需要注销并重新登录,以使用新创建的 API 范围重新授权。
您可以打开 SQL Server Management Studio 查看创建的表和数据:
总结
在本部分中,我们创建了一个名为 Product 的新实体,并为其生成了必要的代码。我们还为 CatalogService 应用程序生成了 UI 代理,并在 CloudCrm.Blazor 项目中为其配置了静态 HTTP 客户端。我们运行了应用程序并测试了 Products 页面。
抠丁客
















