Azure 函数结构

标签 azure .net-core azure-webjobs azure-functions .net-standard

我正在尝试思考我们应该如何构建 Azure 函数。

我喜欢构建响应事件的无服务器、紧凑、单一功能应用程序的想法。

以下是我遇到的问题:

  1. 我在 .NET Standard 2 中内置了很好的类库,可以处理我的所有“后端需求”,即使用 Cosmos Db、Azure 表存储、Azure SQL、Redis、Azure 存储处理 CRUD 操作。无论我做什么,我都无法将这些类库集成到 Azure Functions 项目中。更多详情如下。
  2. 此外,事实证明,在 Azure Functions 项目中进行依赖项注入(inject)是一项艰巨的任务,尤其是对于上面提到的我的类库。

此时,我看到的唯一选择是将代码“复制并粘贴”到新的 Azure Functions 项目中并在没有任何 DI 的情况下使用它。

这似乎违背了“最佳实践”。那么,除了创建整体代码或等到 Azure Functions 支持 .NET Core 和 DI 之外,还有什么解决方案呢?

我认为我可以使用针对 .NET Framework 的常规 Azure Functions 项目中的 .NET Standard 类库。毕竟,.NET Standard 的理念是“标准化”事物。我在这里开了几篇关于SO的帖子。我提供链接以便您可以查看我遇到的问题:

Using .NET Core 2.0 Libraries in WebJob Targeting .NET Framework 4.7

No parameterless constructor error in WebJobs with .NET Core and Ninject

附注我之前的帖子提到的是 WebJobs。这是 B 计划方法,因为在支持 .NET Core 和 DI 等方面,WebJobs 似乎比 Azure Functions 领先半步。最终,我想构建一些可以使用在 .NET Standard 2 中构建的类库的 Azure Functions。

此外,我之前的帖子提到我的类库面向 .NET Core 2.0。从那时起,我将它们转换为 .NET Standard 2,这实际上并没有花费太多时间。我这样做是为了真正符合 .NET 标准 2。

最佳答案

一个问题是 Visual Studio 的 Functions Core 工具版本已过时。在解决此问题之前,您可以通过以下方式解决:

  • 通过运行 npm install -g azure-functions-core-tools 通过 npm 安装最新版本
  • 在 VS 的函数应用中,转到“属性”
  • 转到“调试”,然后单击“配置文件”下的“新建...”
  • 将新配置文件命名为 FunctionsNpm
  • 将可执行文件设置为(替换[YourUserName]):C:\Users\[YourUserName]\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.exe
  • 将参数设置为主机启动
  • 将工作目录设置为$(TargetDir)
  • 在工具栏中,查找绿色三角形图标,将您当前的配置文件更改为您刚刚创建的配置文件:enter image description here

现在,当您从 VS 运行时,您将使用 npm 工具,而不是 VS 包附带的旧工具。

关于Azure 函数结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46269046/

相关文章:

Azure 门户 - 将 Web 应用配置为使用 Active Directory,而不是与登录的 Azure 租户关联的目录?

c# - 如何模拟 ExceptionContext 以使用 .NET Core 3 Web API 和 Moq 进行测试

c# - AzureWebJobs仪表板配置错误

azure - SQL Azure 支持关系数据库吗?

azure - 如何配置 pod 中断预算以耗尽 kubernetes 节点?

c# - 如何在桌面应用程序中使用 DbContext 和 DI?

c# - Console.ReadLine 在 Raspberry Pi 上的 .Net Core 应用程序中被忽略

Azure Data Lake Store 和 Azure SQL 以及 WebJob/Azure Function

c# - 您好,我正在尝试在 Azure 应用程序服务中运行 Web 作业,但它抛出与日期时间相关的错误

azure - 如何验证使用 Microsoft Graph API 生成的 oauth token