本文旨在为开发者提供一个快速上手指南,帮助他们迅速掌握微软的客户端BlazorWebAssembly(WASM) 技术。本文将涵盖本地调试客户端和服务器代码、部署到本地IIS和远程Azure服务器、演示依赖注入、共享C#类、CORS、日志记录、AD安全性、本地化、SignalR、Entity Framework和API(CRUD)调用等相关内容。
本文的目的是为开发者提供一个路线图,以便在开发客户端Blazor(WASM) 项目时能够快速上手。
本文的范围是传达设计和部署现代软件环境中客户端Blazor(WASM) 应用程序所需的架构和技术。
要开始本教程,需要以下条件:
在本演示中,将:
Azure Function是一个单一的端点,执行单一任务,遵循SOLID原则中的“S”。Http触发器更多用于B2B(来自其他应用程序的webhooks)。一旦完成任务,它将结果传递给下一个Azure Function,直到整个过程完成,最终结果返回给调用者。
可以使用Azure Function设计微服务架构,通过一组函数,每个函数执行单一任务,但共同执行一个过程。这使能够只扩展微服务的一部分。
Azure Functions基于触发器,意味着必须发生一个事件,Azure Function才会执行(例如,数据库条目、API调用或文件插入到Azure Blob存储)。Visual Studio有默认的Azure Function触发器,但它也有一个后备的空触发器,可以自定义以满足需求。因此,可以说Azure Functions遵循事件/可观察设计模式。
AzureFunctions遵循无服务器架构模式,但因为它们是API,所以遵循REST架构风格。但因为它们是无服务器的,所以可以按需运行,而不需要托管在服务器上和管理基础设施。如果已经有Azure计划,它们是免费的。在本文示例的Azure Function中,基本上使用了微服务数据库每服务模式,服务处理它自己的数据库(偶然😊)。
在Visual Studio中,创建一个新项目(文件→新建→项目):
这将创建默认的Azure Function项目(将默认函数类重命名为LatestAlbums.cs):
关于认证级别(当本地调试时不需要API密钥)。这个API密钥附加在URL上或其主体中:
https://myhttptriggerfnx.azurewebsites.net/api/FuncMusicStore?code=2h8UpMZhExR32wBFZIWLmI7mpM67mAlpPIZIx0CzKHmuAzFued3ZZg==
默认的HTTP动词是Get和Post(红框),可以根据需要删除或替换它们。如果是Get请求,可以像平常一样从URL获取数据(蓝框),或者如果在请求主体中发布数据,可以使用StreamReader(橙框)检索。在粉色框中,正在对SQL Server数据库进行dbContext调用,并将数据以json格式返回给客户端。
注意:需要有一个(免费的)Azure账户(订阅)来完成本节。
如果Azure订阅详细信息没有出现 - 检查是否已登录Azure。
如果函数应用部分为空,需要先创建一个Azure Function资源,然后刷新函数应用部分。
然后将在Visual Studio中看到发布屏幕,确保调试为配置设置,然后点击发布(这将部署将在调试中使用的pdb文件)。
将在构建窗口中看到部署状态。
如果导航到Azure中的函数资源,应该看到新部署的Azure Function:
要找出Azure function的API密钥(它将需要从客户端安全地调用API)。点击函数,几秒钟后,获取函数URL将变得可用,点击它获取将需要调用函数的完整URL。
https://func-version1-demo.azurewebsites.net/api/LatestAlbums?code=MLlNpmvdOodDkE6xZ5P9o6t6H1OA8onLMKYB0ZvggUfWAzFuVyJJaw==
在调试模式下运行Azure Function项目,将断点放在代码上。然后在Postman中粘贴localhost URL,并带有标题参数,点击发送。
断点将像平常一样被击中:
返回JSON数据列表:
也可以将标题参数放在URL的主体中,它将被Azure Function拾取。
回到发布屏幕,点击托管eclipse,选择附加调试器,因为已经以调试模式部署了解决方案。
这次在Postman中输入URL和从Azure获得的API代码,将参数放入主体。