在 Visual Studio for Mac 中使用 Azure Functions 的简介

重要

根据 Microsoft 的新式生命周期策略,Visual Studio for Mac 计划于 2024 年 8 月 31 日停用。 虽然你可以继续使用 Visual Studio for Mac,但 Mac 上的开发人员还可以使用其他几个选项,例如适用于 VS Code 的新 C# 开发工具包扩展的预览版本。

详细了解支持时间表和替代方案

Azure Functions 是一种在云中创建和运行事件驱动的代码片段(即函数)的方法,而无需显式预配或管理基础结构。 有关 Azure Functions 的详细信息,请参阅 Azure Functions 文档

要求

Azure Function 工具包含在 Visual Studio for Mac 7.5 和更高版本中。

若要创建和部署函数,还需要 Azure 订阅。 如果你没有 Azure 帐户,可以立即免费注册并接收 12 个月的免费热门服务、200 美元的免费额度和 25 个以上的永久免费服务 ->https://azure.com/free

创建第一个 Azure Functions 项目

  1. 在 Visual Studio for Mac 中,选择“文件”>“新建解决方案”。

  2. 从“新建项目”对话框,选择“云”>“常规”下的 Azure Functions 模板并单击“下一步”:

    New Project dialog showing Azure Functions option

  3. 选择要使用的初始 Azure Functions 模板,输入函数名称,然后单击“下一步”。

    New Project dialog showing Azure Functions templates

    提示

    虽然已尽可能地将捆绑的 Azure Functions 运行时和模板 (CLI) 保持最新,但它们难免会过时。 创建新的 Functions 项目时,Visual Studio for Mac 将检查 CLI 的更新并发出通知,如下图所示。 只需单击按钮即可下载更新的模板。 New project dialog showing Azure Functions updates are available

    根据所选函数类型,下一页会提示输入详细信息,例如访问权限,如下图所示:

    New Project dialog showing additional option

    有关不同类型的 Azure Functions 模板以及配置每个模板所需的绑定属性的详细信息,请参阅可用函数模板部分。 在此示例中,使用了一个访问权限设置为匿名的 HTTP 触发器。

  4. 设置参数后,选择项目的位置,然后单击“创建”。

Visual Studio for Mac 使用包含的默认函数创建 .NET Standard 项目。 它还包括对各种 AzureWebJobs 包以及 Newtonsoft.Json 包的 NuGet 引用 。

Visual Studio for Mac editor displaying a brand new Azure function from template

新项目包含以下文件:

  • your-function-name.cs - 该类包含所选函数的 Boilerplate 代码。 其中包含一个带有函数名称的 FunctionName 属性和一个用于指定函数(例如,HTTP 请求)触发条件的触发器属性。 有关函数方法的详细信息,请参阅 Azure Functions C# 开发人员参考一文。
  • host.json - 该文件介绍 Functions 主机的全局配置选项。 有关示例文件和该文件的可用设置的信息,请参阅 Azure Functions 的 host.json 引用
  • local.settings.json - 该文件包含用于在本地运行函数的所有设置。 这些设置由 Azure Functions 核心工具使用。 有关详细信息,请参阅“Azure Functions 核心工具”一文中的本地设置文件

在 Visual Studio for Mac 中创建新的 Azure Functions 项目后,可以从本地计算机测试默认 HTTP 触发的函数。

在本地测试函数

使用 Visual Studio for Mac 中的 Azure Functions,可以在本地开发计算机上测试和调试函数。

  1. 若要在本地测试函数,请按 Visual Studio for Mac 中的“运行”按钮:

    Start debugging button in Visual Studio for mac

  2. 运行项目可启动 Azure Function 上的本地调试并打开一个新的终端窗口,如下图中所示:

    terminal window showing function output

    从输出中复制 URL。

  3. 将 HTTP 请求的 URL 粘贴到浏览器的地址栏。 将查询字符串 ?name=<yourname> 添加到 URL 的末尾并执行请求。 下图显示了浏览器中由函数返回的本地 GET 请求的响应:

    HTTP request in browser

将另一个函数添加到项目中

函数模板使用户可以使用最常见的触发器和模板快速创建新函数。 若要创建另一种类型的函数,请执行以下操作:

  1. 若要添加新函数,右键单击项目名称并选择“添加”>“添加函数...”:

    context action for adding new function

  2. 从“新建 Azure 函数”对话框选择所需的函数:

    new Azure function dialog

    可用函数模板部分提供了 Azure 函数模板列表。

可使用上述过程向函数应用项目添加更多函数。 项目中的各函数可具有不同的触发器,但一个函数只能有一个触发器。 有关详细信息,请参阅 Azure Functions 触发器和绑定概念

