一、简介
本文档为希望快速掌握 Microsoft 客户端 Blazor WebAssembly
(WASM) 技术的开发人员提供了概述。
1.1.目的
为开发人员提供路线图,以便在开发 Client Blazor (WASM) 项目时快速跟上进度。涵盖相关主题,例如在本地调试客户端和服务器代码、部署到本地 IIS 和远程 Azure 服务器、演示依赖注入、共享 C# 类、CORS、日志记录、AD 安全、本地化、SignalR、实体框架和 API (CRUD) 调用.
1.2. 范围
本文档的范围是传达在现代软件环境中设计和部署 Client Blazor (WASM) 应用程序所需的架构和技术。
2.先决条件
- Visual Studio 2022(社区版)
- 最新的 .NET SDK(@撰写本文时 – SDK 6)
- 邮递员(Win 64 位)
- 免费Azure 帐户(远程调试)
3. 演示目标
对于这个演示,我们将:
- 在 Visual Studio 中创建Http Trigger Azure Function 项目
- 它将查询我们的(Azure)数据库并返回结果列表
- 本地调试
- 部署到 Azure
- 针对 Azure 进行测试 – Postman
- 针对 Azure 进行调试 – Visual Studio
4. Azure 功能说明
Azure 函数是执行单个任务的单个端点,因此它遵循 SOLID 主体中的“S”。Http 触发器更适用于 B2B(来自其他应用程序的 Web 挂钩)。完成任务后,它会将其结果传递给下一个 Azure 函数,直到该过程完成并将最终结果返回给调用者。
您可以使用 Azure Function 设计微服务架构,方法是使用一组函数,每个函数执行一个任务,但共同执行一个流程。这使您能够仅扩展部分微服务。
Azure Functions 基于触发器,这意味着必须在 Azure Function 执行之前发生事件(例如,数据库条目、API 调用或插入 Azure Blob 存储的文件)。Visual Studio 具有开箱即用的默认 Azure 函数触发器,但它也有一个备用空触发器,您可以根据需要对其进行自定义。因此,可以说 Azure Functions 遵循 Event\Observable 设计模式。
Azure Functions 遵循无服务器架构模式,但由于它们是 API,它们将遵循 REST 架构风格。但是因为它们是无服务器的,它们可以按需运行,而无需在服务器上托管和管理基础设施。如果你已经有 Azure 计划,它们是免费的。在示例 Azure Function 中,我将演示,我基本上使用微服务Database Per Service模式,因为我的服务处理自己的数据库(偶然😊)。
5. 创建您的 Azure Function 项目
在 Visual Studio 中,创建一个新项目(File → New → Project):
从可用的项目模板中选择Azure Functions并输入项目名称:
选择Http Trigger应用程序模板,保留 Storage Account & Authorization Level 默认值:
这将创建默认的 Azure Function 项目(我将默认的 Function 类重命名为LatestAlbums.cs):
只需注意身份验证级别(在本地调试时,您不需要 API 密钥)。此 API 密钥附加到 URL 或其正文中:
功能 | 需要特定功能的 API 密钥。 这是未专门设置级别时的默认值。 |
匿名的 | 任何人都可以调用该函数 |
行政 | 您需要主密钥才能运行此功能 |
6. Azure Function Code 解释
默认的 HTTP 动词是Get
& Post
(红色框),您可以删除或替换它们以满足您的要求。如果是Get
请求,您可以正常从 URL 获取数据(蓝色框),或者如果您在请求正文中发布数据,您可以使用StreamReader
(橙色框)检索该数据。在粉色框中,我正在dbContext
调用 SQL Server 数据库并将数据返回给客户端(json 格式)。
6.1。其他项目
我已经更改了解决方案的结构以包含多个项目、一个保存DBContext
相关对象的项目和一个模型项目。这些项目已被分离出来,以便可以在多个 Azure Functions 之间共享代码。
6.2. 依赖注入 DBContext
要包括依赖注入和实体框架,需要对默认代码进行一些调整。
将连接字符串添加到 Azure Function 项目中的local.settings.json文件。
将Startup.cs文件添加到您的项目中,在这里我们将添加依赖项,检索连接字符串并构建实体框架DBContext
。
将 注入dbContext
到 Azure Function 的构造函数中(您需要添加构造函数),并照常分配给您的private
类属性。
7. 函数调用结果
如果您在本地(在 Visual Studio 中)运行项目,您将在控制台窗口中看到要针对您的环境使用的 URL。
将标题参数附加到 URL:
http://localhost:7071/api/LatestAlbums?title=Disc%201
这将返回以下结果:
8. 部署到 Azure
注意:您需要拥有(免费)Azure 帐户(订阅)才能完成此部分。
右键单击 Azure Function,选择Publish,单击Azure,然后单击Next: