使用 DevOps 和 GraphQL API 创建应用程序
在本节教程中,你将使用你创建的资产来制作一个 Web 应用程序,使用户能够选择受中断影响的区域,然后查看该区域中的其他供应商,以向公司发出进一步的供应链中断警报。 你将基于数据创建一个 GraphQL 终结点,然后创建一个 ASP.NET 应用程序,你可以将其部署到本地或云提供商。
软件开发项目涉及开发人员操作 (DevOps) 任务,其中一项是源代码管理。 本节开始时,你将把创建的项置于源代码管理之下。
本文介绍一系列有用的方案,用于基于 Fabric SQL 数据库创建应用程序。
先决条件
- 完成本教程前面的所有步骤。
- 启用 Git 集成租户设置。
- 为 GraphQL API 启用租户管理员设置。
- 在 Microsoft Azure DevOps 中创建组织和项目。
使用 Azure DevOps 在 Fabric 中实现 CI/CD
本部分教程介绍如何结合使用 Microsoft Fabric SQL 数据库和 Azure DevOps。
Microsoft Fabric SQL 数据库具有源代码管理集成,可让 SQL 用户跟踪其数据库对象在不同时间和不同团队中的定义:
团队可以将数据库提交到源代码管理,从而自动将实时数据库转换为配置的源代码管理存储库 (Azure DevOps) 中的代码。
团队可以基于源代码管理的内容更新数据库对象,从而在对数据库应用差异变更之前在 Azure DevOps 中验证代码。
如果不熟悉 Microsoft Fabric 中的源代码管理,建议查看以下资源:
源代码管理入门
完成这些先决条件后,便可保持工作区与 Azure DevOps 的同步。 这样,你就可以将工作区中的任何更改提交到 Azure DevOps 分支,并在任何人向 Azure DevOps 分支创建新提交时更新你的工作区。
现在,你将使用 Azure DevOps 编辑数据库中的一个对象,这将同时更新存储库和数据库对象。 还可以直接在存储库中编辑对象或在其中“推送”对象,但在这种情况下,请在 Azure DevOps 环境中执行所有步骤。
在教程“工作区”视图中,确保工作区设置为在源代码管理下,并且所有对象都显示“已同步”。
在“工作区”视图中,你将看到 git 图标、所选分支,以及有关工作区上次与源代码管理同步的消息。 在日期和时间旁边,你将看到 Azure DevOps 环境中特定位置的标识符链接。 打开该链接以继续。
如果需要,请登录你的 Azure DevOps 环境。
进入 Azure DevOps 环境后,在资源管理器窗格中选择“文件”项。 将显示与 Fabric SQL 数据库同步的对象,并显示存储库。
依次展开“suppy_chain_analytics_database.SQLDatabase”、“dbo”、“表”,然后选择“Suppliers.sql”对象。
请注意对象内容中表的 T-SQL 定义。 在生产编码环境中,将使用 Visual Studio 或 Visual Studio Code 等开发工具来更改此对象。 在任何情况下,该数据库对象的定义将复制到根据数据库的当前状态镜像的存储库。 在接下来的教程步骤中,让我们使用 Azure DevOps 源代码管理对数据库对象进行一些更改。
找到
[Fax]
列定义行,然后选择“编辑”按钮。 将列定义编辑为[Fax] NVARCHAR (255) NULL,
。选择“提交”按钮。
填写显示的“提交”消息框,然后选择“提交”按钮。 尝试对源代码管理中的每个更改进行描述,以方便自己和团队。
提交会将更改写入存储库。
切换回 Fabric 门户中的 SQL 数据库,然后选择“源代码管理”。
你有一个更新挂起。 在生产中,你将查看这些更改。 选择“全部更新”按钮。 更新可能需要一些时间。
选择 Fabric SQL 数据库名称。 在 SQL 数据库中打开一个新的查询窗口。
复制粘贴以下 T-SQL 代码,以查看表中的实时更改:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Suppliers';
输入以下用于查询的 T-SQL 代码,以将名为
Notes
的列添加到Suppliers
表中。 仅突出显示该部分代码,然后选择“运行”按钮:ALTER TABLE Suppliers ADD Notes NVARCHAR(MAX);
现在,返回到 Fabric 门户中的教程工作区。
选择“源代码管理”按钮,并注意到系统显示“更改”请求,而不是“更新”。 选中对象名称旁边的复选框,然后选择“提交”按钮。
系统会提交在查询编辑器中进行的更改,然后你可以返回 Azure DevOps 门户并导航到“文件”区域和
dbo
架构,然后导航到“表”和Suppliers
对象,以查看新列。 (你可能需要刷新页面才能看到更改。)
现在你已经了解了如何在 Azure DevOps 中通过源代码管理与 SQL 数据库对象架构交互。 有关 Microsoft Fabric 中的源代码管理的详细信息,请参阅 Microsoft Fabric 中的 SQL 数据库源代码管理集成和教程:Fabric 中的生命周期管理。
设置和配置 GraphQL API
连接到数据库应用程序通常涉及为应用程序安装一组库,这些库使用直接与数据库交互的表格格式数据流 (TDS) 协议。
Microsoft Fabric 包含一个 GraphQL 接口,不仅可用于数据库,还可用于多个数据源。 还可以将这些源合并为集成数据视图。 GraphQL 是 API 的查询语言,允许你准确请求所需的数据,从而更轻松地随时间推移发展 API 并启用强大的开发人员工具。 它对你的 API 中的数据提供了完整、易懂的描述,让客户能够准确地提出他们所需的要求,别无其他。 这使得使用 GraphQL 的应用既快又稳,因为它们可以控制所获得的数据,而不是服务器。 你可以将 GraphQL 接口看作是为数据源中包含的一组数据提供视图。 可以使用突变功能来查询数据和更改数据。 可在此参考中了解有关 GraphQL 的详细信息。
可以直接在 Fabric SQL 查询编辑器中开始生成 GraphQL API。 Fabric 会根据数据自动生成 GraphQL 架构,应用程序可在几分钟内完成连接。
创建 GraphQL API
创建要用于应用程序的 GraphQL API:
打开教程数据库门户。
选择“新建”按钮,然后选择“GraphQL API”。
输入文本“supplier_impact_gql”作为项名称,然后选择“创建”。
你会看到一个“选择数据”面板。 滚动,直到找到
SupplyChain.vProductsBySuppliers
(本教程前面创建的视图)。 选择该文件夹。选择加载按钮。
在“查询 1”面板中,将你看到的文本替换为以下 GraphQL 查询字符串:
query { vProductsbySuppliers(filter: { SupplierLocationID: { eq: 7 } }) { items { CompanyName SupplierLocationID ProductCount } } }
在“查询 1”窗口中选择“运行”按钮。 GraphQL 查询的结果会以 JSON 格式返回到“结果”窗口。
选择功能区中的“复制终结点”按钮。
出现“复制链接”面板时,选择“复制”按钮。 将此字符串存储在记事本或其他位置,以便在本教程的示例应用程序中使用。 例如,它看起来类似于:
https://api.fabric.microsoft.com/v1/workspaces/<work space id>/graphqlapis/<graph api id>/graphql
API for GraphQL 现在已准备好接受连接和请求。 你可以使用 API 编辑器来测试 GraphQL 查询并进行原型设计,使用架构资源管理器来验证 API 中公开的数据类型和字段。 从有关详细信息,请参阅在 Fabric 门户中从 SQL 数据库创建 GraphQL API。
创建 Web 应用程序以查询数据
到目前为止,在本教程中,你已经创建了一个数据库来存储 Contoso 销售额和产品,并使用 Transact-SQL (T-SQL) 添加了供应商和联接实体。 现在,你希望让开发人员无需学习 T-SQL 即可使用数据,并让他们能够在单个界面中查询多个 Microsoft Fabric 组件。 在访问你在本教程中创建的 GraphQL 终结点的自托管 .NET REST 界面中本地运行此应用程序。 还可以将此应用程序作为 Web 应用程序直接部署到 Microsoft Azure,或部署到你选择的其他 Web 服务器。
在 Fabric GraphQL API 中使用 SQL 数据库创建 Web 应用程序
你被要求创建一个应用程序,当某一位置因自然灾害或其他原因导致供应链中断时,该应用程序将显示所有受影响的供应商。 此代码演示如何创建 ASP.NET 应用程序,该应用程序使用 GraphQL 查询访问在本教程最后一节中创建的 Fabric SQL GraphQL 终结点中的查询。
本教程中应用程序的示例屏幕截图如下: