【问题标题】:Expose Azure Functions in Nuget Package在 Nuget 包中公开 Azure 函数
【发布时间】:2019-03-11 07:37:22
【问题描述】:

我们希望在我们的多个产品中实现可重复使用的功能。

我想做的是:

  • 创建一个 C# 项目,其中包含一个或多个 Azure Functions(附加了 FunctionNameAttribute 的静态方法)
  • 将此项目转换为 NuGet 包
  • 在 Azure Functions 项目中引用此 NuGet 包
  • 将 NuGet 包中的函数暴露在正在使用它的项目中

虽然我发现它全部编译,但 NuGet 包中的函数在启动时没有“找到”并且被忽略。我可以看到出于安全原因这可能是可取的,但我想知道是否有一种方法可以覆盖函数运行时的运行方式,以说“扫描此程序集并使用其中包含的任何函数”。

即使拥有该自定义代码也比我们发现自己的情况更可取 - 在我们的包中具有由两个不同产品引用的联合功能,但每个产品都必须创建一组重复的函数,然后调用通用代码。

【问题讨论】:

  • 为什么要将 AZF 转换为 nuget 包?我认为您应该通过正常的请求调用从其他项目中使用 AZF。
  • 用例有点难以解释 - 但基本上,虽然 AZF 中的代码将是相同的,无论它们所服务的产品是什么,但它们下面的代码会因产品而异.所以 ProductA 需要调用 ProductA-AZF,它具有标准的函数签名,但在“幕后”执行 ProductA 特定的事情。然后 ProductB 将拥有一个需要调用的不同的已部署函数应用 ProductB-AZF。
  • 你终于找到答案了吗?
  • 我从来没有,没有。我只需要存根函数并将其调用到库中。

标签: c# azure nuget azure-functions


【解决方案1】:

我认为最好的方法是通过 git submodules 而不是 Nuget 包。

创建两个产品都将引用的项目。一个基类,其中包含一些方法,您可以通过从基类继承来覆盖或仅在两种解决方案中重用这些方法。


根据您的评论,让我们试试这个工作流程:

1 - 使用 Swagger 编写一个 AZF 项目,用于所有 Product 常见操作。

2 - 编写一个新项目以使用 ProductBase 类,该类将使用所有产品 REST 端点。

3 - 将消费项目转换为 Nuget 包。

4 - 在项目 A 和 B 中安装它,并继承 Base 产品类

【讨论】:

  • 这可以解决代码重复的问题,但我不愿将其称为答案,因为即使在我的小情况下它也不完全合适 - 我们确实使用 git 但不希望共享使用它的所有存储库都可以访问存储库。我仍然认为能够公开另一个程序集中包含的函数是最好的解决方案,我想知道在 AZF 运行时是否可能/将永远允许。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多