发布到 Azure

  1. 右键单击项目名称,然后选择“发布”>“发布到 Azure”:Context menu with Publish > Publish to Azure... option highlighted

  2. 如果已将 Azure 帐户连接到 Visual Studio for Mac,则会显示可用应用服务的列表。 如果尚未登录,系统将提示登录。

  3. 从“发布到 Azure 应用服务”对话框,可选择现有应用服务,也可通过单击“新建”来创建新服务 。

  4. 在“创建新的应用服务”对话框中,输入设置:New App Service dialog, with fields for service name, subscription, resource group, and service plan settings.

    设置 描述
    应用服务名称 用于标识新函数应用的全局唯一名称。
    订阅 要使用的 Azure 订阅。
    资源组 要在其中创建函数应用的资源组的名称。 选择“+”以创建新的资源组。
    服务计划 选择现有计划或创建自定义计划。 在附近的区域或函数访问的其他服务附近选择一个位置。
  5. 单击“下一步”创建存储帐户。 Functions 运行时需要 Azure 存储帐户。 单击“自定义”以创建通用存储帐户,或使用现有帐户:

    New App Service dialog with prompt for storage account name.

  6. 单击“创建”以使用这些设置在 Azure 中创建函数应用和相关资源,并部署函数项目代码。

  7. 在发布期间,系统可能会提示“在 Azure 上更新 Function 版本”。 单击“是”:

    Prompt asking to

函数应用设置

在 local.settings.json 中添加的任何设置也必须添加到 Azure 中的函数应用中。 发布项目时,不会自动上传这些设置。

若要访问应用设置,请转到 Azure 门户,网址为 https://ms.portal.azure.com/。 在“Function App”下,选择“函数应用”并突出显示函数名称 :

Azure Functions menu

在“概述”选项卡中,选择“配置的功能”下的“应用程序设置” :

Over tab of Azure function

在此处,可为函数应用设置“应用程序设置”,可在其中添加新的应用程序设置或修改现有应用程序设置:

application settings area of Azure portal

可能需要设置的一个重要设置是 FUNCTIONS_EXTENSION_VERSION。 从 Visual Studio for Mac 发布时,此值应设置为“beta 版本”。

可用的函数模板

  • GitHub 触发器 - 对 GitHub 存储库中发生的事件作出响应。 有关详细信息,请参阅关于 GitHub 的 Azure Functions 文章

    • GitHub 快速注释 - 此函数在其收到一个问题或拉取请求的 GitHub Webhook 时运行并添加注释。
    • GitHub WebHook - 此函数在其收到 GitHub Webhook 请求时运行。
  • HTTP - 使用 HTTP 请求触发代码的执行。 可用于以下 HTTP 触发器的显式模板:

    • HTTP 触发器
    • HTTP GET 创建,更新,读取和删除 (CRUD)
    • HTTP POST CRUD
    • 带有参数的 HTTP 触发器
  • 计时器 - 按照预定义计划执行清除或其他批处理任务。 此模板采用两个字段:Name 和 schedule(一个具有 6 个字段的 CRON 表达式)。 有关详细信息,请参阅关于时间的 Azure Functions 文章

  • 队列触发器 - 这是在消息到达 Azure 队列存储队列时会对消息进行响应的函数。 除函数名称之外,此模板还采用一个路径(将从中读取消息的队列名称)和存储帐户连接(包含存储帐户连接字符串的应用设置名称) 。 有关详细信息,请参阅关于队列存储的 Azure Functions 文章

  • Blob 触发器 - 在 Azure 存储 Blob 添加到容器时对其进行处理。 除了函数名称,此模板还采用路径和连接属性。 路径属性是触发器将监视的存储帐户中的路径。 连接帐户是包含存储帐户连接字符串的应用设置的名称。 有关详细信息,请参阅 Azure Functions Blob 存储一文。

  • 泛型 WebHook - 这是一个简单函数,每当从支持 Webhook 的任何服务接收请求时,都会运行此函数。 有关详细信息,请参阅关于通用 Webhook 的 Azure Functions 文章

  • Durable 函数业务流程 – Durable 函数可使用户在无服务器环境中编写有状态函数。 此扩展管理状态、检查点以及为用户重启。 有关详细信息,请参阅关于 Durable Functions 上的指南。

  • 图像大小调整工具 - 此函数在每次向容器添加 blob 时都会创建已调整大小的图像。 该模板针对触发器、小图像输出和中等图像输出使用路径和连接字符串。

  • SAS 令牌 - 此函数为给定 Azure 存储容器和 blob 名称生成 SAS 令牌。 除了函数名称,此模板还采用路径和连接属性。 路径属性是触发器将监视的存储帐户中的路径。 连接帐户是包含存储帐户连接字符串的应用设置的名称。 还需设置“访问权限”。 授权级别控制函数是否需要 API 密钥以及要使用的密钥;函数使用功能键;管理员使用帐户访问密钥。 有关详细信息,请参阅用于生成 SAS 令牌 的 C# Azure Function 示例。