Azure功能结构

时间:2017-09-17 21:30:12

标签: 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项目中获取依赖项注入已被证明是一项非常重要的任务 - 尤其是我上面提到的类库。
  3. 此时,我看到的唯一选择是将代码“复制并粘贴”到新的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

    P.S。我以前的帖子指的是WebJobs。这是B计划的方法,因为在支持.NET Core和DI等事情时,WebJobs似乎比Azure Functions领先半步。最后,我想构建一些可以使用我在.NET Standard 2中构建的类库的Azure函数。

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

.NET Standard 2支持正在进行中,请参阅this github issue