我正在尝试弄清楚我们应该如何构建 Azure 函数。
我喜欢构建响应事件的无服务器、紧凑、单一功能应用程序的想法。
以下是我遇到的问题:
- 我在 .NET Standard 2 中内置了很好的类库,可以处理我的所有“后端需求”,即使用 Cosmos Db、Azure 表存储、Azure SQL、Redis、Azure 存储处理 CRUD 操作。无论我做什么,我都无法将这些类库集成到 Azure Functions 项目中。更多详细信息如下。
- 此外,事实证明,在 Azure Functions 项目中进行依赖项注入是一项艰巨的任务——尤其是对于上面提到的我的类库。
此时,我看到的唯一选项是将代码“复制并粘贴”到新的 Azure Functions 项目中并在没有任何 DI 的情况下使用它。
这似乎违背了“最佳实践”。那么,除了创建整体代码或等到 Azure Functions 支持 .NET Core 和 DI 之外,还有什么解决方案呢?
我认为我可以使用针对 .NET Framework 的常规 Azure Functions 项目中的 .NET Standard 类库。毕竟,.NET Standard 的理念是“标准化”事物。我在这里开了几篇关于SO的帖子。我提供链接,以便您可以查看我遇到的问题:
在面向 .NET Framework 4.7 的 WebJob 中使用 .NET Core 2.0 库 https://stackoverflow.com/questions/45950157/using-net-core-2-0-libraries-in-webjob-targeting-net-framework-4-7
使用 .NET Core 和 Ninject 的 WebJobs 中没有无参数构造函数错误 https://stackoverflow.com/questions/46017931/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 Standard 2。